private void save(List<WeakReference<DataFile>> toSave) throws DataFileException {
   Iterator<WeakReference<DataFile>> it = toSave.iterator();
   while (it.hasNext()) {
     WeakReference<DataFile> ref = it.next();
     if (ref != null) {
       DataFile df = ref.get();
       if (df != null) {
         df.save();
       } else {
         it.remove();
       }
     } else {
       it.remove();
     }
   }
 }