package Ġcom . st ef ano . cord a . de posits Ċ Ċ import Ġnet . cord a . core . contracts . require That Ċ import Ġkotlin . reflect . K Property Ċ import Ġkotlin . reflect . full . member Properties Ċ Ċ fun Ġ< T Ġ: ĠAny > ĠCollection < T >. contains All Ex cluding ( to Check : ĠCollection < T >, Ġto Exclude : ĠSet < K Property < Any ? >> ): ĠBoolean Ġ{ ĊĠĠĠ Ġloop Over Small @ Ġfor Ġ( t Ġin Ġto Check ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( other Ġin Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( t . isEqualTo Ex cluding ( other , Ġto Exclude )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak @ loop Over Small ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġtrue ; Ċ } Ċ Ċ fun Ġ< T Ġ: ĠAny > ĠT . isEqualTo Ex cluding ( thing : ĠT , Ġto Exclude : ĠSet < K Property < Any ? >> ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġare EqualTo Ex cluding ( this , Ġthing , Ġto Exclude ); Ċ } Ċ Ċ fun Ġ< T Ġ: ĠAny > Ġare EqualTo Ex cluding ( input 1 : ĠT , Ġinput 2 : ĠT , Ġproperties To Exclude : ĠSet < K Property < Any ? >> ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġk Class Ġ= Ġinput 1 :: class ĊĠĠĠ Ġrequire That Ġ{ ĊĠĠĠĠĠĠĠ Ġ" must Ġbe Ġa Ġdata Ġclass " Ġusing Ġ( k Class . is Data ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġval Ġdeclared Member Properties : ĠCollection < K Property < Any ? >> Ġ= Ġk Class . member Properties ĊĠĠĠ Ġfor Ġ( declared Member Property Ġin Ġdeclared Member Properties ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( properties To Exclude . contains ( declared Member Property )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ; ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult 1 Ġ= Ġdeclared Member Property . call ( input 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult 2 Ġ= Ġdeclared Member Property . call ( input 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result 1 Ġ!= Ġresult 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtrue ; Ċ } ĊĊ Ċ data Ġclass ĠTest Class ( ĊĠĠĠĠĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġnum : ĠNumber , ĊĠĠĠĠĠĠĠ Ġval Ġlikes Che ese : ĠBoolean Ċ ) Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġprintln ( are EqualTo Ex cluding ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Class (" yes ", Ġ 1 0 , Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Class (" yes ", Ġ 1 0 , Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Of ( TestClass :: likes Che ese ) ĊĠĠĠ Ġ)) ĊĊĠĠĠ Ġprintln ( are EqualTo Ex cluding ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Class (" yes ", Ġ 1 0 , Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Class (" yes ", Ġ 1 0 , Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Of ( TestClass :: likes Che ese ) ĊĠĠĠ Ġ)) ĊĊĠĠĠ Ġprintln ( are EqualTo Ex cluding ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Class (" yes ", Ġ 1 0 , Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Class (" no ", Ġ 1 0 , Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Of ( TestClass :: name ) ĊĠĠĠ Ġ)) ĊĊĠĠĠ Ġprintln ( are EqualTo Ex cluding ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Class (" yes ", Ġ 1 0 , Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Class (" yes ", Ġ 1 0 , Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Of ( TestClass :: name ) ĊĠĠĠ Ġ)) ĊĊĠĠĠ Ġprintln ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Class (" yes ", Ġ 1 0 , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo Ex cluding ( TestClass (" yes ", Ġ 1 0 , Ġtrue ), Ġset Of ( TestClass :: name )) ĊĠĠĠ Ġ) Ċ Ċ }