Program: 87035
Project: 87035
Buggy source:
/** 
 * Perform the transformation.
 * @param clazz the class.
 * @param signatures the set of field signatures.
 * @param pool the class pool.
 */
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 decodeUnpackerMethod;
  CtMethod decodeBytesMethod;
  CtMethod encodeMethod;
  CtMethod encodeListMethod;
  CtMethod encodeBooleanArrayMethod;
  CtMethod encodeByteArrayMethod;
  CtMethod encodeShortArrayMethod;
  CtMethod encodeIntArrayMethod;
  CtMethod encodeFloatArrayMethod;
  CtMethod encodeLongArrayMethod;
  CtMethod encodeDoubleArrayMethod;
  CtMethod encodeStringArrayMethod;
  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()));
        encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
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":
          decodeBuff.append(field.getName()).append("String_Node_Str");
        decodeBuff.append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
      break;
default :
    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()));
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
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":
decodeBuff.append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
break;
default :
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");
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);
encodeBooleanArrayMethod=CtMethod.make(encodeBooleanArraySrc,clazz);
clazz.addMethod(encodeBooleanArrayMethod);
encodeByteArrayMethod=CtMethod.make(encodeByteArraySrc,clazz);
clazz.addMethod(encodeByteArrayMethod);
encodeShortArrayMethod=CtMethod.make(encodeShortArraySrc,clazz);
clazz.addMethod(encodeShortArrayMethod);
encodeIntArrayMethod=CtMethod.make(encodeIntArraySrc,clazz);
clazz.addMethod(encodeIntArrayMethod);
encodeFloatArrayMethod=CtMethod.make(encodeFloatArraySrc,clazz);
clazz.addMethod(encodeFloatArrayMethod);
encodeLongArrayMethod=CtMethod.make(encodeLongArraySrc,clazz);
clazz.addMethod(encodeLongArrayMethod);
encodeDoubleArrayMethod=CtMethod.make(encodeDoubleArraySrc,clazz);
clazz.addMethod(encodeDoubleArrayMethod);
encodeStringArrayMethod=CtMethod.make(encodeStringArraySrc,clazz);
clazz.addMethod(encodeStringArrayMethod);
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);
decodeUnpackerMethod=CtMethod.make(decodeUnpackerSrc,clazz);
clazz.addMethod(decodeUnpackerMethod);
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):
/** 
 * Perform the transformation.
 * @param clazz the class.
 * @param signatures the set of field signatures.
 * @param pool the class pool.
 */
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 decodeUnpackerMethod;
  CtMethod decodeBytesMethod;
  CtMethod encodeMethod;
  CtMethod encodeListMethod;
  CtMethod encodeBooleanArrayMethod;
  CtMethod encodeByteArrayMethod;
  CtMethod encodeShortArrayMethod;
  CtMethod encodeIntArrayMethod;
  CtMethod encodeFloatArrayMethod;
  CtMethod encodeLongArrayMethod;
  CtMethod encodeDoubleArrayMethod;
  CtMethod encodeStringArrayMethod;
  CtMethod encodeMapMethod;
  StringBuilder decodeBuff=new StringBuilder();
  decodeBuff.append("String_Node_Str");
  decodeBuff.append("String_Node_Str");
  if (fields.length > 0) {
    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()));
        encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
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":
          decodeBuff.append(field.getName()).append("String_Node_Str");
        decodeBuff.append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
      break;
default :
    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()));
encodeBuff.append("String_Node_Str").append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
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":
decodeBuff.append(field.getName()).append("String_Node_Str");
decodeBuff.append(field.getName()).append("String_Node_Str").append(type).append("String_Node_Str");
break;
default :
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);
}
}
if (fields.length > 0) {
decodeBuff.append("String_Node_Str");
}
decodeBuff.append("String_Node_Str");
encodeBuff.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);
encodeBooleanArrayMethod=CtMethod.make(encodeBooleanArraySrc,clazz);
clazz.addMethod(encodeBooleanArrayMethod);
encodeByteArrayMethod=CtMethod.make(encodeByteArraySrc,clazz);
clazz.addMethod(encodeByteArrayMethod);
encodeShortArrayMethod=CtMethod.make(encodeShortArraySrc,clazz);
clazz.addMethod(encodeShortArrayMethod);
encodeIntArrayMethod=CtMethod.make(encodeIntArraySrc,clazz);
clazz.addMethod(encodeIntArrayMethod);
encodeFloatArrayMethod=CtMethod.make(encodeFloatArraySrc,clazz);
clazz.addMethod(encodeFloatArrayMethod);
encodeLongArrayMethod=CtMethod.make(encodeLongArraySrc,clazz);
clazz.addMethod(encodeLongArrayMethod);
encodeDoubleArrayMethod=CtMethod.make(encodeDoubleArraySrc,clazz);
clazz.addMethod(encodeDoubleArrayMethod);
encodeStringArrayMethod=CtMethod.make(encodeStringArraySrc,clazz);
clazz.addMethod(encodeStringArrayMethod);
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);
decodeUnpackerMethod=CtMethod.make(decodeUnpackerSrc,clazz);
clazz.addMethod(decodeUnpackerMethod);
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);
}
}