Program: 44079
Project: 44079
Buggy source:
private Locator<Project> addProjects(List<org.dodgybits.shuffle.dto.ShuffleProtos.Project> protoProjects,Locator<Context> contextLocator,int progressStart,int progressEnd){
  Set<String> allProjectNames=new HashSet<String>();
  for (  org.dodgybits.shuffle.dto.ShuffleProtos.Project protoProject : protoProjects) {
    allProjectNames.add(protoProject.getName());
  }
  Map<String,Project> existingProjects=BindingUtils.fetchProjectsByName(PreferencesRestoreBackupActivity.this,allProjectNames);
  BaseLocator<Project> projectLocator=new BaseLocator<Project>();
  List<Project> newProjects=new ArrayList<Project>();
  Set<String> newProjectNames=new HashSet<String>();
  int i=0;
  int total=protoProjects.size();
  String type=getString(R.string.project_name);
  for (  org.dodgybits.shuffle.dto.ShuffleProtos.Project protoProject : protoProjects) {
    String projectName=protoProject.getName();
    Project project=existingProjects.get(projectName);
    if (project != null) {
      Log.d(cTag,"String_Node_Str" + projectName + "String_Node_Str");
    }
 else {
      Log.d(cTag,"String_Node_Str" + projectName + "String_Node_Str");
      newProjectNames.add(projectName);
    }
    projectLocator.addItem(protoProject.getId(),projectName,project);
    String text=getString(R.string.restore_progress,type,projectName);
    int percent=calculatePercent(progressStart,progressEnd,++i,total);
    publishProgress(Progress.createProgress(percent,text));
  }
  BindingUtils.persistNewProjects(PreferencesRestoreBackupActivity.this,newProjects);
  Map<String,Project> savedProjects=BindingUtils.fetchProjectsByName(PreferencesRestoreBackupActivity.this,newProjectNames);
  for (  String projectName : newProjectNames) {
    Project savedProject=savedProjects.get(projectName);
    Project restoredProject=projectLocator.findByName(projectName);
    projectLocator.addItem(restoredProject.id,projectName,savedProject);
  }
  return projectLocator;
}

Fixed version (ground truth):
private Locator<Project> addProjects(List<org.dodgybits.shuffle.dto.ShuffleProtos.Project> protoProjects,Locator<Context> contextLocator,int progressStart,int progressEnd){
  Set<String> allProjectNames=new HashSet<String>();
  for (  org.dodgybits.shuffle.dto.ShuffleProtos.Project protoProject : protoProjects) {
    allProjectNames.add(protoProject.getName());
  }
  Map<String,Project> existingProjects=BindingUtils.fetchProjectsByName(PreferencesRestoreBackupActivity.this,allProjectNames);
  BaseLocator<Project> projectLocator=new BaseLocator<Project>();
  List<Project> newProjects=new ArrayList<Project>();
  Set<String> newProjectNames=new HashSet<String>();
  int i=0;
  int total=protoProjects.size();
  String type=getString(R.string.project_name);
  for (  org.dodgybits.shuffle.dto.ShuffleProtos.Project protoProject : protoProjects) {
    String projectName=protoProject.getName();
    Project project=existingProjects.get(projectName);
    if (project != null) {
      Log.d(cTag,"String_Node_Str" + projectName + "String_Node_Str");
    }
 else {
      Log.d(cTag,"String_Node_Str" + projectName + "String_Node_Str");
      project=Project.buildFromDto(protoProject,contextLocator);
      newProjects.add(project);
      newProjectNames.add(projectName);
    }
    projectLocator.addItem(protoProject.getId(),projectName,project);
    String text=getString(R.string.restore_progress,type,projectName);
    int percent=calculatePercent(progressStart,progressEnd,++i,total);
    publishProgress(Progress.createProgress(percent,text));
  }
  BindingUtils.persistNewProjects(PreferencesRestoreBackupActivity.this,newProjects);
  Map<String,Project> savedProjects=BindingUtils.fetchProjectsByName(PreferencesRestoreBackupActivity.this,newProjectNames);
  for (  String projectName : newProjectNames) {
    Project savedProject=savedProjects.get(projectName);
    Project restoredProject=projectLocator.findByName(projectName);
    projectLocator.addItem(restoredProject.id,projectName,savedProject);
  }
  return projectLocator;
}