class TypeDescriptor implements Serializable {

  @SuppressWarnings("unchecked")
  public <X> TypeDescriptor<T> where(
      TypeParameter<X> typeParameter, TypeDescriptor<X> typeDescriptor) {
    return where(typeParameter.typeVariable, typeDescriptor.getType());
  }

  private  TypeDescriptor(TypeToken<T> token);
  protected  TypeDescriptor();
  protected  TypeDescriptor(Object instance);
  @SuppressWarnings("unchecked") protected  TypeDescriptor(Class<?> clazz);

}