/* Ċ Ġ* ĠCopyright Ġ 2 0 1 4 - 2 0 1 7 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġ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 Ġjet brains . mps . logic . reactor . util Ċ Ċ import Ġcom . github . and rew oma . dex x . collection . Derived Key HashMap Ċ import Ġcom . github . and rew oma . dex x . collection . Key Function Ċ import Ġcom . github . and rew oma . dex x . collection . internal . base . Abstract Set Ċ Ċ @ Deprecated (" ob solete , Ġavoid Ġusing Ġin Ġnew Ġcode ") Ċ class ĠId HashSet < E > Ġ: ĠAbstract Set < E > Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval ĠEMPTY _ SET Ġ= ĠId HashSet < Any >() ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġ< E > Ġid key ( value : ĠE ) Ġ= ĠSystem . identity HashCode ( value ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġstorage : ĠDerived Key HashMap < Int , ĠE > ĊĊĠĠĠ Ġconstructor () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . storage Ġ= Ġempty Storage () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( storage : ĠDerived Key HashMap < Int , ĠE >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . storage Ġ= Ġstorage ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( copyFrom : ĠIterable < E >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . storage Ġ= Ġcopy From . fold ( empty Storage ()) Ġ{ Ġs , Ġe Ġ-> Ġs . put ( id key ( e ), Ġe ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd ( value : ĠE ): ĠId HashSet < E > Ġ= ĠId HashSet ( storage . put ( id key ( value ), Ġvalue )) ĊĊĠĠĠ Ġoverride Ġfun Ġcontains ( value : ĠE ): ĠBoolean Ġ= Ġstorage . containsKey ( id key ( value )) ĊĊĠĠĠ Ġoverride Ġfun Ġremove ( value : ĠE ): ĠId HashSet < E > Ġ= ĠId HashSet ( storage . remove ( id key ( value ))) ĊĊĠĠĠ Ġoverride Ġfun Ġiterator (): ĠMutable Iterator < E > Ġ= Ġobject : ĠMutable Iterator < E > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġstorage It Ġ= Ġstorage . iterator () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhas Next (): ĠBoolean Ġ= Ġstorage It . hasNext () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnext (): ĠE Ġ= Ġstorage It . next (). component 2 () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġremove () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġempty Storage (): ĠDerived Key HashMap < Int , ĠE > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDerived Key HashMap ( object Ġ: ĠKey Function < Int , ĠE > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġkey ( value : ĠE ): ĠInt Ġ= Ġid key ( value ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ fun Ġ< E > Ġempty Id Set (): ĠId HashSet < E > Ġ= ĠId HashSet . EMPTY _ SET Ġas ĠId HashSet < E > Ċ Ċ fun Ġ< E > Ġsingleton Id Set ( e : ĠE ): ĠId HashSet < E > Ġ= Ġempty Id Set < E >(). add ( e )