package Ġde . mf . k mf . api Ċ Ċ import Ġorg . eclipse . emf . common . notify . Notification Ċ import Ġorg . eclipse . emf . common . notify . Notification Chain Ċ import Ġorg . eclipse . emf . common . util . E List Ċ import Ġorg . eclipse . emf . ecore . EObject Ċ import Ġorg . eclipse . emf . ecore . Internal EObject Ċ import Ġorg . eclipse . emf . ecore . impl . EN ot ification Impl Ċ import Ġorg . eclipse . emf . ecore . impl . Minimal EObject Impl Ċ import Ġorg . eclipse . emf . ecore . util . E DataType E List Ċ import Ġorg . eclipse . emf . ecore . util . EObject Contain ment E List Ċ import Ġorg . eclipse . emf . ecore . util . EObject Res olving E List Ċ import Ġkotlin . properties . ReadOnly Property Ċ import Ġkotlin . properties . ReadWrite Property Ċ import Ġkotlin . reflect . K Property Ċ import Ġkotlin . reflect . jvm . jvm Er asure Ċ Ċ open Ġclass ĠK M FE Object Impl Ġ: ĠMin imal EObject Impl . Container () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġ< T Ġ: ĠE Object > Ġcontain ment List ( feature Id : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCont ain ment List Loader < T >( feature Id ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġ< T Ġ: ĠE Object > Ġreference List ( feature Id : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReference List Loader < T >( feature Id ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġdata List ( feature Id : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData List Loader < T >( feature Id ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġdata ( feature Id : ĠInt , ĠdefaultValue : ĠT ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Delegate ( feature Id , ĠdefaultValue ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġ< T Ġ: ĠE Object > Ġreference ( feature Id : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReference Delegate < T >( feature Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠCont ain ment List Loader < T Ġ: ĠE Object >( private Ġval Ġfeature Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġprovide Delegate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref : ĠK M FE Object Impl , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprop : ĠK Property < *> ĊĠĠĠĠĠĠĠ Ġ): ĠE List Delegate < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġprop . returnType . arguments [ 0 ]. type ?. jvm Er asure ?. java !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠE List Delegate < T >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE Object Contain ment E List < T >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠReference List Loader < T Ġ: ĠE Object >( private Ġval Ġfeature Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġprovide Delegate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref : ĠK M FE Object Impl , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprop : ĠK Property < *> ĊĠĠĠĠĠĠĠ Ġ): ĠE List Delegate < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠE List Delegate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE Object Res olving E List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop . returnType . arguments [ 0 ]. type ?. jvm Er asure ?. java !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠData List Loader < T >( private Ġval Ġfeature Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġprovide Delegate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref : ĠK M FE Object Impl , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprop : ĠK Property < *> ĊĠĠĠĠĠĠĠ Ġ): ĠE List Delegate < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠE List Delegate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE DataType E List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop . returnType . arguments [ 0 ]. type ?. jvm Er asure ?. java !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠE List Delegate < T >( val Ġe List : ĠE List < T >) Ġ: ĊĠĠĠĠĠĠĠ ĠReadOnly Property < KM FE Object Impl , ĠE List < T >> Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetValue ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref : ĠK M FE Object Impl , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperty : ĠK Property < *> ĊĠĠĠĠĠĠĠ Ġ): ĠE List < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġe List ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠData Delegate < T >( val Ġfeature Id : ĠInt , ĠdefaultValue : ĠT ) Ġ: ĊĠĠĠĠĠĠĠ ĠRead Write Property < KM FE Object Impl , ĠT > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcur Value : ĠT Ġ= ĠdefaultValue ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetValue ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref : ĠK M FE Object Impl , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperty : ĠK Property < *> ĊĠĠĠĠĠĠĠ Ġ): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcur Value ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠsetValue ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref : ĠK M FE Object Impl , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperty : ĠK Property <* >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠT ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠoldValue Ġ= Ġcur Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcur Value Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ref . e Notification Required ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref . e Notify ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE Notification Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification . SET , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoldValue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠReference Delegate < T Ġ: ĠE Object >( val Ġfeature Id : ĠInt ) Ġ: ĊĠĠĠĠĠĠĠ ĠRead Write Property < KM FE Object Impl , ĠT ?> Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcur Value : ĠT ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetValue ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref : ĠK M FE Object Impl , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperty : ĠK Property < *> ĊĠĠĠĠĠĠĠ Ġ): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcur Ġ= Ġcur Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cur ?. e Is Proxy () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Ġ= Ġcur Ġas ĠInternal EObject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcur Value Ġ= Ġthis Ref . e Resolve Proxy ( old ) Ġas ĠT ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cur Value Ġ!== Ġold Ġ&& Ġthis Ref . e Notification Required ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref . e Notify ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE Notification Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification . RESOL VE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcur Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcur Value ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠsetValue ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref : ĠK M FE Object Impl , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperty : ĠK Property <* >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠT ? ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġcur Value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmsgs : ĠNotification Chain ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cur Value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsgs Ġ= Ġ( cur Value Ġas ĠInternal EObject ). e Inverse Remove ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInternal EObject . E OP POS ITE _ FEATURE _ BASE Ġ- Ġfeature Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsgs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsgs Ġ= Ġ( value Ġas ĠInternal EObject ). e Inverse Add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInternal EObject . E OP POS ITE _ FEATURE _ BASE Ġ- Ġfeature Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsgs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠoldValue Ġ= Ġcur Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcur Value Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ref . e Notification Required ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Ġ= ĠE Notification Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification . SET , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoldValue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( msgs Ġ== Ġnull ) Ġmsgs Ġ= Ġnotification ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġmsgs . add ( notification ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmsgs ?. dispatch () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( this Ref . e Notification Required ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref . e Notify ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE Notification Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification . SET , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠDummy Delegate < T >() Ġ: ĠRead Write Property < KM FE Object Impl , ĠT > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetValue ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref : ĠK M FE Object Impl , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperty : ĠK Property < *> ĊĠĠĠĠĠĠĠ Ġ): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") Ġ// To Ġchange Ġbody Ġof Ġcreated Ġfunctions Ġuse ĠFile Ġ| ĠSettings Ġ| ĠFile ĠTemplates . ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠsetValue ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref : ĠK M FE Object Impl , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperty : ĠK Property <* >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠT ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") Ġ// To Ġchange Ġbody Ġof Ġcreated Ġfunctions Ġuse ĠFile Ġ| ĠSettings Ġ| ĠFile ĠTemplates . ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }