Program: 43517
Project: 43517
Buggy source:
private void addClass(Class<?> classZ){
  if (classZ.isInterface() || classZ.isMemberClass() || classZ.isEnum()|| classZ.isAnnotation()|| classZ.isAnonymousClass())   return;
  int modify=classZ.getModifiers();
  if (Modifier.isAbstract(modify) || (!Modifier.isPublic(modify)))   return;
  IocBean iocBean=classZ.getAnnotation(IocBean.class);
  if (iocBean != null) {
    if (LOG.isDebugEnabled())     LOG.debugf("String_Node_Str",classZ);
    String beanName=iocBean.name();
    if (Strings.isBlank(beanName))     beanName=Strings.lowerFirst(classZ.getSimpleName());
    IocObject iocObject=new IocObject();
    iocObject.setType(classZ);
    map.put(beanName,iocObject);
    iocObject.setSingleton(iocBean.singleton());
    if (!Strings.isBlank(iocBean.scope()))     iocObject.setScope(iocBean.scope());
    if (iocBean.param().length > 0)     for (    String value : iocBean.param())     iocObject.addArg(convert(value));
    IocEventSet eventSet=new IocEventSet();
    iocObject.setEvents(eventSet);
    if (!Strings.isBlank(iocBean.create()))     eventSet.setCreate(iocBean.create().trim().intern());
    if (!Strings.isBlank(iocBean.depose()))     eventSet.setCreate(iocBean.depose().trim().intern());
    if (!Strings.isBlank(iocBean.fetch()))     eventSet.setCreate(iocBean.fetch().trim().intern());
    List<String> fieldList=new ArrayList<String>();
    Field[] fields=classZ.getDeclaredFields();
    for (    Field field : fields) {
      Inject inject=field.getAnnotation(Inject.class);
      if (inject == null)       continue;
      IocField iocField=new IocField();
      iocField.setName(field.getName());
      IocValue iocValue;
      if (Strings.isBlank(inject.value())) {
        iocValue=new IocValue();
        iocValue.setType(IocValue.TYPE_REFER);
        iocValue.setValue(field.getName());
      }
 else       iocValue=convert(inject.value());
      iocField.setValue(iocValue);
      iocObject.addField(iocField);
      fieldList.add(iocField.getName());
    }
    Method[] methods=classZ.getMethods();
    for (    Method method : methods) {
      Inject inject=method.getAnnotation(Inject.class);
      if (inject == null)       continue;
      if (method.getName().startsWith("String_Node_Str") && method.getName().length() > 3 && method.getParameterTypes().length == 1) {
        IocField iocField=new IocField();
        iocField.setName(Strings.lowerFirst(method.getName().substring(3)));
        IocValue iocValue;
        if (Strings.isBlank(inject.value())) {
          iocValue=new IocValue();
          iocValue.setType(IocValue.TYPE_REFER);
          iocValue.setValue(Strings.lowerFirst(method.getName().substring(3)));
        }
 else         iocValue=convert(inject.value());
        iocField.setValue(iocValue);
        iocObject.addField(iocField);
        fieldList.add(iocField.getName());
      }
    }
    if (iocBean.field() != null && iocBean.field().length > 0) {
      for (      String fieldInfo : iocBean.field()) {
        if (fieldList.contains(fieldInfo))         throw Lang.makeThrow("String_Node_Str",classZ,fieldInfo);
        IocField iocField=new IocField();
        iocField.setName(fieldInfo);
        IocValue iocValue=new IocValue();
        iocValue.setType(IocValue.TYPE_REFER);
        iocValue.setValue(fieldInfo);
        iocField.setValue(iocValue);
        iocObject.addField(iocField);
        fieldList.add(iocField.getName());
      }
    }
    if (LOG.isDebugEnabled())     LOG.debugf("String_Node_Str",classZ,beanName);
  }
}

Fixed version (ground truth):
private void addClass(Class<?> classZ){
  if (classZ.isInterface() || classZ.isMemberClass() || classZ.isEnum()|| classZ.isAnnotation()|| classZ.isAnonymousClass())   return;
  int modify=classZ.getModifiers();
  if (Modifier.isAbstract(modify) || (!Modifier.isPublic(modify)))   return;
  IocBean iocBean=classZ.getAnnotation(IocBean.class);
  if (iocBean != null) {
    if (LOG.isDebugEnabled())     LOG.debugf("String_Node_Str",classZ);
    String beanName=iocBean.name();
    if (Strings.isBlank(beanName))     beanName=Strings.lowerFirst(classZ.getSimpleName());
    IocObject iocObject=new IocObject();
    iocObject.setType(classZ);
    map.put(beanName,iocObject);
    iocObject.setSingleton(iocBean.singleton());
    if (!Strings.isBlank(iocBean.scope()))     iocObject.setScope(iocBean.scope());
    if (iocBean.param().length > 0)     for (    String value : iocBean.param())     iocObject.addArg(convert(value));
    IocEventSet eventSet=new IocEventSet();
    iocObject.setEvents(eventSet);
    if (!Strings.isBlank(iocBean.create()))     eventSet.setCreate(iocBean.create().trim().intern());
    if (!Strings.isBlank(iocBean.depose()))     eventSet.setDepose(iocBean.depose().trim().intern());
    if (!Strings.isBlank(iocBean.fetch()))     eventSet.setFetch(iocBean.fetch().trim().intern());
    List<String> fieldList=new ArrayList<String>();
    Field[] fields=classZ.getDeclaredFields();
    for (    Field field : fields) {
      Inject inject=field.getAnnotation(Inject.class);
      if (inject == null)       continue;
      IocField iocField=new IocField();
      iocField.setName(field.getName());
      IocValue iocValue;
      if (Strings.isBlank(inject.value())) {
        iocValue=new IocValue();
        iocValue.setType(IocValue.TYPE_REFER);
        iocValue.setValue(field.getName());
      }
 else       iocValue=convert(inject.value());
      iocField.setValue(iocValue);
      iocObject.addField(iocField);
      fieldList.add(iocField.getName());
    }
    Method[] methods=classZ.getMethods();
    for (    Method method : methods) {
      Inject inject=method.getAnnotation(Inject.class);
      if (inject == null)       continue;
      if (method.getName().startsWith("String_Node_Str") && method.getName().length() > 3 && method.getParameterTypes().length == 1) {
        IocField iocField=new IocField();
        iocField.setName(Strings.lowerFirst(method.getName().substring(3)));
        IocValue iocValue;
        if (Strings.isBlank(inject.value())) {
          iocValue=new IocValue();
          iocValue.setType(IocValue.TYPE_REFER);
          iocValue.setValue(Strings.lowerFirst(method.getName().substring(3)));
        }
 else         iocValue=convert(inject.value());
        iocField.setValue(iocValue);
        iocObject.addField(iocField);
        fieldList.add(iocField.getName());
      }
    }
    if (iocBean.field() != null && iocBean.field().length > 0) {
      for (      String fieldInfo : iocBean.field()) {
        if (fieldList.contains(fieldInfo))         throw Lang.makeThrow("String_Node_Str",classZ,fieldInfo);
        IocField iocField=new IocField();
        iocField.setName(fieldInfo);
        IocValue iocValue=new IocValue();
        iocValue.setType(IocValue.TYPE_REFER);
        iocValue.setValue(fieldInfo);
        iocField.setValue(iocValue);
        iocObject.addField(iocField);
        fieldList.add(iocField.getName());
      }
    }
    if (LOG.isDebugEnabled())     LOG.debugf("String_Node_Str",classZ,beanName);
  }
}