org.codehaus.groovy.classgen

## Class AsmClassGenerator

- java.lang.Object
- - org.codehaus.groovy.ast.CodeVisitorSupport
  - - org.codehaus.groovy.ast.ClassCodeVisitorSupport
    - - org.codehaus.groovy.classgen.ClassGenerator
      - - org.codehaus.groovy.classgen.AsmClassGenerator

All Implemented Interfaces:
  GroovyClassVisitor, GroovyCodeVisitor, org.objectweb.asm.Opcodes

    public class AsmClassGenerator
    extends ClassGenerator

Generates Java class versions of Groovy classes using ASM.

### Field Summary

Fields
`static boolean` `ASM_DEBUG`
`static boolean` `CREATE_DEBUG_INFO`
`static boolean` `CREATE_LINE_NUMBER_INFO`
`static MethodCallerMultiAdapter` `getField`
`static MethodCallerMultiAdapter` `getGroovyObjectField`
`static MethodCallerMultiAdapter` `setField`
`static MethodCallerMultiAdapter` `setGroovyObjectField`
`static MethodCallerMultiAdapter` `setProperty`

### Fields inherited from class org.codehaus.groovy.classgen.ClassGenerator

`innerClasses`

### Fields inherited from interface org.objectweb.asm.Opcodes

`AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM4, ASM5, ASM6, ASM7, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V9`

### Constructor Summary

Constructors
Constructor and Description
`AsmClassGenerator(SourceUnit source, GeneratorContext context, org.objectweb.asm.ClassVisitor classVisitor, java.lang.String sourceFile)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`boolean` `addInnerClass(ClassNode innerClass)`
`static int` `argumentSize(Expression arguments)`
`static boolean` `containsSpreadExpression(Expression arguments)`
`protected void` `createInterfaceSyntheticStaticFields()`
`protected void` `createSyntheticStaticFields()`
`void` `despreadList(java.util.List expressions, boolean wrap)`
`protected boolean` `emptyArguments(Expression arguments)`
`protected CompileUnit` `getCompileUnit()`
`WriterController` `getController()`
`static FieldNode` `getDeclaredFieldOfCurrentClassOrAccessibleFieldOfSuper(ClassNode accessingNode, ClassNode current, java.lang.String name, boolean skipCurrent)`
`SourceUnit` `getSourceUnit()`
`static boolean` `isNullConstant(Expression expr)`
`static boolean` `isThisExpression(Expression expression)`
`void` `loadInstanceField(FieldExpression fldExp)` RHS instance field.
`void` `loadStaticField(FieldExpression fldExp)`
`protected void` `loadThisOrOwner()` Loads either this object or if we're inside a closure then load the top level owner
`void` `loadWrapper(Expression argument)`
`void` `onLineNumber(ASTNode statement, java.lang.String message)`
`static boolean` `samePackages(java.lang.String pkg1, java.lang.String pkg2)`
`void` `throwException(java.lang.String s)`
`void` `visitAnnotations(AnnotatedNode node)` Note: ignore it.
`void` `visitArgumentlistExpression(ArgumentListExpression ale)`
`void` `visitArrayExpression(ArrayExpression expression)`
`void` `visitAssertStatement(AssertStatement statement)`
`void` `visitAttributeExpression(AttributeExpression expression)`
`void` `visitBinaryExpression(BinaryExpression expression)`
`void` `visitBitwiseNegationExpression(BitwiseNegationExpression expression)`
`void` `visitBlockStatement(BlockStatement block)`
`void` `visitBooleanExpression(BooleanExpression expression)` return a primitive boolean value of the BooleanExpression.
`void` `visitBreakStatement(BreakStatement statement)`
`void` `visitBytecodeExpression(BytecodeExpression cle)`
`void` `visitBytecodeSequence(BytecodeSequence bytecodeSequence)`
`void` `visitCaseStatement(CaseStatement statement)`
`void` `visitCastExpression(CastExpression castExpression)`
`void` `visitCatchStatement(CatchStatement statement)`
`void` `visitClass(ClassNode classNode)` Visit a ClassNode.
`void` `visitClassExpression(ClassExpression expression)` load class object on stack
`void` `visitClosureExpression(ClosureExpression expression)`
`void` `visitClosureListExpression(ClosureListExpression expression)`
`void` `visitConstantExpression(ConstantExpression expression)` Generate byte code for constants
`void` `visitConstructor(ConstructorNode node)` Visit a ConstructorNode.
`void` `visitConstructorCallExpression(ConstructorCallExpression call)`
`protected void` `visitConstructorOrMethod(MethodNode node, boolean isConstructor)`
`void` `visitContinueStatement(ContinueStatement statement)`
`void` `visitDeclarationExpression(DeclarationExpression expression)`
`void` `visitDoWhileLoop(DoWhileStatement loop)`
`void` `visitExpressionStatement(ExpressionStatement statement)`
`void` `visitField(FieldNode fieldNode)` Visit a FieldNode.
`void` `visitFieldExpression(FieldExpression expression)`
`void` `visitForLoop(ForStatement loop)`
`void` `visitGenericType(GenericsType genericsType)`
`void` `visitGStringExpression(GStringExpression expression)`
`void` `visitIfElse(IfStatement ifElse)`
`void` `visitListExpression(ListExpression expression)`
`void` `visitMapEntryExpression(MapEntryExpression expression)`
`void` `visitMapExpression(MapExpression expression)`
`void` `visitMethod(MethodNode node)` Visit a MethodNode.
`void` `visitMethodCallExpression(MethodCallExpression call)`
`void` `visitMethodPointerExpression(MethodPointerExpression expression)`
`void` `visitNotExpression(NotExpression expression)`
`void` `visitPostfixExpression(PostfixExpression expression)`
`void` `visitPrefixExpression(PrefixExpression expression)`
`void` `visitProperty(PropertyNode statement)` Visit a PropertyNode.
`void` `visitPropertyExpression(PropertyExpression expression)`
`void` `visitRangeExpression(RangeExpression expression)`
`void` `visitReturnStatement(ReturnStatement statement)`
`void` `visitSpreadExpression(SpreadExpression expression)`
`void` `visitSpreadMapExpression(SpreadMapExpression expression)`
`protected void` `visitStatement(Statement statement)`
`void` `visitStaticMethodCallExpression(StaticMethodCallExpression call)`
`void` `visitSwitch(SwitchStatement statement)`
`void` `visitSynchronizedStatement(SynchronizedStatement statement)`
`void` `visitTernaryExpression(TernaryExpression expression)`
`void` `visitThrowStatement(ThrowStatement statement)`
`void` `visitTryCatchFinally(TryCatchStatement statement)`
`void` `visitTupleExpression(TupleExpression expression)`
`void` `visitUnaryMinusExpression(UnaryMinusExpression expression)`
`void` `visitUnaryPlusExpression(UnaryPlusExpression expression)`
`void` `visitVariableExpression(VariableExpression expression)` Visits a bare (unqualified) variable expression.
`void` `visitWhileLoop(WhileStatement loop)`

### Methods inherited from class org.codehaus.groovy.classgen.ClassGenerator

`getInnerClasses`

### Methods inherited from class org.codehaus.groovy.ast.ClassCodeVisitorSupport

`addError, visitClassCodeContainer, visitImports, visitObjectInitializerStatements, visitPackage`

### Methods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport

`visitEmptyStatement, visitListOfExpressions, visitShortTernaryExpression`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### setField

    public static final MethodCallerMultiAdapter setField

#### getField

    public static final MethodCallerMultiAdapter getField

#### setGroovyObjectField

    public static final MethodCallerMultiAdapter setGroovyObjectField

#### getGroovyObjectField

    public static final MethodCallerMultiAdapter getGroovyObjectField

#### setProperty

    public static final MethodCallerMultiAdapter setProperty

#### CREATE_DEBUG_INFO

    public static final boolean CREATE_DEBUG_INFO

See Also:
  Constant Field Values

#### CREATE_LINE_NUMBER_INFO

    public static final boolean CREATE_LINE_NUMBER_INFO

See Also:
  Constant Field Values

#### ASM_DEBUG

    public static final boolean ASM_DEBUG

See Also:
  Constant Field Values

### Constructor Detail

#### AsmClassGenerator

    public AsmClassGenerator(SourceUnit source,
                             GeneratorContext context,
                             org.objectweb.asm.ClassVisitor classVisitor,
                             java.lang.String sourceFile)

### Method Detail

#### getSourceUnit

    public SourceUnit getSourceUnit()

Overrides:
  `getSourceUnit` in class `ClassGenerator`

#### getController

    public WriterController getController()

#### visitClass

    public void visitClass(ClassNode classNode)

Description copied from interface: `GroovyClassVisitor`
Visit a ClassNode.

Specified by:
  `visitClass` in interface `GroovyClassVisitor`
Overrides:
  `visitClass` in class `ClassCodeVisitorSupport`

#### visitGenericType

    public void visitGenericType(GenericsType genericsType)

#### visitConstructorOrMethod

    protected void visitConstructorOrMethod(MethodNode node,
                                            boolean isConstructor)

Overrides:
  `visitConstructorOrMethod` in class `ClassCodeVisitorSupport`

#### visitConstructor

    public void visitConstructor(ConstructorNode node)

Description copied from interface: `GroovyClassVisitor`
Visit a ConstructorNode.

Specified by:
  `visitConstructor` in interface `GroovyClassVisitor`
Overrides:
  `visitConstructor` in class `ClassCodeVisitorSupport`

#### visitMethod

    public void visitMethod(MethodNode node)

Description copied from interface: `GroovyClassVisitor`
Visit a MethodNode.

Specified by:
  `visitMethod` in interface `GroovyClassVisitor`
Overrides:
  `visitMethod` in class `ClassCodeVisitorSupport`

#### visitField

    public void visitField(FieldNode fieldNode)

Description copied from interface: `GroovyClassVisitor`
Visit a FieldNode.

Specified by:
  `visitField` in interface `GroovyClassVisitor`
Overrides:
  `visitField` in class `ClassCodeVisitorSupport`

#### visitProperty

    public void visitProperty(PropertyNode statement)

Description copied from interface: `GroovyClassVisitor`
Visit a PropertyNode.

Specified by:
  `visitProperty` in interface `GroovyClassVisitor`
Overrides:
  `visitProperty` in class `ClassCodeVisitorSupport`

#### visitStatement

    protected void visitStatement(Statement statement)

Overrides:
  `visitStatement` in class `ClassCodeVisitorSupport`

#### visitCatchStatement

    public void visitCatchStatement(CatchStatement statement)

Specified by:
  `visitCatchStatement` in interface `GroovyCodeVisitor`
Overrides:
  `visitCatchStatement` in class `ClassCodeVisitorSupport`

#### visitBlockStatement

    public void visitBlockStatement(BlockStatement block)

Specified by:
  `visitBlockStatement` in interface `GroovyCodeVisitor`
Overrides:
  `visitBlockStatement` in class `ClassCodeVisitorSupport`

#### visitForLoop

    public void visitForLoop(ForStatement loop)

Specified by:
  `visitForLoop` in interface `GroovyCodeVisitor`
Overrides:
  `visitForLoop` in class `ClassCodeVisitorSupport`

#### visitWhileLoop

    public void visitWhileLoop(WhileStatement loop)

Specified by:
  `visitWhileLoop` in interface `GroovyCodeVisitor`
Overrides:
  `visitWhileLoop` in class `ClassCodeVisitorSupport`

#### visitDoWhileLoop

    public void visitDoWhileLoop(DoWhileStatement loop)

Specified by:
  `visitDoWhileLoop` in interface `GroovyCodeVisitor`
Overrides:
  `visitDoWhileLoop` in class `ClassCodeVisitorSupport`

#### visitIfElse

    public void visitIfElse(IfStatement ifElse)

Specified by:
  `visitIfElse` in interface `GroovyCodeVisitor`
Overrides:
  `visitIfElse` in class `ClassCodeVisitorSupport`

#### visitAssertStatement

    public void visitAssertStatement(AssertStatement statement)

Specified by:
  `visitAssertStatement` in interface `GroovyCodeVisitor`
Overrides:
  `visitAssertStatement` in class `ClassCodeVisitorSupport`

#### visitTryCatchFinally

    public void visitTryCatchFinally(TryCatchStatement statement)

Specified by:
  `visitTryCatchFinally` in interface `GroovyCodeVisitor`
Overrides:
  `visitTryCatchFinally` in class `ClassCodeVisitorSupport`

#### visitSwitch

    public void visitSwitch(SwitchStatement statement)

Specified by:
  `visitSwitch` in interface `GroovyCodeVisitor`
Overrides:
  `visitSwitch` in class `ClassCodeVisitorSupport`

#### visitCaseStatement

    public void visitCaseStatement(CaseStatement statement)

Specified by:
  `visitCaseStatement` in interface `GroovyCodeVisitor`
Overrides:
  `visitCaseStatement` in class `ClassCodeVisitorSupport`

#### visitBreakStatement

    public void visitBreakStatement(BreakStatement statement)

Specified by:
  `visitBreakStatement` in interface `GroovyCodeVisitor`
Overrides:
  `visitBreakStatement` in class `ClassCodeVisitorSupport`

#### visitContinueStatement

    public void visitContinueStatement(ContinueStatement statement)

Specified by:
  `visitContinueStatement` in interface `GroovyCodeVisitor`
Overrides:
  `visitContinueStatement` in class `ClassCodeVisitorSupport`

#### visitSynchronizedStatement

    public void visitSynchronizedStatement(SynchronizedStatement statement)

Specified by:
  `visitSynchronizedStatement` in interface `GroovyCodeVisitor`
Overrides:
  `visitSynchronizedStatement` in class `ClassCodeVisitorSupport`

#### visitThrowStatement

    public void visitThrowStatement(ThrowStatement statement)

Specified by:
  `visitThrowStatement` in interface `GroovyCodeVisitor`
Overrides:
  `visitThrowStatement` in class `ClassCodeVisitorSupport`

#### visitReturnStatement

    public void visitReturnStatement(ReturnStatement statement)

Specified by:
  `visitReturnStatement` in interface `GroovyCodeVisitor`
Overrides:
  `visitReturnStatement` in class `ClassCodeVisitorSupport`

#### visitExpressionStatement

    public void visitExpressionStatement(ExpressionStatement statement)

Specified by:
  `visitExpressionStatement` in interface `GroovyCodeVisitor`
Overrides:
  `visitExpressionStatement` in class `ClassCodeVisitorSupport`

#### visitTernaryExpression

    public void visitTernaryExpression(TernaryExpression expression)

Specified by:
  `visitTernaryExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitTernaryExpression` in class `CodeVisitorSupport`

#### visitDeclarationExpression

    public void visitDeclarationExpression(DeclarationExpression expression)

Specified by:
  `visitDeclarationExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitDeclarationExpression` in class `ClassCodeVisitorSupport`

#### visitBinaryExpression

    public void visitBinaryExpression(BinaryExpression expression)

Specified by:
  `visitBinaryExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitBinaryExpression` in class `CodeVisitorSupport`

#### visitPostfixExpression

    public void visitPostfixExpression(PostfixExpression expression)

Specified by:
  `visitPostfixExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitPostfixExpression` in class `CodeVisitorSupport`

#### throwException

    public void throwException(java.lang.String s)

#### visitPrefixExpression

    public void visitPrefixExpression(PrefixExpression expression)

Specified by:
  `visitPrefixExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitPrefixExpression` in class `CodeVisitorSupport`

#### visitClosureExpression

    public void visitClosureExpression(ClosureExpression expression)

Specified by:
  `visitClosureExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitClosureExpression` in class `CodeVisitorSupport`

#### loadThisOrOwner

    protected void loadThisOrOwner()

Loads either this object or if we're inside a closure then load the top level owner

#### visitConstantExpression

    public void visitConstantExpression(ConstantExpression expression)

Generate byte code for constants

Specified by:
  `visitConstantExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitConstantExpression` in class `CodeVisitorSupport`
See Also:
  Class field types

#### visitSpreadExpression

    public void visitSpreadExpression(SpreadExpression expression)

Specified by:
  `visitSpreadExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitSpreadExpression` in class `CodeVisitorSupport`

#### visitSpreadMapExpression

    public void visitSpreadMapExpression(SpreadMapExpression expression)

Specified by:
  `visitSpreadMapExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitSpreadMapExpression` in class `CodeVisitorSupport`

#### visitMethodPointerExpression

    public void visitMethodPointerExpression(MethodPointerExpression expression)

Specified by:
  `visitMethodPointerExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitMethodPointerExpression` in class `CodeVisitorSupport`

#### visitUnaryMinusExpression

    public void visitUnaryMinusExpression(UnaryMinusExpression expression)

Specified by:
  `visitUnaryMinusExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitUnaryMinusExpression` in class `CodeVisitorSupport`

#### visitUnaryPlusExpression

    public void visitUnaryPlusExpression(UnaryPlusExpression expression)

Specified by:
  `visitUnaryPlusExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitUnaryPlusExpression` in class `CodeVisitorSupport`

#### visitBitwiseNegationExpression

    public void visitBitwiseNegationExpression(BitwiseNegationExpression expression)

Specified by:
  `visitBitwiseNegationExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitBitwiseNegationExpression` in class `CodeVisitorSupport`

#### visitCastExpression

    public void visitCastExpression(CastExpression castExpression)

Specified by:
  `visitCastExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitCastExpression` in class `CodeVisitorSupport`

#### visitNotExpression

    public void visitNotExpression(NotExpression expression)

Specified by:
  `visitNotExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitNotExpression` in class `CodeVisitorSupport`

#### visitBooleanExpression

    public void visitBooleanExpression(BooleanExpression expression)

return a primitive boolean value of the BooleanExpression.

Specified by:
  `visitBooleanExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitBooleanExpression` in class `CodeVisitorSupport`
Parameters:
  `expression` -

#### visitMethodCallExpression

    public void visitMethodCallExpression(MethodCallExpression call)

Specified by:
  `visitMethodCallExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitMethodCallExpression` in class `CodeVisitorSupport`

#### emptyArguments

    protected boolean emptyArguments(Expression arguments)

#### containsSpreadExpression

    public static boolean containsSpreadExpression(Expression arguments)

#### argumentSize

    public static int argumentSize(Expression arguments)

#### visitStaticMethodCallExpression

    public void visitStaticMethodCallExpression(StaticMethodCallExpression call)

Specified by:
  `visitStaticMethodCallExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitStaticMethodCallExpression` in class `CodeVisitorSupport`

#### isNullConstant

    public static boolean isNullConstant(Expression expr)

#### visitConstructorCallExpression

    public void visitConstructorCallExpression(ConstructorCallExpression call)

Specified by:
  `visitConstructorCallExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitConstructorCallExpression` in class `CodeVisitorSupport`

#### samePackages

    public static boolean samePackages(java.lang.String pkg1,
                                       java.lang.String pkg2)

#### getDeclaredFieldOfCurrentClassOrAccessibleFieldOfSuper

    public static FieldNode getDeclaredFieldOfCurrentClassOrAccessibleFieldOfSuper(ClassNode accessingNode,
                                                                                   ClassNode current,
                                                                                   java.lang.String name,
                                                                                   boolean skipCurrent)

#### visitPropertyExpression

    public void visitPropertyExpression(PropertyExpression expression)

Specified by:
  `visitPropertyExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitPropertyExpression` in class `CodeVisitorSupport`

#### visitAttributeExpression

    public void visitAttributeExpression(AttributeExpression expression)

Specified by:
  `visitAttributeExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitAttributeExpression` in class `CodeVisitorSupport`

#### visitFieldExpression

    public void visitFieldExpression(FieldExpression expression)

Specified by:
  `visitFieldExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitFieldExpression` in class `CodeVisitorSupport`

#### loadStaticField

    public void loadStaticField(FieldExpression fldExp)

Parameters:
  `fldExp` -

#### loadInstanceField

    public void loadInstanceField(FieldExpression fldExp)

RHS instance field. should move most of the code in the BytecodeHelper

Parameters:
  `fldExp` -

#### visitVariableExpression

    public void visitVariableExpression(VariableExpression expression)

Visits a bare (unqualified) variable expression.

Specified by:
  `visitVariableExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitVariableExpression` in class `CodeVisitorSupport`

#### createInterfaceSyntheticStaticFields

    protected void createInterfaceSyntheticStaticFields()

#### createSyntheticStaticFields

    protected void createSyntheticStaticFields()

#### visitClassExpression

    public void visitClassExpression(ClassExpression expression)

load class object on stack

Specified by:
  `visitClassExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitClassExpression` in class `CodeVisitorSupport`

#### visitRangeExpression

    public void visitRangeExpression(RangeExpression expression)

Specified by:
  `visitRangeExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitRangeExpression` in class `CodeVisitorSupport`

#### visitMapEntryExpression

    public void visitMapEntryExpression(MapEntryExpression expression)

Specified by:
  `visitMapEntryExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitMapEntryExpression` in class `CodeVisitorSupport`

#### visitMapExpression

    public void visitMapExpression(MapExpression expression)

Specified by:
  `visitMapExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitMapExpression` in class `CodeVisitorSupport`

#### visitArgumentlistExpression

    public void visitArgumentlistExpression(ArgumentListExpression ale)

Specified by:
  `visitArgumentlistExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitArgumentlistExpression` in class `CodeVisitorSupport`

#### despreadList

    public void despreadList(java.util.List expressions,
                             boolean wrap)

#### visitTupleExpression

    public void visitTupleExpression(TupleExpression expression)

Specified by:
  `visitTupleExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitTupleExpression` in class `CodeVisitorSupport`

#### loadWrapper

    public void loadWrapper(Expression argument)

#### visitArrayExpression

    public void visitArrayExpression(ArrayExpression expression)

Specified by:
  `visitArrayExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitArrayExpression` in class `CodeVisitorSupport`

#### visitClosureListExpression

    public void visitClosureListExpression(ClosureListExpression expression)

Specified by:
  `visitClosureListExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitClosureListExpression` in class `CodeVisitorSupport`

#### visitBytecodeSequence

    public void visitBytecodeSequence(BytecodeSequence bytecodeSequence)

Overrides:
  `visitBytecodeSequence` in class `ClassGenerator`

#### visitListExpression

    public void visitListExpression(ListExpression expression)

Specified by:
  `visitListExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitListExpression` in class `CodeVisitorSupport`

#### visitGStringExpression

    public void visitGStringExpression(GStringExpression expression)

Specified by:
  `visitGStringExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitGStringExpression` in class `CodeVisitorSupport`

#### visitAnnotations

    public void visitAnnotations(AnnotatedNode node)

Note: ignore it. Annotation generation needs the current visitor.

Overrides:
  `visitAnnotations` in class `ClassCodeVisitorSupport`

#### visitBytecodeExpression

    public void visitBytecodeExpression(BytecodeExpression cle)

Specified by:
  `visitBytecodeExpression` in interface `GroovyCodeVisitor`
Overrides:
  `visitBytecodeExpression` in class `CodeVisitorSupport`

#### isThisExpression

    public static boolean isThisExpression(Expression expression)

#### onLineNumber

    public void onLineNumber(ASTNode statement,
                             java.lang.String message)

#### getCompileUnit

    protected CompileUnit getCompileUnit()

#### addInnerClass

    public boolean addInnerClass(ClassNode innerClass)