Program: 28295
Project: 28295
Buggy source:
void containers(Context context,DeclarationList declList) throws ParserException {
  for (  String containerName : InfoMap.containers) {
    LinkedList<Info> infoList=leafInfoMap.get(containerName);
    for (    Info info : infoList) {
      Declaration decl=new Declaration();
      if (info == null || info.skip || !info.define) {
        continue;
      }
      int dim=1;
      boolean resizable=true;
      Type containerType=new Parser(this,info.cppNames[0]).type(context), indexType, valueType, firstType=null, secondType=null;
      if (containerType.arguments == null || containerType.arguments.length == 0) {
        continue;
      }
 else       if (containerType.arguments.length > 1) {
        resizable=false;
        indexType=containerType.arguments[0];
        valueType=containerType.arguments[1];
      }
 else {
        indexType=new Type();
        indexType.annotations="String_Node_Str";
        indexType.cppName="String_Node_Str";
        indexType.javaName="String_Node_Str";
        valueType=containerType.arguments[0];
      }
      while (valueType.cppName.startsWith(containerName)) {
        dim++;
        valueType=valueType.arguments[0];
      }
      if (valueType.cppName.startsWith("String_Node_Str")) {
        firstType=valueType.arguments[0];
        secondType=valueType.arguments[1];
        if (!firstType.pointer && (firstType.annotations == null || firstType.annotations.length() == 0)) {
          firstType.annotations="String_Node_Str";
        }
        if (!secondType.pointer && (secondType.annotations == null || secondType.annotations.length() == 0)) {
          secondType.annotations="String_Node_Str";
        }
      }
      if (!valueType.pointer && (valueType.annotations == null || valueType.annotations.length() == 0)) {
        valueType.annotations="String_Node_Str";
      }
      String arrayBrackets="String_Node_Str";
      for (int i=0; i < dim - 1; i++) {
        arrayBrackets+="String_Node_Str";
      }
      decl.text+="String_Node_Str" + "String_Node_Str" + containerType.cppName + "String_Node_Str"+ containerType.javaName+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ containerType.javaName+ "String_Node_Str"+ (!resizable || firstType != null || secondType != null ? "String_Node_Str" : "String_Node_Str" + containerType.javaName + "String_Node_Str"+ valueType.javaName+ arrayBrackets+ "String_Node_Str")+ "String_Node_Str"+ containerType.javaName+ "String_Node_Str"+ (!resizable ? "String_Node_Str" : "String_Node_Str" + containerType.javaName + "String_Node_Str")+ "String_Node_Str"+ (!resizable ? "String_Node_Str" : "String_Node_Str")+ "String_Node_Str"+ containerType.javaName+ "String_Node_Str"+ containerType.javaName+ "String_Node_Str";
      for (int i=0; i < dim; i++) {
        String indexAnnotation=i > 0 ? ("String_Node_Str" + (i > 1 ? "String_Node_Str" + i + "String_Node_Str" : "String_Node_Str")) : "String_Node_Str";
        String indices="String_Node_Str", separator="String_Node_Str";
        for (int j=0; j < i; j++) {
          indices+=separator + indexType.annotations + indexType.javaName+ "String_Node_Str"+ (char)('i' + j);
          separator="String_Node_Str";
        }
        decl.text+="String_Node_Str" + indexAnnotation + "String_Node_Str"+ indices+ "String_Node_Str"+ (!resizable ? "String_Node_Str" : "String_Node_Str" + indexAnnotation + "String_Node_Str"+ indices+ separator+ "String_Node_Str");
      }
      String params="String_Node_Str", separator="String_Node_Str";
      for (int i=0; i < dim; i++) {
        params+=separator + indexType.annotations + indexType.javaName+ "String_Node_Str"+ (char)('i' + i);
        separator="String_Node_Str";
      }
      if (firstType != null && secondType != null) {
        String indexAnnotation="String_Node_Str" + (dim > 1 ? "String_Node_Str" + dim + "String_Node_Str" : "String_Node_Str");
        decl.text+="String_Node_Str" + "String_Node_Str" + indexAnnotation + "String_Node_Str"+ firstType.annotations+ firstType.javaName+ "String_Node_Str"+ params+ "String_Node_Str"+ "String_Node_Str"+ containerType.javaName+ "String_Node_Str"+ params+ separator+ firstType.javaName+ "String_Node_Str"+ "String_Node_Str"+ indexAnnotation+ "String_Node_Str"+ secondType.annotations+ secondType.javaName+ "String_Node_Str"+ params+ "String_Node_Str"+ "String_Node_Str"+ containerType.javaName+ "String_Node_Str"+ params+ separator+ secondType.javaName+ "String_Node_Str";
      }
 else {
        decl.text+="String_Node_Str" + "String_Node_Str" + valueType.annotations + valueType.javaName+ "String_Node_Str"+ params+ "String_Node_Str"+ "String_Node_Str"+ containerType.javaName+ "String_Node_Str"+ params+ separator+ valueType.javaName+ "String_Node_Str";
      }
      if (resizable && firstType == null && secondType == null) {
        decl.text+="String_Node_Str" + "String_Node_Str" + containerType.javaName + "String_Node_Str"+ valueType.javaName+ arrayBrackets+ "String_Node_Str";
        String indent="String_Node_Str", indices="String_Node_Str", args="String_Node_Str";
        separator="String_Node_Str";
        for (int i=0; i < dim; i++) {
          char c=(char)('i' + i);
          decl.text+=indent + "String_Node_Str" + args+ "String_Node_Str"+ indices+ "String_Node_Str"+ args+ separator+ "String_Node_Str"+ indices+ "String_Node_Str"+ indent+ "String_Node_Str"+ c+ "String_Node_Str"+ c+ "String_Node_Str"+ indices+ "String_Node_Str"+ c+ "String_Node_Str";
          indent+="String_Node_Str";
          indices+="String_Node_Str" + c + "String_Node_Str";
          args+=separator + c;
          separator="String_Node_Str";
        }
        decl.text+=indent + "String_Node_Str" + args+ separator+ "String_Node_Str"+ indices+ "String_Node_Str";
        for (int i=0; i < dim; i++) {
          indent=indent.substring(4);
          decl.text+=indent + "String_Node_Str";
        }
        decl.text+="String_Node_Str" + "String_Node_Str";
      }
      decl.text+="String_Node_Str";
      declList.add(decl);
    }
  }
}

Fixed version (ground truth):
void containers(Context context,DeclarationList declList) throws ParserException {
  for (  String containerName : InfoMap.containers) {
    LinkedList<Info> infoList=leafInfoMap.get(containerName);
    for (    Info info : infoList) {
      Declaration decl=new Declaration();
      if (info == null || info.skip || !info.define) {
        continue;
      }
      int dim=1;
      boolean resizable=true;
      Type containerType=new Parser(this,info.cppNames[0]).type(context), indexType, valueType, firstType=null, secondType=null;
      if (containerType.arguments == null || containerType.arguments.length == 0) {
        continue;
      }
 else       if (containerType.arguments.length > 1) {
        resizable=false;
        indexType=containerType.arguments[0];
        valueType=containerType.arguments[1];
      }
 else {
        indexType=new Type();
        indexType.annotations="String_Node_Str";
        indexType.cppName="String_Node_Str";
        indexType.javaName="String_Node_Str";
        valueType=containerType.arguments[0];
      }
      while (valueType.cppName.startsWith(containerName) && leafInfoMap.get(valueType.cppName,false).size() == 0) {
        dim++;
        valueType=valueType.arguments[0];
      }
      if (valueType.cppName.startsWith("String_Node_Str")) {
        firstType=valueType.arguments[0];
        secondType=valueType.arguments[1];
        if (!firstType.pointer && (firstType.annotations == null || firstType.annotations.length() == 0)) {
          firstType.annotations="String_Node_Str";
        }
        if (!secondType.pointer && (secondType.annotations == null || secondType.annotations.length() == 0)) {
          secondType.annotations="String_Node_Str";
        }
      }
      if (!valueType.pointer && (valueType.annotations == null || valueType.annotations.length() == 0)) {
        valueType.annotations="String_Node_Str";
      }
      String arrayBrackets="String_Node_Str";
      for (int i=0; i < dim - 1; i++) {
        arrayBrackets+="String_Node_Str";
      }
      decl.text+="String_Node_Str" + "String_Node_Str" + containerType.cppName + "String_Node_Str"+ containerType.javaName+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str"+ containerType.javaName+ "String_Node_Str"+ (!resizable || firstType != null || secondType != null ? "String_Node_Str" : "String_Node_Str" + containerType.javaName + "String_Node_Str"+ valueType.javaName+ arrayBrackets+ "String_Node_Str")+ "String_Node_Str"+ containerType.javaName+ "String_Node_Str"+ (!resizable ? "String_Node_Str" : "String_Node_Str" + containerType.javaName + "String_Node_Str")+ "String_Node_Str"+ (!resizable ? "String_Node_Str" : "String_Node_Str")+ "String_Node_Str"+ containerType.javaName+ "String_Node_Str"+ containerType.javaName+ "String_Node_Str";
      for (int i=0; i < dim; i++) {
        String indexAnnotation=i > 0 ? ("String_Node_Str" + (i > 1 ? "String_Node_Str" + i + "String_Node_Str" : "String_Node_Str")) : "String_Node_Str";
        String indices="String_Node_Str", separator="String_Node_Str";
        for (int j=0; j < i; j++) {
          indices+=separator + indexType.annotations + indexType.javaName+ "String_Node_Str"+ (char)('i' + j);
          separator="String_Node_Str";
        }
        decl.text+="String_Node_Str" + indexAnnotation + "String_Node_Str"+ indices+ "String_Node_Str"+ (!resizable ? "String_Node_Str" : "String_Node_Str" + indexAnnotation + "String_Node_Str"+ indices+ separator+ "String_Node_Str");
      }
      String params="String_Node_Str", separator="String_Node_Str";
      for (int i=0; i < dim; i++) {
        params+=separator + indexType.annotations + indexType.javaName+ "String_Node_Str"+ (char)('i' + i);
        separator="String_Node_Str";
      }
      if (firstType != null && secondType != null) {
        String indexAnnotation="String_Node_Str" + (dim > 1 ? "String_Node_Str" + dim + "String_Node_Str" : "String_Node_Str");
        decl.text+="String_Node_Str" + "String_Node_Str" + indexAnnotation + "String_Node_Str"+ firstType.annotations+ firstType.javaName+ "String_Node_Str"+ params+ "String_Node_Str"+ "String_Node_Str"+ containerType.javaName+ "String_Node_Str"+ params+ separator+ firstType.javaName+ "String_Node_Str"+ "String_Node_Str"+ indexAnnotation+ "String_Node_Str"+ secondType.annotations+ secondType.javaName+ "String_Node_Str"+ params+ "String_Node_Str"+ "String_Node_Str"+ containerType.javaName+ "String_Node_Str"+ params+ separator+ secondType.javaName+ "String_Node_Str";
      }
 else {
        decl.text+="String_Node_Str" + "String_Node_Str" + valueType.annotations + valueType.javaName+ "String_Node_Str"+ params+ "String_Node_Str"+ "String_Node_Str"+ containerType.javaName+ "String_Node_Str"+ params+ separator+ valueType.javaName+ "String_Node_Str";
      }
      if (resizable && firstType == null && secondType == null) {
        decl.text+="String_Node_Str" + "String_Node_Str" + containerType.javaName + "String_Node_Str"+ valueType.javaName+ arrayBrackets+ "String_Node_Str";
        String indent="String_Node_Str", indices="String_Node_Str", args="String_Node_Str";
        separator="String_Node_Str";
        for (int i=0; i < dim; i++) {
          char c=(char)('i' + i);
          decl.text+=indent + "String_Node_Str" + args+ "String_Node_Str"+ indices+ "String_Node_Str"+ args+ separator+ "String_Node_Str"+ indices+ "String_Node_Str"+ indent+ "String_Node_Str"+ c+ "String_Node_Str"+ c+ "String_Node_Str"+ indices+ "String_Node_Str"+ c+ "String_Node_Str";
          indent+="String_Node_Str";
          indices+="String_Node_Str" + c + "String_Node_Str";
          args+=separator + c;
          separator="String_Node_Str";
        }
        decl.text+=indent + "String_Node_Str" + args+ separator+ "String_Node_Str"+ indices+ "String_Node_Str";
        for (int i=0; i < dim; i++) {
          indent=indent.substring(4);
          decl.text+=indent + "String_Node_Str";
        }
        decl.text+="String_Node_Str" + "String_Node_Str";
      }
      decl.text+="String_Node_Str";
      declList.add(decl);
    }
  }
}