code: @SafeVarargs
    public static <E extends OrdinalValue<E>> ImmutableOrdinalSet<E> of(
        E first, E... rest) {
      OrdinalDomain<E> domain = first.domain();
      if (rest.length == 0) {
        return new SingletonImmutableOrdinalSet<>(first);
      }
      OrdinalValue<?>[] array = new OrdinalValue<?>[1 + rest.length];
      array[0] = first;
      System.arraycopy(rest, 0, array, 1, rest.length);
      return new RegularImmutableOrdinalSet<>(domain, array);
    }
docs: Creates immutable ordinal set from 1 or more elements.
  All elements expected to have same {@link OrdinalValue#domain()} as the first element,
  otherwise exception will be thrown.
  @param <E> element type
  @param first first element
  @param rest the rest of elements
  @return empty set