package Ġorg . kol le kt ions . consum ers Ċ Ċ interface ĠConsumer Builder < T , ĠV > Ġ{ ĊĠĠĠ Ġfun Ġbuild ( inner Consumer : ĠConsumer < V >): ĠConsumer < T > Ċ } Ċ Ċ interface ĠConsumer < T > Ġ{ ĊĠĠĠ Ġfun Ġprocess ( value : ĠT ) ĊĠĠĠ Ġfun Ġresults (): ĠAny ĊĠĠĠ Ġfun Ġstop () Ċ } Ċ Ċ fun < T > ĠIterable < T >. consume ( var arg Ġconsumers : ĠConsumer < T >): ĠList < Any > Ġ{ ĊĠĠĠ Ġval Ġconsumers List Ġ= Ġconsumers . toList () ĊĠĠĠ Ġval Ġiterator Ġ= Ġiterator () ĊĠĠĠ Ġreturn Ġconsume ( iterator , Ġconsumers List ) Ċ } Ċ Ċ fun < T > ĠSequence < T >. consume ( var arg Ġconsumers : ĠConsumer < T >): ĠList < Any > Ġ{ ĊĠĠĠ Ġval Ġconsumers List Ġ= Ġconsumers . toList () ĊĠĠĠ Ġval Ġiterator Ġ= Ġiterator () ĊĠĠĠ Ġreturn Ġconsume ( iterator , Ġconsumers List ) Ċ } Ċ Ċ private Ġfun Ġ< T > Ġconsume ( iterator : ĠIterator < T >, Ġconsumers List : ĠList < Consumer < T >> ): ĠList < Any > Ġ{ ĊĠĠĠ Ġreturn Ġconsume 2 ( iterator , Ġconsumers List ) Ġ{ Ġconsumers : ĠList < Consumer < T >> Ġ-> Ġdefault Results Mapper ( consum ers ) Ġ} Ċ } Ċ Ċ fun < T , ĠV > ĠSequence < T >. consume ( results Mapper : Ġ( consum ers List : ĠList < Consumer < T >>) Ġ-> ĠV , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar arg Ġconsumers : ĠConsumer < T >): ĠV Ġ{ ĊĠĠĠ Ġval Ġconsumers List Ġ= Ġconsumers . toList () ĊĠĠĠ Ġval Ġiterator Ġ= Ġiterator () ĊĠĠĠ Ġreturn Ġconsume 2 ( iterator , Ġconsumers List , Ġresults Mapper ) Ċ } Ċ Ċ fun < T , ĠV > ĠIterable < T >. consume ( results Mapper : Ġ( consum ers List : ĠList < Consumer < T >>) Ġ-> ĠV , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar arg Ġconsumers : ĠConsumer < T >): ĠV Ġ{ ĊĠĠĠ Ġval Ġconsumers List Ġ= Ġconsumers . toList () ĊĠĠĠ Ġval Ġiterator Ġ= Ġiterator () ĊĠĠĠ Ġreturn Ġconsume 2 ( iterator , Ġconsumers List , Ġresults Mapper ) Ċ } Ċ Ċ private Ġfun Ġ< T , ĠV > Ġconsume 2 ( iterator : ĠIterator < T >, Ġconsumers List : ĠList < Consumer < T >>, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresults Mapper : Ġ( consum ers List : ĠList < Consumer < T >>) Ġ-> ĠV ): ĠV Ġ{ ĊĠĠĠ Ġwhile Ġ( iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġiterator . next () ĊĠĠĠĠĠĠĠ Ġconsumers List . forEach Ġ{ Ġit . process ( value ) Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġconsumers List . forEach Ġ{ Ġit . stop () Ġ} ĊĠĠĠ Ġreturn Ġresults Mapper ( consum ers List ) Ċ } Ċ Ċ fun < T > ĠIterable < T >. consume By One ( consumer : ĠConsumer < T >): ĠAny Ġ{ ĊĠĠĠ Ġval Ġiterator Ġ= Ġiterator () ĊĠĠĠ Ġreturn Ġconsume 2 ( iterator , Ġconsumer ) Ċ } Ċ Ċ fun < T > ĠSequence < T >. consume By One ( consumer : ĠConsumer < T >): ĠAny Ġ{ ĊĠĠĠ Ġval Ġiterator Ġ= Ġiterator () ĊĠĠĠ Ġreturn Ġconsume 2 ( iterator , Ġconsumer ) Ċ } Ċ Ċ private Ġfun Ġ< T > Ġconsume 2 ( iterator : ĠIterator < T >, Ġconsumer : ĠConsumer < T >): ĠAny Ġ{ ĊĠĠĠ Ġwhile Ġ( iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġiterator . next () ĊĠĠĠĠĠĠĠ Ġconsumer . process ( value ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġconsumer . stop () ĊĠĠĠ Ġreturn Ġconsumer . results () Ċ } Ċ Ċ private Ġfun < T > Ġdefault Results Mapper ( consum ers List : ĠList < Consumer < T >>) Ġ= Ġconsumers List . map Ġ{ Ġit . results () Ġ} Ċ