package Ġio . mr lok op . kotlin . utils . con vent er . scopes Ċ Ċ import Ġio . mr lok op . kotlin . utils . con vent er . en ities . Entry Entity Ċ import Ġio . mr lok op . kotlin . utils . con vent er . en ities . Field Entity Ċ import Ġio . mr lok op . kotlin . utils . con vent er . en ities . Function Entity Ċ import Ġio . mr lok op . kotlin . utils . con vent er . utils . Package Container ĊĊ Ċ class ĠConverter Scope Ġ{ ĊĊĠĠĠ Ġval Ġpackages Ġ= Ġmutable Map Of < String , ĠPackage Container >() ĊĠĠĠ Ġval Ġentries Ġ= Ġmutable Map Of < String , ĠEntry Scope >() ĊĠĠĠ Ġfun Ġget Package ( pack : ĠString ): ĠPackage Container Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( packages . containsKey ( pack ). not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackages [ pack ] Ġ= ĠPackage Container () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġpackages [ pack ] !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmake Entry Scope ( entry : ĠEntry Entity ): ĠEntry Scope Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! entries . containsKey ( entry . id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentries [ entry . id ] Ġ= ĠEntry Scope ( entry , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġentries [ entry . id ] !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġresolve Field ( pack : ĠString , Ġfield : ĠString ): ĠField Entity ? Ġ{ ĊĠĠĠĠĠĠĠ Ġget Package ( pack ). fields . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . name Ġ== Ġfield ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġresolve Function ( pack : ĠString , Ġfunction : ĠString ): ĠFunction Entity ? Ġ{ ĊĠĠĠĠĠĠĠ Ġget Package ( pack ). functions . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . name Ġ== Ġfunction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ Ċ }