Decode Request, the reason we use abstract class, is to force to create a sub-class so that it's possible to get
the getActualTypeArguments. If generic type is of the concern, use factory method "of".
It can be used to specify source of the JSON document, either through a String, Reader, or a a wrapped CharSource. As