Program: 91437
Project: 91437
Buggy source:
/** 
 * Creates a decoratable resource mapping (used for e.g. working sets)
 * @param mapping the resource mapping to decorate
 * @throws IOException
 */
public DecoratableResourceMapping(ResourceMapping mapping) throws IOException {
  super(null);
  this.mapping=mapping;
  IProject[] projects=mapping.getProjects();
  if (projects == null || projects.length == 0)   return;
  Set<Repository> repositories=new HashSet<Repository>(projects.length);
  for (  IProject prj : projects) {
    RepositoryMapping repoMapping=RepositoryMapping.getMapping(prj);
    if (repoMapping == null)     continue;
    IndexDiffData diffData=GitLightweightDecorator.getIndexDiffDataOrNull(prj);
    if (diffData == null)     continue;
    tracked=true;
    Repository repository=repoMapping.getRepository();
    String repoRelative=makeRepoRelative(repository,prj) + "String_Node_Str";
    Set<String> modified=diffData.getModified();
    Set<String> conflicting=diffData.getConflicting();
    if (containsPrefix(modified,repoRelative))     dirty=true;
    if (containsPrefix(conflicting,repoRelative))     conflicts=true;
    repositories.add(repository);
  }
  if (repositories.size() == 1) {
    Repository repository=repositories.iterator().next();
    repositoryName=DecoratableResourceHelper.getRepositoryName(repository);
    branch=DecoratableResourceHelper.getShortBranch(repository);
    branchStatus=DecoratableResourceHelper.getBranchStatus(repository);
  }
 else   if (repositories.size() > 1) {
    Set<String> branches=new HashSet<String>(2);
    for (    Repository repository : repositories) {
      branches.add(DecoratableResourceHelper.getShortBranch(repository));
      if (branches.size() > 1)       break;
    }
    if (branches.size() == 1) {
      repositoryName=MULTIPLE;
      branch=branches.iterator().next();
    }
  }
}

Fixed version (ground truth):
/** 
 * Creates a decoratable resource mapping (used for e.g. working sets)
 * @param mapping the resource mapping to decorate
 * @throws IOException
 */
public DecoratableResourceMapping(ResourceMapping mapping) throws IOException {
  super(null);
  this.mapping=mapping;
  IProject[] projects=mapping.getProjects();
  if (projects == null || projects.length == 0)   return;
  Set<Repository> repositories=new HashSet<Repository>(projects.length);
  for (  IProject prj : projects) {
    RepositoryMapping repoMapping=RepositoryMapping.getMapping(prj);
    if (repoMapping == null)     continue;
    IndexDiffData diffData=GitLightweightDecorator.getIndexDiffDataOrNull(prj);
    if (diffData == null)     continue;
    tracked=true;
    Repository repository=repoMapping.getRepository();
    String repoRelative=makeRepoRelative(repository,prj);
    if (repoRelative == null) {
      continue;
    }
    repoRelative+="String_Node_Str";
    Set<String> modified=diffData.getModified();
    Set<String> conflicting=diffData.getConflicting();
    if (containsPrefix(modified,repoRelative))     dirty=true;
    if (containsPrefix(conflicting,repoRelative))     conflicts=true;
    repositories.add(repository);
  }
  if (repositories.size() == 1) {
    Repository repository=repositories.iterator().next();
    repositoryName=DecoratableResourceHelper.getRepositoryName(repository);
    branch=DecoratableResourceHelper.getShortBranch(repository);
    branchStatus=DecoratableResourceHelper.getBranchStatus(repository);
  }
 else   if (repositories.size() > 1) {
    Set<String> branches=new HashSet<String>(2);
    for (    Repository repository : repositories) {
      branches.add(DecoratableResourceHelper.getShortBranch(repository));
      if (branches.size() > 1)       break;
    }
    if (branches.size() == 1) {
      repositoryName=MULTIPLE;
      branch=branches.iterator().next();
    }
  }
}