class TypeDescriptor implements Serializable {

  public List<TypeDescriptor<?>> getArgumentTypes(Method method) {
    Invokable<?, ?> typedMethod = token.method(method);

    List<TypeDescriptor<?>> argTypes = Lists.newArrayList();
    for (Parameter parameter : typedMethod.getParameters()) {
      argTypes.add(new SimpleTypeDescriptor<>(parameter.getType()));
    }
    return argTypes;
  }

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

}