code: @SuppressWarnings("unchecked")
    public <T> T fromJson(String json, Type typeOfT) throws JsonSyntaxException {
      if (json == null) {
        return null;
      }
      StringReader reader = new StringReader(json);
      T target = (T) fromJson(reader, typeOfT);
      return target;
    }
docs: This method deserializes the specified Json 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(String, Class)} instead. If you have the Json in a {@link Reader} instead of
  a String, use {@link #fromJson(Reader, Type)} instead.
  
  @param <T> the type of the desired object
  @param json the string 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 string. Returns {@code null} if {@code json} is {@code null}
  or if {@code json} is empty.
  @throws JsonParseException if json is not a valid representation for an object of type typeOfT
  @throws JsonSyntaxException if json is not a valid representation for an object of type