package Ġdev . ust its . k ref ty . dsl Ċ Ċ import Ġdev . ust its . k ref ty . core . E ager Ref ined Ċ import Ġdev . ust its . k ref ty . core . Predicate Ċ import Ġdev . ust its . k ref ty . core . Ref ined Ċ import Ġdev . ust its . k ref ty . predicate . logical . All Ċ import Ġdev . ust its . k ref ty . predicate . logical . Not Ċ import Ġdev . ust its . k ref ty . predicate . logical . Some Ċ Ċ infix Ġfun Ġ< P Ġ: ĠPredicate < T >, ĠT > ĠT . ref ined ( predicate : ĠP ): ĠRef ined < P , ĠT > Ġ{ ĊĠĠĠ Ġreturn ĠE ager Ref ined ( predicate , Ġthis ) Ċ } Ċ Ċ infix Ġfun Ġ< P Ġ: ĠPredicate < T >, ĠT > ĠT . ref ined Or Error ( predicate : ĠP ): ĠResult < Ref ined < P , ĠT >> Ġ{ ĊĠĠĠ Ġreturn Ġkotlin . run Catch ing Ġ{ ĠE ager Ref ined ( predicate , Ġthis ) Ġ} Ċ } Ċ Ċ infix Ġfun Ġ< P Ġ: ĠPredicate < T >, ĠT > ĠT . ref ined OrNull ( predicate : ĠP ): ĠRef ined < P , ĠT >? Ġ{ ĊĠĠĠ Ġreturn Ġref ined Or Error ( predicate ). get OrNull () Ċ } Ċ Ċ infix Ġfun Ġ< T > ĠPredicate < T >. and ( predicate : ĠPredicate < T >): ĠPredicate < T > Ġ{ ĊĠĠĠ Ġreturn ĠAll ( listOf ( this , Ġpredicate )) Ċ } Ċ Ċ infix Ġfun Ġ< T > ĠPredicate < T >. or ( predicate : ĠPredicate < T >): ĠPredicate < T > Ġ{ ĊĠĠĠ Ġreturn ĠSome ( listOf ( this , Ġpredicate )) Ċ } Ċ Ċ operator Ġfun Ġ< T > ĠPredicate < T >. not (): ĠNot < Predicate < T >, ĠT > Ġ{ ĊĠĠĠ Ġreturn ĠNot ( this ) Ċ } Ċ