code: public Type resolveType(Type type) {
      checkNotNull(type);
      if (type instanceof TypeVariable) {
        return typeTable.resolve((TypeVariable<?>) type);
      } else if (type instanceof ParameterizedType) {
        return resolveParameterizedType((ParameterizedType) type);
      } else if (type instanceof GenericArrayType) {
        return resolveGenericArrayType((GenericArrayType) type);
      } else if (type instanceof WildcardType) {
        return resolveWildcardType((WildcardType) type);
      } else {
        // if Class<?>, no resolution needed, we are done.
        return type;
      }
    }
docs: Resolves all type variables in {@code type} and all downstream types and returns a
  corresponding type with type variables resolved.