/* Ċ Ġ* ĠĠĠĠĠ Ġ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 . util Ċ Ċ import Ġorg . object web . asm . Method Visitor Ċ import Ġorg . object web . asm . Op codes Ċ Ċ object ĠIn sn Util Ġ{ ĊĊĠĠĠ Ġfun Ġvisit Int ( num : ĠInt , Ġmv : ĠMethod Visitor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( num Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . ICON ST _ M 1 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( num Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . ICON ST _ 0 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( num Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . ICON ST _ 1 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( num Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . ICON ST _ 2 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( num Ġ== Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . ICON ST _ 3 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( num Ġ== Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . ICON ST _ 4 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( num Ġ== Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . ICON ST _ 5 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( num Ġ> Ġjava . lang . Byte . MIN _ VALUE Ġ&& Ġnum Ġ< Ġjava . lang . Byte . MAX _ VALUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Int Insn ( Op codes . B IP USH , Ġnum ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( num Ġ> Ġjava . lang . Short . MIN _ VALUE Ġ&& Ġnum Ġ< Ġjava . lang . Short . MAX _ VALUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Int Insn ( Op codes . S IP USH , Ġnum ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit L dc Insn ( num ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvisit Long ( num : ĠLong , Ġmv : ĠMethod Visitor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( num Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . L CONST _ 0 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( num Ġ== Ġ 1 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . L CONST _ 1 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit L dc Insn ( num ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvisit Double ( num : ĠDouble , Ġmv : ĠMethod Visitor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( num Ġ== Ġ 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . D CONST _ 0 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( num Ġ== Ġ 1 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . D CONST _ 1 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit L dc Insn ( num ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvisit Float ( num : ĠFloat , Ġmv : ĠMethod Visitor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( num Ġ== Ġ 0 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . F CONST _ 0 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( num Ġ== Ġ 1 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . F CONST _ 1 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( num Ġ== Ġ 2 f ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . F CONST _ 2 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit L dc Insn ( num ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvisit Boolean ( num : ĠBoolean , Ġmv : ĠMethod Visitor ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠTrue Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( num ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . ICON ST _ 1 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFalse Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . visit Insn ( Op codes . ICON ST _ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }