/* Ċ Ġ* ĠĠĠĠĠ ĠK ores - Byte code Writer Ġ- ĠTrans lates ĠK ores ĠStructure Ġto ĠJVM ĠByte code Ġ< https :// github . com / Jon athan xD / Code API - Byte code Writer > Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠĠ ĠThe ĠMIT ĠLicense Ġ( MIT ) Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠThe Real Bug gy / Jon athan xD Ġ( https :// github . com / Jon athan xD /) Ġ< jon athan . script er @ program mer . net > Ċ Ġ* ĠĠĠĠĠ ĠCopyright Ġ( c ) Ġcontributors Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġ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 . Ċ Ġ*/ Ċ package Ġcom . k ores framework . k ores . byte code . processor . processors Ċ Ċ import Ġcom . k ores framework . k ores . Instruction Ċ import Ġcom . k ores framework . k ores . base .* Ċ import Ġcom . k ores framework . k ores . byte code . processor . OUT ER _ TYPE _ FIELD Ċ import Ġcom . k ores framework . k ores . byte code . processor . OuterClass Field Ċ import Ġcom . k ores framework . k ores . byte code . processor . TYPE _ DECL AR ATION Ċ import Ġcom . k ores framework . k ores . factory . access Field Ċ import Ġcom . k ores framework . k ores . processor . Processor Ċ import Ġcom . k ores framework . k ores . processor . Processor Manager Ċ import Ġcom . k ores framework . k ores . type .` is ` Ċ import Ġcom . github . jon athan xd . i utils . data . Typed Data Ċ import Ġcom . github . jon athan xd . i utils . kt . require Ċ Ċ object ĠScope Access Processor Ġ: ĠProcessor < Scope Access > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġprocess ( ĊĠĠĠĠĠĠĠ Ġpart : ĠScope Access , ĊĠĠĠĠĠĠĠ Ġdata : ĠTyped Data , ĊĠĠĠĠĠĠĠ Ġprocessor Manager : ĠProcessor Manager < *> ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= ĠTYPE _ DECL AR ATION . require ( data ) ĊĠĠĠĠĠĠĠ Ġval Ġouter Ġ= ĠOUT ER _ TYPE _ FIELD . require ( data ) ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( part . scope ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScope . OUT ER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccess Ġ= Ġaccess Field ( type , Ġouter , Ġpart , ĠAccess . THIS , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocessor Manager . process ( access , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġtail rec Ġfun Ġaccess Field ( ĊĠĠĠĠĠĠĠ Ġtype : ĠType Declaration , ĊĠĠĠĠĠĠĠ Ġouter : ĠO uter Class Field , ĊĠĠĠĠĠĠĠ Ġpart : ĠScope Access , ĊĠĠĠĠĠĠĠ Ġold : ĠInstruction Ġ= ĠAccess . THIS , ĊĠĠĠĠĠĠĠ Ġdata : ĠTyped Data ĊĠĠĠ Ġ): ĠField Access Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( outer . field . type .` is `( part . type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccess Field ( type , Ġold , Ġouter . field . type , Ġouter . field . name ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccess Field ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTYPE _ DECL AR ATION . require ( data . parent !! ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOUT ER _ TYPE _ FIELD . require ( data . parent !! ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpart , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccess Field ( type , Ġold , Ġouter . field . type , Ġouter . field . name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . parent !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ċ }