Program: 87038
Project: 87038
Buggy source:
public static final void transform(CtClass clazz,Map<String,String> signatures,ClassPool pool){
  CtField[] fields=clazz.getDeclaredFields();
  try {
    clazz.addInterface(pool.getCtClass("String_Node_Str"));
  }
 catch (  NotFoundException ex) {
    LOG.error("String_Node_Str",ex);
  }
  CtField msgPackField;
  CtMethod decodeValueMethod;
  CtMethod decodeBytesMethod;
  CtMethod encodeMethod;
  CtMethod encodeListMethod;
  CtMethod encodeMapMethod;
  StringBuilder decodeBuff=new StringBuilder();
  decodeBuff.append("String_Node_Str");
  decodeBuff.append("String_Node_Str");
  decodeBuff.append("String_Node_Str");
  StringBuilder encodeBuff=new StringBuilder();
  encodeBuff.append("String_Node_Str");
  encodeBuff.append("String_Node_Str");
  encodeBuff.append("String_Node_Str");
  for (  CtField field : fields) {
    try {
      if (field.getType().subclassOf(pool.get("String_Node_Str"))) {
        String type=getType(signatures.get(field.getName()));
switch (type) {
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
          encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
        decodeBuff.append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
      break;
default :
    encodeBuff.append("String_Node_Str");
  encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
encodeBuff.append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
break;
}
}
 else if (field.getType().subclassOf(pool.get("String_Node_Str"))) {
String type=getType(signatures.get(field.getName()));
switch (type) {
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
break;
default :
encodeBuff.append("String_Node_Str");
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
encodeBuff.append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
break;
}
}
 else if (field.getType().subclassOf(pool.get("String_Node_Str"))) {
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str").append(field.getType().getName()).append("String_Node_Str").append(field.getType().getName()).append("String_Node_Str");
}
 else if (field.getType().hasAnnotation(Class.forName("String_Node_Str"))) {
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
encodeBuff.append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str").append(field.getType().getName()).append("String_Node_Str").append(field.getType().getName()).append("String_Node_Str");
}
 else {
switch (field.getType().getName()) {
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
}
}
}
 catch (NotFoundException ex) {
LOG.error("String_Node_Str",ex);
}
catch (ClassNotFoundException ex) {
LOG.error("String_Node_Str",ex);
}
}
decodeBuff.append("String_Node_Str");
decodeBuff.append("String_Node_Str");
encodeBuff.append("String_Node_Str");
try {
msgPackField=CtField.make("String_Node_Str",clazz);
clazz.addField(msgPackField);
int modifiers=clazz.getModifiers();
CtMethod tmpMethod=CtNewMethod.abstractMethod(CtClass.voidType,"String_Node_Str",new CtClass[]{pool.get("String_Node_Str"),pool.get("String_Node_Str"),pool.get("String_Node_Str")},new CtClass[]{pool.get("String_Node_Str")},clazz);
clazz.addMethod(tmpMethod);
encodeListMethod=CtMethod.make(encodeListSrc,clazz);
clazz.addMethod(encodeListMethod);
clazz.removeMethod(tmpMethod);
clazz.setModifiers(modifiers);
encodeMapMethod=CtMethod.make(encodeMapSrc,clazz);
clazz.addMethod(encodeMapMethod);
decodeValueMethod=CtMethod.make(decodeValueSrc,clazz);
clazz.addMethod(decodeValueMethod);
decodeBytesMethod=CtMethod.make(decodeBuff.toString(),clazz);
encodeMethod=CtMethod.make(encodeBuff.toString(),clazz);
clazz.addMethod(encodeMethod);
clazz.addMethod(decodeBytesMethod);
}
 catch (CannotCompileException ex) {
LOG.error("String_Node_Str",ex);
}
catch (NotFoundException ex) {
LOG.error("String_Node_Str",ex);
}
}

Fixed version (ground truth):
public static final void transform(CtClass clazz,Map<String,String> signatures,ClassPool pool){
  CtField[] fields=clazz.getDeclaredFields();
  try {
    clazz.addInterface(pool.getCtClass("String_Node_Str"));
  }
 catch (  NotFoundException ex) {
    LOG.error("String_Node_Str",ex);
  }
  CtField msgPackField;
  CtMethod decodeValueMethod;
  CtMethod decodeBytesMethod;
  CtMethod encodeMethod;
  CtMethod encodeListMethod;
  CtMethod encodeMapMethod;
  StringBuilder decodeBuff=new StringBuilder();
  decodeBuff.append("String_Node_Str");
  decodeBuff.append("String_Node_Str");
  decodeBuff.append("String_Node_Str");
  StringBuilder encodeBuff=new StringBuilder();
  encodeBuff.append("String_Node_Str");
  encodeBuff.append("String_Node_Str");
  encodeBuff.append("String_Node_Str");
  for (  CtField field : fields) {
    try {
      if (field.getType().subclassOf(pool.get("String_Node_Str"))) {
        String type=getType(signatures.get(field.getName()));
switch (type) {
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
          encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
        decodeBuff.append(field.getName()).append("String_Node_Str");
      decodeBuff.append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
    break;
default :
  encodeBuff.append("String_Node_Str");
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
encodeBuff.append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
break;
}
}
 else if (field.getType().subclassOf(pool.get("String_Node_Str"))) {
String type=getType(signatures.get(field.getName()));
switch (type) {
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
break;
default :
encodeBuff.append("String_Node_Str");
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
encodeBuff.append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
break;
}
}
 else if (field.getType().subclassOf(pool.get("String_Node_Str"))) {
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str").append(field.getType().getName()).append("String_Node_Str").append(field.getType().getName()).append("String_Node_Str");
}
 else if (field.getType().hasAnnotation(Class.forName("String_Node_Str"))) {
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
encodeBuff.append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str").append(field.getType().getName()).append("String_Node_Str").append(field.getType().getName()).append("String_Node_Str");
}
 else {
switch (field.getType().getName()) {
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
case "String_Node_Str":
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append("String_Node_Str");
break;
}
}
}
 catch (NotFoundException ex) {
LOG.error("String_Node_Str",ex);
}
catch (ClassNotFoundException ex) {
LOG.error("String_Node_Str",ex);
}
}
decodeBuff.append("String_Node_Str");
decodeBuff.append("String_Node_Str");
encodeBuff.append("String_Node_Str");
try {
msgPackField=CtField.make("String_Node_Str",clazz);
clazz.addField(msgPackField);
int modifiers=clazz.getModifiers();
CtMethod tmpMethod=CtNewMethod.abstractMethod(CtClass.voidType,"String_Node_Str",new CtClass[]{pool.get("String_Node_Str"),pool.get("String_Node_Str"),pool.get("String_Node_Str")},new CtClass[]{pool.get("String_Node_Str")},clazz);
clazz.addMethod(tmpMethod);
encodeListMethod=CtMethod.make(encodeListSrc,clazz);
clazz.addMethod(encodeListMethod);
clazz.removeMethod(tmpMethod);
clazz.setModifiers(modifiers);
encodeMapMethod=CtMethod.make(encodeMapSrc,clazz);
clazz.addMethod(encodeMapMethod);
decodeValueMethod=CtMethod.make(decodeValueSrc,clazz);
clazz.addMethod(decodeValueMethod);
decodeBytesMethod=CtMethod.make(decodeBuff.toString(),clazz);
encodeMethod=CtMethod.make(encodeBuff.toString(),clazz);
clazz.addMethod(encodeMethod);
clazz.addMethod(decodeBytesMethod);
}
 catch (CannotCompileException ex) {
LOG.error("String_Node_Str",ex);
}
catch (NotFoundException ex) {
LOG.error("String_Node_Str",ex);
}
}