code: @CanIgnoreReturnValue
    final TypeToken<T> rejectTypeVariables() {
      new TypeVisitor() {
        @Override
        void visitTypeVariable(TypeVariable<?> type) {
          throw new IllegalArgumentException(
              runtimeType + "contains a type variable and is not safe for the operation");
        }
  
        @Override
        void visitWildcardType(WildcardType type) {
          visit(type.getLowerBounds());
          visit(type.getUpperBounds());
        }
  
        @Override
        void visitParameterizedType(ParameterizedType type) {
          visit(type.getActualTypeArguments());
          visit(type.getOwnerType());
        }
  
        @Override
        void visitGenericArrayType(GenericArrayType type) {
          visit(type.getGenericComponentType());
        }
      }.visit(runtimeType);
      return this;
    }
docs: Ensures that this type token doesn't contain type variables, which can cause unchecked type
  errors for callers like {@link TypeToInstanceMap}.