/* Ċ Ġ* ĠLicensed Ġto Ġthe ĠApache ĠSoftware ĠFoundation Ġ( ASF ) Ġunder Ġone Ċ Ġ* Ġor Ġmore Ġcontributor Ġlicense Ġagreements . Ġ ĠSee Ġthe ĠNOTICE Ġfile Ċ Ġ* Ġdistributed Ġwith Ġthis Ġwork Ġfor Ġadditional Ġinformation Ċ Ġ* Ġregarding Ġcopyright Ġownership . Ġ ĠThe ĠASF Ġlicenses Ġthis Ġfile Ċ Ġ* Ġto Ġyou Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ċ Ġ* Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ċ Ġ* Ġwith Ġthe ĠLicense . Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ċ Ġ* Ġsoftware Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ċ Ġ* Ġ" AS ĠIS " ĠBASIS , ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY Ċ Ġ* ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ċ Ġ* Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ġlimitations Ċ Ġ* Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġorg . apache . t inker pop 4 . gre mlin . structure . util . reference Ċ Ċ import Ġorg . apache . t inker pop 4 . gre mlin . structure . Element Ċ Ċ /** Ċ Ġ* Ġ@ author ĠMark o ĠA . ĠRod rig ue z Ġ( http :// mark or od rig ue z . com ) Ċ Ġ*/ Ċ class ĠReference Property < V > Ġ: ĠAttach able < Property < V >? >, ĠSerializable , ĠProperty < V > Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġelement : ĠReference Element < *> ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġkey : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġvalue : ĠV ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġconstructor () Ġ{} ĊĊĠĠĠ Ġfun Ġget (): ĠProperty < V > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( property : ĠProperty < V >) Ġ{ ĊĠĠĠĠĠĠĠ Ġelement Ġ= Ġif Ġ( null Ġ== Ġproperty . element ()) Ġnull Ġelse ĠReference Factory . detach ( property . element ()) ĊĠĠĠĠĠĠĠ Ġkey Ġ= Ġproperty . key () ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġproperty . value () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( key : ĠString ?, Ġvalue : ĠV ) Ġ{ ĊĠĠĠĠĠĠĠ Ġelement Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġthis . key Ġ= Ġkey ĊĠĠĠĠĠĠĠ Ġthis . value Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠElement Helper . hashCode ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠString Factory . property String ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġoverride Ġfun Ġequals (` object `: ĠObject ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠElement Helper . are Equal ( this , Ġ` object `) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġfun Ġkey (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġkey ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġ@ Throws ( NoSuch ElementException :: class ) ĊĠĠĠ Ġfun Ġvalue (): ĠV Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ get : Override ĊĠĠĠ Ġval Ġis Present : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtrue ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġfun Ġelement (): ĠElement Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġelement ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Override ĊĠĠĠ Ġfun Ġremove () Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠProperty . Exceptions . property Removal NotSupported () ĊĠĠĠ Ġ} Ċ }