docs: @NonNull
    public final <X> GenericType<T> where(
        @NonNull GenericTypeParameter<X> freeVariable, @NonNull GenericType<X> actualType) {
      TypeResolver resolver =
          new TypeResolver().where(freeVariable.getTypeVariable(), actualType.__getToken().getType());
      Type resolvedType = resolver.resolveType(this.token.getType());
      @SuppressWarnings("unchecked")
      TypeToken<T> resolvedToken = (TypeToken<T>) TypeToken.of(resolvedType);
      return new GenericType<>(resolvedToken);
    }