Package: org.codehaus.groovy.classgen.asm

## [Java] Class DelegatingController

- org.codehaus.groovy.classgen.asm.DelegatingController

-     public class DelegatingController
      extends WriterController

  This class will delegate all calls to a WriterController given in the constructor.

- - Inherited fields
    Fields inherited from class | Fields
    --- | ---
    `class WriterController` | `optimizeForInt`

  - ### Constructor Summary

    Constructors
    Constructor and description
    `DelegatingController(WriterController normalController)` Creates a delegating controller that forwards all calls to the given controller.

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public AsmClassGenerator` | `getAcg()` * Returns the AsmClassGenerator managing overall compilation for this class. * Provides access to source units, compiler configuration, and other * compilation-wide state.
    `` | `public AssertionWriter` | `getAssertionWriter()` * Returns the AssertionWriter for compiling Groovy assert statements * into bytecode that evaluates conditions and raises AssertionError.
    `` | `public BinaryExpressionHelper` | `getBinaryExpressionHelper()` * Returns the appropriate BinaryExpressionHelper for the current code path. * Selects fast-path specialized handling when isFastPath() is true, * otherwise delegates to the general-purpose binary expression handler. * Fast-path optimization is controlled by optimizeForInt. * * Returns: the binary expression writer for the active compilation mode
    `` | `public int` | `getBytecodeVersion()` * Returns the bytecode version (target JVM version) for classes being compiled. * Examples: V1_8 (Java 8), V11 (Java 11), V17 (Java 17), etc. * Determined from compiler configuration and affects class file format * and available bytecode features in generated code. * * Returns: the target bytecode version constant from ASM
    `` | `public CallSiteWriter` | `getCallSiteWriter()` * Returns the CallSiteWriter responsible for generating dynamic call site * infrastructure. Behavior depends on bytecode strategy: either invokedynamic * for modern JVMs or traditional call-site caching for broader compatibility.
    `` | `public CallSiteWriter` | `getCallSiteWriterFor(Expression expression)` * Returns the CallSiteWriter for a specific expression. * Currently delegates to the default CallSiteWriter; reserved for * future expression-specific optimization strategies. * * Parameters: `expression` - the expression being processed * Returns: the appropriate call site writer for this expression * * Since: 6.0.0
    `` | `public String` | `getClassName()` * Returns the internal (JVM) name of the class being compiled. * For interface types with a helper loading class, returns the helper class name; * otherwise returns the standard internal class name. * Format: package segments separated by '/', e.g., "java/lang/String" * * Returns: the fully-qualified internal class name
    `` | `public ClassNode` | `getClassNode()` * Returns the ClassNode representing the class currently being compiled. * Contains the complete AST structure including fields, methods, and metadata. * This is immutable for the duration of the compilation process. * * Returns: the ClassNode for this compilation unit
    `` | `public org.objectweb.asm.ClassVisitor` | `getClassVisitor()` * Returns the ASM ClassVisitor for emitting class-level bytecode directives. * This is the primary interface for writing class metadata, fields, methods, * and attributes to the compiled bytecode.
    `` | `public ClosureWriter` | `getClosureWriter()` * Returns the ClosureWriter for compiling Groovy closure literals into * inner classes implementing GroovyObject and supporting variable capture.
    `` | `public CompileStack` | `getCompileStack()` * Returns the CompileStack managing local variable slots, scope boundaries, * and control flow labels during method compilation.
    `` | `public ConstructorNode` | `getConstructorNode()` * Returns the ConstructorNode for the constructor currently being compiled, or null * if no constructor is active or a method is being compiled instead. * * Returns: the current ConstructorNode, or null if none is active
    `` | `public GeneratorContext` | `getContext()` * Returns the GeneratorContext tracking compilation state across * the entire compilation unit, including helper classes and shared resources.
    `` | `public org.objectweb.asm.ClassVisitor` | `getCv()` * Returns the ASM ClassVisitor for emitting class-level bytecode directives. * * deprecated: Use getClassVisitor() instead for clarity
    `` | `public InterfaceHelperClassNode` | `getInterfaceClassLoadingClass()` * Returns the InterfaceHelperClassNode used for interface static method loading, * or null if the compiled class is not an interface or needs no helper class. * Interface helper classes bridge the gap between interface static methods * and their actual implementation in Java 8+ runtime environments. * * Returns: the helper class node, or null if not applicable
    `` | `public String` | `getInternalBaseClassName()` * Returns the internal (JVM) name of the immediate superclass. * The internal name format uses '/' as package separator, e.g., "java/lang/Object". * Typically "java/lang/Object" for classes without explicit superclass, * or the superclass name for classes with explicit inheritance. * * Returns: the fully-qualified internal name of the parent class
    `` | `public String` | `getInternalClassName()` * Returns the internal (JVM) name of the class being compiled. * The internal name format uses '/' as package separator, e.g., "org/groovy/MyClass". * This corresponds to the formal name used in bytecode class descriptors. * * Returns: the fully-qualified internal class name
    `` | `public InvocationWriter` | `getInvocationWriter()` * Returns the InvocationWriter for compiling method calls and dynamic * function invocations into appropriate bytecode patterns.
    `` | `public LambdaWriter` | `getLambdaWriter()` * Returns the LambdaWriter for compiling Java-style lambda expressions * (using the `->` operator) into functional interfaces.
    `` | `public int` | `getLineNumber()` * Returns the source line number currently being compiled. * Line numbers are tracked for debug attribute generation in the bytecode, * allowing debuggers and profilers to map bytecode instructions to source lines. * Returns -1 when no valid line number is active. * * Returns: the current source line number, or -1 if invalid/not set
    `` | `public MethodNode` | `getMethodNode()` * Returns the MethodNode for the method currently being compiled, or null * if no method is active or a constructor is being compiled instead. * * Returns: the current MethodNode, or null if none is active
    `` | `public MethodPointerExpressionWriter` | `getMethodPointerExpressionWriter()` * Returns the MethodPointerExpressionWriter for compiling method pointer * expressions (e.g., `String.&length`) into method reference objects.
    `` | `public MethodReferenceExpressionWriter` | `getMethodReferenceExpressionWriter()` * Returns the MethodReferenceExpressionWriter for compiling method reference * expressions compatible with Java functional interface targets.
    `` | `public org.objectweb.asm.MethodVisitor` | `getMethodVisitor()` * Returns the ASM MethodVisitor for emitting bytecode instructions within * the currently-active method or constructor. Null if no method is active.
    `` | `public OperandStack` | `getOperandStack()` * Returns the OperandStack managing the JVM operand stack, tracking stack * depth and type information for bytecode verification and optimization.
    `` | `public ClassNode` | `getOutermostClass()` * Returns the outermost enclosing class in the nesting hierarchy. * For top-level classes, returns the class itself. For nested classes, * traverses outward to find the top-level class. * * Returns: the outermost ClassNode in the nest
    `` | `public ClassNode` | `getReturnType()` * Returns the declared return type of the current method or constructor. * The return type reflects the method signature from the source code. * * throws: GroovyBugError if called outside method or constructor context Returns: the return type ClassNode *
    `` | `public SourceUnit` | `getSourceUnit()` * Returns the SourceUnit containing the source code being compiled. * Provides access to source URLs, encoding, and error reporting infrastructure.
    `` | `public StatementWriter` | `getStatementWriter()` * Returns the StatementWriter for compiling Groovy statements into bytecode. * Selection depends on optimization mode: OptimizingStatementWriter for * optimizeForInt, otherwise generic StatementWriter.
    `` | `public SwitchExpressionWriter` | `getSwitchExpressionWriter()` * Returns the SwitchExpressionWriter for compiling first-class switch * expressions (JEP 361). * * Since: 6.0.0
    `` | `public TypeChooser` | `getTypeChooser()` * Returns the TypeChooser used to select appropriate type representations * for expressions during compilation, supporting both dynamic and typed paths.
    `` | `public UnaryExpressionHelper` | `getUnaryExpressionHelper()` * Returns the appropriate UnaryExpressionHelper for the current code path. * Selects fast-path specialized handling when isFastPath() is true, * otherwise delegates to the general-purpose unary expression handler. * Fast-path optimization is controlled by optimizeForInt. * * Returns: the unary expression writer for the active compilation mode
    `` | `public void` | `init(AsmClassGenerator asmClassGenerator, GeneratorContext gcon, org.objectweb.asm.ClassVisitor cv, ClassNode cn)` * Initializes this controller with compilation context and ASM infrastructure. * Must be called exactly once before any bytecode generation operations. * Sets up all supporting writers (call site, closure, lambda, etc.) and * configures optimization strategies based on compiler configuration. * * Parameters: `asmClassGenerator` - the class generator managing the overall compilation * `gcon` - the compilation context tracking state across the compilation unit * `cv` - the ASM ClassVisitor for emitting bytecode directives * `cn` - the ClassNode being compiled
    `` | `public boolean` | `isConstructor()` * Returns true if a constructor is currently being compiled. * False if a regular instance or static method is active, or if no method is active. * * Returns: true if in constructor compilation context
    `` | `public boolean` | `isFastPath()` * Returns true if the compiler is currently in fast-path mode, * emitting specialized bytecode for primitive type operations. * Use this to determine whether expression helpers should apply optimizations. * * Returns: true if fast-path compilation mode is active
    `` | `public boolean` | `isForInPerIterationCaptureEnabled()` * Whether for-in loop variables shared with closures, lambdas, or AICs * should be re-captured each iteration (language-compat flag, GROOVY-11792). * * Returns: `true` when per-iteration capture is enabled * See Also: CompilerConfiguration.isForInPerIterationCaptureEnabled
    `` | `public boolean` | `isInGeneratedFunction()` * Returns true if the class being compiled is a generated function wrapper * (e.g., an inner class synthesized for a closure or lambda expression). * Generated functions have an outer class and are marked as generated. * * Returns: true if compiling a closure or lambda's wrapper class
    `` | `public boolean` | `isInGeneratedFunctionConstructor()` * Returns true if compiling a constructor within a generated function class. * Combines two checks: that we're in constructor context AND in a generated function. * This condition indicates we're initializing a closure or lambda wrapper. * * Returns: true if in a generated function's constructor
    `` | `public boolean` | `isInScriptBody()` * Returns: true if we are in a script body, where all variables declared are no longer * local variables but are properties
    `` | `public boolean` | `isNotClinit()` * Returns true if the current method is NOT a static class initializer (<clinit>). * Equivalent to: no method is active OR the method is not a static constructor. * Used to guard code that should not execute in class initialization. * * Returns: true if not in static initializer context
    `` | `public boolean` | `isStaticConstructor()` * Returns true if the current method is a static class initializer (<clinit>). * The static initializer runs once when the class is loaded by the JVM. * Returns false if no method is active or the method is not static. * * Returns: true if the current method is the static class initializer
    `` | `public boolean` | `isStaticContext()` * Determines whether the current execution context is statically scoped. * Returns true when compiling inside a static method or static class initializer. * For instance constructors, checks whether we're in a special constructor call * (e.g., super or this call) which requires static semantics. * * throws: IllegalStateException if called outside valid compilation scope Returns: true if executing in static context, false for instance context *
    `` | `public boolean` | `isStaticMethod()` * Returns true if the current method is explicitly declared as static. * Returns false if no method is active or the method is instance-scoped. * * Returns: true if the current method has the static modifier
    `` | `public void` | `resetLineNumber()` * Resets the tracked line number to -1 (invalid). * Called when switching compilation modes or after line number emission * to avoid stale line number information in subsequent bytecode.
    `` | `public void` | `setConstructorNode(ConstructorNode cn)` * Sets the ConstructorNode for the constructor currently being compiled. * Automatically clears any active method node, since only one can be active. * Used during compilation to track which constructor's bytecode is being generated. * * Parameters: `constructorNode` - the ConstructorNode to compile, or null to deactivate
    `` | `public void` | `setInterfaceClassLoadingClass(InterfaceHelperClassNode ihc)` * Sets the InterfaceHelperClassNode for interface static method loading. * Called during interface compilation to register the synthesized helper class * that provides access to static interface methods in compatible runtimes. * The helper class allows proper method lookup and invocation for interface statics. * * Parameters: `ihc` - the helper class node, or null to deactivate
    `` | `public void` | `setLineNumber(int n)` * Updates the current source line number being compiled. * The line number is used for debug information (LineNumberTable attribute) * and must be set before emitting bytecode for the corresponding source line. * * Parameters: `lineNumber` - the new source line number, or -1 to reset
    `` | `public void` | `setMethodNode(MethodNode mn)` * Sets the MethodNode for the method currently being compiled. * Automatically clears any active constructor node, since only one can be active. * Used during compilation to track which method's bytecode is being generated. * * Parameters: `methodNode` - the MethodNode to compile, or null to deactivate
    `` | `public void` | `setMethodVisitor(org.objectweb.asm.MethodVisitor methodVisitor)` * Sets the ASM MethodVisitor for the currently-active method or constructor. * Called before each method body compilation to direct bytecode emission. * * Parameters: `methodVisitor` - the visitor for the current method, or null to deactivate
    `` | `public boolean` | `shouldOptimizeForInt()` * Returns true if the bytecode generator should emit optimized fast-path code * for integer operations. Corresponds to the optimizeForInt configuration * which is disabled when invokedynamic is enabled. * * Returns: true if integer-optimized fast-path code generation is enabled
    `` | `public void` | `switchToFastPath()` * Switches compilation to fast-path mode for specialized numeric handling. * In fast-path mode, the compiler emits optimized bytecode for common operations * on primitive integer types, bypassing dynamic method invocation overhead. * Also resets line number tracking to allow proper debug attribute synchronization.
    `` | `public void` | `switchToSlowPath()` * Switches compilation to slow-path mode, reverting to general-purpose bytecode generation. * Slow-path mode uses dynamic method dispatch for all operations, suitable when * type information is insufficient for safe optimization or type specialization * is not beneficial. Also resets line number tracking.

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class WriterController` | `getAcg, getAssertionWriter, getBinaryExpressionHelper, getBytecodeVersion, getCallSiteWriter, getCallSiteWriterFor, getClassName, getClassNode, getClassVisitor, getClosureWriter, getCompileStack, getConstructorNode, getContext, getCv, getInterfaceClassLoadingClass, getInternalBaseClassName, getInternalClassName, getInvocationWriter, getLambdaWriter, getLineNumber, getMethodNode, getMethodPointerExpressionWriter, getMethodReferenceExpressionWriter, getMethodVisitor, getNextHelperMethodIndex, getOperandStack, getOutermostClass, getReturnType, getSourceUnit, getStatementWriter, getSuperMethodNames, getSwitchExpressionWriter, getThisType, getTypeChooser, getUnaryExpressionHelper, init, isConstructor, isFastPath, isForInPerIterationCaptureEnabled, isInGeneratedFunction, isInGeneratedFunctionConstructor, isInScriptBody, isNotClinit, isStaticConstructor, isStaticContext, isStaticMethod, resetLineNumber, setConstructorNode, setInterfaceClassLoadingClass, setLineNumber, setMethodNode, setMethodVisitor, shouldOptimizeForInt, switchToFastPath, switchToSlowPath, visitLineNumber`

- - ### Constructor Detail

    - #### public DelegatingController(WriterController normalController)

      Creates a delegating controller that forwards all calls to the given controller.

      Parameters:
        `normalController` - the controller to delegate to

  - ### Method Detail

    - #### public AsmClassGenerator getAcg()

      * Returns the AsmClassGenerator managing overall compilation for this class. * Provides access to source units, compiler configuration, and other * compilation-wide state.

    - #### public AssertionWriter getAssertionWriter()

      * Returns the AssertionWriter for compiling Groovy assert statements * into bytecode that evaluates conditions and raises AssertionError.

    - #### public BinaryExpressionHelper getBinaryExpressionHelper()

      * Returns the appropriate BinaryExpressionHelper for the current code path. * Selects fast-path specialized handling when isFastPath() is true, * otherwise delegates to the general-purpose binary expression handler. * Fast-path optimization is controlled by optimizeForInt. * *

      Returns:
        the binary expression writer for the active compilation mode

    - #### public int getBytecodeVersion()

      * Returns the bytecode version (target JVM version) for classes being compiled. * Examples: V1_8 (Java 8), V11 (Java 11), V17 (Java 17), etc. * Determined from compiler configuration and affects class file format * and available bytecode features in generated code. * *

      Returns:
        the target bytecode version constant from ASM

    - #### public CallSiteWriter getCallSiteWriter()

      * Returns the CallSiteWriter responsible for generating dynamic call site * infrastructure. Behavior depends on bytecode strategy: either invokedynamic * for modern JVMs or traditional call-site caching for broader compatibility.

    - #### public CallSiteWriter getCallSiteWriterFor(Expression expression)

      * Returns the CallSiteWriter for a specific expression. * Currently delegates to the default CallSiteWriter; reserved for * future expression-specific optimization strategies. * *

      Parameters:
        `expression` - the expression being processed *
      Returns:
        the appropriate call site writer for this expression * *
      Since:
        6.0.0

    - #### public String getClassName()

      * Returns the internal (JVM) name of the class being compiled. * For interface types with a helper loading class, returns the helper class name; * otherwise returns the standard internal class name. * Format: package segments separated by '/', e.g., "java/lang/String" * *

      Returns:
        the fully-qualified internal class name

    - #### public ClassNode getClassNode()

      * Returns the ClassNode representing the class currently being compiled. * Contains the complete AST structure including fields, methods, and metadata. * This is immutable for the duration of the compilation process. * *

      Returns:
        the ClassNode for this compilation unit

    - #### public org.objectweb.asm.ClassVisitor getClassVisitor()

      * Returns the ASM ClassVisitor for emitting class-level bytecode directives. * This is the primary interface for writing class metadata, fields, methods, * and attributes to the compiled bytecode.

    - #### public ClosureWriter getClosureWriter()

      * Returns the ClosureWriter for compiling Groovy closure literals into * inner classes implementing GroovyObject and supporting variable capture.

    - #### public CompileStack getCompileStack()

      * Returns the CompileStack managing local variable slots, scope boundaries, * and control flow labels during method compilation.

    - #### public ConstructorNode getConstructorNode()

      * Returns the ConstructorNode for the constructor currently being compiled, or null * if no constructor is active or a method is being compiled instead. * *

      Returns:
        the current ConstructorNode, or null if none is active

    - #### public GeneratorContext getContext()

      * Returns the GeneratorContext tracking compilation state across * the entire compilation unit, including helper classes and shared resources.

    - #### @Deprecated
      public org.objectweb.asm.ClassVisitor getCv()

      * Returns the ASM ClassVisitor for emitting class-level bytecode directives. * *

      deprecated:
        Use getClassVisitor() instead for clarity

    - #### public InterfaceHelperClassNode getInterfaceClassLoadingClass()

      * Returns the InterfaceHelperClassNode used for interface static method loading, * or null if the compiled class is not an interface or needs no helper class. * Interface helper classes bridge the gap between interface static methods * and their actual implementation in Java 8+ runtime environments. * *

      Returns:
        the helper class node, or null if not applicable

    - #### public String getInternalBaseClassName()

      * Returns the internal (JVM) name of the immediate superclass. * The internal name format uses '/' as package separator, e.g., "java/lang/Object". * Typically "java/lang/Object" for classes without explicit superclass, * or the superclass name for classes with explicit inheritance. * *

      Returns:
        the fully-qualified internal name of the parent class

    - #### public String getInternalClassName()

      * Returns the internal (JVM) name of the class being compiled. * The internal name format uses '/' as package separator, e.g., "org/groovy/MyClass". * This corresponds to the formal name used in bytecode class descriptors. * *

      Returns:
        the fully-qualified internal class name

    - #### public InvocationWriter getInvocationWriter()

      * Returns the InvocationWriter for compiling method calls and dynamic * function invocations into appropriate bytecode patterns.

    - #### public LambdaWriter getLambdaWriter()

      * Returns the LambdaWriter for compiling Java-style lambda expressions * (using the `->` operator) into functional interfaces.

    - #### public int getLineNumber()

      * Returns the source line number currently being compiled. * Line numbers are tracked for debug attribute generation in the bytecode, * allowing debuggers and profilers to map bytecode instructions to source lines. * Returns -1 when no valid line number is active. * *

      Returns:
        the current source line number, or -1 if invalid/not set

    - #### public MethodNode getMethodNode()

      * Returns the MethodNode for the method currently being compiled, or null * if no method is active or a constructor is being compiled instead. * *

      Returns:
        the current MethodNode, or null if none is active

    - #### public MethodPointerExpressionWriter getMethodPointerExpressionWriter()

      * Returns the MethodPointerExpressionWriter for compiling method pointer * expressions (e.g., `String.&length`) into method reference objects.

    - #### public MethodReferenceExpressionWriter getMethodReferenceExpressionWriter()

      * Returns the MethodReferenceExpressionWriter for compiling method reference * expressions compatible with Java functional interface targets.

    - #### public org.objectweb.asm.MethodVisitor getMethodVisitor()

      * Returns the ASM MethodVisitor for emitting bytecode instructions within * the currently-active method or constructor. Null if no method is active.

    - #### public OperandStack getOperandStack()

      * Returns the OperandStack managing the JVM operand stack, tracking stack * depth and type information for bytecode verification and optimization.

    - #### public ClassNode getOutermostClass()

      * Returns the outermost enclosing class in the nesting hierarchy. * For top-level classes, returns the class itself. For nested classes, * traverses outward to find the top-level class. * *

      Returns:
        the outermost ClassNode in the nest

    - #### public ClassNode getReturnType()

      * Returns the declared return type of the current method or constructor. * The return type reflects the method signature from the source code. * *

      throws:
        GroovyBugError if called outside method or constructor context
      Returns:
        the return type ClassNode *

    - #### public SourceUnit getSourceUnit()

      * Returns the SourceUnit containing the source code being compiled. * Provides access to source URLs, encoding, and error reporting infrastructure.

    - #### public StatementWriter getStatementWriter()

      * Returns the StatementWriter for compiling Groovy statements into bytecode. * Selection depends on optimization mode: OptimizingStatementWriter for * optimizeForInt, otherwise generic StatementWriter.

    - #### public SwitchExpressionWriter getSwitchExpressionWriter()

      * Returns the SwitchExpressionWriter for compiling first-class switch * expressions (JEP 361). * *

      Since:
        6.0.0

    - #### public TypeChooser getTypeChooser()

      * Returns the TypeChooser used to select appropriate type representations * for expressions during compilation, supporting both dynamic and typed paths.

    - #### public UnaryExpressionHelper getUnaryExpressionHelper()

      * Returns the appropriate UnaryExpressionHelper for the current code path. * Selects fast-path specialized handling when isFastPath() is true, * otherwise delegates to the general-purpose unary expression handler. * Fast-path optimization is controlled by optimizeForInt. * *

      Returns:
        the unary expression writer for the active compilation mode

    - #### public void init(AsmClassGenerator asmClassGenerator, GeneratorContext gcon, org.objectweb.asm.ClassVisitor cv, ClassNode cn)

      * Initializes this controller with compilation context and ASM infrastructure. * Must be called exactly once before any bytecode generation operations. * Sets up all supporting writers (call site, closure, lambda, etc.) and * configures optimization strategies based on compiler configuration. * *

      Parameters:
        `asmClassGenerator` - the class generator managing the overall compilation *
        `gcon` - the compilation context tracking state across the compilation unit *
        `cv` - the ASM ClassVisitor for emitting bytecode directives *
        `cn` - the ClassNode being compiled

    - #### public boolean isConstructor()

      * Returns true if a constructor is currently being compiled. * False if a regular instance or static method is active, or if no method is active. * *

      Returns:
        true if in constructor compilation context

    - #### public boolean isFastPath()

      * Returns true if the compiler is currently in fast-path mode, * emitting specialized bytecode for primitive type operations. * Use this to determine whether expression helpers should apply optimizations. * *

      Returns:
        true if fast-path compilation mode is active

    - #### public boolean isForInPerIterationCaptureEnabled()

      * Whether for-in loop variables shared with closures, lambdas, or AICs * should be re-captured each iteration (language-compat flag, GROOVY-11792). * *

      Returns:
        `true` when per-iteration capture is enabled *
      See Also:
        CompilerConfiguration.isForInPerIterationCaptureEnabled

    - #### public boolean isInGeneratedFunction()

      * Returns true if the class being compiled is a generated function wrapper * (e.g., an inner class synthesized for a closure or lambda expression). * Generated functions have an outer class and are marked as generated. * *

      Returns:
        true if compiling a closure or lambda's wrapper class

    - #### public boolean isInGeneratedFunctionConstructor()

      * Returns true if compiling a constructor within a generated function class. * Combines two checks: that we're in constructor context AND in a generated function. * This condition indicates we're initializing a closure or lambda wrapper. * *

      Returns:
        true if in a generated function's constructor

    - #### public boolean isInScriptBody()

      *

      Returns:
        true if we are in a script body, where all variables declared are no longer * local variables but are properties

    - #### public boolean isNotClinit()

      * Returns true if the current method is NOT a static class initializer (<clinit>). * Equivalent to: no method is active OR the method is not a static constructor. * Used to guard code that should not execute in class initialization. * *

      Returns:
        true if not in static initializer context

    - #### public boolean isStaticConstructor()

      * Returns true if the current method is a static class initializer (<clinit>). * The static initializer runs once when the class is loaded by the JVM. * Returns false if no method is active or the method is not static. * *

      Returns:
        true if the current method is the static class initializer

    - #### public boolean isStaticContext()

      * Determines whether the current execution context is statically scoped. * Returns true when compiling inside a static method or static class initializer. * For instance constructors, checks whether we're in a special constructor call * (e.g., super or this call) which requires static semantics. * *

      throws:
        IllegalStateException if called outside valid compilation scope
      Returns:
        true if executing in static context, false for instance context *

    - #### public boolean isStaticMethod()

      * Returns true if the current method is explicitly declared as static. * Returns false if no method is active or the method is instance-scoped. * *

      Returns:
        true if the current method has the static modifier

    - #### public void resetLineNumber()

      * Resets the tracked line number to -1 (invalid). * Called when switching compilation modes or after line number emission * to avoid stale line number information in subsequent bytecode.

    - #### public void setConstructorNode(ConstructorNode cn)

      * Sets the ConstructorNode for the constructor currently being compiled. * Automatically clears any active method node, since only one can be active. * Used during compilation to track which constructor's bytecode is being generated. * *

      Parameters:
        `constructorNode` - the ConstructorNode to compile, or null to deactivate

    - #### public void setInterfaceClassLoadingClass(InterfaceHelperClassNode ihc)

      * Sets the InterfaceHelperClassNode for interface static method loading. * Called during interface compilation to register the synthesized helper class * that provides access to static interface methods in compatible runtimes. * The helper class allows proper method lookup and invocation for interface statics. * *

      Parameters:
        `ihc` - the helper class node, or null to deactivate

    - #### public void setLineNumber(int n)

      * Updates the current source line number being compiled. * The line number is used for debug information (LineNumberTable attribute) * and must be set before emitting bytecode for the corresponding source line. * *

      Parameters:
        `lineNumber` - the new source line number, or -1 to reset

    - #### public void setMethodNode(MethodNode mn)

      * Sets the MethodNode for the method currently being compiled. * Automatically clears any active constructor node, since only one can be active. * Used during compilation to track which method's bytecode is being generated. * *

      Parameters:
        `methodNode` - the MethodNode to compile, or null to deactivate

    - #### public void setMethodVisitor(org.objectweb.asm.MethodVisitor methodVisitor)

      * Sets the ASM MethodVisitor for the currently-active method or constructor. * Called before each method body compilation to direct bytecode emission. * *

      Parameters:
        `methodVisitor` - the visitor for the current method, or null to deactivate

    - #### public boolean shouldOptimizeForInt()

      * Returns true if the bytecode generator should emit optimized fast-path code * for integer operations. Corresponds to the optimizeForInt configuration * which is disabled when invokedynamic is enabled. * *

      Returns:
        true if integer-optimized fast-path code generation is enabled

    - #### public void switchToFastPath()

      * Switches compilation to fast-path mode for specialized numeric handling. * In fast-path mode, the compiler emits optimized bytecode for common operations * on primitive integer types, bypassing dynamic method invocation overhead. * Also resets line number tracking to allow proper debug attribute synchronization.

    - #### public void switchToSlowPath()

      * Switches compilation to slow-path mode, reverting to general-purpose bytecode generation. * Slow-path mode uses dynamic method dispatch for all operations, suitable when * type information is insufficient for safe optimization or type specialization * is not beneficial. Also resets line number tracking.