public Collection<?> values() {
    Object value = value();
    if (value instanceof Iterable) {
      if (value instanceof Collection) {
        // already immutable collection
        return (Collection<?>) value;
      }
      // most likely ImmutableList already (if Iterable)
      return ImmutableList.copyOf((Iterable<?>) value);
    }

    Objects.requireNonNull(value, "value is null");
    return ImmutableSet.of(value);
  }
Converts current value to collection (if it is not already). If value
is iterable returns that collection (which is most likely ImmutableList already).

@return singleton list with current value or immutable list of values depending on type
of current value.
criteria/common/src/org/immutables/criteria/expression/Constant.java