code: public <T> T fromJson(Reader json, Class<T> classOfT) throws JsonSyntaxException, JsonIOException {
      JsonReader jsonReader = newJsonReader(json);
      Object object = fromJson(jsonReader, classOfT);
      assertFullConsumption(object, jsonReader);
      return Primitives.wrap(classOfT).cast(object);
    }
docs: This method deserializes the Json read from the specified reader into an object of the
  specified class. It is not suitable to use if the specified class is a generic type since it
  will not have the generic type information because of the Type Erasure feature of Java.
  Therefore, this method should not be used if the desired type is a generic type. Note that
  this method works fine if the any of the fields of the specified object are generics, just the
  object itself should not be a generic type. For the cases when the object is of generic type,
  invoke {@link #fromJson(Reader, Type)}. If you have the Json in a String form instead of a
  {@link Reader}, use {@link #fromJson(String, Class)} instead.
  
  @param <T> the type of the desired object
  @param json the reader producing the Json from which the object is to be deserialized.
  @param classOfT the class of T
  @return an object of type T from the string. Returns {@code null} if {@code json} is at EOF.
  @throws JsonIOException if there was a problem reading from the Reader
  @throws JsonSyntaxException if json is not a valid representation for an object of type
  @since 1.2