package Ġcodes . som . k offee . labels Ċ Ċ import Ġcodes . som . k offee . ins ns . Instruction Assembly Ċ import Ġorg . object web . asm . tree . Label Node Ċ Ċ /** Ċ Ġ* ĠA Ġwrapper Ġaround Ġa Ġ[ label ] Ġthat Ġcan Ġbe Ġeasily Ġadded Ġto Ġan Ġ[ Instruction Assembly ]. Ċ Ġ*/ Ċ public Ġclass ĠK offee Label ( private Ġval Ġins ns : ĠInstruction Assembly , Ġinternal Ġval Ġlabel : ĠLabel Node ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġthis Ġlabel Ġto Ġthe Ġ[ Instruction Assembly ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġoperator Ġfun Ġunary Plus () Ġ{ ĊĠĠĠĠĠĠĠ Ġins ns . instructions . add ( label ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠA Ġstorage Ġfor Ġlabels Ġwith Ġa Ġgiven Ġ[ Instruction Assembly ], Ġso Ġyou Ġdon 't Ċ Ġ* Ġhave Ġto Ġkeep Ġtrack Ġof Ġthem Ġyourself . Ċ Ġ*/ Ċ public Ġclass ĠLabel Registry ( private Ġval Ġins ns : ĠInstruction Assembly ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġlabels Ġ= Ġmutable Map Of < String , ĠLabel Node >() ĊĊĠĠĠ Ġpublic Ġfun Ġcopy ( ins ns : ĠInstruction Assembly ): ĠLabel Registry Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLabel Registry ( ins ns ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġit . labels Ġ= Ġthis . labels Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġscope ( ins ns : ĠInstruction Assembly ): ĠLabel Registry Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLabel Registry ( ins ns ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġit . labels . put All ( this . labels ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġa Ġlabel Ġby Ġan Ġ[ index ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġoperator Ġfun Ġget ( index : ĠInt ): ĠK offee Label Ġ= Ġthis [" label _$ index "] ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġa Ġlabel Ġby Ġ[ name ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġoperator Ġfun Ġget ( name : ĠString ): ĠK offee Label Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠK offee Label ( ins ns , Ġlabels . get Or Put ( name , Ġ:: Label Node )) ĊĠĠĠ Ġ} Ċ } Ċ