package Ġit . uni bo . al che mist . model . implement ations . actions . ste ering str ategies Ċ Ċ import Ġit . uni bo . al che mist . model . interfaces . Position Ċ import Ġit . uni bo . al che mist . model . interfaces . Ste ering Action Ċ import Ġit . uni bo . al che mist . model . interfaces . Ste ering Strategy Ċ Ċ /** Ċ Ġ* ĠSte ering Ġlogic Ġin Ġwhich Ġa Ġfilter Ġis Ġapplied Ġto Ġthe Ġste ering Ġactions Ċ Ġ* Ġin Ġorder Ġto Ġexecute Ġanother Ġste ering Ġlogic Ġwith Ġonly Ġsome Ġof Ġthese . Ċ Ġ* Ċ Ġ* Ġ@ param Ġste er Strategy Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġthe Ġenvironment Ġin Ġwhich Ġthe Ġpe de stri an Ġmoves . Ċ Ġ* Ġ@ param Ġfilter Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġthe Ġlambda Ġto Ġapply Ġon Ġthe Ġlist Ġof Ġste ering Ġactions . Ċ Ġ*/ Ċ open Ġclass ĠFilter ed < T , ĠP Ġ: ĠPosition < P >>( ĊĠĠĠ Ġprivate Ġval Ġste er Strategy : ĠSte ering Strategy < T , ĠP >, ĊĠĠĠ Ġprivate Ġval Ġfilter : ĠList < Ste ering Action < T , ĠP >> . () Ġ-> ĠList < Ste ering Action < T , ĠP >> Ċ ) Ġ: ĠSte ering Strategy < T , ĠP > Ġby Ġste er Strategy Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcompute Next Position ( actions : ĠList < Ste ering Action < T , ĠP >>) Ġ= Ġste er Strategy . compute Next Position ( actions . filter ()) Ċ } Ċ