code: public final <R1 extends R> Invokable<T, R1> returning(TypeToken<R1> returnType) {
      if (!returnType.isSupertypeOf(getReturnType())) {
        throw new IllegalArgumentException(
            "Invokable is known to return " + getReturnType() + ", not " + returnType);
      }
      @SuppressWarnings("unchecked") // guarded by previous check
      Invokable<T, R1> specialized = (Invokable<T, R1>) this;
      return specialized;
    }
docs: Explicitly specifies the return type of this {@code Invokable}.