Program: 80633
Project: 80633
Buggy source:
@SuppressWarnings("String_Node_Str") 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)) {
      InjectName innm=classZ.getAnnotation(InjectName.class);
      if (null != innm && !Strings.isBlank(innm.value())) {
        beanName=innm.value();
      }
 else {
        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());
    String[] args=iocBean.args();
    if (null == args || args.length == 0)     args=iocBean.param();
    if (null != args && args.length > 0)     for (    String value : args)     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>();
    Mirror<?> mirror=Mirror.me(classZ);
    Field[] fields=mirror.getFields();
    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=mirror.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());
      }
    }
    String[] flds=iocBean.fields();
    if (null == flds || flds.length == 0) {
      flds=iocBean.field();
    }
    if (flds != null && flds.length > 0) {
      for (      String fieldInfo : flds) {
        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)) {
      InjectName innm=classZ.getAnnotation(InjectName.class);
      if (null != innm && !Strings.isBlank(innm.value())) {
        beanName=innm.value();
      }
 else {
        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());
    String[] args=iocBean.args();
    if (null != args && args.length > 0)     for (    String value : args)     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>();
    Mirror<?> mirror=Mirror.me(classZ);
    Field[] fields=mirror.getFields(Inject.class);
    for (    Field field : fields) {
      Inject inject=field.getAnnotation(Inject.class);
      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=mirror.getMethods();
    for (    Method method : methods) {
      Inject inject=method.getAnnotation(Inject.class);
      if (inject == null)       continue;
      int m=method.getModifiers();
      if (Modifier.isAbstract(m) || (!Modifier.isPublic(m)) || Modifier.isStatic(m))       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)));
        if (fieldList.contains(iocField.getName()))         throw duplicateField(classZ,iocField.getName());
        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());
      }
    }
    String[] flds=iocBean.fields();
    if (flds != null && flds.length > 0) {
      for (      String fieldInfo : flds) {
        if (fieldList.contains(fieldInfo))         throw duplicateField(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);
  }
}