Package org.codehaus.groovy.vmplugin.v8

# Class PluginDefaultGroovyMethods

java.lang.Object
org.codehaus.groovy.runtime.DefaultGroovyMethodsSupport
org.codehaus.groovy.vmplugin.v8.PluginDefaultGroovyMethods

    public class PluginDefaultGroovyMethods
    extends DefaultGroovyMethodsSupport

Defines new Groovy methods which appear on standard Java 8 classes within the Groovy environment.

Since:
  2.5.0

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `static boolean` | `asBoolean​(Optional<?> optional)` | Coerce an `Optional` instance to a `boolean` value.
  `static <S,​ T> Future<T>` | `collect​(Future<S> self, Closure<T> transform)` | Returns a Future asynchronously returning a transformed result.
  `static <S,​ T> Optional<T>` | `collect​(Optional<S> self, Closure<T> transform)` | If the optional contains a value, returns an optional containing the transformed value obtained using the `transform` closure or otherwise an empty optional.
  `static DoubleStream` | `doubleStream​(double[] self)` | Returns a sequential `DoubleStream` with the specified array as its source.
  `static <T> Optional<T>` | `filter​(Optional<?> self, Class<T> type)` | Tests given value against specified type and changes generics of result.
  `static OptionalDouble` | `filter​(OptionalDouble self, DoublePredicate test)` | If a value is present in the `OptionalDouble`, tests the value using the given predicate and returns the optional if the test returns true or empty otherwise.
  `static OptionalInt` | `filter​(OptionalInt self, IntPredicate test)` | If a value is present in the `OptionalInt`, tests the value using the given predicate and returns the optional if the test returns true or else empty.
  `static OptionalLong` | `filter​(OptionalLong self, LongPredicate test)` | If a value is present in the `OptionalLong`, tests the value using the given predicate and returns the optional if the test returns true or else empty.
  `static double` | `get​(OptionalDouble self)` | If a value is present in the `OptionalDouble`, returns the value, otherwise throws `NoSuchElementException`.
  `static int` | `get​(OptionalInt self)` | If a value is present in the `OptionalInt`, returns the value, otherwise throws `NoSuchElementException`.
  `static long` | `get​(OptionalLong self)` | If a value is present in the `OptionalLong`, returns the value, otherwise throws `NoSuchElementException`.
  `static IntStream` | `intStream​(int[] self)` | Returns a sequential `IntStream` with the specified array as its source.
  `static StringBuilder` | `leftShift​(StringBuilder self, Object value)` | Overloads the left shift operator to provide an easy way to append multiple objects as string representations to a StringBuilder.
  `static LongStream` | `longStream​(long[] self)` | Returns a sequential `LongStream` with the specified array as its source.
  `static <T> OptionalDouble` | `mapToDouble​(Optional<T> self, ToDoubleFunction<? super T> mapper)` | If a value is present in the `OptionalDouble`, returns an `OptionalDouble` consisting of the result of applying the given function to the value or else empty.
  `static <T> OptionalInt` | `mapToInt​(Optional<T> self, ToIntFunction<? super T> mapper)` | If a value is present in the `OptionalInt`, returns an `OptionalInt` consisting of the result of applying the given function to the value or else empty.
  `static <T> OptionalLong` | `mapToLong​(Optional<T> self, ToLongFunction<? super T> mapper)` | If a value is present in the `OptionalLong`, returns an `OptionalLong` consisting of the result of applying the given function to the value or else empty.
  `static <T> Optional<T>` | `mapToObj​(OptionalDouble self, DoubleFunction<? extends T> mapper)` | If a value is present in the `OptionalDouble`, returns an `Optional` consisting of the result of applying the given function to the value or else empty.
  `static <T> Optional<T>` | `mapToObj​(OptionalInt self, IntFunction<? extends T> mapper)` | If a value is present in the `OptionalInt`, returns an `Optional` consisting of the result of applying the given function to the value or else empty.
  `static <T> Optional<T>` | `mapToObj​(OptionalLong self, LongFunction<? extends T> mapper)` | If a value is present in the `OptionalLong`, returns an `Optional` consisting of the result of applying the given function to the value or else empty.
  `static Object` | `next​(Enum self)` | Overloads the `++` operator for enums.
  `static <T> Optional<T>` | `orOptional​(Optional<T> self, Supplier<? extends Optional<? extends T>> supplier)` | Provide similar functionality to JDK9 `or` on JDK8.
  `static String` | `plus​(StringBuilder self, String value)` | Appends a String to this StringBuilder.
  `static Object` | `previous​(Enum self)` | Overloads the `--` operator for enums.
  `static void` | `putAt​(StringBuilder self, EmptyRange range, Object value)` | Supports the range subscript operator for StringBuilder.
  `static void` | `putAt​(StringBuilder self, IntRange range, Object value)` | Supports the range subscript operator for StringBuilder.
  `static int` | `size​(StringBuilder self)` | Deprecated.
  `static Stream<Boolean>` | `stream​(boolean[] self)` | Returns a sequential `Stream` with the specified array as its source.
  `static Stream<Byte>` | `stream​(byte[] self)` | Returns a sequential `Stream` with the specified array as its source.
  `static Stream<Character>` | `stream​(char[] self)` | Returns a sequential `Stream` with the specified array as its source.
  `static Stream<Double>` | `stream​(double[] self)` | Returns a sequential `Stream` with the specified array as its source.
  `static Stream<Float>` | `stream​(float[] self)` | Returns a sequential `Stream` with the specified array as its source.
  `static Stream<Integer>` | `stream​(int[] self)` | Returns a sequential `Stream` with the specified array as its source.
  `static Stream<Long>` | `stream​(long[] self)` | Returns a sequential `Stream` with the specified array as its source.
  `static Stream<Short>` | `stream​(short[] self)` | Returns a sequential `Stream` with the specified array as its source.
  `static <T> Stream<T>` | `stream​(Iterable<T> self)` | Returns a sequential `Stream` with the specified element(s) as its source.
  `static <T> Stream<T>` | `stream​(Enumeration<T> self)` | Returns a sequential `Stream` with the specified element(s) as its source.
  `static <T> Stream<T>` | `stream​(Iterator<T> self)` | Returns a sequential `Stream` with the specified element(s) as its source.
  `static <T> Stream<T>` | `stream​(Optional<T> self)` | If a value is present in the `Optional`, returns a `Stream` with the value as its source or else an empty stream.
  `static DoubleStream` | `stream​(OptionalDouble self)` | If a value is present in the `OptionalDouble`, returns a `DoubleStream` with the value as its source or else an empty stream.
  `static IntStream` | `stream​(OptionalInt self)` | If a value is present in the `OptionalInt`, returns an `IntStream` with the value as its source or else an empty stream.
  `static LongStream` | `stream​(OptionalLong self)` | If a value is present in the `OptionalLong`, returns a `LongStream` with the value as its source or else an empty stream.
  `static <T> Stream<T>` | `stream​(Spliterator<T> self)` | Returns a sequential `Stream` with the specified element(s) as its source.
  `static <T> Stream<T>` | `stream​(NullObject self)` | Returns an empty sequential `Stream`.
  `static <T> Stream<T>` | `stream​(T self)` | Returns a sequential `Stream` containing a single element.
  `static <T> Stream<T>` | `stream​(T[] self)` | Returns a sequential `Stream` with the specified array as its source.
  `static <T> T[]` | `toArray​(Stream<? extends T> self, Class<T> type)` | Returns an array containing the elements of the stream.
  `static <T> List<T>` | `toList​(BaseStream<T,​? extends BaseStream> self)` | Accumulates the elements of stream into a new List.
  `static <T> List<T>` | `toList​(Stream<T> self)` | Accumulates the elements of stream into a new List.
  `static <T> Set<T>` | `toSet​(BaseStream<T,​? extends BaseStream> self)` | Accumulates the elements of stream into a new Set.
  `static <T> Set<T>` | `toSet​(Stream<T> self)` | Accumulates the elements of stream into a new Set.

  ### Methods inherited from class org.codehaus.groovy.runtime.DefaultGroovyMethodsSupport

  `cloneSimilarCollection, cloneSimilarMap, closeQuietly, closeWithWarning, createSimilarArray, createSimilarCollection, createSimilarCollection, createSimilarCollection, createSimilarList, createSimilarMap, createSimilarOrDefaultCollection, createSimilarQueue, createSimilarSet, normaliseIndex, sameType, subListBorders, subListBorders, writeUTF16BomIfRequired, writeUTF16BomIfRequired, writeUTF16BomIfRequired, writeUTF16BomIfRequired`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Method Details

  - ### asBoolean

    public static boolean asBoolean​(Optional<?> optional)
    Coerce an `Optional` instance to a `boolean` value.

         assert !Optional.empty().asBoolean()
         assert Optional.of(1234).asBoolean()

    Parameters:
      `optional` - the Optional
    Returns:
      `true` if a value is present, otherwise `false`
    Since:
      2.5.0

  - ### get

    public static int get​(OptionalInt self)
    If a value is present in the `OptionalInt`, returns the value, otherwise throws `NoSuchElementException`.

         assert OptionalInt.of(1234).get() == 1234

    Since:
      3.0.0

  - ### get

    public static long get​(OptionalLong self)
    If a value is present in the `OptionalLong`, returns the value, otherwise throws `NoSuchElementException`.

         assert OptionalLong.of(1234L).get() == 1234L

    Since:
      3.0.0

  - ### get

    public static double get​(OptionalDouble self)
    If a value is present in the `OptionalDouble`, returns the value, otherwise throws `NoSuchElementException`.

         assert OptionalDouble.of(Math.PI).get() == Math.PI

    Since:
      3.0.0

  - ### filter

    public static <T> Optional<T> filter​(Optional<?> self, Class<T> type)
    Tests given value against specified type and changes generics of result. This is equivalent to: `self.filter(it -> it instanceof Type).map(it -> (Type) it)`

         assert !Optional.empty().filter(Number).isPresent()
         assert !Optional.of('x').filter(Number).isPresent()
         assert Optional.of(1234).filter(Number).isPresent()
         assert Optional.of(1234).filter(Number).get().equals(1234)

    Since:
      3.0.0

  - ### filter

    public static OptionalInt filter​(OptionalInt self, IntPredicate test)
    If a value is present in the `OptionalInt`, tests the value using the given predicate and returns the optional if the test returns true or else empty.

         assert !OptionalInt.empty().filter(i -> true).isPresent()
         assert  OptionalInt.of(1234).filter(i -> true).isPresent()
         assert !OptionalInt.of(1234).filter(i -> false).isPresent()
         assert  OptionalInt.of(1234).filter(i -> true).getAsInt() == 1234

    Since:
      3.0.0

  - ### filter

    public static OptionalLong filter​(OptionalLong self, LongPredicate test)
    If a value is present in the `OptionalLong`, tests the value using the given predicate and returns the optional if the test returns true or else empty.

         assert !OptionalLong.empty().filter(n -> true).isPresent()
         assert  OptionalLong.of(123L).filter(n -> true).isPresent()
         assert !OptionalLong.of(123L).filter(n -> false).isPresent()
         assert  OptionalLong.of(123L).filter(n -> true).getAsLong() == 123L

    Since:
      3.0.0

  - ### filter

    public static OptionalDouble filter​(OptionalDouble self, DoublePredicate test)
    If a value is present in the `OptionalDouble`, tests the value using the given predicate and returns the optional if the test returns true or empty otherwise.

         assert !OptionalDouble.empty().filter(n -> true).isPresent()
         assert  OptionalDouble.of(Math.PI).filter(n -> true).isPresent()
         assert !OptionalDouble.of(Math.PI).filter(n -> false).isPresent()
         assert  OptionalDouble.of(Math.PI).filter(n -> true).getAsDouble() == Math.PI

    Since:
      3.0.0

  - ### mapToObj

    public static <T> Optional<T> mapToObj​(OptionalInt self, IntFunction<? extends T> mapper)
    If a value is present in the `OptionalInt`, returns an `Optional` consisting of the result of applying the given function to the value or else empty.

         assert !OptionalInt.empty().mapToObj(x -> new Object()).isPresent()
         assert  OptionalInt.of(1234).mapToObj(x -> new Object()).isPresent()
         assert !OptionalInt.of(1234).mapToObj(x -> null).isPresent()
         assert  OptionalInt.of(1234).mapToObj(Integer::toString).get() == '1234'

    Since:
      3.0.0

  - ### mapToObj

    public static <T> Optional<T> mapToObj​(OptionalLong self, LongFunction<? extends T> mapper)
    If a value is present in the `OptionalLong`, returns an `Optional` consisting of the result of applying the given function to the value or else empty.

         assert !OptionalLong.empty().mapToObj(x -> new Object()).isPresent()
         assert  OptionalLong.of(123L).mapToObj(x -> new Object()).isPresent()
         assert !OptionalLong.of(123L).mapToObj(x -> null).isPresent()
         assert  OptionalLong.of(1234L).mapToObj(Long::toString).get() == '1234'

    Since:
      3.0.0

  - ### mapToObj

    public static <T> Optional<T> mapToObj​(OptionalDouble self, DoubleFunction<? extends T> mapper)
    If a value is present in the `OptionalDouble`, returns an `Optional` consisting of the result of applying the given function to the value or else empty.

         assert !OptionalDouble.empty().mapToObj(x -> new Object()).isPresent()
         assert  OptionalDouble.of(Math.PI).mapToObj(x -> new Object()).isPresent()
         assert !OptionalDouble.of(Math.PI).mapToObj(x -> null).isPresent()
         assert  OptionalDouble.of(Math.PI).mapToObj(Double::toString).get().startsWith('3.14')

    Since:
      3.0.0

  - ### mapToInt

    public static <T> OptionalInt mapToInt​(Optional<T> self, ToIntFunction<? super T> mapper)
    If a value is present in the `OptionalInt`, returns an `OptionalInt` consisting of the result of applying the given function to the value or else empty.

         assert !Optional.empty().mapToInt(x -> 42).isPresent()
         assert  Optional.of('x').mapToInt(x -> 42).getAsInt() == 42

    Since:
      3.0.0

  - ### mapToLong

    public static <T> OptionalLong mapToLong​(Optional<T> self, ToLongFunction<? super T> mapper)
    If a value is present in the `OptionalLong`, returns an `OptionalLong` consisting of the result of applying the given function to the value or else empty.

         assert !Optional.empty().mapToLong(x -> 42L).isPresent()
         assert  Optional.of('x').mapToLong(x -> 42L).getAsLong() == 42L

    Since:
      3.0.0

  - ### mapToDouble

    public static <T> OptionalDouble mapToDouble​(Optional<T> self, ToDoubleFunction<? super T> mapper)
    If a value is present in the `OptionalDouble`, returns an `OptionalDouble` consisting of the result of applying the given function to the value or else empty.

         assert !Optional.empty().mapToDouble(x -> Math.PI).isPresent()
         assert  Optional.of('x').mapToDouble(x -> Math.PI).getAsDouble() == Math.PI

    Since:
      3.0.0

  - ### collect

    public static <S,​ T> Optional<T> collect​(Optional<S> self, Closure<T> transform)
    If the optional contains a value, returns an optional containing the transformed value obtained using the `transform` closure or otherwise an empty optional.

         assert Optional.of("foobar").collect{ it.size() }.get() == 6
         assert !Optional.empty().collect{ it.size() }.isPresent()

    Parameters:
      `self` - an Optional
      `transform` - the closure used to transform the optional value if present
    Returns:
      an Optional containing the transformed value or empty if the optional is empty or the transform returns null
    Since:
      3.0.0

  - ### collect

    public static <S,​ T> Future<T> collect​(Future<S> self, Closure<T> transform)
    Returns a Future asynchronously returning a transformed result.

         import java.util.concurrent.*
         def executor = Executors.newSingleThreadExecutor()
         Future foobar = executor.submit{ "foobar" }
         Future foobarSize = foobar.collect{ it.size() }
         assert foobarSize.get() == 6
         executor.shutdown()

    Parameters:
      `self` - a Future
      `transform` - the closure used to transform the Future value
    Returns:
      a Future allowing the transformed value to be obtained asynchronously
    Since:
      3.0.0

  - ### next

    public static Object next​(Enum self)
    Overloads the `++` operator for enums. It will invoke Groovy's default next behaviour for enums that do not have their own next method.
    Parameters:
      `self` - an Enum
    Returns:
      the next defined enum from the enum class
    Since:
      1.5.2

  - ### previous

    public static Object previous​(Enum self)
    Overloads the `--` operator for enums. It will invoke Groovy's default previous behaviour for enums that do not have their own previous method.
    Parameters:
      `self` - an Enum
    Returns:
      the previous defined enum from the enum class
    Since:
      1.5.2

  - ### size

    @Deprecated public static int size​(StringBuilder self)
    Deprecated.
    Provides the standard Groovy `size()` method for `StringBuilder`.
    Parameters:
      `self` - a StringBuilder
    Returns:
      the length of the StringBuilder
    Since:
      1.5.2
    See Also:
      `StringGroovyMethods.size(CharSequence)`

  - ### leftShift

    public static StringBuilder leftShift​(StringBuilder self, Object value)
    Overloads the left shift operator to provide an easy way to append multiple objects as string representations to a StringBuilder.
    Parameters:
      `self` - a StringBuilder
      `value` - a value to append
    Returns:
      the StringBuilder on which this operation was invoked
    Since:
      1.5.2

  - ### putAt

    public static void putAt​(StringBuilder self, IntRange range, Object value)
    Supports the range subscript operator for StringBuilder. Index values are treated as characters within the builder.
    Parameters:
      `self` - a StringBuilder
      `range` - a Range
      `value` - the object that's toString() will be inserted
    Since:
      1.5.2

  - ### putAt

    public static void putAt​(StringBuilder self, EmptyRange range, Object value)
    Supports the range subscript operator for StringBuilder.
    Parameters:
      `self` - a StringBuilder
      `range` - a Range
      `value` - the object that's toString() will be inserted
    Since:
      1.5.2

  - ### plus

    public static String plus​(StringBuilder self, String value)
    Appends a String to this StringBuilder.
    Parameters:
      `self` - a StringBuilder
      `value` - a String
    Returns:
      a String
    Since:
      1.5.2

  - ### toArray

    public static <T> T[] toArray​(Stream<? extends T> self, Class<T> type)
    Returns an array containing the elements of the stream.

         import static groovy.test.GroovyAssert.shouldFail

         assert Arrays.equals([].stream().toArray(Object), new Object[0])
         assert Arrays.equals([].stream().toArray(String), new String[0])
         assert Arrays.equals([].stream().toArray(String[]), new String[0][])
         assert Arrays.equals(['x'].stream().toArray(Object), ['x'].toArray())
         assert Arrays.equals(['x'].stream().toArray(String), ['x'] as String[])
         assert Arrays.deepEquals([['x'] as String[]].stream().toArray(String[]), [['x'] as String[]] as String[][])
         assert Arrays.equals(['x'].stream().toArray(CharSequence), ['x'] as CharSequence[])

         shouldFail(ArrayStoreException) {
             ['x'].stream().toArray(Thread)
         }

         shouldFail(IllegalArgumentException) {
             ['x'].stream().toArray((Class) null)
         }

         // Stream#toArray(IntFunction) should still be used for closure literal:
         assert Arrays.equals(['x'].stream().toArray { n -> new String[n] }, ['x'] as String[])

         // Stream#toArray(IntFunction) should still be used for method reference:
         assert Arrays.equals(['x'].stream().toArray(String[]::new), ['x'] as String[])

    Parameters:
      `self` - the stream
      `type` - the array element type
    Since:
      3.0.4

  - ### toList

    public static <T> List<T> toList​(Stream<T> self)
    Accumulates the elements of stream into a new List.
    Type Parameters:
      `T` - the type of element
    Parameters:
      `self` - the stream
    Returns:
      a new `java.util.List` instance
    Since:
      2.5.0

  - ### toSet

    public static <T> Set<T> toSet​(Stream<T> self)
    Accumulates the elements of stream into a new Set.
    Type Parameters:
      `T` - the type of element
    Parameters:
      `self` - the stream
    Returns:
      a new `java.util.Set` instance
    Since:
      2.5.0

  - ### toList

    public static <T> List<T> toList​(BaseStream<T,​? extends BaseStream> self)
    Accumulates the elements of stream into a new List.
    Type Parameters:
      `T` - the type of element
    Parameters:
      `self` - the `java.util.stream.BaseStream`
    Returns:
      a new `java.util.List` instance
    Since:
      2.5.0

  - ### toSet

    public static <T> Set<T> toSet​(BaseStream<T,​? extends BaseStream> self)
    Accumulates the elements of stream into a new Set.
    Type Parameters:
      `T` - the type of element
    Parameters:
      `self` - the `java.util.stream.BaseStream`
    Returns:
      a new `java.util.Set` instance
    Since:
      2.5.0

  - ### stream

    public static <T> Stream<T> stream​(NullObject self)
    Returns an empty sequential `Stream`.

         def item = null
         assert item.stream().toList() == []
         assert !item.stream().findFirst().isPresent()

    Since:
      3.0.0

  - ### stream

    public static <T> Stream<T> stream​(T self)
    Returns a sequential `Stream` containing a single element.

         def item = 'string'
         assert item.stream().toList() == ['string']
         assert item.stream().findFirst().isPresent()

    Since:
      3.0.0

  - ### stream

    public static <T> Stream<T> stream​(T[] self)
    Returns a sequential `Stream` with the specified array as its source.
    Type Parameters:
      `T` - The type of the array elements
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      2.5.0

  - ### stream

    public static Stream<Integer> stream​(int[] self)
    Returns a sequential `Stream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      2.5.0

  - ### intStream

    public static IntStream intStream​(int[] self)
    Returns a sequential `IntStream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      3.0.8

  - ### stream

    public static Stream<Long> stream​(long[] self)
    Returns a sequential `Stream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      2.5.0

  - ### longStream

    public static LongStream longStream​(long[] self)
    Returns a sequential `LongStream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      3.0.8

  - ### stream

    public static Stream<Double> stream​(double[] self)
    Returns a sequential `Stream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      2.5.0

  - ### doubleStream

    public static DoubleStream doubleStream​(double[] self)
    Returns a sequential `DoubleStream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      3.0.8

  - ### stream

    public static Stream<Character> stream​(char[] self)
    Returns a sequential `Stream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      2.5.0

  - ### stream

    public static Stream<Byte> stream​(byte[] self)
    Returns a sequential `Stream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      2.5.0

  - ### stream

    public static Stream<Short> stream​(short[] self)
    Returns a sequential `Stream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      2.5.0

  - ### stream

    public static Stream<Boolean> stream​(boolean[] self)
    Returns a sequential `Stream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      2.5.0

  - ### stream

    public static Stream<Float> stream​(float[] self)
    Returns a sequential `Stream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      2.5.0

  - ### stream

    public static <T> Stream<T> stream​(Enumeration<T> self)
    Returns a sequential `Stream` with the specified element(s) as its source.

         def tokens = new StringTokenizer('one two')
         assert tokens.stream().toList() == ['one', 'two']

    Since:
      3.0.0

  - ### stream

    public static <T> Stream<T> stream​(Iterable<T> self)
    Returns a sequential `Stream` with the specified element(s) as its source.

         class Items implements Iterable {
           Iterator iterator() {
             ['one', 'two'].iterator()
           }
         }
         def items = new Items()
         assert items.stream().toList() == ['one', 'two']

    Since:
      3.0.0

  - ### stream

    public static <T> Stream<T> stream​(Iterator<T> self)
    Returns a sequential `Stream` with the specified element(s) as its source.

         [].iterator().stream().toList().isEmpty()
         ['one', 'two'].iterator().stream().toList() == ['one', 'two']

    Since:
      3.0.0

  - ### stream

    public static <T> Stream<T> stream​(Spliterator<T> self)
    Returns a sequential `Stream` with the specified element(s) as its source.

         [].spliterator().stream().toList().isEmpty()
         ['one', 'two'].spliterator().stream().toList() == ['one', 'two']

    Since:
      3.0.0

  - ### stream

    public static <T> Stream<T> stream​(Optional<T> self)
    If a value is present in the `Optional`, returns a `Stream` with the value as its source or else an empty stream.
    Since:
      3.0.0

  - ### stream

    public static IntStream stream​(OptionalInt self)
    If a value is present in the `OptionalInt`, returns an `IntStream` with the value as its source or else an empty stream.
    Since:
      3.0.0

  - ### stream

    public static LongStream stream​(OptionalLong self)
    If a value is present in the `OptionalLong`, returns a `LongStream` with the value as its source or else an empty stream.
    Since:
      3.0.0

  - ### stream

    public static DoubleStream stream​(OptionalDouble self)
    If a value is present in the `OptionalDouble`, returns a `DoubleStream` with the value as its source or else an empty stream.
    Since:
      3.0.0

  - ### orOptional

    public static <T> Optional<T> orOptional​(Optional<T> self, Supplier<? extends Optional<? extends T>> supplier)
    Provide similar functionality to JDK9 `or` on JDK8.
    Since:
      3.0.6