code: public ArrayList<ProgressSource> getProgressSources()    {
          ArrayList<ProgressSource> snapshot = new ArrayList<ProgressSource>();
  
          try {
              synchronized(progressSourceList)    {
                  for (Iterator<ProgressSource> iter = progressSourceList.iterator(); iter.hasNext();)    {
                      ProgressSource pi = iter.next();
  
                      // Clone ProgressSource and add to snapshot
                      snapshot.add((ProgressSource)pi.clone());
                  }
              }
          }
          catch(CloneNotSupportedException e) {
              e.printStackTrace();
          }
  
          return snapshot;
      }
docs: Return a snapshot of the ProgressSource list