Program: 80386
Project: 80386
Buggy source:
@SuppressWarnings("String_Node_Str") IocValue object2value(Object obj){
  IocValue iv=new IocValue();
  if (null == obj) {
    iv.setType("String_Node_Str");
    return iv;
  }
 else   if (obj instanceof IocValue) {
    return (IocValue)obj;
  }
 else   if (obj instanceof Map<?,?>) {
    Map<String,Object> map=(Map<String,Object>)obj;
    if (map.size() == 1) {
      Entry<String,?> en=map.entrySet().iterator().next();
      String key=en.getKey();
      if (supportedTypes.contains(key)) {
        iv.setType(key);
        iv.setValue(en.getValue());
        return iv;
      }
    }
    if (isIocObject(map)) {
      iv.setType(IocValue.TYPE_INNER);
      try {
        iv.setValue(map2iobj(map));
      }
 catch (      ObjectLoadException e) {
        throw Lang.wrapThrow(e);
      }
      return iv;
    }
    Map<String,IocValue> newmap=new HashMap<String,IocValue>();
    for (    Entry<String,Object> en : map.entrySet()) {
      IocValue v=object2value(en.getValue());
      newmap.put(en.getKey(),v);
    }
    iv.setType(IocValue.TYPE_NORMAL);
    iv.setValue(newmap);
    return iv;
  }
 else   if (obj.getClass().isArray()) {
    Object[] array=(Object[])obj;
    IocValue[] ivs=new IocValue[array.length];
    for (int i=0; i < ivs.length; i++) {
      ivs[i]=object2value(array[i]);
    }
    iv.setType(IocValue.TYPE_NORMAL);
    iv.setValue(ivs);
    return iv;
  }
 else   if (obj instanceof Collection<?>) {
    try {
      Collection<IocValue> values=(Collection<IocValue>)Mirror.me(obj).born();
      Iterator<?> it=((Collection<?>)obj).iterator();
      while (it.hasNext()) {
        Object o=it.next();
        IocValue v=object2value(o);
        values.add(v);
      }
      iv.setType(IocValue.TYPE_NORMAL);
      iv.setValue(values);
      return iv;
    }
 catch (    Exception e) {
      throw Lang.wrapThrow(e);
    }
  }
  iv.setType(IocValue.TYPE_NORMAL);
  iv.setValue(obj);
  return iv;
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") IocValue object2value(Object obj){
  IocValue iv=new IocValue();
  if (null == obj) {
    iv.setType("String_Node_Str");
    return iv;
  }
 else   if (obj instanceof IocValue) {
    return (IocValue)obj;
  }
 else   if (obj instanceof Map<?,?>) {
    Map<String,Object> map=(Map<String,Object>)obj;
    if (map.size() == 1) {
      Entry<String,?> en=map.entrySet().iterator().next();
      String key=en.getKey();
      if (supportedTypes.contains(key)) {
        iv.setType(key);
        iv.setValue(en.getValue());
        return iv;
      }
    }
    if (map.size() > 0 && isIocObject(map)) {
      iv.setType(IocValue.TYPE_INNER);
      try {
        iv.setValue(map2iobj(map));
      }
 catch (      ObjectLoadException e) {
        throw Lang.wrapThrow(e);
      }
      return iv;
    }
    Map<String,IocValue> newmap=new HashMap<String,IocValue>();
    for (    Entry<String,Object> en : map.entrySet()) {
      IocValue v=object2value(en.getValue());
      newmap.put(en.getKey(),v);
    }
    iv.setType(IocValue.TYPE_NORMAL);
    iv.setValue(newmap);
    return iv;
  }
 else   if (obj.getClass().isArray()) {
    Object[] array=(Object[])obj;
    IocValue[] ivs=new IocValue[array.length];
    for (int i=0; i < ivs.length; i++) {
      ivs[i]=object2value(array[i]);
    }
    iv.setType(IocValue.TYPE_NORMAL);
    iv.setValue(ivs);
    return iv;
  }
 else   if (obj instanceof Collection<?>) {
    try {
      Collection<IocValue> values=(Collection<IocValue>)Mirror.me(obj).born();
      Iterator<?> it=((Collection<?>)obj).iterator();
      while (it.hasNext()) {
        Object o=it.next();
        IocValue v=object2value(o);
        values.add(v);
      }
      iv.setType(IocValue.TYPE_NORMAL);
      iv.setValue(values);
      return iv;
    }
 catch (    Exception e) {
      throw Lang.wrapThrow(e);
    }
  }
  iv.setType(IocValue.TYPE_NORMAL);
  iv.setValue(obj);
  return iv;
}