Program: 60305
Project: 60305
Buggy source:
private void decodePrimitive(Object obj,Class type) throws IllegalArgumentException, IllegalAccessException {
  if (DataType.isFloat(type)) {
    field.setFloat(obj,Float.parseFloat(value.toString()));
  }
 else   if (DataType.isFloatObject(type)) {
    field.set(obj,Float.valueOf(value.toString()));
  }
 else   if (DataType.isShort(type)) {
    field.setShort(obj,Short.parseShort(value.toString()));
  }
 else   if (DataType.isShortObject(type)) {
    field.set(obj,Short.valueOf(value.toString()));
  }
 else   if (DataType.isByte(type)) {
    field.setByte(obj,Byte.parseByte(value.toString()));
  }
 else   if (DataType.isByteObject(type)) {
    field.setByte(obj,Byte.valueOf(value.toString()));
  }
 else   if (DataType.isListType(type)) {
    List src=(ArrayList)value;
    List list=new ArrayList();
    moveCollectionElement(src,list);
    field.set(obj,list);
  }
 else   if (DataType.isSetType(type)) {
    List src=(ArrayList)value;
    Set set=new HashSet();
    moveCollectionElement(src,set);
    field.set(obj,set);
  }
 else   if (DataType.isQueueType(type)) {
    List src=(ArrayList)value;
    Queue queue=new LinkedList();
    moveCollectionElement(src,queue);
    field.set(obj,queue);
  }
 else   if (DataType.isChar(type)) {
    field.setChar(obj,value.toString().charAt(0));
  }
 else   if (DataType.isTimestamp(type)) {
    Date date=(Date)value;
    Timestamp ts=new Timestamp(date.getTime());
    field.set(obj,ts);
  }
 else {
    field.set(obj,value);
  }
}

Fixed version (ground truth):
private void decodePrimitive(Object obj,Class type) throws IllegalArgumentException, IllegalAccessException {
  if (DataType.isFloat(type)) {
    field.setFloat(obj,Float.parseFloat(value.toString()));
  }
 else   if (DataType.isFloatObject(type)) {
    field.set(obj,Float.valueOf(value.toString()));
  }
 else   if (DataType.isShort(type)) {
    field.setShort(obj,Short.parseShort(value.toString()));
  }
 else   if (DataType.isShortObject(type)) {
    field.set(obj,Short.valueOf(value.toString()));
  }
 else   if (DataType.isByte(type)) {
    field.setByte(obj,Byte.parseByte(value.toString()));
  }
 else   if (DataType.isByteObject(type)) {
    field.setByte(obj,Byte.valueOf(value.toString()));
  }
 else   if (DataType.isListType(type)) {
    List src=(ArrayList)value;
    List list=new ArrayList();
    moveCollectionElement(src,list);
    field.set(obj,list);
  }
 else   if (DataType.isSetType(type)) {
    List src=(ArrayList)value;
    Set set=new HashSet();
    moveCollectionElement(src,set);
    field.set(obj,set);
  }
 else   if (DataType.isQueueType(type)) {
    List src=(ArrayList)value;
    Queue queue=new LinkedList();
    moveCollectionElement(src,queue);
    field.set(obj,queue);
  }
 else   if (DataType.isMapType(type)) {
    ParameterizedType paramType=(ParameterizedType)field.getGenericType();
    Type[] types=paramType.getActualTypeArguments();
    boolean isArray=false;
    boolean isCollection=false;
    boolean isPrimitive=false;
    Class vType=null;
    Class elementType=null;
    if (types[1] instanceof GenericArrayType) {
      isArray=true;
      GenericArrayType g=(GenericArrayType)types[1];
      elementType=(Class)g.getGenericComponentType();
    }
 else     if (types[1] instanceof ParameterizedType) {
      isCollection=true;
      ParameterizedType p=(ParameterizedType)types[1];
      vType=(Class)p.getRawType();
      elementType=(Class)p.getActualTypeArguments()[0];
    }
 else {
      isPrimitive=true;
    }
    if (isArray) {
      Map src=(Map)value;
      Map map=new HashMap();
      Set<Entry> entrySet=src.entrySet();
      for (      Entry entry : entrySet) {
        Object k=entry.getKey();
        List v=(ArrayList)entry.getValue();
        Object arr=convertToArrayValue(elementType,v);
        map.put(k,arr);
      }
      field.set(obj,map);
    }
 else     if (isCollection) {
      if (DataType.isListType(vType)) {
        Map src=(Map)value;
        Map map=new HashMap();
        Set<Entry> entrySet=src.entrySet();
        for (        Entry entry : entrySet) {
          Object k=entry.getKey();
          List v=(ArrayList)entry.getValue();
          List list=new ArrayList();
          moveCollectionElement(elementType,v,list);
          map.put(k,list);
        }
        field.set(obj,map);
      }
 else       if (DataType.isSetType(vType)) {
        Map src=(Map)value;
        Map map=new HashMap();
        Set<Entry> entrySet=src.entrySet();
        for (        Entry entry : entrySet) {
          Object k=entry.getKey();
          List v=(ArrayList)entry.getValue();
          Set set=new HashSet();
          moveCollectionElement(elementType,v,set);
          map.put(k,set);
        }
        field.set(obj,map);
      }
 else       if (DataType.isQueueType(type)) {
        Map src=(Map)value;
        Map map=new HashMap();
        Set<Entry> entrySet=src.entrySet();
        for (        Entry entry : entrySet) {
          Object k=entry.getKey();
          List v=(ArrayList)entry.getValue();
          Queue queue=new LinkedList();
          moveCollectionElement(elementType,v,queue);
          map.put(k,queue);
        }
        field.set(obj,map);
      }
    }
 else     if (isPrimitive) {
      field.set(obj,value);
    }
  }
 else   if (DataType.isChar(type)) {
    field.setChar(obj,value.toString().charAt(0));
  }
 else   if (DataType.isTimestamp(type)) {
    Date date=(Date)value;
    Timestamp ts=new Timestamp(date.getTime());
    field.set(obj,ts);
  }
 else {
    field.set(obj,value);
  }
}