Program: 44209
Project: 44209
Buggy source:
public ChangeSet difference(UCMEntity e1,UCMEntity e2,boolean merge,File viewContext) throws UCMException {
  String cmd="String_Node_Str" + (!merge ? "String_Node_Str" : "String_Node_Str") + (e2 == null ? "String_Node_Str" : "String_Node_Str")+ "String_Node_Str"+ e1.getFullyQualifiedName()+ (e2 != null ? e2.getFullyQualifiedName() : "String_Node_Str");
  List<String> lines=null;
  System.out.println("String_Node_Str" + cmd);
  try {
    lines=Cleartool.run(cmd,viewContext).stdoutList;
  }
 catch (  Exception e) {
    throw new UCMException("String_Node_Str" + e1 + "String_Node_Str"+ e2+ "String_Node_Str"+ e.getMessage());
  }
  int length=viewContext.getAbsoluteFile().toString().length();
  System.out.println(viewContext.getAbsolutePath() + "String_Node_Str" + length);
  net.praqma.clearcase.changeset.ChangeSet changeset=new ChangeSet(viewContext);
  for (int i=0; i < lines.size(); i++) {
    Matcher m=rx_versionName.matcher(lines.get(i));
    if (m.find()) {
      String f=m.group(2).trim();
      System.out.println("String_Node_Str" + f);
      logger.debug("String_Node_Str" + f);
      String filename=f.substring(length);
      File file=new File(f);
      Tuple<String,Integer> info=getVersionVersion(m.group(3));
      ChangeSetElement element=new ChangeSetElement(file,m.group(3));
      if (m.group(1).equals("String_Node_Str")) {
        if (info.t2 > 1) {
          element.setStatus(ChangeSetElement.Status.CHANGED);
        }
 else {
          element.setStatus(ChangeSetElement.Status.ADDED);
        }
      }
 else       if (m.group(1).equals("String_Node_Str")) {
        element.setStatus(ChangeSetElement.Status.DELETED);
      }
 else {
        element.setStatus(ChangeSetElement.Status.CHANGED);
      }
      changeset.addElement(element);
      if (file.isDirectory()) {
        getDirectoryStatus(file,element.getFullversion(),changeset);
      }
    }
  }
  return changeset;
}

Fixed version (ground truth):
public ChangeSet difference(UCMEntity e1,UCMEntity e2,boolean merge,File viewContext) throws UCMException {
  String cmd="String_Node_Str" + (!merge ? "String_Node_Str" : "String_Node_Str") + (e2 == null ? "String_Node_Str" : "String_Node_Str")+ "String_Node_Str"+ e1.getFullyQualifiedName()+ (e2 != null ? e2.getFullyQualifiedName() : "String_Node_Str");
  List<String> lines=null;
  try {
    lines=Cleartool.run(cmd,viewContext).stdoutList;
  }
 catch (  Exception e) {
    throw new UCMException("String_Node_Str" + e1 + "String_Node_Str"+ e2+ "String_Node_Str"+ e.getMessage());
  }
  int length=viewContext.getAbsoluteFile().toString().length();
  System.out.println(viewContext.getAbsolutePath() + "String_Node_Str" + length);
  net.praqma.clearcase.changeset.ChangeSet changeset=new ChangeSet(viewContext);
  for (int i=0; i < lines.size(); i++) {
    Matcher m=rx_versionName.matcher(lines.get(i));
    if (m.find()) {
      String f=m.group(2).trim();
      System.out.println("String_Node_Str" + f);
      logger.debug("String_Node_Str" + f);
      String filename=f.substring(length);
      File file=new File(f);
      Tuple<String,Integer> info=getVersionVersion(m.group(3));
      ChangeSetElement element=new ChangeSetElement(file,m.group(3));
      if (m.group(1).equals("String_Node_Str")) {
        if (info.t2 > 1) {
          element.setStatus(ChangeSetElement.Status.CHANGED);
        }
 else {
          element.setStatus(ChangeSetElement.Status.ADDED);
        }
      }
 else       if (m.group(1).equals("String_Node_Str")) {
        element.setStatus(ChangeSetElement.Status.DELETED);
      }
 else {
        element.setStatus(ChangeSetElement.Status.CHANGED);
      }
      changeset.addElement(element);
      if (file.isDirectory()) {
        getDirectoryStatus(file,element.getFullversion(),changeset);
      }
    }
  }
  return changeset;
}