Program: 12017
Project: 12017
Buggy source:
public ClassMeta extract(String sourceCodeString){
  ClassMeta meta=new ClassMeta();
  String modifiedSourceCodeString=TrimFilterUtil.doAllFilters(sourceCodeString);
  Matcher matcherGroupingPackageName=RegExp.PatternObject.Pacakge_Group.matcher(modifiedSourceCodeString);
  if (matcherGroupingPackageName.find()) {
    meta.packageName=matcherGroupingPackageName.group(1);
  }
  String outOfBrace=modifiedSourceCodeString.split("String_Node_Str")[0];
  String[] splittedBySpace=outOfBrace.replaceAll("String_Node_Str","String_Node_Str").replaceAll("String_Node_Str","String_Node_Str").replaceAll("String_Node_Str","String_Node_Str").split("String_Node_Str");
  if (!outOfBrace.matches("String_Node_Str") && !outOfBrace.matches("String_Node_Str")) {
    meta.isAbstract=true;
  }
 else {
    for (    String each : splittedBySpace) {
      if (each.equals("String_Node_Str") || each.equals("String_Node_Str") || each.equals("String_Node_Str")) {
        meta.isAbstract=true;
        break;
      }
    }
    if (outOfBrace.matches("String_Node_Str")) {
      meta.isEnum=true;
    }
  }
  meta.name=splittedBySpace[splittedBySpace.length - 1].replaceFirst(RegExp.Generics,StringValue.Empty);
  for (int i=0; i < splittedBySpace.length; i++) {
    if (splittedBySpace[i].equals("String_Node_Str") || splittedBySpace[i].equals("String_Node_Str")) {
      meta.name=splittedBySpace[i - 1].replaceFirst(RegExp.Generics,StringValue.Empty);
      break;
    }
  }
  meta.importedList=importedListExtractor.extract(modifiedSourceCodeString);
  meta.constructors=constructorMetaExtractor.initialize(meta,modifiedSourceCodeString).extract(modifiedSourceCodeString);
  meta.methods=methodMetaExtractor.initialize(meta,modifiedSourceCodeString).extract(modifiedSourceCodeString);
  if (meta.constructors.size() > 0) {
    for (    ConstructorMeta cons : meta.constructors) {
      int len=cons.argNames.size();
      for (int i=0; i < len; i++) {
        if (isDuplicatedVariableName(cons.argNames.get(i))) {
          cons.argNames.set(i,cons.argNames.get(i) + "String_Node_Str");
        }
      }
    }
    ConstructorMeta constructor=meta.constructors.get(0);
    for (    MethodMeta method : meta.methods) {
      int len=method.argNames.size();
      for (int i=0; i < len; i++) {
        String targetArgName=method.argNames.get(i);
        List<String> methodArgNames=new ArrayList<String>();
        for (        String methodArgName : method.argNames) {
          if (!targetArgName.equals(methodArgName)) {
            methodArgNames.add(methodArgName);
          }
        }
        method.argNames.set(i,renameIfDuplicatedToConstructorArgNames(targetArgName,constructor.argNames,methodArgNames));
      }
    }
  }
  return meta;
}

Fixed version (ground truth):
public ClassMeta extract(String sourceCodeString){
  ClassMeta meta=new ClassMeta();
  String modifiedSourceCodeString=TrimFilterUtil.doAllFilters(sourceCodeString);
  Matcher matcherGroupingPackageName=RegExp.PatternObject.Pacakge_Group.matcher(modifiedSourceCodeString);
  if (matcherGroupingPackageName.find()) {
    meta.packageName=matcherGroupingPackageName.group(1);
  }
  String outOfBrace=modifiedSourceCodeString.split("String_Node_Str")[0];
  int lenForOutOfBrace=outOfBrace.length();
  StringBuilder bufForOutOfBrace=new StringBuilder();
  boolean isInsideOfGenerics=false;
  int depth=0;
  for (int i=0; i < lenForOutOfBrace; i++) {
    char current=outOfBrace.charAt(i);
    if (current == '<') {
      isInsideOfGenerics=true;
      depth++;
    }
    if (current == '>') {
      depth--;
      if (depth <= 0) {
        isInsideOfGenerics=false;
        continue;
      }
    }
    if (!isInsideOfGenerics) {
      bufForOutOfBrace.append(current);
    }
  }
  String outOfBraceWithoutGenerics=bufForOutOfBrace.toString();
  String[] splittedBySpace=outOfBraceWithoutGenerics.split("String_Node_Str");
  if (!outOfBrace.matches("String_Node_Str") && !outOfBrace.matches("String_Node_Str")) {
    meta.isAbstract=true;
  }
 else {
    for (    String each : splittedBySpace) {
      if (each.equals("String_Node_Str") || each.equals("String_Node_Str") || each.equals("String_Node_Str")) {
        meta.isAbstract=true;
        break;
      }
    }
    if (outOfBrace.matches("String_Node_Str")) {
      meta.isEnum=true;
    }
  }
  meta.name=splittedBySpace[splittedBySpace.length - 1].replaceFirst(RegExp.Generics,StringValue.Empty);
  for (int i=0; i < splittedBySpace.length; i++) {
    if (splittedBySpace[i].equals("String_Node_Str") || splittedBySpace[i].equals("String_Node_Str")) {
      meta.name=splittedBySpace[i - 1].replaceFirst(RegExp.Generics,StringValue.Empty);
      break;
    }
  }
  meta.importedList=importedListExtractor.extract(modifiedSourceCodeString);
  meta.constructors=constructorMetaExtractor.initialize(meta,modifiedSourceCodeString).extract(modifiedSourceCodeString);
  meta.methods=methodMetaExtractor.initialize(meta,modifiedSourceCodeString).extract(modifiedSourceCodeString);
  if (meta.constructors.size() > 0) {
    for (    ConstructorMeta cons : meta.constructors) {
      int len=cons.argNames.size();
      for (int i=0; i < len; i++) {
        if (isDuplicatedVariableName(cons.argNames.get(i))) {
          cons.argNames.set(i,cons.argNames.get(i) + "String_Node_Str");
        }
      }
    }
    ConstructorMeta constructor=meta.constructors.get(0);
    for (    MethodMeta method : meta.methods) {
      int len=method.argNames.size();
      for (int i=0; i < len; i++) {
        String targetArgName=method.argNames.get(i);
        List<String> methodArgNames=new ArrayList<String>();
        for (        String methodArgName : method.argNames) {
          if (!targetArgName.equals(methodArgName)) {
            methodArgNames.add(methodArgName);
          }
        }
        method.argNames.set(i,renameIfDuplicatedToConstructorArgNames(targetArgName,constructor.argNames,methodArgNames));
      }
    }
  }
  return meta;
}