Good chance that you have worked with the Java Streams API. It is quite easy to consume Stream objects. What if you want to produce your own Stream? Is List.stream().map().collect(toList()) an antipattern? How to deal with IO? How can you transform your service and your API’s using Stream? I will show some best practices on implementing the Spliterator interface and implications of the various characteristics. I will show how this transformed one of our applications and significantly reduced its memory pressure.