Program: 60328
Project: 60328
Buggy source:
/** 
 * Installs default converters for primitives, enums, and class literals. 
 */
void prepareBuiltInConverters(InjectorImpl injector){
  this.injector=injector;
  try {
    convertToPrimitiveType(int.class,Integer.class);
    convertToPrimitiveType(long.class,Long.class);
    convertToPrimitiveType(boolean.class,Boolean.class);
    convertToPrimitiveType(byte.class,Byte.class);
    convertToPrimitiveType(short.class,Short.class);
    convertToPrimitiveType(float.class,Float.class);
    convertToPrimitiveType(double.class,Double.class);
    convertToClass(Character.class,new TypeConverter(){
      public Object convert(      String value,      TypeLiteral<?> toType){
        value=value.trim();
        if (value.length() != 1) {
          throw new RuntimeException("String_Node_Str");
        }
        return value.charAt(0);
      }
      @Override public String toString(){
        return "String_Node_Str";
      }
    }
);
    convertToClasses(Matchers.subclassesOf(Enum.class),new TypeConverter(){
      @SuppressWarnings("String_Node_Str") public Object convert(      String value,      TypeLiteral<?> toType){
        return Enum.valueOf((Class)toType.getRawType(),value);
      }
      @Override public String toString(){
        return "String_Node_Str";
      }
    }
);
    internalConvertToTypes(new AbstractMatcher<TypeLiteral<?>>(){
      public boolean matches(      TypeLiteral<?> typeLiteral){
        return typeLiteral.getRawType() == Class.class;
      }
      @Override public String toString(){
        return "String_Node_Str";
      }
    }
,new TypeConverter(){
      @SuppressWarnings("String_Node_Str") public Object convert(      String value,      TypeLiteral<?> toType){
        try {
          return Class.forName(value);
        }
 catch (        ClassNotFoundException e) {
          throw new RuntimeException(e.getMessage());
        }
      }
      @Override public String toString(){
        return "String_Node_Str";
      }
    }
);
  }
  finally {
    this.injector=null;
  }
}

Fixed version (ground truth):
/** 
 * Installs default converters for primitives, enums, and class literals. 
 */
static void prepareBuiltInConverters(InjectorImpl injector){
  convertToPrimitiveType(injector,int.class,Integer.class);
  convertToPrimitiveType(injector,long.class,Long.class);
  convertToPrimitiveType(injector,boolean.class,Boolean.class);
  convertToPrimitiveType(injector,byte.class,Byte.class);
  convertToPrimitiveType(injector,short.class,Short.class);
  convertToPrimitiveType(injector,float.class,Float.class);
  convertToPrimitiveType(injector,double.class,Double.class);
  convertToClass(injector,Character.class,new TypeConverter(){
    public Object convert(    String value,    TypeLiteral<?> toType){
      value=value.trim();
      if (value.length() != 1) {
        throw new RuntimeException("String_Node_Str");
      }
      return value.charAt(0);
    }
    @Override public String toString(){
      return "String_Node_Str";
    }
  }
);
  convertToClasses(injector,Matchers.subclassesOf(Enum.class),new TypeConverter(){
    @SuppressWarnings("String_Node_Str") public Object convert(    String value,    TypeLiteral<?> toType){
      return Enum.valueOf((Class)toType.getRawType(),value);
    }
    @Override public String toString(){
      return "String_Node_Str";
    }
  }
);
  internalConvertToTypes(injector,new AbstractMatcher<TypeLiteral<?>>(){
    public boolean matches(    TypeLiteral<?> typeLiteral){
      return typeLiteral.getRawType() == Class.class;
    }
    @Override public String toString(){
      return "String_Node_Str";
    }
  }
,new TypeConverter(){
    @SuppressWarnings("String_Node_Str") public Object convert(    String value,    TypeLiteral<?> toType){
      try {
        return Class.forName(value);
      }
 catch (      ClassNotFoundException e) {
        throw new RuntimeException(e.getMessage());
      }
    }
    @Override public String toString(){
      return "String_Node_Str";
    }
  }
);
}