package Ġcom . github . kh od an ov ich . validator . controller Ċ Ċ import Ġcom . github . kh od an ov ich . validator . Validator ĊĊ Ċ class ĠController Validator < Value , ĠController > Ġ: ĠValidator < Value > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġcontroller : ĠController ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġvar Ġpredicate : Ġ(( Value )-> Boolean )? Ġ= Ġnull ĊĠĠĠ Ġvar Ġaction : Ġ(( Controller , ĠValue ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġvar Ġerror : Ġ(( Controller )-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġcheck ( value : ĠAny ?): ĠBoolean { ĊĠĠĠĠĠĠĠ Ġval Ġchecked Value Ġ= Ġvalue Ġas ĠValue ĊĠĠĠĠĠĠĠ Ġpredicate ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontroller ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( predicate !!. invoke ( checked Value )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction ?. invoke ( controller !! , Ġchecked Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror ?. invoke ( controller !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġattach Controller ( controller : ĠAny ){ ĊĠĠĠĠĠĠĠ Ġthis . controller Ġ= Ġcontroller Ġas ĠController ĊĠĠĠ Ġ} Ċ }