package Ġcom . intellij . workspace . ide Ċ Ċ // ĠTODO : ĠA Ġvery Ġgood Ġcandidate Ġto Ġmake Ġit Ġincrement ally Ċ /* Ċ class ĠEntity T rie ( val Ġentity Store : ĠEntity Storage , Ġval Ġmapper : Ġ( Aspect ) Ġ-> ĠVirtual File Url ?) Ġ{ ĊĠ Ġprivate Ġval Ġroot Ġ= ĠNode ( 0 , Ġmutable Map Of (), Ġmutable Set Of ()) ĊĠ Ġprivate Ġval Ġlock : ĠLock Ġ= ĠRe entrant Lock () ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġfor Ġ( node Ġin Ġentity Store . all ) Ġ{ ĊĠĠĠĠĠ Ġfor Ġ( aspect Ġin Ġnode . aspect s . values ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmapper ( aspect )?. let Ġ{ ĠfilePath Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġval Ġtrie Node Ġ= Ġlookup Node ( filePath Segments ( filePath )) ĊĠĠĠĠĠĠĠĠĠ Ġtrie Node . nodes . add ( node ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġlookup Node ( path : ĠList < Int >): ĠNode Ġ{ ĊĠĠĠ Ġvar Ġcurrent Ġ= Ġroot ĊĠĠĠ Ġfor Ġ( segment Name Id Ġin Ġpath ) Ġ{ ĊĠĠĠĠĠ Ġcurrent Ġ= Ġcurrent . children . compute If Absent ( ĊĠĠĠĠĠĠĠ Ġsegment Name Id ) Ġ{ Ġname Id Ġ-> ĠNode ( name Id , Ġmutable Map Of (), Ġmutable Set Of ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġcurrent ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠfilePath Segments ( path : ĠVirtual File Url ): ĠList < Int > Ġ{ ĊĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Int >() ĊĊĠĠĠ Ġvar Ġcurrent : ĠVirtual File Url ? Ġ= Ġpath ĊĠĠĠ Ġwhile Ġ( current Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġresult . add ( current . segment Name Id ) ĊĠĠĠĠĠ Ġcurrent Ġ= Ġcurrent . parent ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġresult . reverse () ĊĊĠĠĠ Ġreturn Ġresult ĊĠ Ġ} ĊĊĠ Ġpublic Ġfun Ġlookup ( path : ĠVirtual File Url ): ĠList < List < Project Model Node >> Ġ= Ġlock . with Lock Ġ{ ĊĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < List < Project Model Node >>() ĊĊĠĠĠ Ġvar Ġcurrent Ġ= Ġroot ĊĠĠĠ Ġfor Ġ( segment Ġin ĠfilePath Segments ( path )) Ġ{ ĊĠĠĠĠĠ Ġcurrent Ġ= Ġcurrent . children [ segment ] Ġ?: Ġbreak ĊĠĠĠĠĠ Ġif Ġ( current . nodes . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġresult . add ( current . nodes . toList ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġresult . reverse () ĊĊĠĠĠ Ġreturn Ġresult ĊĠ Ġ} ĊĊĠ Ġprivate Ġclass ĠNode ( val Ġsegment Name Id : ĠInt , Ġval Ġchildren : ĠMutable Map < Int , ĠNode >, Ġval Ġnodes : ĠMutable Set < Project Model Node >) Ċ }*/ Ċ