Package 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
Modifier and Type
Field
Description
`static final boolean`
`ASM_DEBUG`
`static final boolean`
`CREATE_DEBUG_INFO`
`static final boolean`
`CREATE_LINE_NUMBER_INFO`
`static final MethodCallerMultiAdapter`
`getField`
`static final MethodCallerMultiAdapter`
`getGroovyObjectField`
`static final MethodCallerMultiAdapter`
`setField`
`static final MethodCallerMultiAdapter`
`setGroovyObjectField`
`static final 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_RECORD, 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, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, 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, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V9`

## Constructor Summary

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

## Method Summary

Modifier and Type
Method
Description
`boolean`
`addInnerClass(ClassNode innerClass)`
`static int`
`argumentSize(Expression arguments)`
`static boolean`
`containsSpreadExpression(Expression arguments)`
`protected void`
`createInterfaceSyntheticStaticFields()`
`protected void`
`createSyntheticStaticFields()`
`void`
`despreadList(List expressions, boolean wrap)`
`protected boolean`
`emptyArguments(Expression arguments)`
`protected CompileUnit`
`getCompileUnit()`
`WriterController`
`getController()`
`static FieldNode`
`getDeclaredFieldOfCurrentClassOrAccessibleFieldOfSuper(ClassNode accessingNode, ClassNode current, 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, String message)`
`static boolean`
`samePackages(String pkg1, String pkg2)`
`void`
`throwException(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 Details

### 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 Details

### AsmClassGenerator

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

## Method Details

### 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(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(String pkg1, String pkg2)

### getDeclaredFieldOfCurrentClassOrAccessibleFieldOfSuper

public static FieldNode getDeclaredFieldOfCurrentClassOrAccessibleFieldOfSuper(ClassNode accessingNode, ClassNode current, 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(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, String message)

### getCompileUnit

protected CompileUnit getCompileUnit()

### addInnerClass

public boolean addInnerClass(ClassNode innerClass)