Program: 58433
Project: 58433
Buggy source:
private static byte[] writeWorldProxy(String name,byte[] bytes,ClassReader cr){
  ClassNode world=new ClassNode(ASM4);
{
    try {
      ClassReader reader=new ClassReader(LoadingPlugin.loader.getClassBytes("String_Node_Str"));
      reader.accept(world,ClassReader.EXPAND_FRAMES);
    }
 catch (    Throwable e) {
      Throwables.propagate(e);
    }
  }
  ClassNode cn=new ClassNode(ASM4);
  cr.accept(cn,ClassReader.EXPAND_FRAMES);
  for (  MethodNode m : world.methods) {
    if (m.name.indexOf('<') != 0 && (m.access & ACC_STATIC) == 0) {
{
        Iterator<MethodNode> i=cn.methods.iterator();
        while (i.hasNext()) {
          MethodNode m2=i.next();
          if (m2.name.equals(m.name) && m2.desc.equals(m.desc)) {
            i.remove();
          }
        }
      }
      MethodVisitor mv=cn.visitMethod(getAccess(m),m.name,m.desc,m.signature,m.exceptions.toArray(new String[0]));
      mv.visitCode();
      mv.visitVarInsn(ALOAD,0);
      mv.visitFieldInsn(GETFIELD,"String_Node_Str","String_Node_Str","String_Node_Str");
      Type[] types=Type.getArgumentTypes(m.desc);
      for (int i=0, w=1, e=types.length; i < e; i++) {
        mv.visitVarInsn(types[i].getOpcode(ILOAD),w);
        w+=types[i].getSize();
      }
      mv.visitMethodInsn(INVOKEVIRTUAL,"String_Node_Str",m.name,m.desc,false);
      mv.visitInsn(Type.getReturnType(m.desc).getOpcode(IRETURN));
      mv.visitMaxs(1,1);
      mv.visitEnd();
    }
  }
  ClassWriter cw=new ClassWriter(ClassWriter.COMPUTE_FRAMES);
  cn.accept(cw);
  return cw.toByteArray();
}

Fixed version (ground truth):
private static byte[] writeWorldProxy(String name,byte[] bytes,ClassReader cr){
  ClassNode world=new ClassNode(ASM4);
{
    FMLDeobfuscatingRemapper remapper=FMLDeobfuscatingRemapper.INSTANCE;
    try {
      ClassReader reader=new ClassReader(LoadingPlugin.loader.getClassBytes(remapper.unmap("String_Node_Str").replace('/','.')));
      reader.accept(world,ClassReader.SKIP_CODE);
    }
 catch (    Throwable e) {
      Throwables.propagate(e);
    }
  }
  ClassNode cn=new ClassNode(ASM4);
  cr.accept(cn,ClassReader.SKIP_FRAMES);
  for (  MethodNode m : world.methods) {
    if (m.name.indexOf('<') != 0 && (m.access & ACC_STATIC) == 0) {
{
        Iterator<MethodNode> i=cn.methods.iterator();
        while (i.hasNext()) {
          MethodNode m2=i.next();
          if (m2.name.equals(m.name) && m2.desc.equals(m.desc)) {
            i.remove();
          }
        }
      }
      MethodVisitor mv=cn.visitMethod(getAccess(m),m.name,m.desc,m.signature,m.exceptions.toArray(new String[0]));
      mv.visitCode();
      mv.visitVarInsn(ALOAD,0);
      mv.visitFieldInsn(GETFIELD,"String_Node_Str","String_Node_Str","String_Node_Str");
      Type[] types=Type.getArgumentTypes(m.desc);
      for (int i=0, w=1, e=types.length; i < e; i++) {
        mv.visitVarInsn(types[i].getOpcode(ILOAD),w);
        w+=types[i].getSize();
      }
      mv.visitMethodInsn(INVOKEVIRTUAL,"String_Node_Str",m.name,m.desc,false);
      mv.visitInsn(Type.getReturnType(m.desc).getOpcode(IRETURN));
      mv.visitMaxs(1,1);
      mv.visitEnd();
    }
  }
  ClassWriter cw=new ClassWriter(ClassWriter.COMPUTE_FRAMES);
  cn.accept(cw);
  return cw.toByteArray();
}