public static void iterateFileGroupFilesDeletedOnServerFirst(final UpdatedFiles updatedFiles, final Callback callback) {
    final FileGroup changedOnServer = updatedFiles.getGroupById(FileGroup.CHANGED_ON_SERVER_ID);
    if (changedOnServer != null) {
      final List<FileGroup> children = changedOnServer.getChildren();
      for (FileGroup child : children) {
        if (FileGroup.REMOVED_FROM_REPOSITORY_ID.equals(child.getId())) {
          iterateGroup(child, callback);
        }
      }
    }

    final List<FileGroup> groups = updatedFiles.getTopLevelGroups();
    for (FileGroup group : groups) {
      iterateGroup(group, callback);

      for (FileGroup childGroup : group.getChildren()) {
        if (! FileGroup.REMOVED_FROM_REPOSITORY_ID.equals(childGroup.getId())) {
          iterateGroup(childGroup, callback);
        }
      }
    }
  }
public static void iterateFileGroupFilesDeletedOnServerFirst(final UpdatedFiles updatedFiles, final Callback callback)