/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 2 ĠSand storm ĠMedia ĠGmbH Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ* Ċ Ġ* ĠAuthors : Ċ Ġ* Ġ Ġ- ĠEric ĠK loss Ċ Ġ*/ Ċ Ċ package Ġio . ne os . fusion 4 j . lang . model . decl Ċ Ċ import Ġio . ne os . fusion 4 j . lang . model . Path Name Index Ċ import Ġio . ne os . fusion 4 j . lang . model . Qualified Prototype Name Ċ Ċ /** Ċ Ġ* ĠThis Ġis Ġthe Ġmeta Ġmodel Ġfor Ġa Ġdeclaration Ġblock Ġin ĠF usion . Ċ Ġ* Ċ Ġ* ĠIt Ġcan Ġbe Ġone Ġof : Ġ[ Root F usion Decl ] Ġor Ġ[ Inner F usion Decl ] Ċ Ġ* Ċ Ġ* Ġ 1 . Ġthe Ġroot Ġcode Ġlayer , Ġmeaning Ġthe Ġout erm ost Ġblock Ġin Ġa ĠF usion Ġfile Ċ Ġ*/ Ċ interface ĠF usion Decl Ġ: ĠF usion Lang Element Ġ{ ĊĠĠĠ Ġval Ġpath Assignments : ĠList < F usion Path Assignment Decl > ĊĠĠĠ Ġval Ġpath Configurations : ĠList < F usion Path Configuration Decl > ĊĠĠĠ Ġval Ġpath Copy Declarations : ĠList < F usion Path Copy Decl > ĊĠĠĠ Ġval Ġpath E ras ures : ĠList < F usion Path Er asure Decl > ĊĠĠĠ Ġval Ġcode Comments : ĠList < Code Comment Decl > ĊĠĠĠ Ġval Ġelement Index : ĠCode Element Index ĊĠĠĠ Ġval Ġpath Name Index : ĠPath Name Index ĊĊĠĠĠ Ġval Ġempty : ĠBoolean Ġget () Ġ= Ġelement Index . mapped ByIndex . isEmpty () ĊĊĠĠĠ Ġfun Ġget Corre lated Code Comments For ElementAt ( index : ĠInt ): ĠList < Code Comment Decl > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġerror Factory Ġ= Ġ{ Ġmessage : ĠString Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" could Ġnot Ġget Ġcorre lated Ġcode Ġcomments Ġfor Ġelement Ġat Ġindex Ġ$ index ; Ġ$ message ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ< Ġ 0 Ġ-> Ġerror Factory (" index Ġnegative ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ== Ġ 0 Ġ-> Ġerror Factory (" first Ġelement Ġcannot Ġhave Ġcomments ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ> Ġelement Index . size Ġ- Ġ 1 Ġ-> Ġerror Factory (" out Ġof Ġbounds Ġ( max Ġindex : Ġ${ element Index . size Ġ- Ġ 1 }) ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement Index . mapped ByIndex [ index ] Ġis ĠCode Comment Decl Ġ-> Ġerror Factory (" element Ġis Ġcode Ġcomment Ġitself : Ġ${ element Index . mapped ByIndex [ index ]} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġelement Index . as Order edList ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sub List ( 0 , Ġindex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take Last While Ġ{ Ġit Ġis ĠCode Comment Decl Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit Ġas ĠCode Comment Decl Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll Prototype Names From Path Segments (): ĠSet < Qualified Prototype Name > Ġ= ĊĠĠĠĠĠĠĠ Ġpath Name Index . getAll Prototype Names From Path Segments () ĊĊĠĠĠ Ġfun ĠgetAll Path Extensions For Prototype ( prototype Name : ĠQual ified Prototype Name ): ĠSet < F usion Path Decl > Ġ= ĊĠĠĠĠĠĠĠ Ġpath Name Index . getAll Path Extensions For Prototype ( prototype Name ) Ċ }