Program: 60327
Project: 60327
Buggy source:
/** 
 * Creates and returns the injector shells for the current modules. Multiple shells will be returned if any modules contain   {@link Binder#newPrivateBinder private environments}. The primary injector will be first in the returned list.
 */
List<InjectorShell> build(Initializer initializer,ProcessedBindingData bindingData,Stopwatch stopwatch,Errors errors){
  checkState(stage != null,"String_Node_Str");
  checkState(privateElements == null || parent != null,"String_Node_Str");
  checkState(state != null,"String_Node_Str");
  if (parent == null) {
    modules.add(0,new RootModule());
  }
  elements.addAll(Elements.getElements(stage,modules));
  InjectorOptionsProcessor optionsProcessor=new InjectorOptionsProcessor(errors);
  optionsProcessor.process(null,elements);
  options=optionsProcessor.getOptions(stage,options);
  InjectorImpl injector=new InjectorImpl(parent,state,options);
  if (privateElements != null) {
    privateElements.initInjector(injector);
  }
  if (parent == null) {
    new TypeConverterBindingProcessor(errors).prepareBuiltInConverters(injector);
  }
  stopwatch.resetAndLog("String_Node_Str");
  new MessageProcessor(errors).process(injector,elements);
  new InterceptorBindingProcessor(errors).process(injector,elements);
  stopwatch.resetAndLog("String_Node_Str");
  new ListenerBindingProcessor(errors).process(injector,elements);
  List<TypeListenerBinding> typeListenerBindings=injector.state.getTypeListenerBindings();
  injector.membersInjectorStore=new MembersInjectorStore(injector,typeListenerBindings);
  List<ProvisionListenerBinding> provisionListenerBindings=injector.state.getProvisionListenerBindings();
  injector.provisionListenerStore=new ProvisionListenerCallbackStore(provisionListenerBindings);
  stopwatch.resetAndLog("String_Node_Str");
  new ScopeBindingProcessor(errors).process(injector,elements);
  stopwatch.resetAndLog("String_Node_Str");
  new TypeConverterBindingProcessor(errors).process(injector,elements);
  stopwatch.resetAndLog("String_Node_Str");
  bindStage(injector,stage);
  bindInjector(injector);
  bindLogger(injector);
  new BindingProcessor(errors,initializer,bindingData).process(injector,elements);
  new UntargettedBindingProcessor(errors,bindingData).process(injector,elements);
  stopwatch.resetAndLog("String_Node_Str");
  List<InjectorShell> injectorShells=Lists.newArrayList();
  injectorShells.add(new InjectorShell(this,elements,injector));
  PrivateElementProcessor processor=new PrivateElementProcessor(errors);
  processor.process(injector,elements);
  for (  Builder builder : processor.getInjectorShellBuilders()) {
    injectorShells.addAll(builder.build(initializer,bindingData,stopwatch,errors));
  }
  stopwatch.resetAndLog("String_Node_Str");
  return injectorShells;
}

Fixed version (ground truth):
/** 
 * Creates and returns the injector shells for the current modules. Multiple shells will be returned if any modules contain   {@link Binder#newPrivateBinder private environments}. The primary injector will be first in the returned list.
 */
List<InjectorShell> build(Initializer initializer,ProcessedBindingData bindingData,Stopwatch stopwatch,Errors errors){
  checkState(stage != null,"String_Node_Str");
  checkState(privateElements == null || parent != null,"String_Node_Str");
  checkState(state != null,"String_Node_Str");
  if (parent == null) {
    modules.add(0,new RootModule());
  }
  elements.addAll(Elements.getElements(stage,modules));
  InjectorOptionsProcessor optionsProcessor=new InjectorOptionsProcessor(errors);
  optionsProcessor.process(null,elements);
  options=optionsProcessor.getOptions(stage,options);
  InjectorImpl injector=new InjectorImpl(parent,state,options);
  if (privateElements != null) {
    privateElements.initInjector(injector);
  }
  if (parent == null) {
    TypeConverterBindingProcessor.prepareBuiltInConverters(injector);
  }
  stopwatch.resetAndLog("String_Node_Str");
  new MessageProcessor(errors).process(injector,elements);
  new InterceptorBindingProcessor(errors).process(injector,elements);
  stopwatch.resetAndLog("String_Node_Str");
  new ListenerBindingProcessor(errors).process(injector,elements);
  List<TypeListenerBinding> typeListenerBindings=injector.state.getTypeListenerBindings();
  injector.membersInjectorStore=new MembersInjectorStore(injector,typeListenerBindings);
  List<ProvisionListenerBinding> provisionListenerBindings=injector.state.getProvisionListenerBindings();
  injector.provisionListenerStore=new ProvisionListenerCallbackStore(provisionListenerBindings);
  stopwatch.resetAndLog("String_Node_Str");
  new ScopeBindingProcessor(errors).process(injector,elements);
  stopwatch.resetAndLog("String_Node_Str");
  new TypeConverterBindingProcessor(errors).process(injector,elements);
  stopwatch.resetAndLog("String_Node_Str");
  bindStage(injector,stage);
  bindInjector(injector);
  bindLogger(injector);
  new BindingProcessor(errors,initializer,bindingData).process(injector,elements);
  new UntargettedBindingProcessor(errors,bindingData).process(injector,elements);
  stopwatch.resetAndLog("String_Node_Str");
  List<InjectorShell> injectorShells=Lists.newArrayList();
  injectorShells.add(new InjectorShell(this,elements,injector));
  PrivateElementProcessor processor=new PrivateElementProcessor(errors);
  processor.process(injector,elements);
  for (  Builder builder : processor.getInjectorShellBuilders()) {
    injectorShells.addAll(builder.build(initializer,bindingData,stopwatch,errors));
  }
  stopwatch.resetAndLog("String_Node_Str");
  return injectorShells;
}