package Ġsh mp . simulation . culture . group . process Ċ Ċ import Ġsh mp . simulation . culture . group . centers . Trait Change Ċ import Ġsh mp . simulation . culture . think ing . mean ing . Me me Ċ import Ġsh mp . simulation . event . Event ĊĊ Ċ class ĠProcess Result Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġval Ġme mes : ĠList < Me me > Ġ= ĠlistOf (), ĊĠĠĠĠĠĠĠ Ġval Ġevents : ĠList < Event > Ġ= ĠlistOf (), ĊĠĠĠĠĠĠĠ Ġval Ġtrait Changes : ĠList < Trait Change > Ġ= ĠlistOf () Ċ ) Ġ{ ĊĠĠĠ Ġconstructor ( var arg Ġevents : ĠEvent ) Ġ: Ġthis ( events Ġ= Ġevents . toList ()) ĊĠĠĠ Ġconstructor ( var arg Ġme mes : ĠMe me ) Ġ: Ġthis ( me mes . toList ()) ĊĠĠĠ Ġconstructor ( var arg Ġtrait Changes : ĠTrait Change ) Ġ: Ġthis ( trait Changes Ġ= Ġtrait Changes . toList ()) ĊĊĠĠĠ Ġoperator Ġfun Ġplus ( other : ĠProcess Result ) Ġ= ĠProcess Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġme mes Ġ+ Ġother . me mes , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevents Ġ+ Ġother . events , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrait Changes Ġ+ Ġother . trait Changes ĊĠĠĠ Ġ) Ċ } Ċ Ċ val Ġempty Process Result Ġ= ĠProcess Result () ĊĊ Ċ inline Ġfun Ġ< E > ĠIterable < E >. flatMap PR ( transform : Ġ( E ) Ġ-> ĠProcess Result ) Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ. map ( transform ) ĊĠĠĠĠĠĠĠ Ġ. fold Right ( empty Process Result , ĠProcess Result :: plus ) Ċ Ċ inline Ġfun Ġ< K , ĠV > ĠMap < out ĠK , ĠV >. flatMap PR ( transform : Ġ( Map . Entry < K , ĠV >) Ġ-> ĠProcess Result ) Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ. map ( transform ) ĊĠĠĠĠĠĠĠ Ġ. fold Right ( empty Process Result , ĠProcess Result :: plus ) Ċ Ċ fun ĠList < Process Result >. flatten PR () Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ. fold Right ( empty Process Result , ĠProcess Result :: plus ) Ċ