code: public static <T> T of(Type type, Function<TypeVisitor<T>, T> function) {
      return function.apply(create(type));
    }
docs: Because eclipse's type inference is so bad, use this method you can free from angle brackets.
  
  @param type
  @param function
  @return