docs: public static Expression asList(Iterable<? extends Expression> items) {
      final ImmutableList<Expression> copy = ImmutableList.copyOf(items);
      if (copy.isEmpty()) {
        return MethodRef.IMMUTABLE_LIST_OF.get(0).invoke();
      }
      // Note, we cannot necessarily use ImmutableList for anything besides the empty list because
      // we may need to put a null in it.
      final Expression construct = ConstructorRef.ARRAY_LIST_SIZE.construct(constant(copy.size()));
      return new Expression(ARRAY_LIST_TYPE, Feature.NON_NULLABLE) {
        @Override
        protected void doGen(CodeBuilder mv) {
          construct.gen(mv);
          for (Expression child : copy) {
            mv.dup();
            child.gen(mv);
            MethodRef.ARRAY_LIST_ADD.invokeUnchecked(mv);
            mv.pop(); // pop the bool result of arraylist.add
          }
        }
      };
    }