Program: 90434
Project: 90434
Buggy source:
public static void setProperty(Object obj,String propertyName,String value){
  if (obj == null) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  Class<?> clazz=obj.getClass();
  Field f=getField(clazz,propertyName);
  if (f != null) {
    try {
      f.setAccessible(true);
      if (value == null) {
        f.set(obj,null);
        return;
      }
      if (f.getType() == Boolean.TYPE || f.getType() == Boolean.class) {
        f.setBoolean(obj,(Boolean.valueOf(value)).booleanValue());
      }
 else       if (f.getType() == Integer.TYPE || f.getType() == Integer.class) {
        f.setInt(obj,Integer.parseInt(value));
      }
 else       if (f.getType() == Byte.TYPE || f.getType() == Byte.class) {
        f.setByte(obj,Byte.parseByte(value));
      }
 else       if (f.getType() == Long.TYPE || f.getType() == Long.class) {
        f.setLong(obj,Long.parseLong(value));
      }
 else       if (f.getType() == Short.TYPE || f.getType() == Short.class) {
        f.setShort(obj,Short.valueOf(value));
      }
 else       if (f.getType() == Float.TYPE || f.getType() == Float.class) {
        f.setFloat(obj,Float.valueOf(value));
      }
 else       if (f.getType() == Double.TYPE || f.getType() == Double.class) {
        f.setDouble(obj,Double.valueOf(value));
      }
 else       if (f.getType() == Character.TYPE || f.getType() == Character.class) {
        f.setChar(obj,value.charAt(0));
      }
 else {
        f.set(obj,value);
      }
    }
 catch (    Exception e) {
      throw new RuntimeException(e);
    }
  }
 else {
    Method[] setMethods=clazz.getMethods();
    for (    Method setMethod : setMethods) {
      if (setMethod.getName().equals("String_Node_Str" + StringUtil.upperFirstLetter(propertyName))) {
        if (setMethod.getParameterTypes().length == 1) {
          Class<?> paramType=setMethod.getParameterTypes()[0];
          try {
            if (paramType == Boolean.TYPE || paramType == Boolean.class) {
              setMethod.invoke(obj,(Boolean.valueOf(value)).booleanValue());
            }
 else             if (paramType == Integer.TYPE || paramType == Integer.class) {
              setMethod.invoke(obj,Integer.parseInt(value));
            }
 else             if (paramType == Byte.TYPE || paramType == Byte.class) {
              setMethod.invoke(obj,Byte.parseByte(value));
            }
 else             if (paramType == Long.TYPE || paramType == Long.class) {
              setMethod.invoke(obj,Long.parseLong(value));
            }
 else             if (paramType == Short.TYPE || paramType == Short.class) {
              setMethod.invoke(obj,Short.valueOf(value));
            }
 else             if (paramType == Float.TYPE || paramType == Float.class) {
              setMethod.invoke(obj,Float.valueOf(value));
            }
 else             if (paramType == Double.TYPE || paramType == Double.class) {
              setMethod.invoke(obj,Double.valueOf(value));
            }
 else             if (paramType == Character.TYPE || paramType == Character.class) {
              setMethod.invoke(obj,value.charAt(0));
            }
 else {
              setMethod.invoke(obj,value);
            }
          }
 catch (          Exception e) {
            throw new RuntimeException(e);
          }
          return;
        }
      }
    }
  }
}

Fixed version (ground truth):
@Deprecated public static void setProperty(Object obj,String propertyName,String value){
  if (obj == null) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  Class<?> clazz=obj.getClass();
  Field f=getField(clazz,propertyName);
  if (f != null) {
    try {
      f.setAccessible(true);
      if (value == null) {
        f.set(obj,null);
        return;
      }
      if (f.getType() == Boolean.TYPE || f.getType() == Boolean.class) {
        f.setBoolean(obj,(Boolean.valueOf(value)).booleanValue());
      }
 else       if (f.getType() == Integer.TYPE || f.getType() == Integer.class) {
        f.setInt(obj,Integer.parseInt(value));
      }
 else       if (f.getType() == Byte.TYPE || f.getType() == Byte.class) {
        f.setByte(obj,Byte.parseByte(value));
      }
 else       if (f.getType() == Long.TYPE || f.getType() == Long.class) {
        f.setLong(obj,Long.parseLong(value));
      }
 else       if (f.getType() == Short.TYPE || f.getType() == Short.class) {
        f.setShort(obj,Short.valueOf(value));
      }
 else       if (f.getType() == Float.TYPE || f.getType() == Float.class) {
        f.setFloat(obj,Float.valueOf(value));
      }
 else       if (f.getType() == Double.TYPE || f.getType() == Double.class) {
        f.setDouble(obj,Double.valueOf(value));
      }
 else       if (f.getType() == Character.TYPE || f.getType() == Character.class) {
        f.setChar(obj,value.charAt(0));
      }
 else {
        f.set(obj,value);
      }
    }
 catch (    Exception e) {
      throw new RuntimeException(e);
    }
  }
 else {
    Method[] setMethods=clazz.getMethods();
    for (    Method setMethod : setMethods) {
      if (setMethod.getName().equals("String_Node_Str" + StringUtil.upperFirstLetter(propertyName))) {
        if (setMethod.getParameterTypes().length == 1) {
          Class<?> paramType=setMethod.getParameterTypes()[0];
          try {
            if (paramType == Boolean.TYPE || paramType == Boolean.class) {
              setMethod.invoke(obj,(Boolean.valueOf(value)).booleanValue());
            }
 else             if (paramType == Integer.TYPE || paramType == Integer.class) {
              setMethod.invoke(obj,Integer.parseInt(value));
            }
 else             if (paramType == Byte.TYPE || paramType == Byte.class) {
              setMethod.invoke(obj,Byte.parseByte(value));
            }
 else             if (paramType == Long.TYPE || paramType == Long.class) {
              setMethod.invoke(obj,Long.parseLong(value));
            }
 else             if (paramType == Short.TYPE || paramType == Short.class) {
              setMethod.invoke(obj,Short.valueOf(value));
            }
 else             if (paramType == Float.TYPE || paramType == Float.class) {
              setMethod.invoke(obj,Float.valueOf(value));
            }
 else             if (paramType == Double.TYPE || paramType == Double.class) {
              setMethod.invoke(obj,Double.valueOf(value));
            }
 else             if (paramType == Character.TYPE || paramType == Character.class) {
              setMethod.invoke(obj,value.charAt(0));
            }
 else {
              setMethod.invoke(obj,value);
            }
          }
 catch (          Exception e) {
            throw new RuntimeException(e);
          }
          return;
        }
      }
    }
  }
}