package Ġj iva . byte code generation . statement Ċ Ċ import Ġj iva . byte code generation . expression . Expression Generator Ċ import Ġj iva . domain . node . statement . Print Statement Ċ import Ġj iva . domain . type . ClassType Ċ import Ġorg . object web . asm . Method Visitor Ċ import Ġorg . object web . asm . Op codes Ċ Ċ class ĠPrint Statement Generator ( val Ġexpression Generator : ĠExpression Generator , Ġval Ġmethod Visitor : ĠMethod Visitor ) Ġ{ ĊĊĠĠĠ Ġfun Ġgenerate ( print Statement : ĠPrint Statement ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpression Ġ= Ġprint Statement . expression ĊĠĠĠĠĠĠĠ Ġmethod Visitor . visit Field Insn ( Op codes . GET STATIC , Ġ" java / lang / System ", Ġ" out ", Ġ" Ljava / io / Print Stream ; ") ĊĠĠĠĠĠĠĠ Ġexpression . accept ( expression Generator ) ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġexpression . type ĊĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= Ġ"(" Ġ+ Ġtype . descriptor Ġ+ Ġ") V " ĊĠĠĠĠĠĠĠ Ġval Ġowner Ġ= ĠClass Type (" java . io . Print Stream ") ĊĠĠĠĠĠĠĠ Ġval Ġfield Descriptor Ġ= Ġowner . descriptor ĊĠĠĠĠĠĠĠ Ġmethod Visitor . visit Method Insn ( Op codes . IN VOKE VIRTUAL , Ġfield Descriptor , Ġ" println ", Ġdescriptor , Ġfalse ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ