Program: 46835
Project: 46835
Buggy source:
/** 
 * converts an type back to an string representation so that can parsed again, when strict on :Type notation is used
 * @param type
 * @return
 */
public String type2String(final Object value){
  @SuppressWarnings("String_Node_Str") final IStringConverter conv;
  if (value == null)   return "String_Node_Str";
 else   if (value.getClass().isArray()) {
    final StringBuilder res=new StringBuilder("String_Node_Str");
    for (int i=0; i < ((Object[])value).length; i++) {
      if (i > 0)       res.append("String_Node_Str");
      res.append(((Object[])value)[i]);
    }
    res.append("String_Node_Str");
    final Class<?> clazz=value.getClass().getComponentType();
    if (clazz.isAssignableFrom(String.class)) {
      if (STRICT)       res.append("String_Node_Str");
    }
 else     if (clazz.isAssignableFrom(Integer.class))     res.append("String_Node_Str");
 else     if (clazz.isAssignableFrom(Long.class))     res.append("String_Node_Str");
 else     if (clazz.isAssignableFrom(Float.class))     res.append("String_Node_Str");
 else     if (clazz.isAssignableFrom(Double.class))     res.append("String_Node_Str");
 else     if (clazz.isAssignableFrom(Boolean.class))     res.append("String_Node_Str");
    return res.toString();
  }
 else   if (value instanceof String) {
    if (STRICT)     return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
    return (String)value;
  }
 else   if (value instanceof Byte) {
    if (STRICT)     return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
    return new StringBuilder("String_Node_Str").append(value).toString();
  }
 else   if (value instanceof Short) {
    if (STRICT)     return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
    return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
  }
 else   if (value instanceof Integer) {
    if (STRICT)     return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
    return ((Integer)value).toString();
  }
 else   if (value instanceof Long) {
    if (STRICT)     return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
    return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
  }
 else   if (value instanceof Float) {
    if (STRICT)     return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
    return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
  }
 else   if (value instanceof Double) {
    if (STRICT)     return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
    return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
  }
 else   if (value instanceof Boolean) {
    if (STRICT) {
      if (((Boolean)value).booleanValue())       return "String_Node_Str";
      return "String_Node_Str";
    }
    if (((Boolean)value).booleanValue())     return "String_Node_Str";
    return "String_Node_Str";
  }
 else   if (value instanceof Character) {
    if (STRICT)     return new StringBuilder().append(value).append("String_Node_Str").toString();
    return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
  }
 else   if (customBConverters != null && (conv=customBConverters.get(value.getClass())) != null) {
    @SuppressWarnings("String_Node_Str") final String res=conv.toString(value);
    return res;
  }
 else   return value.toString();
}

Fixed version (ground truth):
/** 
 * converts an type back to an string representation so that can parsed again, when strict on :Type notation is used
 * @param type
 * @return
 */
public String type2String(final Object value){
  @SuppressWarnings("String_Node_Str") final IStringConverter conv;
  if (value == null)   return "String_Node_Str";
 else   if (value.getClass().isArray()) {
    final StringBuilder res=new StringBuilder("String_Node_Str");
    for (int i=0; i < Array.getLength(value); i++) {
      if (i > 0)       res.append("String_Node_Str");
      res.append(type2String(Array.get(value,i)));
    }
    res.append("String_Node_Str");
    final Class<?> clazz=value.getClass().getComponentType();
    if (clazz.isAssignableFrom(String.class)) {
      if (STRICT)       res.append("String_Node_Str");
    }
 else     if (clazz.isAssignableFrom(Integer.class))     res.append("String_Node_Str");
 else     if (clazz.isAssignableFrom(Long.class))     res.append("String_Node_Str");
 else     if (clazz.isAssignableFrom(Float.class))     res.append("String_Node_Str");
 else     if (clazz.isAssignableFrom(Double.class))     res.append("String_Node_Str");
 else     if (clazz.isAssignableFrom(Boolean.class))     res.append("String_Node_Str");
    return res.toString();
  }
 else   if (value instanceof String) {
    if (STRICT)     return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
    return (String)value;
  }
 else   if (value instanceof Byte) {
    if (STRICT)     return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
    return new StringBuilder("String_Node_Str").append(value).toString();
  }
 else   if (value instanceof Short) {
    if (STRICT)     return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
    return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
  }
 else   if (value instanceof Integer) {
    if (STRICT)     return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
    return ((Integer)value).toString();
  }
 else   if (value instanceof Long) {
    if (STRICT)     return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
    return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
  }
 else   if (value instanceof Float) {
    if (STRICT)     return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
    return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
  }
 else   if (value instanceof Double) {
    if (STRICT)     return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
    return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
  }
 else   if (value instanceof Boolean) {
    if (STRICT) {
      if (((Boolean)value).booleanValue())       return "String_Node_Str";
      return "String_Node_Str";
    }
    if (((Boolean)value).booleanValue())     return "String_Node_Str";
    return "String_Node_Str";
  }
 else   if (value instanceof Character) {
    if (STRICT)     return new StringBuilder().append(value).append("String_Node_Str").toString();
    return new StringBuilder("String_Node_Str").append(value).append("String_Node_Str").toString();
  }
 else   if (customBConverters != null && (conv=customBConverters.get(value.getClass())) != null) {
    @SuppressWarnings("String_Node_Str") final String res=conv.toString(value);
    return res;
  }
 else   return value.toString();
}