Program: 32708
Project: 32708
Buggy source:
private <T>Object getValue(final VPackSlice parent,final VPackSlice vpack,final Type type,final FieldInfo fieldInfo) throws InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException, VPackException {
  final Object value;
  if (vpack.isNull()) {
    value=null;
  }
 else {
    final VPackDeserializer<?> deserializer=getDeserializer(fieldInfo,type);
    if (deserializer != null) {
      value=((VPackDeserializer<Object>)deserializer).deserialize(parent,vpack,deserializationContext);
    }
 else     if (type instanceof ParameterizedType) {
      final ParameterizedType pType=ParameterizedType.class.cast(type);
      final Type rawType=pType.getRawType();
      if (Collection.class.isAssignableFrom((Class<?>)rawType)) {
        value=deserializeCollection(parent,vpack,type,pType.getActualTypeArguments()[0]);
      }
 else       if (Map.class.isAssignableFrom((Class<?>)rawType)) {
        final Type[] parameterizedTypes=pType.getActualTypeArguments();
        value=deserializeMap(parent,vpack,type,parameterizedTypes[0],parameterizedTypes[1]);
      }
 else {
        value=deserializeObject(parent,vpack,type,fieldInfo);
      }
    }
 else     if (Collection.class.isAssignableFrom((Class<?>)type)) {
      value=deserializeCollection(parent,vpack,type,Object.class);
    }
 else     if (Map.class.isAssignableFrom((Class<?>)type)) {
      value=deserializeMap(parent,vpack,type,String.class,Object.class);
    }
 else     if (((Class)type).isArray()) {
      value=deserializeArray(parent,vpack,type,fieldInfo);
    }
 else     if (((Class)type).isEnum()) {
      value=Enum.valueOf((Class<? extends Enum>)type,vpack.getAsString());
    }
 else {
      value=deserializeObject(parent,vpack,type,fieldInfo);
    }
  }
  return value;
}

Fixed version (ground truth):
private <T>Object getValue(final VPackSlice parent,final VPackSlice vpack,final Type type,final String fieldName) throws InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException, VPackException {
  final Object value;
  if (vpack.isNull()) {
    value=null;
  }
 else {
    final VPackDeserializer<?> deserializer=getDeserializer(fieldName,type);
    if (deserializer != null) {
      value=((VPackDeserializer<Object>)deserializer).deserialize(parent,vpack,deserializationContext);
    }
 else     if (type instanceof ParameterizedType) {
      final ParameterizedType pType=ParameterizedType.class.cast(type);
      final Type rawType=pType.getRawType();
      if (Collection.class.isAssignableFrom((Class<?>)rawType)) {
        value=deserializeCollection(parent,vpack,type,pType.getActualTypeArguments()[0]);
      }
 else       if (Map.class.isAssignableFrom((Class<?>)rawType)) {
        final Type[] parameterizedTypes=pType.getActualTypeArguments();
        value=deserializeMap(parent,vpack,type,parameterizedTypes[0],parameterizedTypes[1]);
      }
 else {
        value=deserializeObject(parent,vpack,type,fieldName);
      }
    }
 else     if (Collection.class.isAssignableFrom((Class<?>)type)) {
      value=deserializeCollection(parent,vpack,type,Object.class);
    }
 else     if (Map.class.isAssignableFrom((Class<?>)type)) {
      value=deserializeMap(parent,vpack,type,String.class,Object.class);
    }
 else     if (((Class)type).isArray()) {
      value=deserializeArray(parent,vpack,type);
    }
 else     if (((Class)type).isEnum()) {
      value=Enum.valueOf((Class<? extends Enum>)type,vpack.getAsString());
    }
 else {
      value=deserializeObject(parent,vpack,type,fieldName);
    }
  }
  return value;
}