# Package com.saxonica.ee.bytecode.util

This package contains utility classes supporting the generation of bytecode and the interface with the ASM library. Some of these classes and methods are called by generated bytecode, so the usage of these methods cannot be easily discerned by reading the source code.

- Interface Summary
  Interface | Description
  --- | ---
  MessageBuilder | Helper interface MeassageBuilder.

- Class Summary
  Class | Description
  --- | ---
  ByteCodeTrace | Calls to this class are inserted into the bytecode for debugging purposes
  Callback | A convenient place to put static methods that will be called from generated byte code
  CompilerService | Controlling/service class for compilation of expressions to Java bytecode
  CompilerService.GeneratedClassInfo |
  CompilerService.StaticSubClasses |
  CompilerService.StaticVariableInfo |
  ExpressionCompilerMap |
  GeneratedClassLoader | GeneratedClassLoader interface.
  GeneratedMethodInfo | Information about the current method whose bytecode is being generated
  GeneratedMethodInfo.LocalSlotInfo |
  Generator | This class is an extension of the ASM-supplied GeneratorAdapter library, containing additional utility and shortcut methods for bytecode generation
  LabelInfo | An ASM label object with some control information to enable better diagnostics
  MessageFromStack | Helper class to generate a run-time exception using a message that is present at the top of the bytecode stack
  MessageTemplate | Helper class to build messages in which the value of run-time bytecode variables can be inserted.
  NamedLabel | Subclass of the ASM Label class that adds a diagnostic name to the label; this enables more intelligible bytecode to be output for diagnostics
  OnEmpty | The OnEmpty class represents an action to be taken by the bytecode generator when compiling an expression to return a "primitive" (unboxed) value such as a double float int long or String (treated as primitive for this purpose).
  OnEmpty.ReturnEmptyString | The ReturnNull subclass indicates that when an expression evaluates to the empty sequence, the value should be returned as a zero-length string.
  OnEmpty.ReturnNull | The ReturnNull subclass indicates that when an expression evaluates to the empty sequence, the value should be returned as a Java null.
  OnEmpty.UnwindAndJump | The UnwindAndJump subclass causes the code generator, when an expression evaluates to the empty sequence, to generate a "goto" instruction to a defined label; but before executing the jump, the stack will be unwound to a known position.

- Exception Summary
  Exception | Description
  --- | ---
  CannotCompileException | Exception indicating that constructs were encountered in the expression tree that cannot be compiled to bytecode