anchor.diff:  //Map["key:1":1,"key:2":2,"key:3":3]
   ----
   ====
  -=== toLazyCollection / toConcurrentLazyCollection
  +
  +==== toLazyCollection / toConcurrentLazyCollection
   
   Cyclops provides operators to lazily create a collection from the Stream. The values are only pulled through the Stream as the lazy collection is used. toConcurrentLazyCollection synchronizes iteration through the underlying Stream.
   
  
positive.code: 
  === conversions
  
  === toList / toSet / toMap
  
  The are are a number of convenience methods for creating collections.
  
  
negative.code:                 .batchUntil(i->i%3==0,()->new ArrayList<>())
                  .toList().size()
  //[1,2,3],[4,5,6]
  ----
  ====
  
  ==== jOOλ based windowing
  
  Integrated as of cyclops 7.2.0
  
  jOOλ based windowing implements SQL windowing operations for Streams. There is a very good introductory blog article on the subject here http://blog.jooq.org/2016/01/06/2016-will-be-the-year-remembered-as-when-java-finally-had-window-functions/[2016 Will be the Year Remembered as When Java Finally Had Window Functions!]
  
  [TIP]
  ====
  The jOOλ functions are exceptionally powerful and flexible, but also consume the Stream. This means they will not perform as well as the simpler (but less powerful) batchBy, windowBy and sliding functions in cyclops. They are also not suitable for use in infinitely large Streams.
  ====
  
  .jOOλ windowing example
  ====
  [source,java]
  ----
  // group, order, take max
  
  SequenceM.of(1, 2, 4, 2, 3)
           .window(i -> i % 2, naturalOrder())
           .map(Window::max)
  // (1, 2, 4, 4, 3)
  
  ----
  ====
  
  .jOOλ windowing with pretty print
  ====
  An example from jOOλ windowing blog entry.
  
  [source,java]
  ----
  System.out.println(
      SequenceM.of("a", "a", "a", "b", "c", "c", "d", "e")
         //create a window
         .window(naturalOrder())
         //produce a table from the window
         .map(w -> tuple(
                w.value(),   // v0 
                w.count(),   // v1
                w.median(),  // v2
                w.lead(),    // v3
                w.lag(),     // v4
                w.toString() // v5
         ))
              .format()
  );
  
  
  
  ----
  
  ----
  +----+----+----+---------+---------+----------+
  | v0 | v1 | v2 | v3      | v4      | v5       |
  +----+----+----+---------+---------+----------+
  | a  |  1 | a  | a       | {empty} | a        |
  | a  |  2 | a  | a       | a       | aa       |
  | a  |  3 | a  | b       | a       | aaa      |
  | b  |  4 | a  | c       | a       | aaab     |
  | c  |  5 | a  | c       | b       | aaabc    |
  | c  |  6 | a  | d       | c       | aaabcc   |
  | d  |  7 | b  | e       | c       | aaabccd  |
  | e  |  8 | b  | {empty} | d       | aaabccde |
  +----+----+----+---------+---------+----------+
  ----
  ====
  
  