package Ġoperations . array Ċ Ċ import ĠLogic Evaluator Ċ import ĠFunctional Logic Operation Ċ import Ġoperations . logic . unwrap . Truthy Un wrap Strategy Ċ import Ġkotlin . collections . Map Ċ Ċ internal Ġobject ĠFilter Ġ: ĠFunctional Logic Operation , ĠNo Initial Value Operation , ĠTr uth y Un wrap Strategy Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( expression : ĠAny ?, Ġdata : ĠAny ?, Ġevaluator : ĠLogic Evaluator ): ĠAny ? Ġ= ĊĠĠĠĠĠĠĠ Ġinvoke Array Operation ( expression , Ġdata , Ġevaluator , Ġ:: filter OrEmpty List ) ĊĊĠĠĠ Ġprivate Ġfun Ġfilter OrEmpty List ( ĊĠĠĠĠĠĠĠ Ġoperation Input : ĠArray Operation InputData , ĊĠĠĠĠĠĠĠ Ġevaluator : ĠLogic Evaluator ĊĠĠĠ Ġ) Ġ= Ġwith ( operation Input ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoperation Data . or Empty (). filter Ġ{ Ġevaluated Value Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevaluator . filter Value ( evalu ated Value , Ġmapping Operation , Ġoperation Default ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠLogic Evaluator . filter Value ( ĊĠĠĠĠĠĠĠ Ġevaluated Value : ĠAny ?, ĊĠĠĠĠĠĠĠ Ġmapping Operation : ĠMap < String , ĠAny > ?, ĊĠĠĠĠĠĠĠ Ġoperation Default : ĠAny ? ĊĠĠĠ Ġ) Ġ= Ġunwrap Value As Boolean (( mapping Operation ?. let Ġ{ Ġoperation Ġ-> ĊĠĠĠĠĠĠĠ Ġevaluate Logic ( operation , Ġevaluated Value ) ĊĠĠĠ Ġ} Ġ?: Ġoperation Default )) Ċ } Ċ