Program: 169013
Project: 169013
Buggy source:
private void addConstructors(CtClass newClass,CtClass cc) throws NotFoundException, CannotCompileException, BadBytecode {
  ConstPool cp=cc.getClassFile2().getConstPool();
  for (  CtConstructor constructor : cc.getDeclaredConstructors()) {
    CtConstructor newConstructor=new CtConstructor(constructor.getParameterTypes(),newClass);
    CodeAttribute codeAttribute=constructor.getMethodInfo2().getCodeAttribute();
    Bytecode newBytecode=new Bytecode(newClass.getClassFile2().getConstPool(),3,constructor.getParameterTypes().length + 1);
    CodeIterator ci=codeAttribute.iterator();
    int superConstructorIndex=ci.skipSuperConstructor();
    int superConstructorRef=ci.u16bitAt(superConstructorIndex + 1);
    String superConstructorType=cp.getMethodrefType(superConstructorRef);
    CtClass[] superConstructorArgumentTypes=Descriptor.getParameterTypes(superConstructorType,pool);
    int[] argumentPositions=new int[superConstructorArgumentTypes.length];
    final int offset=(constructor.getParameterTypes().length - argumentPositions.length) + 1;
    for (int i=0; i < argumentPositions.length; i++) {
      argumentPositions[i]=offset + i;
    }
    newBytecode.addAload(0);
    newBytecode.addInvokespecial("String_Node_Str","String_Node_Str","String_Node_Str");
    copyBytecode(newClass,newBytecode,cp,ci);
    int newStartIndex=newBytecode.getSize();
    addConstructorCode(newClass,newBytecode,cc.getSuperclass(),superConstructorArgumentTypes,argumentPositions);
    newBytecode.add(Bytecode.RETURN);
    newConstructor.getMethodInfo2().setCodeAttribute(newBytecode.toCodeAttribute());
    newClass.addConstructor(newConstructor);
  }
}

Fixed version (ground truth):
private void addConstructors(CtClass newClass,CtClass cc) throws NotFoundException, CannotCompileException, BadBytecode {
  ConstPool cp=cc.getClassFile2().getConstPool();
  for (  CtConstructor constructor : cc.getDeclaredConstructors()) {
    CtConstructor newConstructor=new CtConstructor(constructor.getParameterTypes(),newClass);
    CodeAttribute codeAttribute=constructor.getMethodInfo2().getCodeAttribute();
    Bytecode newBytecode=new Bytecode(newClass.getClassFile2().getConstPool(),3,constructor.getParameterTypes().length + 1);
    CodeIterator ci=codeAttribute.iterator();
    int superConstructorIndex=ci.skipSuperConstructor();
    int superConstructorRef=ci.u16bitAt(superConstructorIndex + 1);
    String superConstructorType=cp.getMethodrefType(superConstructorRef);
    CtClass[] superConstructorArgumentTypes=Descriptor.getParameterTypes(superConstructorType,pool);
    int[] argumentPositions=new int[superConstructorArgumentTypes.length];
    final int offset=(constructor.getParameterTypes().length - argumentPositions.length) + 1;
    for (int i=0; i < argumentPositions.length; i++) {
      argumentPositions[i]=offset + i;
    }
    newBytecode.addAload(0);
    newBytecode.addInvokespecial(newClass.getSuperclass(),"String_Node_Str","String_Node_Str");
    copyBytecode(newClass,newBytecode,cp,ci);
    int newStartIndex=newBytecode.getSize();
    addConstructorCode(newClass,newBytecode,cc.getSuperclass(),superConstructorArgumentTypes,argumentPositions);
    newBytecode.add(Bytecode.RETURN);
    newConstructor.getMethodInfo2().setCodeAttribute(newBytecode.toCodeAttribute());
    newClass.addConstructor(newConstructor);
  }
}