docs: public static Supplier<Type> genericTypeOf(
        final Supplier<ExpressionTree> expressionSupplier, final int n) {
      return new Supplier<Type>() {
        @Override
        public Type get(VisitorState state) {
          JCExpression jcExpression = (JCExpression) expressionSupplier.get(state);
          if (jcExpression.type.getTypeArguments().size() <= n) {
            return state.getSymtab().objectType;
          }
          return jcExpression.type.getTypeArguments().get(n);
        }
      };
    }