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`, `ErrorCollecting`, `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 boolean` | `ASM_DEBUG` |
  `static boolean` | `CREATE_DEBUG_INFO` |
  `static boolean` | `CREATE_LINE_NUMBER_INFO` |
  `static MethodCallerMultiAdapter` | `getField` |
  `static MethodCallerMultiAdapter` | `getGroovyObjectField` |
  `static java.lang.String` | `MINIMUM_BYTECODE_VERSION` |
  `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_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, V9`

- ## Constructor Summary

  Constructors
  Constructor | Description
  --- | ---
  `AsmClassGenerator​(SourceUnit source, GeneratorContext context, org.objectweb.asm.ClassVisitor classVisitor, java.lang.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​(java.util.List<Expression> expressions, boolean wrap)` |
  `WriterController` | `getController()` |
  `static FieldNode` | `getDeclaredFieldOfCurrentClassOrAccessibleFieldOfSuper​(ClassNode accessingNode, ClassNode current, java.lang.String name, boolean skipCurrent)` |
  `SourceUnit` | `getSourceUnit()` |
  `static boolean` | `isNullConstant​(Expression expression)` | Deprecated.
  `static boolean` | `isSuperExpression​(Expression expression)` | Deprecated.
  `static boolean` | `isThisExpression​(Expression expression)` | Deprecated.
  `static boolean` | `isValidFieldNodeForByteCodeAccess​(FieldNode field, ClassNode accessingClass)` | Determines if the given class can directly access the given field (via `GETFIELD`, `GETSTATIC`, etc.
  `void` | `loadInstanceField​(FieldExpression expression)` | RHS instance field.
  `void` | `loadStaticField​(FieldExpression expression)` |
  `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)` |
  `void` | `throwException​(java.lang.String message)` |
  `void` | `visitAnnotations​(AnnotatedNode node)` |
  `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 statement)` |
  `void` | `visitBooleanExpression​(BooleanExpression expression)` |
  `void` | `visitBreakStatement​(BreakStatement statement)` |
  `void` | `visitBytecodeExpression​(BytecodeExpression expression)` |
  `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)` |
  `void` | `visitClosureExpression​(ClosureExpression expression)` |
  `void` | `visitClosureListExpression​(ClosureListExpression expression)` |
  `void` | `visitConstantExpression​(ConstantExpression expression)` | Generates 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 statement)` |
  `void` | `visitExpressionStatement​(ExpressionStatement statement)` |
  `void` | `visitField​(FieldNode fieldNode)` | Visit a FieldNode.
  `void` | `visitFieldExpression​(FieldExpression expression)` |
  `void` | `visitForLoop​(ForStatement statement)` |
  `void` | `visitGStringExpression​(GStringExpression expression)` |
  `void` | `visitIfElse​(IfStatement statement)` |
  `void` | `visitLambdaExpression​(LambdaExpression expression)` |
  `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` | `visitMethodReferenceExpression​(MethodReferenceExpression 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)` |
  `void` | `visitWhileLoop​(WhileStatement statement)` |

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

  `getInnerClasses`

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

  `addError, visitAnnotation, visitClassCodeContainer, visitImports, visitObjectInitializerStatements, visitPackage`

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

  `afterSwitchConditionExpressionVisited, visitEmptyStatement, visitShortTernaryExpression`

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

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

  ### Methods inherited from interface org.codehaus.groovy.ast.GroovyCodeVisitor

  `visitEmptyExpression, visitListOfExpressions`

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

  - ### MINIMUM_BYTECODE_VERSION

    public static final java.lang.String MINIMUM_BYTECODE_VERSION
    See Also:
      Constant Field Values

- ## Constructor Details

  - ### AsmClassGenerator

    public AsmClassGenerator​(SourceUnit source, GeneratorContext context, org.objectweb.asm.ClassVisitor classVisitor, java.lang.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`

  - ### 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 statement)
    Specified by:
      `visitBlockStatement` in interface `GroovyCodeVisitor`
    Overrides:
      `visitBlockStatement` in class `ClassCodeVisitorSupport`

  - ### visitForLoop

    public void visitForLoop​(ForStatement statement)
    Specified by:
      `visitForLoop` in interface `GroovyCodeVisitor`
    Overrides:
      `visitForLoop` in class `ClassCodeVisitorSupport`

  - ### visitWhileLoop

    public void visitWhileLoop​(WhileStatement statement)
    Specified by:
      `visitWhileLoop` in interface `GroovyCodeVisitor`
    Overrides:
      `visitWhileLoop` in class `ClassCodeVisitorSupport`

  - ### visitDoWhileLoop

    public void visitDoWhileLoop​(DoWhileStatement statement)
    Specified by:
      `visitDoWhileLoop` in interface `GroovyCodeVisitor`
    Overrides:
      `visitDoWhileLoop` in class `ClassCodeVisitorSupport`

  - ### visitIfElse

    public void visitIfElse​(IfStatement statement)
    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`

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

  - ### visitLambdaExpression

    public void visitLambdaExpression​(LambdaExpression expression)
    Specified by:
      `visitLambdaExpression` in interface `GroovyCodeVisitor`
    Overrides:
      `visitLambdaExpression` 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)
    Generates 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`

  - ### visitMethodReferenceExpression

    public void visitMethodReferenceExpression​(MethodReferenceExpression expression)
    Specified by:
      `visitMethodReferenceExpression` in interface `GroovyCodeVisitor`
    Overrides:
      `visitMethodReferenceExpression` 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)
    Specified by:
      `visitBooleanExpression` in interface `GroovyCodeVisitor`
    Overrides:
      `visitBooleanExpression` in class `CodeVisitorSupport`

  - ### visitMethodCallExpression

    public void visitMethodCallExpression​(MethodCallExpression call)
    Specified by:
      `visitMethodCallExpression` in interface `GroovyCodeVisitor`
    Overrides:
      `visitMethodCallExpression` in class `CodeVisitorSupport`

  - ### visitStaticMethodCallExpression

    public void visitStaticMethodCallExpression​(StaticMethodCallExpression call)
    Specified by:
      `visitStaticMethodCallExpression` in interface `GroovyCodeVisitor`
    Overrides:
      `visitStaticMethodCallExpression` in class `CodeVisitorSupport`

  - ### visitConstructorCallExpression

    public void visitConstructorCallExpression​(ConstructorCallExpression call)
    Specified by:
      `visitConstructorCallExpression` in interface `GroovyCodeVisitor`
    Overrides:
      `visitConstructorCallExpression` in class `CodeVisitorSupport`

  - ### isValidFieldNodeForByteCodeAccess

    public static boolean isValidFieldNodeForByteCodeAccess​(FieldNode field, ClassNode accessingClass)
    Determines if the given class can directly access the given field (via `GETFIELD`, `GETSTATIC`, etc. bytecode instructions).

  - ### 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 expression)

  - ### loadInstanceField

    public void loadInstanceField​(FieldExpression expression)
    RHS instance field. should move most of the code in the BytecodeHelper

  - ### visitVariableExpression

    public void visitVariableExpression​(VariableExpression 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)
    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<Expression> 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`

  - ### visitBytecodeExpression

    public void visitBytecodeExpression​(BytecodeExpression expression)
    Specified by:
      `visitBytecodeExpression` in interface `GroovyCodeVisitor`
    Overrides:
      `visitBytecodeExpression` 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)
    Overrides:
      `visitAnnotations` in class `ClassCodeVisitorSupport`

  - ### argumentSize

    public static int argumentSize​(Expression arguments)

  - ### containsSpreadExpression

    public static boolean containsSpreadExpression​(Expression arguments)

  - ### isThisExpression

    @Deprecated public static boolean isThisExpression​(Expression expression)
    Deprecated.

  - ### isSuperExpression

    @Deprecated public static boolean isSuperExpression​(Expression expression)
    Deprecated.

  - ### isNullConstant

    @Deprecated public static boolean isNullConstant​(Expression expression)
    Deprecated.

  - ### addInnerClass

    public boolean addInnerClass​(ClassNode innerClass)

  - ### onLineNumber

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

  - ### throwException

    public void throwException​(java.lang.String message)