Program: 59827
Project: 59827
Buggy source:
public ClassNode(Node parent,Class<T> clazz,boolean isPrefixTarget,boolean isSingleton) throws BindException {
  super(parent,clazz);
  this.clazz=clazz;
  this.isPrefixTarget=isPrefixTarget;
  this.isSingleton=isSingleton;
  final boolean injectable=isInjectionCandidate(clazz);
  Constructor<T>[] constructors=(Constructor<T>[])clazz.getDeclaredConstructors();
  MonotonicSet<ConstructorDef<T>> injectableConstructors=new MonotonicSet<ConstructorDef<T>>();
  for (int k=0; k < constructors.length; k++) {
    if (constructors[k].getAnnotation(Inject.class) != null) {
      if (!injectable) {
        throw new BindException("String_Node_Str" + clazz);
      }
      if (constructors[k].isSynthetic()) {
        throw new IllegalStateException("String_Node_Str");
      }
      Class<?>[] paramTypes=constructors[k].getParameterTypes();
      Annotation[][] paramAnnotations=constructors[k].getParameterAnnotations();
      if (paramTypes.length != paramAnnotations.length) {
        throw new IllegalStateException();
      }
      ConstructorArg[] args=new ConstructorArg[paramTypes.length];
      for (int i=0; i < paramTypes.length; i++) {
        Parameter named=null;
        for (int j=0; j < paramAnnotations[i].length; j++) {
          Annotation annotation=paramAnnotations[i][j];
          if (annotation instanceof Parameter) {
            named=(Parameter)annotation;
          }
        }
        args[i]=new ConstructorArg(paramTypes[i],named);
      }
      ConstructorDef<T> def;
      try {
        def=new ConstructorDef<T>(args,constructors[k]);
      }
 catch (      BindException e) {
        throw new BindException("String_Node_Str" + constructors[k] + "String_Node_Str"+ clazz,e);
      }
      if (injectableConstructors.contains(def)) {
        throw new BindException("String_Node_Str" + clazz + "String_Node_Str"+ def+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str");
      }
 else {
        injectableConstructors.add(def);
      }
    }
  }
  this.injectableConstructors=injectableConstructors.toArray((ConstructorDef<T>[])new ConstructorDef[0]);
}

Fixed version (ground truth):
public ClassNode(Node parent,Class<T> clazz,boolean isPrefixTarget,boolean isSingleton) throws BindException {
  super(parent,clazz);
  this.clazz=clazz;
  this.isPrefixTarget=isPrefixTarget;
  this.isSingleton=isSingleton;
  Constructor<T>[] constructors=(Constructor<T>[])clazz.getDeclaredConstructors();
  MonotonicSet<ConstructorDef<T>> injectableConstructors=new MonotonicSet<ConstructorDef<T>>();
  for (int k=0; k < constructors.length; k++) {
    if (constructors[k].getAnnotation(Inject.class) != null) {
      if (constructors[k].isSynthetic()) {
        throw new IllegalStateException("String_Node_Str");
      }
      ConstructorDef<T> def=createConstructorDef(constructors[k]);
      if (injectableConstructors.contains(def)) {
        throw new BindException("String_Node_Str" + clazz + "String_Node_Str"+ def+ "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str");
      }
 else {
        injectableConstructors.add(def);
      }
    }
  }
  this.injectableConstructors=injectableConstructors.toArray((ConstructorDef<T>[])new ConstructorDef[0]);
}