@SuppressWarnings("unchecked") protected TypeToken(){
  this.type=getSuperclassTypeParameter(getClass());
  this.rawType=(Class<? super T>)$Gson$Types.getRawType(type);
  this.hashCode=type.hashCode();
}

@ SuppressWarnings ( "unchecked" ) protected TypeToken ( ) { this . type = getSuperclassTypeParameter ( getClass ( ) ) ; this . rawType = ( Class < ? super T > ) $Gson$Types . getRawType ( type ) ; this . hashCode = type . hashCode ( ) ; }
constructs a new type literal . derives represented class from type parameter . < p > clients create an empty anonymous subclass . doing so embeds the type parameter in the anonymous class ' s type hierarchy so we can reconstitute it at runtime despite erasure .
