Program: 60501
Project: 60501
Buggy source:
/** 
 * @param constructorInjector the constructor to use, or {@code null} to use the default.
 */
static <T>ConstructorBindingImpl<T> create(InjectorImpl injector,Key<T> key,InjectionPoint constructorInjector,Object source,Scoping scoping,Errors errors) throws ErrorsException {
  int numErrors=errors.size();
  @SuppressWarnings("String_Node_Str") Class<? super T> rawType=constructorInjector == null ? key.getTypeLiteral().getRawType() : (Class)constructorInjector.getDeclaringType().getRawType();
  if (Modifier.isAbstract(rawType.getModifiers())) {
    errors.missingImplementation(key);
  }
  if (Classes.isInnerClass(rawType)) {
    errors.cannotInjectInnerClass(rawType);
  }
  errors.throwIfNewErrors(numErrors);
  if (constructorInjector == null) {
    try {
      constructorInjector=InjectionPoint.forConstructorOf(key.getTypeLiteral());
    }
 catch (    ConfigurationException e) {
      throw errors.merge(e.getErrorMessages()).toException();
    }
  }
  if (!scoping.isExplicitlyScoped()) {
    Class<?> annotatedType=constructorInjector.getMember().getDeclaringClass();
    Class<? extends Annotation> scopeAnnotation=findScopeAnnotation(errors,annotatedType);
    if (scopeAnnotation != null) {
      scoping=Scoping.makeInjectable(Scoping.forAnnotation(scopeAnnotation),injector,errors.withSource(rawType));
    }
  }
  errors.throwIfNewErrors(numErrors);
  Factory<T> factoryFactory=new Factory<T>();
  InternalFactory<? extends T> scopedFactory=Scoping.scope(key,injector,factoryFactory,source,scoping);
  return new ConstructorBindingImpl<T>(injector,key,source,scopedFactory,scoping,factoryFactory,constructorInjector);
}

Fixed version (ground truth):
/** 
 * @param constructorInjector the constructor to use, or {@code null} to use the default.
 * @param failIfNotLinked true if this ConstructorBindingImpl's InternalFactory shouldonly succeed if retrieved from a linked binding
 */
static <T>ConstructorBindingImpl<T> create(InjectorImpl injector,Key<T> key,InjectionPoint constructorInjector,Object source,Scoping scoping,Errors errors,boolean failIfNotLinked) throws ErrorsException {
  int numErrors=errors.size();
  @SuppressWarnings("String_Node_Str") Class<? super T> rawType=constructorInjector == null ? key.getTypeLiteral().getRawType() : (Class)constructorInjector.getDeclaringType().getRawType();
  if (Modifier.isAbstract(rawType.getModifiers())) {
    errors.missingImplementation(key);
  }
  if (Classes.isInnerClass(rawType)) {
    errors.cannotInjectInnerClass(rawType);
  }
  errors.throwIfNewErrors(numErrors);
  if (constructorInjector == null) {
    try {
      constructorInjector=InjectionPoint.forConstructorOf(key.getTypeLiteral());
    }
 catch (    ConfigurationException e) {
      throw errors.merge(e.getErrorMessages()).toException();
    }
  }
  if (!scoping.isExplicitlyScoped()) {
    Class<?> annotatedType=constructorInjector.getMember().getDeclaringClass();
    Class<? extends Annotation> scopeAnnotation=findScopeAnnotation(errors,annotatedType);
    if (scopeAnnotation != null) {
      scoping=Scoping.makeInjectable(Scoping.forAnnotation(scopeAnnotation),injector,errors.withSource(rawType));
    }
  }
  errors.throwIfNewErrors(numErrors);
  Factory<T> factoryFactory=new Factory<T>(failIfNotLinked,key);
  InternalFactory<? extends T> scopedFactory=Scoping.scope(key,injector,factoryFactory,source,scoping);
  return new ConstructorBindingImpl<T>(injector,key,source,scopedFactory,scoping,factoryFactory,constructorInjector);
}