package Ġorg . jetbrains . research . ml . ast . g um tree . tree Ċ Ċ import Ġcom . github . g um tre ed iff . tree . IT ree Ċ import Ġcom . github . g um tre ed iff . tree . Tree Context Ċ import Ġcom . github . g um tre ed iff . tree . Tree Utils Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . util . Key Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġorg . jetbrains . research . ml . ast . g um tree . psi . post Order Ċ import Ġorg . jetbrains . research . ml . ast . g um tree . psi . pre Order Ċ Ċ abstract Ġclass ĠNumber ing Ġ{ ĊĊĠĠĠ Ġ// ĠTo Ġbe Ġconsistent Ġwith ĠG um Tree Ġ[ Tree Utils ] ĊĠĠĠ Ġclass ĠPsi Tree Utils Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġpsi Id : ĠKey < Int > Ġ= ĠKey (" ID ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠPsi Element . id : ĠInt ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĠApplication Manager . getApplication (). run Read Action < Int ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . get Copy able UserData ( psi Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġnumber ing ( iterable : ĠIterable < Psi Element >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiterable . forEach Indexed Ġ{ Ġi , Ġt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . put Copy able UserData ( psi Id , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠPsi Element . setId ( id : ĠInt ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . put Copy able UserData ( psi Id , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġiterable ( psi Element : ĠPsi Element ): ĠIterable < Psi Element > ĊĠĠĠ Ġabstract Ġfun Ġiterable ( tree : ĠI Tree ): ĠIterable < IT ree > ĊĊĠĠĠ Ġprivate Ġfun Ġnumber ( psi Element : ĠPsi Element ) Ġ{ ĊĠĠĠĠĠĠĠ ĠPsi Tree Utils . number ing ( iterable ( psi Element )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnumber ( g um Tree Context : ĠTree Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġg um Tree Context . root . refresh () ĊĠĠĠĠĠĠĠ ĠTree Utils . number ing ( iterable ( g um Tree Context . root )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnumber ( psi Element : ĠPsi Element , Ġg um Tree Context : ĠTree Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnumber ( psi Element ) ĊĠĠĠĠĠĠĠ Ġnumber ( g um Tree Context ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠPre Order Number ing Ġ: ĠNumber ing () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġiterable ( psi Element : ĠPsi Element ): ĠIterable < Psi Element > Ġ= Ġpsi Element . pre Order () ĊĠĠĠ Ġoverride Ġfun Ġiterable ( tree : ĠI Tree ): ĠIterable < IT ree > Ġ= Ġtree . pre Order () Ċ } Ċ Ċ object ĠPost Order Number ing Ġ: ĠNumber ing () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġiterable ( psi Element : ĠPsi Element ): ĠIterable < Psi Element > Ġ= Ġpsi Element . post Order () ĊĠĠĠ Ġoverride Ġfun Ġiterable ( tree : ĠI Tree ): ĠIterable < IT ree > Ġ= Ġtree . post Order () Ċ } Ċ