docs: public static Expression asImmutableList(Iterable<? extends Expression> items) {
      ImmutableList<Expression> copy = ImmutableList.copyOf(items);
      if (copy.size() < MethodRef.IMMUTABLE_LIST_OF.size()) {
        return MethodRef.IMMUTABLE_LIST_OF.get(copy.size()).invoke(copy);
      }
      ImmutableList<Expression> explicit = copy.subList(0, MethodRef.IMMUTABLE_LIST_OF.size());
      Expression remainder =
          asArray(OBJECT_ARRAY_TYPE, copy.subList(MethodRef.IMMUTABLE_LIST_OF.size(), copy.size()));
      return MethodRef.IMMUTABLE_LIST_OF_ARRAY.invoke(
          Iterables.concat(explicit, ImmutableList.of(remainder)));
    }