Program: 60523
Project: 60523
Buggy source:
/** 
 * Returns a new just-in-time binding created by resolving   {@code key}. The strategies used to create just-in-time bindings are: <ol> <li>Internalizing Providers. If the requested binding is for   {@code Provider<T>}, we delegate to the binding for   {@code T}. <li>Converting constants. <li>ImplementedBy and ProvidedBy annotations. Only for unannotated keys. <li>The constructor of the raw type. Only for unannotated keys. </ol>
 * @throws com.google.inject.internal.ErrorsException if the binding cannot be created.
 */
private <T>BindingImpl<T> createJustInTimeBinding(Key<T> key,Errors errors) throws ErrorsException {
  int numErrorsBefore=errors.size();
  if (state.isBlacklisted(key)) {
    throw errors.childBindingAlreadySet(key).toException();
  }
  if (isProvider(key)) {
    @SuppressWarnings("String_Node_Str") BindingImpl<T> binding=(BindingImpl<T>)createProviderBinding((Key)key,errors);
    return binding;
  }
  if (isMembersInjector(key)) {
    @SuppressWarnings("String_Node_Str") BindingImpl<T> binding=(BindingImpl<T>)createMembersInjectorBinding((Key)key,errors);
    return binding;
  }
  BindingImpl<T> convertedBinding=convertConstantStringBinding(key,errors);
  if (convertedBinding != null) {
    return convertedBinding;
  }
  if (key.getAnnotationType() != null) {
    if (key.hasAttributes()) {
      try {
        Errors ignored=new Errors();
        return getBindingOrThrow(key.withoutAttributes(),ignored);
      }
 catch (      ErrorsException ignored) {
      }
    }
    throw errors.missingImplementation(key).toException();
  }
  Object source=key.getTypeLiteral().getRawType();
  BindingImpl<T> binding=createUninitializedBinding(key,Scoping.UNSCOPED,source,errors);
  errors.throwIfNewErrors(numErrorsBefore);
  initializeBinding(binding,errors);
  return binding;
}

Fixed version (ground truth):
/** 
 * Returns a new just-in-time binding created by resolving   {@code key}. The strategies used to create just-in-time bindings are: <ol> <li>Internalizing Providers. If the requested binding is for   {@code Provider<T>}, we delegate to the binding for   {@code T}. <li>Converting constants. <li>ImplementedBy and ProvidedBy annotations. Only for unannotated keys. <li>The constructor of the raw type. Only for unannotated keys. </ol>
 * @throws com.google.inject.internal.ErrorsException if the binding cannot be created.
 */
private <T>BindingImpl<T> createJustInTimeBinding(Key<T> key,Errors errors) throws ErrorsException {
  int numErrorsBefore=errors.size();
  if (state.isBlacklisted(key)) {
    throw errors.childBindingAlreadySet(key).toException();
  }
  if (isProvider(key)) {
    @SuppressWarnings("String_Node_Str") BindingImpl<T> binding=(BindingImpl<T>)createProviderBinding((Key)key,errors);
    return binding;
  }
  if (isMembersInjector(key)) {
    @SuppressWarnings("String_Node_Str") BindingImpl<T> binding=(BindingImpl<T>)createMembersInjectorBinding((Key)key,errors);
    return binding;
  }
  BindingImpl<T> convertedBinding=convertConstantStringBinding(key,errors);
  if (convertedBinding != null) {
    return convertedBinding;
  }
  if (key.getAnnotationType() != null) {
    if (key.hasAttributes()) {
      try {
        Errors ignored=new Errors();
        return getBindingOrThrow(key.withoutAttributes(),ignored);
      }
 catch (      ErrorsException ignored) {
      }
    }
    throw errors.missingImplementation(key).toException();
  }
  Object source=key.getTypeLiteral().getRawType();
  BindingImpl<T> binding=createUninitializedBinding(key,Scoping.UNSCOPED,source,errors);
  errors.throwIfNewErrors(numErrorsBefore);
  initializeJitBinding(binding,errors);
  return binding;
}