Program: 83584
Project: 83584
Buggy source:
public MethodVisitor visitMethod(int access,String name,String desc,String signature,String[] exceptions){
  Name name1=Name.get(name);
  if ((this.modifiers & Modifiers.ANNOTATION) != 0) {
    ClassParameter param=new ClassParameter();
    param.modifiers=access;
    param.name=name1;
    param.type=ClassFormat.readReturnType(desc);
    this.addParameter(param);
    return new AnnotationClassVisitor(param);
  }
  if ("String_Node_Str".equals(name)) {
    Constructor constructor=new ExternalConstructor(this);
    constructor.setModifiers(access);
    ClassFormat.readConstructorType(desc,constructor);
    if ((access & Modifiers.VARARGS) != 0) {
      constructor.getParameter(constructor.parameterCount() - 1).setVarargs(true);
    }
    this.body.addConstructor(constructor);
    return new SimpleMethodVisitor(constructor);
  }
  ExternalMethod method=new ExternalMethod(this);
  method.name=name1;
  method.modifiers=access;
  method.descriptor=desc;
  if (signature != null) {
    method.setGeneric();
    ClassFormat.readMethodType(signature,method);
  }
 else {
    ClassFormat.readMethodType(desc,method);
  }
  if ((access & Modifiers.VARARGS) != 0) {
    method.getParameter(method.parameterCount() - 1).setVarargs(true);
  }
  boolean flag=true;
  if ((access & Modifiers.SYNTHETIC) != 0) {
    int index=name.indexOf('$');
    if (index != -1) {
      flag=this.addSpecialMethod(name.substring(0,index),name.substring(index + 1),method);
    }
  }
  if (flag) {
    this.body.addMethod(method);
  }
  return new BytecodeVisitor(method);
}

Fixed version (ground truth):
public MethodVisitor visitMethod(int access,String name,String desc,String signature,String[] exceptions){
  Name name1=Name.get(name);
  if ((this.modifiers & Modifiers.ANNOTATION) != 0) {
    ClassParameter param=new ClassParameter();
    param.modifiers=access;
    param.name=name1;
    param.type=ClassFormat.readReturnType(desc);
    this.addParameter(param);
    return new AnnotationClassVisitor(param);
  }
  if ("String_Node_Str".equals(name)) {
    Constructor constructor=new ExternalConstructor(this);
    constructor.setModifiers(access);
    ClassFormat.readConstructorType(desc,constructor);
    if ((access & Modifiers.VARARGS) != 0) {
      constructor.getParameter(constructor.parameterCount() - 1).setVarargs(true);
    }
    this.body.addConstructor(constructor);
    return new SimpleMethodVisitor(constructor);
  }
  ExternalMethod method=new ExternalMethod(this);
  method.name=name1;
  method.modifiers=access;
  method.descriptor=desc;
  if (signature != null) {
    method.setGeneric();
    ClassFormat.readMethodType(signature,method);
  }
 else {
    ClassFormat.readMethodType(desc,method);
    if (exceptions != null) {
      for (      String s : exceptions) {
        method.addException(ClassFormat.internalToType(s));
      }
    }
  }
  if ((access & Modifiers.VARARGS) != 0) {
    method.getParameter(method.parameterCount() - 1).setVarargs(true);
  }
  boolean flag=true;
  if ((access & Modifiers.SYNTHETIC) != 0) {
    int index=name.indexOf('$');
    if (index != -1) {
      flag=this.addSpecialMethod(name.substring(0,index),name.substring(index + 1),method);
    }
  }
  if (flag) {
    this.body.addMethod(method);
  }
  return new BytecodeVisitor(method);
}