package Ġcom . github . spe ky . core Ċ Ċ /** Ċ Ġ* ĠA Ġreference Ġto Ġproperty . Ċ Ġ* Ċ Ġ* Ġ@ property Ġname Ġname Ġof Ġthe Ġproperty Ċ Ġ* Ġ@ property Ġclass Ref Ġ[ Class Ref ] Ġof Ġthe Ġproperty Ġtype Ċ Ġ* Ġ@ property Ġdeclaring Class Ref Ġ[ Class Ref ] Ġof Ġthe Ġclass Ġthat Ġproperty Ġbelongs Ġto Ġthat Ċ Ġ* Ċ Ġ* Ġ@ param ĠT Ġtype Ġof Ġthe Ġproperty Ċ Ġ*/ Ċ data Ġclass ĠProperty Ref < T >( ĊĠ Ġval Ġname : ĠString , ĊĠ Ġval Ġclass Ref : ĠClass Ref < T >, ĊĠ Ġval Ġdeclaring Class Ref : ĠClass Ref <* >, Ċ ) Ġ{ ĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Show ] Ġinstance Ġfor Ġ[ Property Ref ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġshow : ĠShow < Property Ref <* >> Ġ= ĠShow Ġ{ Ġ"${ decl aring Class Ref . name }. $ name " Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInvoke Ġoperator Ġto Ġcreate Ġnew ĠInstance Ġof Ġthe Ġ[ Property Ref ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname Ġname Ġof Ġthe Ġproperty ĊĠĠĠĠ Ġ* Ġ@ param Ġdeclaring Class Ġ[ Class Ref ] Ġof Ġthe Ġclass Ġthat Ġproperty Ġbelongs Ġto Ġthat ĊĠĠĠĠ Ġ* Ġ@ param ĠT Ġtype Ġof Ġthe Ġproperty Ġto Ġcreate Ġ[ Property Ref ] Ġfor Ġit ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġof ( ĊĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠ Ġdeclaring Class : ĠClass Ref < *> ĊĠĠĠ Ġ): ĠProperty Ref < T > Ġ{ ĊĠĠĠĠĠ Ġrequire ( name . isNotEmpty ()) Ġ{ Ġ" name Ġshould Ġbe Ġnot Ġempty " Ġ} ĊĠĠĠĠĠ Ġrequire ( name . isNotBlank ()) Ġ{ Ġ" name Ġshould Ġbe Ġnot Ġblank " Ġ} ĊĊĠĠĠĠĠ Ġreturn ĠProperty Ref ( name , ĠClass Ref . of (), Ġdeclaring Class ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ