package Ġsh mp . simulation . culture . group . culture aspect Ċ Ċ import Ġsh mp . simulation . culture . group . culture aspect . wor ship . Mult ig roup W or ship Wrapper Ċ import Ġsh mp . simulation . culture . group . culture aspect . wor ship . W or ship Ċ Ċ class ĠMutable Culture Aspect Pool ( initial Aspect s : ĠMutable Set < Culture Aspect >) Ġ: ĠCulture Aspect Pool ( initial Aspect s ) Ġ{ ĊĠĠĠ Ġfun Ġadd ( aspect : ĠCulture Aspect ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( when Ġ( aspect ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠR it ual Ġ-> Ġr it ual Add ( aspect ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠR it ual System Ġ-> Ġr it ual System Add ( aspect ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠT ale Ġ-> Ġt ale Add ( aspect ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠT ale System Ġ-> Ġt ale System Add ( aspect ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDep ict Object Ġ-> Ġde pict Object Add ( aspect ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDep ict System Ġ-> Ġde pict System Add ( aspect ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠW or ship Ġ-> Ġwor ship Add ( aspect ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMult ig roup W or ship Wrapper Ġ-> Ġwor ship Add ( aspect . wor ship ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġreturn ĊĠĠĠĠĠĠĠ Ġaspect Map [ aspect ] Ġ= Ġaspect ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd All ( aspect s : ĠCollection < Culture Aspect >) Ġ= Ġaspects . forEach Ġ{ Ġadd ( it ) Ġ} ĊĊĠĠĠ Ġfun Ġremove ( culture Aspect : ĠCulture Aspect ) Ġ= Ġaspect Map . remove ( culture Aspect ) ĊĊĠĠĠ Ġfun Ġremove All ( culture Aspect s : ĠList < Culture Aspect >) Ġ= Ġculture Aspect s . map NotNull Ġ{ Ġremove ( it ) Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġr it ual Add ( rit ual : ĠR it ual ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsystem Ġ= Ġr it ual Systems ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġit . reason Ġ== Ġr it ual . reason Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġsystem . add R it ual ( rit ual ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġr it ual System Add ( system : ĠR it ual System ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexisting System Ġ= Ġr it ual Systems ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġit . reason Ġ== Ġsystem . reason Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġsystem . rit ual s . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexisting System . add R it ual ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġt ale Add ( ta le : ĠT ale ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsystem Ġ= Ġt ale Systems ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġt ale . info . actor Concept Ġ== Ġit . grouping Concept Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġsystem . add T ale ( ta le ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġt ale System Add ( system : ĠT ale System ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexisting System Ġ= Ġt ale Systems ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġit . grouping Concept Ġ== Ġsystem . grouping Concept Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġsystem . ta les . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexisting System . add T ale ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġde pict Object Add ( de pi ction : ĠDep ict Object ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexisting System Ġ= Ġde pict Systems ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġs Ġ-> Ġde pi ction . meme . any Match Ġ{ Ġs . grouping Me me Ġ== Ġit . top Me me Copy () Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġexisting System . add De pi ction ( de pi ction ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġde pict System Add ( system : ĠDep ict System ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexisting System Ġ= Ġde pict Systems ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġsystem . grouping Me me Ġ== Ġit . grouping Me me Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġsystem . de pi ctions . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexisting System . add De pi ction ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwor ship Add ( wor ship : ĠW or ship ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwor ship Ġin Ġwor ships ĊĠĠĠ Ġ} Ċ }