Program: 83601
Project: 83601
Buggy source:
@Override public void write(ClassWriter writer,IValue instanceFields) throws BytecodeException {
  super.write(writer,instanceFields);
  MethodWriter mw;
  if ((this.methods & APPLY) == 0) {
    mw=new MethodWriterImpl(writer,writer.visitMethod(this.applyMethod.getModifiers(),"String_Node_Str",this.applyMethod.getDescriptor(),this.applyMethod.getSignature(),null));
    mw.begin();
    mw.writeTypeInsn(Opcodes.NEW,this.theClass.getType().getInternalName());
    mw.writeInsn(Opcodes.DUP);
    int len=this.theClass.parameterCount();
    for (int i=0; i < len; i++) {
      IParameter param=this.theClass.getParameter(i);
      param.write(mw);
      mw.writeVarInsn(param.getType().getLoadOpcode(),i);
    }
    this.constructor.writeInvoke(mw);
    mw.writeInsn(Opcodes.ARETURN);
    mw.end(this.theClass.getType());
  }
  String internal=this.theClass.getInternalName();
  if ((this.methods & EQUALS) == 0) {
    mw=new MethodWriterImpl(writer,writer.visitMethod(Modifiers.PUBLIC | Modifiers.SYNTHETIC,"String_Node_Str","String_Node_Str",null,null));
    mw.setThisType(internal);
    mw.registerParameter(0,"String_Node_Str",Types.OBJECT,0);
    mw.begin();
    CaseClasses.writeEquals(mw,this.theClass);
    mw.end();
  }
  if ((this.methods & HASHCODE) == 0) {
    mw=new MethodWriterImpl(writer,writer.visitMethod(Modifiers.PUBLIC | Modifiers.SYNTHETIC,"String_Node_Str","String_Node_Str",null,null));
    mw.setThisType(internal);
    mw.begin();
    CaseClasses.writeHashCode(mw,this.theClass);
    mw.end();
  }
  if ((this.methods & TOSTRING) == 0) {
    mw=new MethodWriterImpl(writer,writer.visitMethod(Modifiers.PUBLIC | Modifiers.SYNTHETIC,"String_Node_Str","String_Node_Str",null,null));
    mw.setThisType(internal);
    mw.begin();
    CaseClasses.writeToString(mw,this.theClass);
    mw.end();
  }
}

Fixed version (ground truth):
@Override public void write(ClassWriter writer,IValue instanceFields) throws BytecodeException {
  super.write(writer,instanceFields);
  MethodWriter mw;
  if ((this.methods & APPLY) == 0) {
    mw=new MethodWriterImpl(writer,writer.visitMethod(this.applyMethod.getModifiers(),"String_Node_Str",this.applyMethod.getDescriptor(),this.applyMethod.getSignature(),null));
    mw.begin();
    mw.writeTypeInsn(Opcodes.NEW,this.theClass.getType().getInternalName());
    mw.writeInsn(Opcodes.DUP);
    int len=this.theClass.parameterCount();
    for (int i=0; i < len; i++) {
      IParameter param=this.theClass.getParameter(i);
      param.write(mw);
      mw.writeVarInsn(param.getType().getLoadOpcode(),i);
    }
    this.constructor.writeInvoke(mw);
    mw.writeInsn(Opcodes.ARETURN);
    mw.end(this.theClass.getType());
  }
  String internal=this.theClass.getInternalName();
  if ((this.methods & EQUALS) == 0) {
    mw=new MethodWriterImpl(writer,writer.visitMethod(Modifiers.PUBLIC | Modifiers.SYNTHETIC,"String_Node_Str","String_Node_Str",null,null));
    mw.setThisType(internal);
    mw.registerParameter(1,"String_Node_Str",Types.OBJECT,0);
    mw.begin();
    CaseClasses.writeEquals(mw,this.theClass);
    mw.end();
  }
  if ((this.methods & HASHCODE) == 0) {
    mw=new MethodWriterImpl(writer,writer.visitMethod(Modifiers.PUBLIC | Modifiers.SYNTHETIC,"String_Node_Str","String_Node_Str",null,null));
    mw.setThisType(internal);
    mw.begin();
    CaseClasses.writeHashCode(mw,this.theClass);
    mw.end();
  }
  if ((this.methods & TOSTRING) == 0) {
    mw=new MethodWriterImpl(writer,writer.visitMethod(Modifiers.PUBLIC | Modifiers.SYNTHETIC,"String_Node_Str","String_Node_Str",null,null));
    mw.setThisType(internal);
    mw.begin();
    CaseClasses.writeToString(mw,this.theClass);
    mw.end();
  }
}