Program: 179322
Project: 179322
Buggy source:
/** 
 * This method deserializes the Json read from the specified reader into an object of the specified type. This method is useful if the specified object is a generic type. For non-generic objects, use   {@link #fromJson(Reader,Class)} instead. If you have the Json in aString form instead of a  {@link Reader}, use   {@link #fromJson(String,Type)} instead.
 * @param < T > the type of the desired object
 * @param json the reader producing Json from which the object is to be deserialized
 * @param typeOfT The specific genericized type of src. You can obtain this type by using the{@link com.google.gson.reflect.TypeToken} class. For example, to get the type for{@code Collection<Foo>}, you should use: <pre> Type typeOfT = new TypeToken&lt;Collection&lt;Foo&gt;&gt;(){}.getType(); </pre>
 * @return an object of type T from the json
 * @throws JsonParseException if json is not a valid representation for an object of type typeOfT
 * @since 1.2
 */
@SuppressWarnings("String_Node_Str") public <T>T fromJson(Reader json,Type typeOfT) throws JsonParseException {
  try {
    JsonParser parser=new JsonParser(json);
    JsonElement root=parser.parse();
    JsonDeserializationContext context=new JsonDeserializationContextDefault(navigatorFactory,deserializers,objectConstructor,typeAdapter);
    T target=(T)context.deserialize(root,typeOfT);
    return target;
  }
 catch (  TokenMgrError e) {
    throw new JsonParseException("String_Node_Str" + json + "String_Node_Str",e);
  }
catch (  ParseException e) {
    throw new JsonParseException("String_Node_Str" + json + "String_Node_Str",e);
  }
catch (  StackOverflowError e) {
    throw new JsonParseException("String_Node_Str" + json + "String_Node_Str",e);
  }
catch (  OutOfMemoryError e) {
    throw new JsonParseException("String_Node_Str" + json + "String_Node_Str",e);
  }
}

Fixed version (ground truth):
/** 
 * This method deserializes the Json read from the specified reader into an object of the specified type. This method is useful if the specified object is a generic type. For non-generic objects, use   {@link #fromJson(Reader,Class)} instead. If you have the Json in aString form instead of a  {@link Reader}, use   {@link #fromJson(String,Type)} instead.
 * @param < T > the type of the desired object
 * @param json the reader producing Json from which the object is to be deserialized
 * @param typeOfT The specific genericized type of src. You can obtain this type by using the{@link com.google.gson.reflect.TypeToken} class. For example, to get the type for{@code Collection<Foo>}, you should use: <pre> Type typeOfT = new TypeToken&lt;Collection&lt;Foo&gt;&gt;(){}.getType(); </pre>
 * @return an object of type T from the json
 * @throws JsonParseException if json is not a valid representation for an object of type typeOfT
 * @since 1.2
 */
@SuppressWarnings("String_Node_Str") public <T>T fromJson(Reader json,Type typeOfT) throws JsonParseException {
  try {
    JsonParser parser=new JsonParser(json);
    JsonElement root=parser.parse();
    JsonDeserializationContext context=new JsonDeserializationContextDefault(createDefaultObjectNavigatorFactory(),deserializers,objectConstructor,typeAdapter);
    T target=(T)context.deserialize(root,typeOfT);
    return target;
  }
 catch (  TokenMgrError e) {
    throw new JsonParseException("String_Node_Str" + json + "String_Node_Str",e);
  }
catch (  ParseException e) {
    throw new JsonParseException("String_Node_Str" + json + "String_Node_Str",e);
  }
catch (  StackOverflowError e) {
    throw new JsonParseException("String_Node_Str" + json + "String_Node_Str",e);
  }
catch (  OutOfMemoryError e) {
    throw new JsonParseException("String_Node_Str" + json + "String_Node_Str",e);
  }
}