static Seq<Character> seq(Reader reader) {
        if (reader == null)
            return Seq.empty();
        
        FunctionalSpliterator<Character> spliterator = consumer -> {
            try {
                int value = reader.read();

                if (value != -1)
                    consumer.accept((char) value);

                return value != -1;
            }
            catch (IOException e) {
                throw new UncheckedIOException(e);
            }
        };

        return seq(spliterator).onClose(Unchecked.runnable(reader::close));
    }
Wrap a <code>Reader</code> into a <code>Seq</code>.
<p>
Client code must close the <code>Reader</code>. All
{@link IOException}'s thrown be the <code>Reader</code> are wrapped
by {@link UncheckedIOException}'s.
jOOL-java-8/src/main/java/org/jooq/lambda/Seq.java