package Ġdiff . patch . coords Ċ Ċ import Ġdiff . patch . Coordinate Ċ import Ġdiff . patch . Getter Ċ import Ġdiff . patch . Setter Ċ Ċ import Ġjava . lang . reflect . Array Ċ import Ġjava . util . Objects Ċ Ċ /** ĊĊ Ġ* Ġ@ author Ġse bas jm Ġ< sm arch ano ></ sm arch ano >@ primary . com . ar > Ċ Ġ*/ Ċ class ĠSize Coordinates < Type : ĠAny >( parent : ĠCoordinate < Type , ĠAny >, Ġinternal Ġval Ġtype : ĠSize Coordinates . Size Type ) Ġ: ĠRelative Coordinates < Int , ĠType >( parent ) Ġ{ ĊĊĠĠĠ Ġenum Ġclass ĠSize Type Ġ{ ĊĠĠĠĠĠĠĠ ĠARRAY , ĊĠĠĠĠĠĠĠ ĠFIELD , ĊĠĠĠĠĠĠĠ ĠLIST , ĊĠĠĠĠĠĠĠ ĠMAP , ĊĠĠĠĠĠĠĠ ĠSET ; ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġbuild Getter ( target : ĠAny ): ĠGetter < Int > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠARRAY Ġ-> Ġreturn Ġobject Ġ: ĠGetter < Int > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget (): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠArray . getLength ( target ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFIELD Ġ-> Ġreturn Ġobject Ġ: ĠGetter < Int > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget (): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtarget . java Class . fields . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLIST Ġ-> Ġreturn Ġobject Ġ: ĠGetter < Int > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget (): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( target Ġas ĠList < *> ). size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMAP Ġ-> Ġreturn Ġobject Ġ: ĠGetter < Int > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget (): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( target Ġas ĠMap < *, Ġ*> ). size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSET Ġ-> Ġreturn Ġobject Ġ: ĠGetter < Int > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget (): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( target Ġas ĠSet < *> ). size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġname Ġ= Ġparent . name Ġ+ Ġ": size " ĊĊĠĠĠ Ġoverride Ġfun Ġgetter ( of Old State : ĠBoolean , Ġtarget : ĠType ): ĠGetter < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtype . build Getter ( target ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsetter ( of Old State : ĠBoolean , Ġtarget : ĠType ): ĠSetter < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" Not Ġsupported .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapplies ( is Old State : ĠBoolean , Ġtarget : ĠType ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġhash Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġhash Ġ= Ġ 1 9 Ġ* Ġhash Ġ+ ĠObjects . hashCode ( this . type ) ĊĠĠĠĠĠĠĠ Ġreturn Ġhash ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( obj : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( obj Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( java Class Ġ!= Ġobj . java Class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġother Ġ= Ġobj Ġas ĠSize Coordinates < *> ? ĊĠĠĠĠĠĠĠ Ġif Ġ( this . type Ġ!= Ġother !!. type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ