// ĠCopyright Ġ 2 0 0 0 - 2 0 2 1 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġcom . intellij . workspace Model . storage . impl . indices Ċ Ċ import Ġcom . google . common . collect . Hash Bi Map Ċ import Ġcom . intellij . workspace Model . storage . Persistent EntityId Ċ import Ġcom . intellij . workspace Model . storage . impl . EntityId Ċ import Ġorg . jetbrains . annotations . Test Only Ċ Ċ open Ġclass ĠPersistent Id Internal Index Ġprivate Ġconstructor ( ĊĠ Ġinternal Ġopen Ġval Ġindex : ĠHash Bi Map < EntityId , ĠPersistent EntityId <* >> Ċ ) Ġ{ ĊĠ Ġconstructor () Ġ: Ġthis ( Hash Bi Map . create < EntityId , ĠPersistent EntityId <* >> ()) ĊĊĠ Ġinternal Ġfun Ġget Ids By Entry ( persistent Id : ĠPersistent EntityId < *> ): ĠEntity Id ? Ġ= Ġindex . inverse ()[ persistent Id ] ĊĊĠ Ġinternal Ġfun Ġget Entry ById ( id : ĠEntity Id ): ĠPersistent EntityId < *> ? Ġ= Ġindex [ id ] ĊĊĠ Ġinternal Ġfun Ġentries (): ĠCollection < Persistent EntityId <* >> Ġ{ ĊĠĠĠ Ġreturn Ġindex . values ĊĠ Ġ} ĊĊĠ Ġclass ĠMutable Persistent Id Internal Index Ġprivate Ġconstructor ( ĊĠĠĠ Ġ// ĠDo Ġnot Ġwrite Ġto Ġ[ index ] Ġdirectly ! ĠCreate Ġa Ġmethod Ġin Ġthis Ġindex Ġand Ġcall Ġ[ start Write ] Ġbefore Ġwrite . ĊĠĠĠ Ġoverride Ġvar Ġindex : ĠHash Bi Map < EntityId , ĠPersistent EntityId <* >> ĊĠ Ġ) Ġ: ĠPersistent Id Internal Index ( index ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġfreezed Ġ= Ġtrue ĊĊĠĠĠ Ġinternal Ġfun Ġindex ( id : ĠEntity Id , Ġpersistent Id : ĠPersistent EntityId < *> ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġstart Write () ĊĠĠĠĠĠ Ġif Ġ( persistent Id Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġindex . remove ( id ) ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġindex [ id ] Ġ= Ġpersistent Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Only ĊĠĠĠ Ġinternal Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠ Ġstart Write () ĊĠĠĠĠĠ Ġindex . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Only ĊĠĠĠ Ġinternal Ġfun Ġcopy From ( another : ĠPersistent Id Internal Index ) Ġ{ ĊĠĠĠĠĠ Ġstart Write () ĊĠĠĠĠĠ Ġthis . index . put All ( another . index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Write () Ġ{ ĊĠĠĠĠĠ Ġif Ġ(! free zed ) Ġreturn ĊĠĠĠĠĠ Ġfreezed Ġ= Ġfalse ĊĠĠĠĠĠ Ġindex Ġ= ĠHash Bi Map . create ( index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto Immutable (): ĠPersistent Id Internal Index Ġ{ ĊĠĠĠĠĠ Ġfreezed Ġ= Ġtrue ĊĠĠĠĠĠ Ġreturn ĠPersistent Id Internal Index ( this . index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠ Ġfun Ġfrom ( other : ĠPersistent Id Internal Index ): ĠMutable Persistent Id Internal Index Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġis ĠMutable Persistent Id Internal Index ) Ġother . free zed Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn ĠMutable Persistent Id Internal Index ( other . index ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } ĊĊ