CodeBuilder (Java SE 25 & JDK 25)
Description: declaration: module: java.base, package: java.lang.classfile, interface: CodeBuilder
Keywords: java.lang.classfile.CodeBuilder interface

# Interface CodeBuilder

All Superinterfaces:
  `ClassFileBuilder<CodeElement, CodeBuilder>, Consumer<CodeElement>`

All Known Subinterfaces:
  `CodeBuilder.BlockCodeBuilder`

public sealed interface CodeBuilder extends ClassFileBuilder<CodeElement, CodeBuilder> permits CodeBuilder.BlockCodeBuilder (not exhaustive)
A builder for `Code` attributes (method bodies). `MethodBuilder.withCode(Consumer)` is the basic way to obtain a code builder; `ClassBuilder.withMethodBody(Utf8Entry, Utf8Entry, int, Consumer)` is a shortcut. There are also derived code builders from `block(Consumer)`, which handles code blocks and `transforming(CodeTransform, Consumer)`, which runs transforms on existing handlers, both of which requires a code builder to be available first.

Refer to `ClassFileBuilder` for general guidance and caution around the use of builders for structures in the `class` file format. Unlike in other builders, the order of member elements in a code builder is significant: they affect the resulting bytecode. Many Class-File API options affect code builders: `ClassFile.DeadCodeOption` and `ClassFile.ShortJumpsOption` affect the resulting bytecode, and `ClassFile.DeadLabelsOption`, `ClassFile.DebugElementsOption`, `ClassFile.LineNumbersOption`, `ClassFile.StackMapsOption`, and `ClassFile.AttributesProcessingOption` affect the resulting attributes on the built `Code` attribute, that some elements sent to a code builder is otherwise ignored.

## Instruction Factories

`CodeBuilder` provides convenience methods to create instructions (See JVMS 6.5 Instructions) by their mnemonic, taking necessary operands.

- Instructions that encode their operands in their opcode, such as `aload_<n>`, share their factories with their generic version like `aload`. Note that some constant instructions, such as `iconst_1`, do not have generic versions, and thus have their own factories.
- Instructions that accept wide operands, such as `ldc2_w` or `wide`, share their factories with their regular version like `ldc(ConstantDesc)`. Note that `goto_w` has its own factory to avoid short jumps.
- The `goto`, `instanceof`, `new`, and `return` instructions' factories are named `goto_`, `instanceOf`, `new_`, and `return_` respectively, due to clashes with keywords in the Java programming language.
- Factories are not provided for instructions `jsr`, `jsr_w`, `ret`, and `wide ret`, which cannot appear in class files with major version 51 or higher. (JVMS 4.9.1) They can still be provided via `ClassFileBuilder.with(E)`.

Since:
  24
See Also:
  - `MethodBuilder.withCode(Consumer)`
  - `CodeModel`
  - `CodeTransform`

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Interface
  Description
  `static interface`
  `CodeBuilder.BlockCodeBuilder`
  A builder for blocks of code.
  `static interface`
  `CodeBuilder.CatchBuilder`
  A builder to add catch blocks.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `default CodeBuilder`
  `aaload()`
  Generates an instruction to load from a `reference` array.
  `default CodeBuilder`
  `aastore()`
  Generates an instruction to store into a `reference` array.
  `default CodeBuilder`
  `aconst_null()`
  Generates an instruction pushing the null object `reference` onto the operand stack.
  `int`
  `allocateLocal(TypeKind typeKind)`
  Returns the local variable slot of a fresh local variable.
  `default CodeBuilder`
  `aload(int slot)`
  Generates an instruction to load a `reference` from a local variable.
  `default CodeBuilder`
  `anewarray(ClassEntry classEntry)`
  Generates an instruction to create a new array of `reference`.
  `default CodeBuilder`
  `anewarray(ClassDesc className)`
  Generates an instruction to create a new array of `reference`.
  `default CodeBuilder`
  `areturn()`
  Generates an instruction to return a `reference` from this method.
  `default CodeBuilder`
  `arraylength()`
  Generates an instruction to get the length of an array.
  `default CodeBuilder`
  `arrayLoad(TypeKind tk)`
  Generates an instruction to load from an array.
  `default CodeBuilder`
  `arrayStore(TypeKind tk)`
  Generates an instruction to store into an array.
  `default CodeBuilder`
  `astore(int slot)`
  Generates an instruction to store a `reference` into a local variable.
  `default CodeBuilder`
  `athrow()`
  Generates an instruction to throw an exception or error.
  `default CodeBuilder`
  `baload()`
  Generates an instruction to load from a `byte` or `boolean` array.
  `default CodeBuilder`
  `bastore()`
  Generates an instruction to store into a `byte` or `boolean` array.
  `default CodeBuilder`
  `bipush(int b)`
  Generates an instruction pushing an `int` in the range of `byte` (`[-128, 127]`) onto the operand stack.
  `default CodeBuilder`
  `block(Consumer<CodeBuilder.BlockCodeBuilder> handler)`
  Adds a lexical block to the method being built.
  `default CodeBuilder`
  `branch(Opcode op, Label target)`
  Generates a branch instruction.
  `default CodeBuilder`
  `caload()`
  Generates an instruction to load from a `char` array.
  `default CodeBuilder`
  `castore()`
  Generates an instruction to store into a `char` array.
  `default CodeBuilder`
  `characterRange(Label startScope, Label endScope, int characterRangeStart, int characterRangeEnd, int flags)`
  Declares a character range entry.
  `default CodeBuilder`
  `checkcast(ClassEntry type)`
  Generates an instruction to check whether an object is of the given type, throwing a `ClassCastException` if the check fails.
  `default CodeBuilder`
  `checkcast(ClassDesc type)`
  Generates an instruction to check whether an object is of the given type, throwing a `ClassCastException` if the check fails.
  `default CodeBuilder`
  `conversion(TypeKind fromType, TypeKind toType)`
  Generates instruction(s) to convert `fromType` to `toType`.
  `default CodeBuilder`
  `d2f()`
  Generates an instruction to convert a `double` into a `float`.
  `default CodeBuilder`
  `d2i()`
  Generates an instruction to convert a `double` into an `int`.
  `default CodeBuilder`
  `d2l()`
  Generates an instruction to convert a `double` into a `long`.
  `default CodeBuilder`
  `dadd()`
  Generates an instruction to add two `doubles`.
  `default CodeBuilder`
  `daload()`
  Generates an instruction to load from a `double` array.
  `default CodeBuilder`
  `dastore()`
  Generates an instruction to store into a `double` array.
  `default CodeBuilder`
  `dcmpg()`
  Generates an instruction to compare two `doubles`, producing `1` if any operand is `NaN`.
  `default CodeBuilder`
  `dcmpl()`
  Generates an instruction to compare two `doubles`, producing `-1` if any operand is `NaN`.
  `default CodeBuilder`
  `dconst_0()`
  Generates an instruction pushing `double` constant 0 onto the operand stack.
  `default CodeBuilder`
  `dconst_1()`
  Generates an instruction pushing `double` constant 1 onto the operand stack.
  `default CodeBuilder`
  `ddiv()`
  Generates an instruction to divide `doubles`.
  `default CodeBuilder`
  `dload(int slot)`
  Generates an instruction to load a `double` from a local variable.
  `default CodeBuilder`
  `dmul()`
  Generates an instruction to multiply `doubles`.
  `default CodeBuilder`
  `dneg()`
  Generates an instruction to negate a `double`.
  `default CodeBuilder`
  `drem()`
  Generates an instruction to calculate `double` remainder.
  `default CodeBuilder`
  `dreturn()`
  Generates an instruction to return a `double` from this method.
  `default CodeBuilder`
  `dstore(int slot)`
  Generates an instruction to store a `double` into a local variable.
  `default CodeBuilder`
  `dsub()`
  Generates an instruction to subtract `doubles`.
  `default CodeBuilder`
  `dup()`
  Generates an instruction to duplicate the top operand stack value.
  `default CodeBuilder`
  `dup_x1()`
  Generates an instruction to duplicate the top operand stack value and insert two values down.
  `default CodeBuilder`
  `dup_x2()`
  Generates an instruction to duplicate the top operand stack value and insert two or three values down.
  `default CodeBuilder`
  `dup2()`
  Generates an instruction to duplicate the top one or two operand stack value.
  `default CodeBuilder`
  `dup2_x1()`
  Generates an instruction to duplicate the top one or two operand stack values and insert two or three values down.
  `default CodeBuilder`
  `dup2_x2()`
  Generates an instruction to duplicate the top one or two operand stack values and insert two, three, or four values down.
  `Label`
  `endLabel()`
  Returns the label associated with the end of the current block.
  `default CodeBuilder`
  `exceptionCatch(Label start, Label end, Label handler, ClassEntry catchType)`
  Declares an exception table entry.
  `default CodeBuilder`
  `exceptionCatch(Label start, Label end, Label handler, ClassDesc catchType)`
  Declares an exception table entry.
  `default CodeBuilder`
  `exceptionCatch(Label start, Label end, Label handler, Optional<ClassEntry> catchType)`
  Declares an exception table entry.
  `default CodeBuilder`
  `exceptionCatchAll(Label start, Label end, Label handler)`
  Declares an exception table entry catching all exceptions and errors.
  `default CodeBuilder`
  `f2d()`
  Generates an instruction to convert a `float` into a `double`.
  `default CodeBuilder`
  `f2i()`
  Generates an instruction to convert a `float` into an `int`.
  `default CodeBuilder`
  `f2l()`
  Generates an instruction to convert a `float` into a `long`.
  `default CodeBuilder`
  `fadd()`
  Generates an instruction to add two `floats`.
  `default CodeBuilder`
  `faload()`
  Generates an instruction to load from a `float` array.
  `default CodeBuilder`
  `fastore()`
  Generates an instruction to store into a `float` array.
  `default CodeBuilder`
  `fcmpg()`
  Generates an instruction to compare `floats`, producing `1` if any operand is `NaN`.
  `default CodeBuilder`
  `fcmpl()`
  Generates an instruction to compare `floats`, producing `-1` if any operand is `NaN`.
  `default CodeBuilder`
  `fconst_0()`
  Generates an instruction pushing `float` constant 0 onto the operand stack.
  `default CodeBuilder`
  `fconst_1()`
  Generates an instruction pushing `float` constant 1 onto the operand stack.
  `default CodeBuilder`
  `fconst_2()`
  Generates an instruction pushing `float` constant 2 onto the operand stack.
  `default CodeBuilder`
  `fdiv()`
  Generates an instruction to divide `floats`.
  `default CodeBuilder`
  `fieldAccess(Opcode opcode, FieldRefEntry ref)`
  Generates an instruction to access a field.
  `default CodeBuilder`
  `fieldAccess(Opcode opcode, ClassDesc owner, String name, ClassDesc type)`
  Generates an instruction to access a field.
  `default CodeBuilder`
  `fload(int slot)`
  Generates an instruction to load a `float` from a local variable.
  `default CodeBuilder`
  `fmul()`
  Generates an instruction to multiply `floats`.
  `default CodeBuilder`
  `fneg()`
  Generates an instruction to negate a `float`.
  `default CodeBuilder`
  `frem()`
  Generates an instruction to calculate `floats` remainder.
  `default CodeBuilder`
  `freturn()`
  Generates an instruction to return a `float` from this method.
  `default CodeBuilder`
  `fstore(int slot)`
  Generates an instruction to store a `float` into a local variable.
  `default CodeBuilder`
  `fsub()`
  Generates an instruction to subtract `floats`.
  `default CodeBuilder`
  `getfield(FieldRefEntry ref)`
  Generates an instruction to fetch field from an object.
  `default CodeBuilder`
  `getfield(ClassDesc owner, String name, ClassDesc type)`
  Generates an instruction to fetch field from an object.
  `default CodeBuilder`
  `getstatic(FieldRefEntry ref)`
  Generates an instruction to get static field from a class or interface.
  `default CodeBuilder`
  `getstatic(ClassDesc owner, String name, ClassDesc type)`
  Generates an instruction to get static field from a class or interface.
  `default CodeBuilder`
  `goto_(Label target)`
  Generates an instruction to branch always.
  `default CodeBuilder`
  `goto_w(Label target)`
  Generates an instruction to branch always with wide index.
  `default CodeBuilder`
  `i2b()`
  Generates an instruction to truncate an `int` into the range of `byte` and sign-extend it.
  `default CodeBuilder`
  `i2c()`
  Generates an instruction to truncate an `int` into the range of `char` and zero-extend it.
  `default CodeBuilder`
  `i2d()`
  Generates an instruction to convert an `int` into a `double`.
  `default CodeBuilder`
  `i2f()`
  Generates an instruction to convert an `int` into a `float`.
  `default CodeBuilder`
  `i2l()`
  Generates an instruction to convert an `int` into a `long`.
  `default CodeBuilder`
  `i2s()`
  Generates an instruction to truncate an `int` into the range of `short` and sign-extend it.
  `default CodeBuilder`
  `iadd()`
  Generates an instruction to add two `ints`.
  `default CodeBuilder`
  `iaload()`
  Generates an instruction to load from an `int` array.
  `default CodeBuilder`
  `iand()`
  Generates an instruction to calculate bitwise AND of `ints`, also used for `boolean` AND.
  `default CodeBuilder`
  `iastore()`
  Generates an instruction to store into an `int` array.
  `default CodeBuilder`
  `iconst_0()`
  Generates an instruction pushing `int` constant 0 onto the operand stack.
  `default CodeBuilder`
  `iconst_1()`
  Generates an instruction pushing `int` constant 1 onto the operand stack.
  `default CodeBuilder`
  `iconst_2()`
  Generates an instruction pushing `int` constant 2 onto the operand stack.
  `default CodeBuilder`
  `iconst_3()`
  Generates an instruction pushing `int` constant 3 onto the operand stack.
  `default CodeBuilder`
  `iconst_4()`
  Generates an instruction pushing `int` constant 4 onto the operand stack.
  `default CodeBuilder`
  `iconst_5()`
  Generates an instruction pushing `int` constant 5 onto the operand stack.
  `default CodeBuilder`
  `iconst_m1()`
  Generates an instruction pushing `int` constant -1 onto the operand stack.
  `default CodeBuilder`
  `idiv()`
  Generates an instruction to divide `ints`.
  `default CodeBuilder`
  `if_acmpeq(Label target)`
  Generates an instruction to branch if `reference` comparison `operand1 == operand2` succeeds.
  `default CodeBuilder`
  `if_acmpne(Label target)`
  Generates an instruction to branch if `reference` comparison `operand1 != operand2` succeeds.
  `default CodeBuilder`
  `if_icmpeq(Label target)`
  Generates an instruction to branch if `int` comparison `operand1 == operand2` succeeds.
  `default CodeBuilder`
  `if_icmpge(Label target)`
  Generates an instruction to branch if `int` comparison `operand1 >= operand2` succeeds.
  `default CodeBuilder`
  `if_icmpgt(Label target)`
  Generates an instruction to branch if `int` comparison `operand1 > operand2` succeeds.
  `default CodeBuilder`
  `if_icmple(Label target)`
  Generates an instruction to branch if `int` comparison `operand1 <= operand2` succeeds.
  `default CodeBuilder`
  `if_icmplt(Label target)`
  Generates an instruction to branch if `int` comparison `operand1 < operand2` succeeds.
  `default CodeBuilder`
  `if_icmpne(Label target)`
  Generates an instruction to branch if `int` comparison `operand1 != operand2` succeeds.
  `default CodeBuilder`
  `ifeq(Label target)`
  Generates an instruction to branch if `int` comparison with zero `== 0` succeeds.
  `default CodeBuilder`
  `ifge(Label target)`
  Generates an instruction to branch if `int` comparison with zero `>= 0` succeeds.
  `default CodeBuilder`
  `ifgt(Label target)`
  Generates an instruction to branch if `int` comparison with zero `> 0` succeeds.
  `default CodeBuilder`
  `ifle(Label target)`
  Generates an instruction to branch if `int` comparison with zero `<= 0` succeeds.
  `default CodeBuilder`
  `iflt(Label target)`
  Generates an instruction to branch if `int` comparison with zero `< 0` succeeds.
  `default CodeBuilder`
  `ifne(Label target)`
  Generates an instruction to branch if `int` comparison with zero `!= 0` succeeds.
  `default CodeBuilder`
  `ifnonnull(Label target)`
  Generates an instruction to branch if `reference` is not `null`.
  `default CodeBuilder`
  `ifnull(Label target)`
  Generates an instruction to branch if `reference` is `null`.
  `default CodeBuilder`
  `ifThen(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler)`
  Adds an "if-then" block that is conditional on the value(s) on top of the operand stack in accordance with the given opcode.
  `default CodeBuilder`
  `ifThen(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler)`
  Adds an "if-then" block that is conditional on the `boolean` value on top of the operand stack.
  `default CodeBuilder`
  `ifThenElse(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler)`
  Adds an "if-then-else" block that is conditional on the value(s) on top of the operand stack in accordance with the given opcode.
  `default CodeBuilder`
  `ifThenElse(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler)`
  Adds an "if-then-else" block that is conditional on the `boolean` value on top of the operand stack.
  `default CodeBuilder`
  `iinc(int slot, int val)`
  Generates an instruction to increment an `int` local variable by a constant.
  `default CodeBuilder`
  `iload(int slot)`
  Generates an instruction to load an `int` from a local variable.
  `default CodeBuilder`
  `imul()`
  Generates an instruction to multiply `ints`.
  `default CodeBuilder`
  `ineg()`
  Generates an instruction to negate an `int`.
  `default CodeBuilder`
  `instanceOf(ClassEntry target)`
  Generates an instruction to determine if an object is of the given type, producing a `boolean` result on the operand stack.
  `default CodeBuilder`
  `instanceOf(ClassDesc target)`
  Generates an instruction to determine if an object is of the given type, producing a `boolean` result on the operand stack.
  `default CodeBuilder`
  `invoke(Opcode opcode, MemberRefEntry ref)`
  Generates an instruction to invoke a method.
  `default CodeBuilder`
  `invoke(Opcode opcode, ClassDesc owner, String name, MethodTypeDesc desc, boolean isInterface)`
  Generates an instruction to invoke a method.
  `default CodeBuilder`
  `invokedynamic(InvokeDynamicEntry ref)`
  Generates an instruction to invoke a dynamically-computed call site.
  `default CodeBuilder`
  `invokedynamic(DynamicCallSiteDesc ref)`
  Generates an instruction to invoke a dynamically-computed call site.
  `default CodeBuilder`
  `invokeinterface(InterfaceMethodRefEntry ref)`
  Generates an instruction to invoke an interface method.
  `default CodeBuilder`
  `invokeinterface(ClassDesc owner, String name, MethodTypeDesc type)`
  Generates an instruction to invoke an interface method.
  `default CodeBuilder`
  `invokespecial(InterfaceMethodRefEntry ref)`
  Generates an instruction to invoke an instance method in an interface; direct invocation of methods of the current class and its supertypes.
  `default CodeBuilder`
  `invokespecial(MethodRefEntry ref)`
  Generates an instruction to invoke an instance method in a class; direct invocation of instance initialization methods and methods of the current class and its supertypes.
  `default CodeBuilder`
  `invokespecial(ClassDesc owner, String name, MethodTypeDesc type)`
  Generates an instruction to invoke an instance method in a class; direct invocation of instance initialization methods and methods of the current class and its supertypes.
  `default CodeBuilder`
  `invokespecial(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface)`
  Generates an instruction to invoke an instance method; direct invocation of instance initialization methods and methods of the current class and its supertypes.
  `default CodeBuilder`
  `invokestatic(InterfaceMethodRefEntry ref)`
  Generates an instruction to invoke a class (static) method of an interface.
  `default CodeBuilder`
  `invokestatic(MethodRefEntry ref)`
  Generates an instruction to invoke a class (static) method of a class.
  `default CodeBuilder`
  `invokestatic(ClassDesc owner, String name, MethodTypeDesc type)`
  Generates an instruction to invoke a class (static) method of a class.
  `default CodeBuilder`
  `invokestatic(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface)`
  Generates an instruction to invoke a class (static) method.
  `default CodeBuilder`
  `invokevirtual(MethodRefEntry ref)`
  Generates an instruction to invoke an instance method; dispatch based on class.
  `default CodeBuilder`
  `invokevirtual(ClassDesc owner, String name, MethodTypeDesc type)`
  Generates an instruction to invoke an instance method; dispatch based on class.
  `default CodeBuilder`
  `ior()`
  Generates an instruction to calculate bitwise OR of `ints`, also used for `boolean` OR.
  `default CodeBuilder`
  `irem()`
  Generates an instruction to calculate `ints` remainder.
  `default CodeBuilder`
  `ireturn()`
  Generates an instruction to return an `int` from this method.
  `default CodeBuilder`
  `ishl()`
  Generates an instruction to shift an `int` left.
  `default CodeBuilder`
  `ishr()`
  Generates an instruction to shift an `int` right.
  `default CodeBuilder`
  `istore(int slot)`
  Generates an instruction to store an `int` into a local variable.
  `default CodeBuilder`
  `isub()`
  Generates an instruction to subtract `ints`.
  `default CodeBuilder`
  `iushr()`
  Generates an instruction to logical shift an `int` right.
  `default CodeBuilder`
  `ixor()`
  Generates an instruction to calculate bitwise XOR of `ints`.
  `default CodeBuilder`
  `l2d()`
  Generates an instruction to convert a `long` into a `double`.
  `default CodeBuilder`
  `l2f()`
  Generates an instruction to convert a `long` into a `float`.
  `default CodeBuilder`
  `l2i()`
  Generates an instruction to convert a `long` into an `int`.
  `default CodeBuilder`
  `labelBinding(Label label)`
  Binds a label to the current position.
  `default CodeBuilder`
  `ladd()`
  Generates an instruction to add two `longs`.
  `default CodeBuilder`
  `laload()`
  Generates an instruction to load from a `long` array.
  `default CodeBuilder`
  `land()`
  Generates an instruction to calculate bitwise AND of `longs`.
  `default CodeBuilder`
  `lastore()`
  Generates an instruction to store into a `long` array.
  `default CodeBuilder`
  `lcmp()`
  Generates an instruction to compare `longs`.
  `default CodeBuilder`
  `lconst_0()`
  Generates an instruction pushing `long` constant 0 onto the operand stack.
  `default CodeBuilder`
  `lconst_1()`
  Generates an instruction pushing `long` constant 1 onto the operand stack.
  `default CodeBuilder`
  `ldc(LoadableConstantEntry entry)`
  Generates an instruction pushing an item from the run-time constant pool onto the operand stack.
  `default CodeBuilder`
  `ldc(ConstantDesc value)`
  Generates an instruction pushing an item from the run-time constant pool onto the operand stack.
  `default CodeBuilder`
  `ldiv()`
  Generates an instruction to divide `longs`.
  `default CodeBuilder`
  `lineNumber(int line)`
  Declares a source line number beginning at the current position.
  `default CodeBuilder`
  `lload(int slot)`
  Generates an instruction to load a `long` from a local variable.
  `default CodeBuilder`
  `lmul()`
  Generates an instruction to multiply `longs`.
  `default CodeBuilder`
  `lneg()`
  Generates an instruction to negate a `long`.
  `default CodeBuilder`
  `loadConstant(double value)`
  Generates an instruction pushing a constant `double` value onto the operand stack.
  `default CodeBuilder`
  `loadConstant(float value)`
  Generates an instruction pushing a constant `float` value onto the operand stack.
  `default CodeBuilder`
  `loadConstant(int value)`
  Generates an instruction pushing a constant `int` value onto the operand stack.
  `default CodeBuilder`
  `loadConstant(long value)`
  Generates an instruction pushing a constant `long` value onto the operand stack.
  `default CodeBuilder`
  `loadConstant(ConstantDesc value)`
  Generates an instruction pushing a constant onto the operand stack.
  `default CodeBuilder`
  `loadLocal(TypeKind tk, int slot)`
  Generates an instruction to load a value from a local variable.
  `default CodeBuilder`
  `localVariable(int slot, Utf8Entry nameEntry, Utf8Entry descriptorEntry, Label startScope, Label endScope)`
  Declares a local variable entry.
  `default CodeBuilder`
  `localVariable(int slot, String name, ClassDesc descriptor, Label startScope, Label endScope)`
  Declares a local variable entry.
  `default CodeBuilder`
  `localVariableType(int slot, Utf8Entry nameEntry, Utf8Entry signatureEntry, Label startScope, Label endScope)`
  Declares a local variable type entry.
  `default CodeBuilder`
  `localVariableType(int slot, String name, Signature signature, Label startScope, Label endScope)`
  Declares a local variable type entry.
  `default CodeBuilder`
  `lookupswitch(Label defaultTarget, List<SwitchCase> cases)`
  Generates an instruction to access a jump table by key match and jump.
  `default CodeBuilder`
  `lor()`
  Generates an instruction to calculate bitwise OR of `longs`.
  `default CodeBuilder`
  `lrem()`
  Generates an instruction to calculate `longs` remainder.
  `default CodeBuilder`
  `lreturn()`
  Generates an instruction to return a `long` from this method.
  `default CodeBuilder`
  `lshl()`
  Generates an instruction to shift a `long` left.
  `default CodeBuilder`
  `lshr()`
  Generates an instruction to shift a `long` right.
  `default CodeBuilder`
  `lstore(int slot)`
  Generates an instruction to store a `long` into a local variable.
  `default CodeBuilder`
  `lsub()`
  Generates an instruction to subtract `longs`.
  `default CodeBuilder`
  `lushr()`
  Generates an instruction to logical shift a `long` right.
  `default CodeBuilder`
  `lxor()`
  Generates an instruction to calculate bitwise XOR of `longs`.
  `default CodeBuilder`
  `monitorenter()`
  Generates an instruction to enter monitor for an object.
  `default CodeBuilder`
  `monitorexit()`
  Generates an instruction to exit monitor for an object.
  `default CodeBuilder`
  `multianewarray(ClassEntry array, int dims)`
  Generates an instruction to create a new multidimensional array.
  `default CodeBuilder`
  `multianewarray(ClassDesc array, int dims)`
  Generates an instruction to create a new multidimensional array.
  `default CodeBuilder`
  `new_(ClassEntry clazz)`
  Generates an instruction to create a new object.
  `default CodeBuilder`
  `new_(ClassDesc clazz)`
  Generates an instruction to create a new object.
  `default CodeBuilder`
  `newarray(TypeKind typeKind)`
  Generates an instruction to create a new array of a primitive type.
  `default Label`
  `newBoundLabel()`
  Creates a new label bound at the current position.
  `Label`
  `newLabel()`
  Returns a fresh unbound label.
  `default CodeBuilder`
  `nop()`
  Generates a do-nothing instruction.
  `int`
  `parameterSlot(int paramNo)`
  Returns the local variable slot associated with the specified parameter.
  `default CodeBuilder`
  `pop()`
  Generates an instruction to pop the top operand stack value.
  `default CodeBuilder`
  `pop2()`
  Generates an instruction to pop the top one or two operand stack values.
  `default CodeBuilder`
  `putfield(FieldRefEntry ref)`
  Generates an instruction to set field in an object.
  `default CodeBuilder`
  `putfield(ClassDesc owner, String name, ClassDesc type)`
  Generates an instruction to set field in an object.
  `default CodeBuilder`
  `putstatic(FieldRefEntry ref)`
  Generates an instruction to set static field in a class.
  `default CodeBuilder`
  `putstatic(ClassDesc owner, String name, ClassDesc type)`
  Generates an instruction to set static field in a class.
  `int`
  `receiverSlot()`
  Returns the local variable slot associated with the receiver.
  `default CodeBuilder`
  `return_()`
  Generates an instruction to return `void` from this method.
  `default CodeBuilder`
  `return_(TypeKind tk)`
  Generates a return instruction.
  `default CodeBuilder`
  `saload()`
  Generates an instruction to load from a `short` array.
  `default CodeBuilder`
  `sastore()`
  Generates an instruction to store into a `short` array.
  `default CodeBuilder`
  `sipush(int s)`
  Generates an instruction pushing an `int` in the range of `short`, `[-32768, 32767]`, onto the operand stack.
  `Label`
  `startLabel()`
  Returns the label associated with the beginning of the current block.
  `default CodeBuilder`
  `storeLocal(TypeKind tk, int slot)`
  Generates an instruction to store a value to a local variable.
  `default CodeBuilder`
  `swap()`
  Generates an instruction to swap the top two operand stack values.
  `default CodeBuilder`
  `tableswitch(int low, int high, Label defaultTarget, List<SwitchCase> cases)`
  Generates an instruction to access a jump table by index and jump.
  `default CodeBuilder`
  `tableswitch(Label defaultTarget, List<SwitchCase> cases)`
  Generates an instruction to access a jump table by index and jump.
  `default CodeBuilder`
  `transforming(CodeTransform transform, Consumer<CodeBuilder> handler)`
  Apply a transform to the code built by a handler, directing results to this builder.
  `default CodeBuilder`
  `trying(Consumer<CodeBuilder.BlockCodeBuilder> tryHandler, Consumer<CodeBuilder.CatchBuilder> catchesHandler)`
  Adds a "try-catch" block comprising one try block and zero or more catch blocks.

  ### Methods declared in interface ClassFileBuilder

  `accept, constantPool, transform, with`

  ### Methods declared in interface Consumer

  `andThen`

- ## Method Details

  - ### newLabel

    Label newLabel()
    Returns a fresh unbound label. The label can be bound with `labelBinding(Label)`.
    Returns:
      a fresh unbound label

  - ### startLabel

    Label startLabel()
    Returns the label associated with the beginning of the current block. If this builder is not a "block" builder, such as those provided by `block(Consumer)` or `ifThenElse(Consumer, Consumer)`, the current block will be the entire method body.
    Returns:
      the label associated with the beginning of the current block

  - ### endLabel

    Label endLabel()
    Returns the label associated with the end of the current block. If this builder is not a "block" builder, such as those provided by `block(Consumer)` or `ifThenElse(Consumer, Consumer)`, the current block will be the entire method body.
    Returns:
      the label associated with the end of the current block

  - ### receiverSlot

    int receiverSlot()
    Returns the local variable slot associated with the receiver.
    Returns:
      the local variable slot associated with the receiver
    Throws:
      `IllegalStateException` - if this is a static method

  - ### parameterSlot

    int parameterSlot(int paramNo)
    Returns the local variable slot associated with the specified parameter. The returned value is adjusted for the receiver slot (if the method is an instance method) and for the requirement that `long` and `double` values require two slots.
    Parameters:
      `paramNo` - the index of the parameter
    Returns:
      the local variable slot associated with the specified parameter
    Throws:
      `IndexOutOfBoundsException` - if the parameter index is out of bounds

  - ### allocateLocal

    int allocateLocal(TypeKind typeKind)
    Returns the local variable slot of a fresh local variable. This method makes reasonable efforts to determine which slots are in use and which are not. When transforming a method, fresh locals begin at the `maxLocals` of the original method. For a method being built directly, fresh locals begin after the last parameter slot.

    If the current code builder is a `CodeBuilder.BlockCodeBuilder`, at the end of the block, locals are reset to their value at the beginning of the block.

    Parameters:
      `typeKind` - the type of the local variable
    Returns:
      the local variable slot of a fresh local variable

  - ### transforming

    default CodeBuilder transforming(CodeTransform transform, Consumer<CodeBuilder> handler)
    Apply a transform to the code built by a handler, directing results to this builder.
    API Note:
      This is similar to `ClassFileBuilder.transform(CompoundElement, ClassFileTransform)`, but this does not require the code elements to be viewed as a `CodeModel` first.
    Parameters:
      `transform` - the transform to apply to the code built by the handler
      `handler` - the handler that receives a `CodeBuilder` to build the code
    Returns:
      this builder

  - ### block

    default CodeBuilder block(Consumer<CodeBuilder.BlockCodeBuilder> handler)
    Adds a lexical block to the method being built.

    Within this block, the `startLabel()` and `endLabel()` correspond to the start and end of the block, and the `CodeBuilder.BlockCodeBuilder.breakLabel()` also corresponds to the end of the block, or the cursor position immediately after this call in this builder.

    Parameters:
      `handler` - handler that receives a `CodeBuilder.BlockCodeBuilder` to generate the body of the lexical block
    Returns:
      this builder

  - ### ifThen

    default CodeBuilder ifThen(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler)
    Adds an "if-then" block that is conditional on the `boolean` value on top of the operand stack. Control flow enters the "then" block if the value represents `true`.

    The `CodeBuilder.BlockCodeBuilder.breakLabel()` for the "then" block corresponds to the cursor position immediately after this call in this builder.

    Parameters:
      `thenHandler` - handler that receives a CodeBuilder.BlockCodeBuilder to generate the body of the `if`
    Returns:
      this builder
    See Also:
      - `ifThen(Opcode, Consumer)`

  - ### ifThen

    default CodeBuilder ifThen(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler)
    Adds an "if-then" block that is conditional on the value(s) on top of the operand stack in accordance with the given opcode. Control flow enters the "then" block if the branching condition for `opcode` succeeds.

    The `CodeBuilder.BlockCodeBuilder.breakLabel()` for the "then" block corresponds to the cursor position immediately after this call in this builder.

    Parameters:
      `opcode` - the operation code for a branch instruction that accepts one or two operands on the stack
      `thenHandler` - handler that receives a `CodeBuilder.BlockCodeBuilder` to generate the body of the `if`
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if the operation code is not for a branch instruction that accepts one or two operands

  - ### ifThenElse

    default CodeBuilder ifThenElse(Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler)
    Adds an "if-then-else" block that is conditional on the `boolean` value on top of the operand stack. Control flow enters the "then" block if the value represents `true`, and enters the "else" block otherwise.

    The `CodeBuilder.BlockCodeBuilder.breakLabel()` for each block corresponds to the cursor position immediately after this call in this builder.

    Parameters:
      `thenHandler` - handler that receives a `CodeBuilder.BlockCodeBuilder` to generate the body of the `if`
      `elseHandler` - handler that receives a `CodeBuilder.BlockCodeBuilder` to generate the body of the `else`
    Returns:
      this builder
    See Also:
      - `ifThenElse(Opcode, Consumer, Consumer)`

  - ### ifThenElse

    default CodeBuilder ifThenElse(Opcode opcode, Consumer<CodeBuilder.BlockCodeBuilder> thenHandler, Consumer<CodeBuilder.BlockCodeBuilder> elseHandler)
    Adds an "if-then-else" block that is conditional on the value(s) on top of the operand stack in accordance with the given opcode. Control flow enters the "then" block if the branching condition for `opcode` succeeds, and enters the "else" block otherwise.

    The `CodeBuilder.BlockCodeBuilder.breakLabel()` for each block corresponds to the cursor position immediately after this call in this builder.

    Parameters:
      `opcode` - the operation code for a branch instruction that accepts one or two operands on the stack
      `thenHandler` - handler that receives a CodeBuilder.BlockCodeBuilder to generate the body of the `if`
      `elseHandler` - handler that receives a CodeBuilder.BlockCodeBuilder to generate the body of the `else`
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if the operation code is not for a branch instruction that accepts one or two operands

  - ### trying

    default CodeBuilder trying(Consumer<CodeBuilder.BlockCodeBuilder> tryHandler, Consumer<CodeBuilder.CatchBuilder> catchesHandler)
    Adds a "try-catch" block comprising one try block and zero or more catch blocks. Exceptions thrown by instructions in the try block may be caught by catch blocks.

    The `CodeBuilder.BlockCodeBuilder.breakLabel()` for the try block and all catch blocks in the `catchesHandler` correspond to the cursor position immediately after this call in this builder.

    Parameters:
      `tryHandler` - handler that receives a `CodeBuilder.BlockCodeBuilder` to generate the body of the try block.
      `catchesHandler` - a handler that receives a `CodeBuilder.CatchBuilder` to generate bodies of catch blocks
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if the try block is empty
    See Also:
      - `CodeBuilder.CatchBuilder`
      - `ExceptionCatch`
      - `exceptionCatch(Label, Label, Label, ClassEntry)`

  - ### loadLocal

    default CodeBuilder loadLocal(TypeKind tk, int slot)
    Generates an instruction to load a value from a local variable.
    Parameters:
      `tk` - the load type
      `slot` - the local variable slot
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `tk` is `void` or `slot` is out of range
    See Also:
      - `LoadInstruction`

  - ### storeLocal

    default CodeBuilder storeLocal(TypeKind tk, int slot)
    Generates an instruction to store a value to a local variable.
    Parameters:
      `tk` - the store type
      `slot` - the local variable slot
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `tk` is `void` or `slot` is out of range
    See Also:
      - `StoreInstruction`

  - ### branch

    default CodeBuilder branch(Opcode op, Label target)
    Generates a branch instruction.

    This may generate multiple instructions to accomplish the same effect if `ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS` is set, the opcode has size 3, and `target` cannot be encoded as a BCI offset in `[-32768, 32767]`.

    Parameters:
      `op` - the branch opcode
      `target` - the branch target
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `op` is not of `Opcode.Kind.BRANCH`
    See Also:
      - `BranchInstruction`

  - ### return_

    default CodeBuilder return_(TypeKind tk)
    Generates a return instruction.
    Parameters:
      `tk` - the return type
    Returns:
      this builder
    See Also:
      - `ReturnInstruction`

  - ### fieldAccess

    default CodeBuilder fieldAccess(Opcode opcode, FieldRefEntry ref)
    Generates an instruction to access a field.
    Parameters:
      `opcode` - the field access opcode
      `ref` - the field reference
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `opcode` is not of `Opcode.Kind.FIELD_ACCESS`
    See Also:
      - `FieldInstruction`

  - ### fieldAccess

    default CodeBuilder fieldAccess(Opcode opcode, ClassDesc owner, String name, ClassDesc type)
    Generates an instruction to access a field.
    Parameters:
      `opcode` - the field access opcode
      `owner` - the class
      `name` - the field name
      `type` - the field type
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `opcode` is not of `Opcode.Kind.FIELD_ACCESS`, or `owner` is primitive
    See Also:
      - `FieldInstruction`

  - ### invoke

    default CodeBuilder invoke(Opcode opcode, MemberRefEntry ref)
    Generates an instruction to invoke a method.
    Parameters:
      `opcode` - the invoke opcode
      `ref` - the interface method or method reference
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `opcode` is not of `Opcode.Kind.INVOKE`
    See Also:
      - `InvokeInstruction`

  - ### invoke

    default CodeBuilder invoke(Opcode opcode, ClassDesc owner, String name, MethodTypeDesc desc, boolean isInterface)
    Generates an instruction to invoke a method.
    Parameters:
      `opcode` - the invoke opcode
      `owner` - the class
      `name` - the method name
      `desc` - the method type
      `isInterface` - whether the owner class is an interface
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `opcode` is not of `Opcode.Kind.INVOKE`, or `owner` is primitive
    See Also:
      - `InvokeInstruction`

  - ### arrayLoad

    default CodeBuilder arrayLoad(TypeKind tk)
    Generates an instruction to load from an array.
    Parameters:
      `tk` - the array element type
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `tk` is `void`
    See Also:
      - `ArrayLoadInstruction`

  - ### arrayStore

    default CodeBuilder arrayStore(TypeKind tk)
    Generates an instruction to store into an array.
    Parameters:
      `tk` - the array element type
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `tk` is `void`
    See Also:
      - `ArrayStoreInstruction`

  - ### conversion

    default CodeBuilder conversion(TypeKind fromType, TypeKind toType)
    Generates instruction(s) to convert `fromType` to `toType`.
    Parameters:
      `fromType` - the source type
      `toType` - the target type
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - for conversions of `void` or `reference`
    See Also:
      - `ConvertInstruction`

  - ### loadConstant

    default CodeBuilder loadConstant(ConstantDesc value)
    Generates an instruction pushing a constant onto the operand stack.
    Parameters:
      `value` - the constant value, may be `null`
    Returns:
      this builder
    See Also:
      - `ConstantInstruction`

  - ### loadConstant

    default CodeBuilder loadConstant(int value)
    Generates an instruction pushing a constant `int` value onto the operand stack. This is equivalent to `loadConstant(Integer.valueOf(value))`.
    Parameters:
      `value` - the int value
    Returns:
      this builder
    See Also:
      - `ConstantInstruction`

  - ### loadConstant

    default CodeBuilder loadConstant(long value)
    Generates an instruction pushing a constant `long` value onto the operand stack. This is equivalent to `loadConstant(Long.valueOf(value))`.
    Parameters:
      `value` - the long value
    Returns:
      this builder
    See Also:
      - `ConstantInstruction`

  - ### loadConstant

    default CodeBuilder loadConstant(float value)
    Generates an instruction pushing a constant `float` value onto the operand stack. This is equivalent to `loadConstant(Float.valueOf(value))`.

    All NaN values of the `float` may or may not be collapsed into a single "canonical" NaN value.

    Parameters:
      `value` - the float value
    Returns:
      this builder
    See Also:
      - `ConstantInstruction`

  - ### loadConstant

    default CodeBuilder loadConstant(double value)
    Generates an instruction pushing a constant `double` value onto the operand stack. This is equivalent to `loadConstant(Double.valueOf(value))`.

    All NaN values of the `double` may or may not be collapsed into a single "canonical" NaN value.

    Parameters:
      `value` - the double value
    Returns:
      this builder
    See Also:
      - `ConstantInstruction`

  - ### nop

    default CodeBuilder nop()
    Generates a do-nothing instruction.
    Returns:
      this builder
    See Also:
      - `NopInstruction`

  - ### newBoundLabel

    default Label newBoundLabel()
    Creates a new label bound at the current position.
    Returns:
      this builder
    See Also:
      - `newLabel()`
      - `labelBinding(Label)`

  - ### labelBinding

    default CodeBuilder labelBinding(Label label)
    Binds a label to the current position.
    API Note:
      The label to bind does not have to be from this builder; it can be from another parsed `CodeModel`.
    Parameters:
      `label` - the label
    Returns:
      this builder
    See Also:
      - `LabelTarget`

  - ### lineNumber

    default CodeBuilder lineNumber(int line)
    Declares a source line number beginning at the current position.

    This call may be ignored according to `ClassFile.LineNumbersOption`.

    Parameters:
      `line` - the line number
    Returns:
      this builder
    See Also:
      - `LineNumber`

  - ### exceptionCatch

    default CodeBuilder exceptionCatch(Label start, Label end, Label handler, ClassEntry catchType)
    Declares an exception table entry.

    This call may be ignored if any of the argument labels is not bound and `ClassFile.DeadLabelsOption.DROP_DEAD_LABELS` is set.

    Parameters:
      `start` - the try block start
      `end` - the try block end
      `handler` - the exception handler start
      `catchType` - the catch type, may be `null` to catch all exceptions and errors
    Returns:
      this builder
    See Also:
      - `ExceptionCatch`
      - `trying(Consumer, Consumer)`

  - ### exceptionCatch

    default CodeBuilder exceptionCatch(Label start, Label end, Label handler, Optional<ClassEntry> catchType)
    Declares an exception table entry.

    This call may be ignored if any of the argument labels is not bound and `ClassFile.DeadLabelsOption.DROP_DEAD_LABELS` is set.

    Parameters:
      `start` - the try block start
      `end` - the try block end
      `handler` - the exception handler start
      `catchType` - the optional catch type, empty to catch all exceptions and errors
    Returns:
      this builder
    See Also:
      - `ExceptionCatch`
      - `trying(Consumer, Consumer)`

  - ### exceptionCatch

    default CodeBuilder exceptionCatch(Label start, Label end, Label handler, ClassDesc catchType)
    Declares an exception table entry.

    This call may be ignored if any of the argument labels is not bound and `ClassFile.DeadLabelsOption.DROP_DEAD_LABELS` is set.

    Parameters:
      `start` - the try block start
      `end` - the try block end
      `handler` - the exception handler start
      `catchType` - the catch type
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `catchType` is primitive
    See Also:
      - `ExceptionCatch`
      - `trying(Consumer, Consumer)`

  - ### exceptionCatchAll

    default CodeBuilder exceptionCatchAll(Label start, Label end, Label handler)
    Declares an exception table entry catching all exceptions and errors.

    This call may be ignored if any of the argument labels is not bound and `ClassFile.DeadLabelsOption.DROP_DEAD_LABELS` is set.

    Parameters:
      `start` - the try block start
      `end` - the try block end
      `handler` - the exception handler start
    Returns:
      this builder
    See Also:
      - `ExceptionCatch`
      - `trying(Consumer, Consumer)`

  - ### characterRange

    default CodeBuilder characterRange(Label startScope, Label endScope, int characterRangeStart, int characterRangeEnd, int flags)
    Declares a character range entry.

    This call may be ignored if `ClassFile.DebugElementsOption.DROP_DEBUG` is set, or if any of the argument labels is not bound and `ClassFile.DeadLabelsOption.DROP_DEAD_LABELS` is set.

    Parameters:
      `startScope` - the start scope of the character range
      `endScope` - the end scope of the character range
      `characterRangeStart` - the encoded start of the character range region (inclusive)
      `characterRangeEnd` - the encoded end of the character range region (exclusive)
      `flags` - the flags word, indicating the kind of range
    Returns:
      this builder
    See Also:
      - `CharacterRange`

  - ### localVariable

    default CodeBuilder localVariable(int slot, Utf8Entry nameEntry, Utf8Entry descriptorEntry, Label startScope, Label endScope)
    Declares a local variable entry.

    This call may be ignored if `ClassFile.DebugElementsOption.DROP_DEBUG` is set, or if any of the argument labels is not bound and `ClassFile.DeadLabelsOption.DROP_DEAD_LABELS` is set.

    Parameters:
      `slot` - the local variable slot
      `nameEntry` - the variable name
      `descriptorEntry` - the variable descriptor
      `startScope` - the start scope of the variable
      `endScope` - the end scope of the variable
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `slot` is out of range
    See Also:
      - `LocalVariable`

  - ### localVariable

    default CodeBuilder localVariable(int slot, String name, ClassDesc descriptor, Label startScope, Label endScope)
    Declares a local variable entry.

    This call may be ignored if `ClassFile.DebugElementsOption.DROP_DEBUG` is set, or if any of the argument labels is not bound and `ClassFile.DeadLabelsOption.DROP_DEAD_LABELS` is set.

    Parameters:
      `slot` - the local variable slot
      `name` - the variable name
      `descriptor` - the variable descriptor
      `startScope` - the start scope of the variable
      `endScope` - the end scope of the variable
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `slot` is out of range
    See Also:
      - `LocalVariable`

  - ### localVariableType

    default CodeBuilder localVariableType(int slot, Utf8Entry nameEntry, Utf8Entry signatureEntry, Label startScope, Label endScope)
    Declares a local variable type entry.

    This call may be ignored if `ClassFile.DebugElementsOption.DROP_DEBUG` is set, or if any of the argument labels is not bound and `ClassFile.DeadLabelsOption.DROP_DEAD_LABELS` is set.

    API Note:
      When a local variable type entry is declared, a local variable entry with the descriptor derived from erasure (JLS 4.6) of the signature should be declared as well.
    Parameters:
      `slot` - the local variable slot
      `nameEntry` - the variable name
      `signatureEntry` - the variable signature
      `startScope` - the start scope of the variable
      `endScope` - the end scope of the variable
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `slot` is out of range
    See Also:
      - `LocalVariableType`

  - ### localVariableType

    default CodeBuilder localVariableType(int slot, String name, Signature signature, Label startScope, Label endScope)
    Declares a local variable type entry.

    This call may be ignored if `ClassFile.DebugElementsOption.DROP_DEBUG` is set, or if any of the argument labels is not bound and `ClassFile.DeadLabelsOption.DROP_DEAD_LABELS` is set.

    API Note:
      When a local variable type entry is declared, a local variable entry with the descriptor derived from erasure (JLS 4.6) of the signature should be declared as well.
    Parameters:
      `slot` - the local variable slot
      `name` - the variable name
      `signature` - the variable signature
      `startScope` - the start scope of the variable
      `endScope` - the end scope of the variable
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `slot` is out of range
    See Also:
      - `LocalVariableType`

  - ### aconst_null

    default CodeBuilder aconst_null()
    Generates an instruction pushing the null object `reference` onto the operand stack.
    Returns:
      this builder
    See Also:
      - `Opcode.ACONST_NULL`
      - `ConstantInstruction.IntrinsicConstantInstruction`

  - ### aaload

    default CodeBuilder aaload()
    Generates an instruction to load from a `reference` array.
    Returns:
      this builder
    See Also:
      - `Opcode.AALOAD`
      - `arrayLoad(TypeKind)`
      - `ArrayLoadInstruction`

  - ### aastore

    default CodeBuilder aastore()
    Generates an instruction to store into a `reference` array.
    Returns:
      this builder
    See Also:
      - `Opcode.AASTORE`
      - `arrayStore(TypeKind)`
      - `ArrayStoreInstruction`

  - ### aload

    default CodeBuilder aload(int slot)
    Generates an instruction to load a `reference` from a local variable.

    This may also generate `aload_<N>` and `wide aload` instructions.

    Parameters:
      `slot` - the local variable slot
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `slot` is out of range
    See Also:
      - `Opcode.ALOAD`
      - `loadLocal(TypeKind, int)`
      - `LoadInstruction`

  - ### anewarray

    default CodeBuilder anewarray(ClassEntry classEntry)
    Generates an instruction to create a new array of `reference`.
    Parameters:
      `classEntry` - the component type
    Returns:
      this builder
    See Also:
      - `Opcode.ANEWARRAY`
      - `NewReferenceArrayInstruction`

  - ### anewarray

    default CodeBuilder anewarray(ClassDesc className)
    Generates an instruction to create a new array of `reference`.
    Parameters:
      `className` - the component type
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `className` represents a primitive type
    See Also:
      - `Opcode.ANEWARRAY`
      - `NewReferenceArrayInstruction`

  - ### areturn

    default CodeBuilder areturn()
    Generates an instruction to return a `reference` from this method.
    Returns:
      this builder
    See Also:
      - `Opcode.ARETURN`
      - `return_(TypeKind)`
      - `ReturnInstruction`

  - ### arraylength

    default CodeBuilder arraylength()
    Generates an instruction to get the length of an array.
    Returns:
      this builder
    See Also:
      - `Opcode.ARRAYLENGTH`
      - `OperatorInstruction`

  - ### astore

    default CodeBuilder astore(int slot)
    Generates an instruction to store a `reference` into a local variable. Such an instruction can also store a `returnAddress`.

    This may also generate `astore_<N>` and `wide astore` instructions.

    Parameters:
      `slot` - the local variable slot
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `slot` is out of range
    See Also:
      - `Opcode.ASTORE`
      - `storeLocal(TypeKind, int)`
      - `StoreInstruction`

  - ### athrow

    default CodeBuilder athrow()
    Generates an instruction to throw an exception or error.
    Returns:
      this builder
    See Also:
      - `Opcode.ATHROW`
      - `ThrowInstruction`

  - ### baload

    default CodeBuilder baload()
    Generates an instruction to load from a `byte` or `boolean` array.
    Returns:
      this builder
    See Also:
      - `Opcode.BALOAD`
      - `arrayLoad(TypeKind)`
      - `ArrayLoadInstruction`

  - ### bastore

    default CodeBuilder bastore()
    Generates an instruction to store into a `byte` or `boolean` array.
    Returns:
      this builder
    See Also:
      - `Opcode.BASTORE`
      - `arrayStore(TypeKind)`
      - `ArrayStoreInstruction`

  - ### bipush

    default CodeBuilder bipush(int b)
    Generates an instruction pushing an `int` in the range of `byte` (`[-128, 127]`) onto the operand stack.
    Parameters:
      `b` - the int in the range of byte
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `b` is out of range of byte
    See Also:
      - `Opcode.BIPUSH`
      - `loadConstant(int)`
      - `ConstantInstruction.IntrinsicConstantInstruction`

  - ### caload

    default CodeBuilder caload()
    Generates an instruction to load from a `char` array.
    Returns:
      this builder
    See Also:
      - `Opcode.CALOAD`
      - `arrayLoad(TypeKind)`
      - `ArrayLoadInstruction`

  - ### castore

    default CodeBuilder castore()
    Generates an instruction to store into a `char` array.
    Returns:
      this builder
    See Also:
      - `Opcode.CASTORE`
      - `arrayStore(TypeKind)`
      - `ArrayStoreInstruction`

  - ### checkcast

    default CodeBuilder checkcast(ClassEntry type)
    Generates an instruction to check whether an object is of the given type, throwing a `ClassCastException` if the check fails.
    Parameters:
      `type` - the object type
    Returns:
      this builder
    See Also:
      - `Opcode.CHECKCAST`
      - `TypeCheckInstruction`

  - ### checkcast

    default CodeBuilder checkcast(ClassDesc type)
    Generates an instruction to check whether an object is of the given type, throwing a `ClassCastException` if the check fails.
    Parameters:
      `type` - the object type
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `type` represents a primitive type
    See Also:
      - `Opcode.CHECKCAST`
      - `TypeCheckInstruction`

  - ### d2f

    default CodeBuilder d2f()
    Generates an instruction to convert a `double` into a `float`.
    Returns:
      this builder
    See Also:
      - `Opcode.D2F`
      - `ConvertInstruction`

  - ### d2i

    default CodeBuilder d2i()
    Generates an instruction to convert a `double` into an `int`.
    Returns:
      this builder
    See Also:
      - `Opcode.D2I`
      - `ConvertInstruction`

  - ### d2l

    default CodeBuilder d2l()
    Generates an instruction to convert a `double` into a `long`.
    Returns:
      this builder
    See Also:
      - `Opcode.D2L`
      - `ConvertInstruction`

  - ### dadd

    default CodeBuilder dadd()
    Generates an instruction to add two `doubles`.
    Returns:
      this builder
    See Also:
      - `Opcode.DADD`
      - `OperatorInstruction`

  - ### daload

    default CodeBuilder daload()
    Generates an instruction to load from a `double` array.
    Returns:
      this builder
    See Also:
      - `Opcode.DALOAD`
      - `arrayLoad(TypeKind)`
      - `ArrayLoadInstruction`

  - ### dastore

    default CodeBuilder dastore()
    Generates an instruction to store into a `double` array.
    Returns:
      this builder
    See Also:
      - `Opcode.DASTORE`
      - `arrayStore(TypeKind)`
      - `ArrayStoreInstruction`

  - ### dcmpg

    default CodeBuilder dcmpg()
    Generates an instruction to compare two `doubles`, producing `1` if any operand is `NaN`.
    Returns:
      this builder
    See Also:
      - `Opcode.DCMPG`
      - `OperatorInstruction`

  - ### dcmpl

    default CodeBuilder dcmpl()
    Generates an instruction to compare two `doubles`, producing `-1` if any operand is `NaN`.
    Returns:
      this builder
    See Also:
      - `Opcode.DCMPL`
      - `OperatorInstruction`

  - ### dconst_0

    default CodeBuilder dconst_0()
    Generates an instruction pushing `double` constant 0 onto the operand stack.
    Returns:
      this builder
    See Also:
      - `Opcode.DCONST_0`
      - `loadConstant(double)`
      - `ConstantInstruction.IntrinsicConstantInstruction`

  - ### dconst_1

    default CodeBuilder dconst_1()
    Generates an instruction pushing `double` constant 1 onto the operand stack.
    Returns:
      this builder
    See Also:
      - `Opcode.DCONST_1`
      - `loadConstant(double)`
      - `ConstantInstruction.IntrinsicConstantInstruction`

  - ### ddiv

    default CodeBuilder ddiv()
    Generates an instruction to divide `doubles`.
    Returns:
      this builder
    See Also:
      - `Opcode.DDIV`
      - `OperatorInstruction`

  - ### dload

    default CodeBuilder dload(int slot)
    Generates an instruction to load a `double` from a local variable.

    This may also generate `dload_<N>` and `wide dload` instructions.

    Parameters:
      `slot` - the local variable slot
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `slot` is out of range
    See Also:
      - `Opcode.DLOAD`
      - `loadLocal(TypeKind, int)`
      - `LoadInstruction`

  - ### dmul

    default CodeBuilder dmul()
    Generates an instruction to multiply `doubles`.
    Returns:
      this builder
    See Also:
      - `Opcode.DMUL`
      - `OperatorInstruction`

  - ### dneg

    default CodeBuilder dneg()
    Generates an instruction to negate a `double`.
    Returns:
      this builder
    See Also:
      - `Opcode.DNEG`
      - `OperatorInstruction`

  - ### drem

    default CodeBuilder drem()
    Generates an instruction to calculate `double` remainder.
    Returns:
      this builder
    See Also:
      - `Opcode.DREM`
      - `OperatorInstruction`

  - ### dreturn

    default CodeBuilder dreturn()
    Generates an instruction to return a `double` from this method.
    Returns:
      this builder
    See Also:
      - `Opcode.DRETURN`
      - `return_(TypeKind)`
      - `ReturnInstruction`

  - ### dstore

    default CodeBuilder dstore(int slot)
    Generates an instruction to store a `double` into a local variable.

    This may also generate `dstore_<N>` and `wide dstore` instructions.

    Parameters:
      `slot` - the local variable slot
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `slot` is out of range
    See Also:
      - `Opcode.DSTORE`
      - `storeLocal(TypeKind, int)`
      - `StoreInstruction`

  - ### dsub

    default CodeBuilder dsub()
    Generates an instruction to subtract `doubles`.
    Returns:
      this builder
    See Also:
      - `Opcode.DSUB`
      - `OperatorInstruction`

  - ### dup

    default CodeBuilder dup()
    Generates an instruction to duplicate the top operand stack value.
    Returns:
      this builder
    See Also:
      - `Opcode.DUP`
      - `StackInstruction`

  - ### dup2

    default CodeBuilder dup2()
    Generates an instruction to duplicate the top one or two operand stack value.
    Returns:
      this builder
    See Also:
      - `Opcode.DUP2`
      - `StackInstruction`

  - ### dup2_x1

    default CodeBuilder dup2_x1()
    Generates an instruction to duplicate the top one or two operand stack values and insert two or three values down.
    Returns:
      this builder
    See Also:
      - `Opcode.DUP2_X1`
      - `StackInstruction`

  - ### dup2_x2

    default CodeBuilder dup2_x2()
    Generates an instruction to duplicate the top one or two operand stack values and insert two, three, or four values down.
    Returns:
      this builder
    See Also:
      - `Opcode.DUP2_X2`
      - `StackInstruction`

  - ### dup_x1

    default CodeBuilder dup_x1()
    Generates an instruction to duplicate the top operand stack value and insert two values down.
    Returns:
      this builder
    See Also:
      - `Opcode.DUP_X1`
      - `StackInstruction`

  - ### dup_x2

    default CodeBuilder dup_x2()
    Generates an instruction to duplicate the top operand stack value and insert two or three values down.
    Returns:
      this builder
    See Also:
      - `Opcode.DUP_X2`
      - `StackInstruction`

  - ### f2d

    default CodeBuilder f2d()
    Generates an instruction to convert a `float` into a `double`.
    Returns:
      this builder
    See Also:
      - `Opcode.F2D`
      - `ConvertInstruction`

  - ### f2i

    default CodeBuilder f2i()
    Generates an instruction to convert a `float` into an `int`.
    Returns:
      this builder
    See Also:
      - `Opcode.F2I`
      - `ConvertInstruction`

  - ### f2l

    default CodeBuilder f2l()
    Generates an instruction to convert a `float` into a `long`.
    Returns:
      this builder
    See Also:
      - `Opcode.F2L`
      - `ConvertInstruction`

  - ### fadd

    default CodeBuilder fadd()
    Generates an instruction to add two `floats`.
    Returns:
      this builder
    See Also:
      - `Opcode.FADD`
      - `OperatorInstruction`

  - ### faload

    default CodeBuilder faload()
    Generates an instruction to load from a `float` array.
    Returns:
      this builder
    See Also:
      - `Opcode.FALOAD`
      - `arrayLoad(TypeKind)`
      - `ArrayLoadInstruction`

  - ### fastore

    default CodeBuilder fastore()
    Generates an instruction to store into a `float` array.
    Returns:
      this builder
    See Also:
      - `Opcode.FASTORE`
      - `arrayStore(TypeKind)`
      - `ArrayStoreInstruction`

  - ### fcmpg

    default CodeBuilder fcmpg()
    Generates an instruction to compare `floats`, producing `1` if any operand is `NaN`.
    Returns:
      this builder
    See Also:
      - `Opcode.FCMPG`
      - `OperatorInstruction`

  - ### fcmpl

    default CodeBuilder fcmpl()
    Generates an instruction to compare `floats`, producing `-1` if any operand is `NaN`.
    Returns:
      this builder
    See Also:
      - `Opcode.FCMPL`
      - `OperatorInstruction`

  - ### fconst_0

    default CodeBuilder fconst_0()
    Generates an instruction pushing `float` constant 0 onto the operand stack.
    Returns:
      this builder
    See Also:
      - `Opcode.FCONST_0`
      - `loadConstant(float)`
      - `ConstantInstruction.IntrinsicConstantInstruction`

  - ### fconst_1

    default CodeBuilder fconst_1()
    Generates an instruction pushing `float` constant 1 onto the operand stack.
    Returns:
      this builder
    See Also:
      - `Opcode.FCONST_1`
      - `loadConstant(float)`
      - `ConstantInstruction.IntrinsicConstantInstruction`

  - ### fconst_2

    default CodeBuilder fconst_2()
    Generates an instruction pushing `float` constant 2 onto the operand stack.
    Returns:
      this builder
    See Also:
      - `Opcode.FCONST_2`
      - `loadConstant(float)`
      - `ConstantInstruction.IntrinsicConstantInstruction`

  - ### fdiv

    default CodeBuilder fdiv()
    Generates an instruction to divide `floats`.
    Returns:
      this builder
    See Also:
      - `Opcode.FDIV`
      - `OperatorInstruction`

  - ### fload

    default CodeBuilder fload(int slot)
    Generates an instruction to load a `float` from a local variable.

    This may also generate `fload_<N>` and `wide fload` instructions.

    Parameters:
      `slot` - the local variable slot
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `slot` is out of range
    See Also:
      - `Opcode.FLOAD`
      - `loadLocal(TypeKind, int)`
      - `LoadInstruction`

  - ### fmul

    default CodeBuilder fmul()
    Generates an instruction to multiply `floats`.
    Returns:
      this builder
    See Also:
      - `Opcode.FMUL`
      - `OperatorInstruction`

  - ### fneg

    default CodeBuilder fneg()
    Generates an instruction to negate a `float`.
    Returns:
      this builder
    See Also:
      - `Opcode.FNEG`
      - `OperatorInstruction`

  - ### frem

    default CodeBuilder frem()
    Generates an instruction to calculate `floats` remainder.
    Returns:
      this builder
    See Also:
      - `Opcode.FREM`
      - `OperatorInstruction`

  - ### freturn

    default CodeBuilder freturn()
    Generates an instruction to return a `float` from this method.
    Returns:
      this builder
    See Also:
      - `Opcode.FRETURN`
      - `return_(TypeKind)`
      - `ReturnInstruction`

  - ### fstore

    default CodeBuilder fstore(int slot)
    Generates an instruction to store a `float` into a local variable.

    This may also generate `fstore_<N>` and `wide fstore` instructions.

    Parameters:
      `slot` - the local variable slot
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `slot` is out of range
    See Also:
      - `Opcode.FSTORE`
      - `storeLocal(TypeKind, int)`
      - `StoreInstruction`

  - ### fsub

    default CodeBuilder fsub()
    Generates an instruction to subtract `floats`.
    Returns:
      this builder
    See Also:
      - `Opcode.FSUB`
      - `OperatorInstruction`

  - ### getfield

    default CodeBuilder getfield(FieldRefEntry ref)
    Generates an instruction to fetch field from an object.
    Parameters:
      `ref` - the field reference
    Returns:
      this builder
    See Also:
      - `Opcode.GETFIELD`
      - `fieldAccess(Opcode, FieldRefEntry)`
      - `FieldInstruction`

  - ### getfield

    default CodeBuilder getfield(ClassDesc owner, String name, ClassDesc type)
    Generates an instruction to fetch field from an object.
    Parameters:
      `owner` - the owner class
      `name` - the field name
      `type` - the field type
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `owner` represents a primitive type
    See Also:
      - `Opcode.GETFIELD`
      - `fieldAccess(Opcode, ClassDesc, String, ClassDesc)`
      - `FieldInstruction`

  - ### getstatic

    default CodeBuilder getstatic(FieldRefEntry ref)
    Generates an instruction to get static field from a class or interface.
    Parameters:
      `ref` - the field reference
    Returns:
      this builder
    See Also:
      - `Opcode.GETSTATIC`
      - `fieldAccess(Opcode, FieldRefEntry)`
      - `FieldInstruction`

  - ### getstatic

    default CodeBuilder getstatic(ClassDesc owner, String name, ClassDesc type)
    Generates an instruction to get static field from a class or interface.
    Parameters:
      `owner` - the owner class
      `name` - the field name
      `type` - the field type
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `owner` represents a primitive type
    See Also:
      - `Opcode.GETSTATIC`
      - `fieldAccess(Opcode, ClassDesc, String, ClassDesc)`
      - `FieldInstruction`

  - ### goto_

    default CodeBuilder goto_(Label target)
    Generates an instruction to branch always.

    This may also generate `goto_w` instructions if `ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS` is set.

    API Note:
      The instruction's name is `goto`, which coincides with a reserved keyword of the Java programming language, thus this method is named with an extra `_` suffix instead.
    Parameters:
      `target` - the branch target
    Returns:
      this builder
    See Also:
      - `Opcode.GOTO`
      - `branch(Opcode, Label)`
      - `BranchInstruction`

  - ### goto_w

    default CodeBuilder goto_w(Label target)
    Generates an instruction to branch always with wide index.
    Parameters:
      `target` - the branch target
    Returns:
      this builder
    See Also:
      - `Opcode.GOTO_W`
      - `branch(Opcode, Label)`
      - `BranchInstruction`

  - ### i2b

    default CodeBuilder i2b()
    Generates an instruction to truncate an `int` into the range of `byte` and sign-extend it.
    Returns:
      this builder
    See Also:
      - `Opcode.I2B`
      - `ConvertInstruction`

  - ### i2c

    default CodeBuilder i2c()
    Generates an instruction to truncate an `int` into the range of `char` and zero-extend it.
    Returns:
      this builder
    See Also:
      - `Opcode.I2C`
      - `ConvertInstruction`

  - ### i2d

    default CodeBuilder i2d()
    Generates an instruction to convert an `int` into a `double`.
    Returns:
      this builder
    See Also:
      - `Opcode.I2D`
      - `ConvertInstruction`

  - ### i2f

    default CodeBuilder i2f()
    Generates an instruction to convert an `int` into a `float`.
    Returns:
      this builder
    See Also:
      - `Opcode.I2F`
      - `ConvertInstruction`

  - ### i2l

    default CodeBuilder i2l()
    Generates an instruction to convert an `int` into a `long`.
    Returns:
      this builder
    See Also:
      - `Opcode.I2L`
      - `ConvertInstruction`

  - ### i2s

    default CodeBuilder i2s()
    Generates an instruction to truncate an `int` into the range of `short` and sign-extend it.
    Returns:
      this builder
    See Also:
      - `Opcode.I2S`
      - `ConvertInstruction`

  - ### iadd

    default CodeBuilder iadd()
    Generates an instruction to add two `ints`.
    Returns:
      this builder
    See Also:
      - `Opcode.IADD`
      - `OperatorInstruction`

  - ### iaload

    default CodeBuilder iaload()
    Generates an instruction to load from an `int` array.
    Returns:
      this builder
    See Also:
      - `Opcode.IALOAD`
      - `arrayLoad(TypeKind)`
      - `ArrayLoadInstruction`

  - ### iand

    default CodeBuilder iand()
    Generates an instruction to calculate bitwise AND of `ints`, also used for `boolean` AND.
    Returns:
      this builder
    See Also:
      - `Opcode.IAND`
      - `OperatorInstruction`

  - ### iastore

    default CodeBuilder iastore()
    Generates an instruction to store into an `int` array.
    Returns:
      this builder
    See Also:
      - `Opcode.IASTORE`
      - `arrayStore(TypeKind)`
      - `ArrayStoreInstruction`

  - ### iconst_0

    default CodeBuilder iconst_0()
    Generates an instruction pushing `int` constant 0 onto the operand stack.
    Returns:
      this builder
    See Also:
      - `Opcode.ICONST_0`
      - `loadConstant(int)`
      - `ConstantInstruction.IntrinsicConstantInstruction`

  - ### iconst_1

    default CodeBuilder iconst_1()
    Generates an instruction pushing `int` constant 1 onto the operand stack.
    Returns:
      this builder
    See Also:
      - `Opcode.ICONST_1`
      - `loadConstant(int)`
      - `ConstantInstruction.IntrinsicConstantInstruction`

  - ### iconst_2

    default CodeBuilder iconst_2()
    Generates an instruction pushing `int` constant 2 onto the operand stack.
    Returns:
      this builder
    See Also:
      - `Opcode.ICONST_2`
      - `loadConstant(int)`
      - `ConstantInstruction.IntrinsicConstantInstruction`

  - ### iconst_3

    default CodeBuilder iconst_3()
    Generates an instruction pushing `int` constant 3 onto the operand stack.
    Returns:
      this builder
    See Also:
      - `Opcode.ICONST_3`
      - `loadConstant(int)`
      - `ConstantInstruction.IntrinsicConstantInstruction`

  - ### iconst_4

    default CodeBuilder iconst_4()
    Generates an instruction pushing `int` constant 4 onto the operand stack.
    Returns:
      this builder
    See Also:
      - `Opcode.ICONST_4`
      - `loadConstant(int)`
      - `ConstantInstruction.IntrinsicConstantInstruction`

  - ### iconst_5

    default CodeBuilder iconst_5()
    Generates an instruction pushing `int` constant 5 onto the operand stack.
    Returns:
      this builder
    See Also:
      - `Opcode.ICONST_5`
      - `loadConstant(int)`
      - `ConstantInstruction.IntrinsicConstantInstruction`

  - ### iconst_m1

    default CodeBuilder iconst_m1()
    Generates an instruction pushing `int` constant -1 onto the operand stack.
    Returns:
      this builder
    See Also:
      - `Opcode.ICONST_M1`
      - `loadConstant(int)`
      - `ConstantInstruction.IntrinsicConstantInstruction`

  - ### idiv

    default CodeBuilder idiv()
    Generates an instruction to divide `ints`.
    Returns:
      this builder
    See Also:
      - `Opcode.IDIV`
      - `OperatorInstruction`

  - ### if_acmpeq

    default CodeBuilder if_acmpeq(Label target)
    Generates an instruction to branch if `reference` comparison `operand1 == operand2` succeeds.

    This may generate multiple instructions to accomplish the same effect if `ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS` is set and `target` cannot be encoded as a BCI offset in `[-32768, 32767]`.

    Parameters:
      `target` - the branch target
    Returns:
      this builder
    See Also:
      - `Opcode.IF_ACMPEQ`
      - `branch(Opcode, Label)`
      - `BranchInstruction`

  - ### if_acmpne

    default CodeBuilder if_acmpne(Label target)
    Generates an instruction to branch if `reference` comparison `operand1 != operand2` succeeds.

    This may generate multiple instructions to accomplish the same effect if `ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS` is set and `target` cannot be encoded as a BCI offset in `[-32768, 32767]`.

    Parameters:
      `target` - the branch target
    Returns:
      this builder
    See Also:
      - `Opcode.IF_ACMPNE`
      - `branch(Opcode, Label)`
      - `BranchInstruction`

  - ### if_icmpeq

    default CodeBuilder if_icmpeq(Label target)
    Generates an instruction to branch if `int` comparison `operand1 == operand2` succeeds.

    This may generate multiple instructions to accomplish the same effect if `ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS` is set and `target` cannot be encoded as a BCI offset in `[-32768, 32767]`.

    Parameters:
      `target` - the branch target
    Returns:
      this builder
    See Also:
      - `Opcode.IF_ICMPEQ`
      - `branch(Opcode, Label)`
      - `BranchInstruction`

  - ### if_icmpge

    default CodeBuilder if_icmpge(Label target)
    Generates an instruction to branch if `int` comparison `operand1 >= operand2` succeeds.

    This may generate multiple instructions to accomplish the same effect if `ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS` is set and `target` cannot be encoded as a BCI offset in `[-32768, 32767]`.

    Parameters:
      `target` - the branch target
    Returns:
      this builder
    See Also:
      - `Opcode.IF_ICMPGE`
      - `branch(Opcode, Label)`
      - `BranchInstruction`

  - ### if_icmpgt

    default CodeBuilder if_icmpgt(Label target)
    Generates an instruction to branch if `int` comparison `operand1 > operand2` succeeds.

    This may generate multiple instructions to accomplish the same effect if `ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS` is set and `target` cannot be encoded as a BCI offset in `[-32768, 32767]`.

    Parameters:
      `target` - the branch target
    Returns:
      this builder
    See Also:
      - `Opcode.IF_ICMPGT`
      - `branch(Opcode, Label)`
      - `BranchInstruction`

  - ### if_icmple

    default CodeBuilder if_icmple(Label target)
    Generates an instruction to branch if `int` comparison `operand1 <= operand2` succeeds.

    This may generate multiple instructions to accomplish the same effect if `ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS` is set and `target` cannot be encoded as a BCI offset in `[-32768, 32767]`.

    Parameters:
      `target` - the branch target
    Returns:
      this builder
    See Also:
      - `Opcode.IF_ICMPLE`
      - `branch(Opcode, Label)`
      - `BranchInstruction`

  - ### if_icmplt

    default CodeBuilder if_icmplt(Label target)
    Generates an instruction to branch if `int` comparison `operand1 < operand2` succeeds.

    This may generate multiple instructions to accomplish the same effect if `ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS` is set and `target` cannot be encoded as a BCI offset in `[-32768, 32767]`.

    Parameters:
      `target` - the branch target
    Returns:
      this builder
    See Also:
      - `Opcode.IF_ICMPLT`
      - `branch(Opcode, Label)`
      - `BranchInstruction`

  - ### if_icmpne

    default CodeBuilder if_icmpne(Label target)
    Generates an instruction to branch if `int` comparison `operand1 != operand2` succeeds.

    This may generate multiple instructions to accomplish the same effect if `ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS` is set and `target` cannot be encoded as a BCI offset in `[-32768, 32767]`.

    Parameters:
      `target` - the branch target
    Returns:
      this builder
    See Also:
      - `Opcode.IF_ICMPNE`
      - `branch(Opcode, Label)`
      - `BranchInstruction`

  - ### ifnonnull

    default CodeBuilder ifnonnull(Label target)
    Generates an instruction to branch if `reference` is not `null`.

    This may generate multiple instructions to accomplish the same effect if `ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS` is set and `target` cannot be encoded as a BCI offset in `[-32768, 32767]`.

    Parameters:
      `target` - the branch target
    Returns:
      this builder
    See Also:
      - `Opcode.IFNONNULL`
      - `branch(Opcode, Label)`
      - `BranchInstruction`

  - ### ifnull

    default CodeBuilder ifnull(Label target)
    Generates an instruction to branch if `reference` is `null`.

    This may generate multiple instructions to accomplish the same effect if `ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS` is set and `target` cannot be encoded as a BCI offset in `[-32768, 32767]`.

    Parameters:
      `target` - the branch target
    Returns:
      this builder
    See Also:
      - `Opcode.IFNULL`
      - `branch(Opcode, Label)`
      - `BranchInstruction`

  - ### ifeq

    default CodeBuilder ifeq(Label target)
    Generates an instruction to branch if `int` comparison with zero `== 0` succeeds.

    This may generate multiple instructions to accomplish the same effect if `ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS` is set and `target` cannot be encoded as a BCI offset in `[-32768, 32767]`.

    Parameters:
      `target` - the branch target
    Returns:
      this builder
    See Also:
      - `Opcode.IFEQ`
      - `branch(Opcode, Label)`
      - `BranchInstruction`

  - ### ifge

    default CodeBuilder ifge(Label target)
    Generates an instruction to branch if `int` comparison with zero `>= 0` succeeds.

    This may generate multiple instructions to accomplish the same effect if `ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS` is set and `target` cannot be encoded as a BCI offset in `[-32768, 32767]`.

    Parameters:
      `target` - the branch target
    Returns:
      this builder
    See Also:
      - `Opcode.IFGE`
      - `branch(Opcode, Label)`
      - `BranchInstruction`

  - ### ifgt

    default CodeBuilder ifgt(Label target)
    Generates an instruction to branch if `int` comparison with zero `> 0` succeeds.

    This may generate multiple instructions to accomplish the same effect if `ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS` is set and `target` cannot be encoded as a BCI offset in `[-32768, 32767]`.

    Parameters:
      `target` - the branch target
    Returns:
      this builder
    See Also:
      - `Opcode.IFGT`
      - `branch(Opcode, Label)`
      - `BranchInstruction`

  - ### ifle

    default CodeBuilder ifle(Label target)
    Generates an instruction to branch if `int` comparison with zero `<= 0` succeeds.

    This may generate multiple instructions to accomplish the same effect if `ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS` is set and `target` cannot be encoded as a BCI offset in `[-32768, 32767]`.

    Parameters:
      `target` - the branch target
    Returns:
      this builder
    See Also:
      - `Opcode.IFLE`
      - `branch(Opcode, Label)`
      - `BranchInstruction`

  - ### iflt

    default CodeBuilder iflt(Label target)
    Generates an instruction to branch if `int` comparison with zero `< 0` succeeds.

    This may generate multiple instructions to accomplish the same effect if `ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS` is set and `target` cannot be encoded as a BCI offset in `[-32768, 32767]`.

    Parameters:
      `target` - the branch target
    Returns:
      this builder
    See Also:
      - `Opcode.IFLT`
      - `branch(Opcode, Label)`
      - `BranchInstruction`

  - ### ifne

    default CodeBuilder ifne(Label target)
    Generates an instruction to branch if `int` comparison with zero `!= 0` succeeds.

    This may generate multiple instructions to accomplish the same effect if `ClassFile.ShortJumpsOption.FIX_SHORT_JUMPS` is set and `target` cannot be encoded as a BCI offset in `[-32768, 32767]`.

    Parameters:
      `target` - the branch target
    Returns:
      this builder
    See Also:
      - `Opcode.IFNE`
      - `branch(Opcode, Label)`
      - `BranchInstruction`

  - ### iinc

    default CodeBuilder iinc(int slot, int val)
    Generates an instruction to increment an `int` local variable by a constant.

    This may also generate `wide iinc` instructions if `slot` exceeds `255` or `val` exceeds the range of `byte`.

    Parameters:
      `slot` - the local variable slot
      `val` - the increment value
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `slot` or `val` is out of range
    See Also:
      - `Opcode.IINC`
      - `IncrementInstruction`

  - ### iload

    default CodeBuilder iload(int slot)
    Generates an instruction to load an `int` from a local variable.

    This may also generate `iload_<N>` and `wide iload` instructions.

    Parameters:
      `slot` - the local variable slot
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `slot` is out of range
    See Also:
      - `Opcode.ILOAD`
      - `loadLocal(TypeKind, int)`
      - `LoadInstruction`

  - ### imul

    default CodeBuilder imul()
    Generates an instruction to multiply `ints`.
    Returns:
      this builder
    See Also:
      - `Opcode.IMUL`
      - `OperatorInstruction`

  - ### ineg

    default CodeBuilder ineg()
    Generates an instruction to negate an `int`.
    Returns:
      this builder
    See Also:
      - `Opcode.INEG`
      - `OperatorInstruction`

  - ### instanceOf

    default CodeBuilder instanceOf(ClassEntry target)
    Generates an instruction to determine if an object is of the given type, producing a `boolean` result on the operand stack.
    API Note:
      The instruction's name is `instanceof`, which coincides with a reserved keyword of the Java programming language, thus this method is named with camel case instead.
    Parameters:
      `target` - the target type
    Returns:
      this builder
    See Also:
      - `Opcode.INSTANCEOF`
      - `TypeCheckInstruction`

  - ### instanceOf

    default CodeBuilder instanceOf(ClassDesc target)
    Generates an instruction to determine if an object is of the given type, producing a `boolean` result on the operand stack.
    API Note:
      The instruction's name is `instanceof`, which coincides with a reserved keyword of the Java programming language, thus this method is named with camel case instead.
    Parameters:
      `target` - the target type
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `target` represents a primitive type
    See Also:
      - `Opcode.INSTANCEOF`
      - `TypeCheckInstruction`

  - ### invokedynamic

    default CodeBuilder invokedynamic(InvokeDynamicEntry ref)
    Generates an instruction to invoke a dynamically-computed call site.
    Parameters:
      `ref` - the dynamic call site
    Returns:
      this builder
    See Also:
      - `Opcode.INVOKEDYNAMIC`
      - `InvokeDynamicInstruction`

  - ### invokedynamic

    default CodeBuilder invokedynamic(DynamicCallSiteDesc ref)
    Generates an instruction to invoke a dynamically-computed call site.
    Parameters:
      `ref` - the dynamic call site
    Returns:
      this builder
    See Also:
      - `Opcode.INVOKEDYNAMIC`
      - `InvokeDynamicInstruction`

  - ### invokeinterface

    default CodeBuilder invokeinterface(InterfaceMethodRefEntry ref)
    Generates an instruction to invoke an interface method.
    Parameters:
      `ref` - the interface method reference
    Returns:
      this builder
    See Also:
      - `Opcode.INVOKEINTERFACE`
      - `invoke(Opcode, MemberRefEntry)`
      - `InvokeInstruction`

  - ### invokeinterface

    default CodeBuilder invokeinterface(ClassDesc owner, String name, MethodTypeDesc type)
    Generates an instruction to invoke an interface method.
    Parameters:
      `owner` - the owner interface
      `name` - the method name
      `type` - the method type
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `owner` represents a primitive type
    See Also:
      - `Opcode.INVOKEINTERFACE`
      - `invoke(Opcode, ClassDesc, String, MethodTypeDesc, boolean)`
      - `InvokeInstruction`

  - ### invokespecial

    default CodeBuilder invokespecial(InterfaceMethodRefEntry ref)
    Generates an instruction to invoke an instance method in an interface; direct invocation of methods of the current class and its supertypes.
    Parameters:
      `ref` - the interface method reference
    Returns:
      this builder
    See Also:
      - `Opcode.INVOKESPECIAL`
      - `invoke(Opcode, MemberRefEntry)`
      - `InvokeInstruction`

  - ### invokespecial

    default CodeBuilder invokespecial(MethodRefEntry ref)
    Generates an instruction to invoke an instance method in a class; direct invocation of instance initialization methods and methods of the current class and its supertypes.
    Parameters:
      `ref` - the method reference
    Returns:
      this builder
    See Also:
      - `Opcode.INVOKESPECIAL`
      - `invoke(Opcode, MemberRefEntry)`
      - `InvokeInstruction`

  - ### invokespecial

    default CodeBuilder invokespecial(ClassDesc owner, String name, MethodTypeDesc type)
    Generates an instruction to invoke an instance method in a class; direct invocation of instance initialization methods and methods of the current class and its supertypes.
    Parameters:
      `owner` - the owner class, must not be an interface
      `name` - the method name
      `type` - the method type
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `owner` represents a primitive type
    See Also:
      - `Opcode.INVOKESPECIAL`
      - `invoke(Opcode, ClassDesc, String, MethodTypeDesc, boolean)`
      - `InvokeInstruction`

  - ### invokespecial

    default CodeBuilder invokespecial(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface)
    Generates an instruction to invoke an instance method; direct invocation of instance initialization methods and methods of the current class and its supertypes.
    Parameters:
      `owner` - the owner class or interface
      `name` - the method name
      `type` - the method type
      `isInterface` - whether the owner is an interface
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `owner` represents a primitive type
    See Also:
      - `Opcode.INVOKESPECIAL`
      - `invoke(Opcode, ClassDesc, String, MethodTypeDesc, boolean)`
      - `InvokeInstruction`

  - ### invokestatic

    default CodeBuilder invokestatic(InterfaceMethodRefEntry ref)
    Generates an instruction to invoke a class (static) method of an interface.
    Parameters:
      `ref` - the interface method reference
    Returns:
      this builder
    See Also:
      - `Opcode.INVOKESTATIC`
      - `invoke(Opcode, MemberRefEntry)`
      - `InvokeInstruction`

  - ### invokestatic

    default CodeBuilder invokestatic(MethodRefEntry ref)
    Generates an instruction to invoke a class (static) method of a class.
    Parameters:
      `ref` - the method reference
    Returns:
      this builder
    See Also:
      - `Opcode.INVOKESTATIC`
      - `invoke(Opcode, MemberRefEntry)`
      - `InvokeInstruction`

  - ### invokestatic

    default CodeBuilder invokestatic(ClassDesc owner, String name, MethodTypeDesc type)
    Generates an instruction to invoke a class (static) method of a class.
    Parameters:
      `owner` - the owner class, must not be an interface
      `name` - the method name
      `type` - the method type
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `owner` represents a primitive type
    See Also:
      - `Opcode.INVOKESTATIC`
      - `invoke(Opcode, ClassDesc, String, MethodTypeDesc, boolean)`
      - `InvokeInstruction`

  - ### invokestatic

    default CodeBuilder invokestatic(ClassDesc owner, String name, MethodTypeDesc type, boolean isInterface)
    Generates an instruction to invoke a class (static) method.
    Parameters:
      `owner` - the owner class or interface
      `name` - the method name
      `type` - the method type
      `isInterface` - whether the owner is an interface
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `owner` represents a primitive type
    See Also:
      - `Opcode.INVOKESTATIC`
      - `invoke(Opcode, ClassDesc, String, MethodTypeDesc, boolean)`
      - `InvokeInstruction`

  - ### invokevirtual

    default CodeBuilder invokevirtual(MethodRefEntry ref)
    Generates an instruction to invoke an instance method; dispatch based on class.
    Parameters:
      `ref` - the method reference
    Returns:
      this builder
    See Also:
      - `Opcode.INVOKEVIRTUAL`
      - `invoke(Opcode, MemberRefEntry)`
      - `InvokeInstruction`

  - ### invokevirtual

    default CodeBuilder invokevirtual(ClassDesc owner, String name, MethodTypeDesc type)
    Generates an instruction to invoke an instance method; dispatch based on class.
    Parameters:
      `owner` - the owner class, must not be an interface
      `name` - the method name
      `type` - the method type
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `owner` represents a primitive type
    See Also:
      - `Opcode.INVOKEVIRTUAL`
      - `invoke(Opcode, ClassDesc, String, MethodTypeDesc, boolean)`
      - `InvokeInstruction`

  - ### ior

    default CodeBuilder ior()
    Generates an instruction to calculate bitwise OR of `ints`, also used for `boolean` OR.
    Returns:
      this builder
    See Also:
      - `Opcode.IOR`
      - `OperatorInstruction`

  - ### irem

    default CodeBuilder irem()
    Generates an instruction to calculate `ints` remainder.
    Returns:
      this builder
    See Also:
      - `Opcode.IREM`
      - `OperatorInstruction`

  - ### ireturn

    default CodeBuilder ireturn()
    Generates an instruction to return an `int` from this method.
    Returns:
      this builder
    See Also:
      - `Opcode.IRETURN`
      - `return_(TypeKind)`
      - `ReturnInstruction`

  - ### ishl

    default CodeBuilder ishl()
    Generates an instruction to shift an `int` left.
    Returns:
      this builder
    See Also:
      - `Opcode.ISHL`
      - `OperatorInstruction`

  - ### ishr

    default CodeBuilder ishr()
    Generates an instruction to shift an `int` right. This carries the sign bit to the vacated most significant bits, as opposed to `iushr()` that fills vacated most significant bits with `0`.
    Returns:
      this builder
    See Also:
      - `Opcode.ISHR`
      - `OperatorInstruction`

  - ### istore

    default CodeBuilder istore(int slot)
    Generates an instruction to store an `int` into a local variable.

    This may also generate `istore_<N>` and `wide istore` instructions.

    Parameters:
      `slot` - the local variable slot
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `slot` is out of range
    See Also:
      - `Opcode.ISTORE`
      - `storeLocal(TypeKind, int)`
      - `StoreInstruction`

  - ### isub

    default CodeBuilder isub()
    Generates an instruction to subtract `ints`.
    Returns:
      this builder
    See Also:
      - `Opcode.ISUB`
      - `OperatorInstruction`

  - ### iushr

    default CodeBuilder iushr()
    Generates an instruction to logical shift an `int` right. This fills vacated most significant bits with `0`, as opposed to `ishr()` that carries the sign bit to the vacated most significant bits.
    Returns:
      this builder
    See Also:
      - `Opcode.IUSHR`
      - `OperatorInstruction`

  - ### ixor

    default CodeBuilder ixor()
    Generates an instruction to calculate bitwise XOR of `ints`. This can also be used for `boolean` XOR.
    Returns:
      this builder
    See Also:
      - `Opcode.IXOR`
      - `OperatorInstruction`

  - ### lookupswitch

    default CodeBuilder lookupswitch(Label defaultTarget, List<SwitchCase> cases)
    Generates an instruction to access a jump table by key match and jump.
    Parameters:
      `defaultTarget` - the default jump target
      `cases` - the switch cases
    Returns:
      this builder
    See Also:
      - `Opcode.LOOKUPSWITCH`
      - `LookupSwitchInstruction`

  - ### l2d

    default CodeBuilder l2d()
    Generates an instruction to convert a `long` into a `double`.
    Returns:
      this builder
    See Also:
      - `Opcode.L2D`
      - `OperatorInstruction`

  - ### l2f

    default CodeBuilder l2f()
    Generates an instruction to convert a `long` into a `float`.
    Returns:
      this builder
    See Also:
      - `Opcode.L2F`
      - `OperatorInstruction`

  - ### l2i

    default CodeBuilder l2i()
    Generates an instruction to convert a `long` into an `int`.
    Returns:
      this builder
    See Also:
      - `Opcode.L2I`
      - `OperatorInstruction`

  - ### ladd

    default CodeBuilder ladd()
    Generates an instruction to add two `longs`.
    Returns:
      this builder
    See Also:
      - `Opcode.LADD`
      - `OperatorInstruction`

  - ### laload

    default CodeBuilder laload()
    Generates an instruction to load from a `long` array.
    Returns:
      this builder
    See Also:
      - `Opcode.LALOAD`
      - `arrayLoad(TypeKind)`
      - `ArrayLoadInstruction`

  - ### land

    default CodeBuilder land()
    Generates an instruction to calculate bitwise AND of `longs`.
    Returns:
      this builder
    See Also:
      - `Opcode.LAND`
      - `OperatorInstruction`

  - ### lastore

    default CodeBuilder lastore()
    Generates an instruction to store into a `long` array.
    Returns:
      this builder
    See Also:
      - `Opcode.LASTORE`
      - `arrayStore(TypeKind)`
      - `ArrayStoreInstruction`

  - ### lcmp

    default CodeBuilder lcmp()
    Generates an instruction to compare `longs`.
    Returns:
      this builder
    See Also:
      - `Opcode.LCMP`
      - `OperatorInstruction`

  - ### lconst_0

    default CodeBuilder lconst_0()
    Generates an instruction pushing `long` constant 0 onto the operand stack.
    Returns:
      this builder
    See Also:
      - `Opcode.LCONST_0`
      - `loadConstant(long)`
      - `ConstantInstruction.IntrinsicConstantInstruction`

  - ### lconst_1

    default CodeBuilder lconst_1()
    Generates an instruction pushing `long` constant 1 onto the operand stack.
    Returns:
      this builder
    See Also:
      - `Opcode.LCONST_1`
      - `loadConstant(long)`
      - `ConstantInstruction.IntrinsicConstantInstruction`

  - ### ldc

    default CodeBuilder ldc(ConstantDesc value)
    Generates an instruction pushing an item from the run-time constant pool onto the operand stack.

    This may also generate `ldc_w` and `ldc2_w` instructions.

    API Note:
      `loadConstant` generates more optimal instructions and should be used for general constants if an `ldc` instruction is not strictly required.
    Parameters:
      `value` - the constant value
    Returns:
      this builder
    See Also:
      - `Opcode.LDC`
      - `loadConstant(ConstantDesc)`
      - `ConstantInstruction.LoadConstantInstruction`

  - ### ldc

    default CodeBuilder ldc(LoadableConstantEntry entry)
    Generates an instruction pushing an item from the run-time constant pool onto the operand stack.

    This may also generate `ldc_w` and `ldc2_w` instructions.

    Parameters:
      `entry` - the constant value
    Returns:
      this builder
    See Also:
      - `Opcode.LDC`
      - `loadConstant(ConstantDesc)`
      - `ConstantInstruction.LoadConstantInstruction`

  - ### ldiv

    default CodeBuilder ldiv()
    Generates an instruction to divide `longs`.
    Returns:
      this builder
    See Also:
      - `Opcode.LDIV`
      - `OperatorInstruction`

  - ### lload

    default CodeBuilder lload(int slot)
    Generates an instruction to load a `long` from a local variable.

    This may also generate `lload_<N>` and `wide lload` instructions.

    Parameters:
      `slot` - the local variable slot
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `slot` is out of range
    See Also:
      - `Opcode.LLOAD`
      - `loadLocal(TypeKind, int)`
      - `LoadInstruction`

  - ### lmul

    default CodeBuilder lmul()
    Generates an instruction to multiply `longs`.
    Returns:
      this builder
    See Also:
      - `Opcode.LMUL`
      - `OperatorInstruction`

  - ### lneg

    default CodeBuilder lneg()
    Generates an instruction to negate a `long`.
    Returns:
      this builder
    See Also:
      - `Opcode.LNEG`
      - `OperatorInstruction`

  - ### lor

    default CodeBuilder lor()
    Generates an instruction to calculate bitwise OR of `longs`.
    Returns:
      this builder
    See Also:
      - `Opcode.LOR`
      - `OperatorInstruction`

  - ### lrem

    default CodeBuilder lrem()
    Generates an instruction to calculate `longs` remainder.
    Returns:
      this builder
    See Also:
      - `Opcode.LREM`
      - `OperatorInstruction`

  - ### lreturn

    default CodeBuilder lreturn()
    Generates an instruction to return a `long` from this method.
    Returns:
      this builder
    See Also:
      - `Opcode.LRETURN`
      - `return_(TypeKind)`
      - `ReturnInstruction`

  - ### lshl

    default CodeBuilder lshl()
    Generates an instruction to shift a `long` left.
    Returns:
      this builder
    See Also:
      - `Opcode.LSHL`
      - `OperatorInstruction`

  - ### lshr

    default CodeBuilder lshr()
    Generates an instruction to shift a `long` right. This carries the sign bit to the vacated most significant bits, as opposed to `lushr()` that fills vacated most significant bits with `0`.
    Returns:
      this builder
    See Also:
      - `Opcode.LSHR`
      - `OperatorInstruction`

  - ### lstore

    default CodeBuilder lstore(int slot)
    Generates an instruction to store a `long` into a local variable.

    This may also generate `lstore_<N>` and `wide lstore` instructions.

    Parameters:
      `slot` - the local variable slot
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `slot` is out of range
    See Also:
      - `Opcode.LSTORE`
      - `storeLocal(TypeKind, int)`
      - `StoreInstruction`

  - ### lsub

    default CodeBuilder lsub()
    Generates an instruction to subtract `longs`.
    Returns:
      this builder
    See Also:
      - `Opcode.LSUB`
      - `OperatorInstruction`

  - ### lushr

    default CodeBuilder lushr()
    Generates an instruction to logical shift a `long` right. This fills vacated most significant bits with `0`, as opposed to `lshr()` that carries the sign bit to the vacated most significant bits.
    Returns:
      this builder
    See Also:
      - `Opcode.LUSHR`
      - `OperatorInstruction`

  - ### lxor

    default CodeBuilder lxor()
    Generates an instruction to calculate bitwise XOR of `longs`.
    Returns:
      this builder
    See Also:
      - `Opcode.LXOR`
      - `OperatorInstruction`

  - ### monitorenter

    default CodeBuilder monitorenter()
    Generates an instruction to enter monitor for an object.
    Returns:
      this builder
    See Also:
      - `Opcode.MONITORENTER`
      - `MonitorInstruction`

  - ### monitorexit

    default CodeBuilder monitorexit()
    Generates an instruction to exit monitor for an object.
    Returns:
      this builder
    See Also:
      - `Opcode.MONITOREXIT`
      - `MonitorInstruction`

  - ### multianewarray

    default CodeBuilder multianewarray(ClassEntry array, int dims)
    Generates an instruction to create a new multidimensional array.
    Parameters:
      `array` - the array type
      `dims` - the number of dimensions
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `dims` is out of range
    See Also:
      - `Opcode.MULTIANEWARRAY`
      - `NewMultiArrayInstruction`

  - ### multianewarray

    default CodeBuilder multianewarray(ClassDesc array, int dims)
    Generates an instruction to create a new multidimensional array.
    Parameters:
      `array` - the array type
      `dims` - the number of dimensions
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `array` represents a primitive type or if `dims` is out of range
    See Also:
      - `Opcode.MULTIANEWARRAY`
      - `NewMultiArrayInstruction`

  - ### new_

    default CodeBuilder new_(ClassEntry clazz)
    Generates an instruction to create a new object.
    API Note:
      The instruction's name is `new`, which coincides with a reserved keyword of the Java programming language, thus this method is named with an extra `_` suffix instead.
    Parameters:
      `clazz` - the new class type
    Returns:
      this builder
    See Also:
      - `Opcode.NEW`
      - `NewObjectInstruction`

  - ### new_

    default CodeBuilder new_(ClassDesc clazz)
    Generates an instruction to create a new object.
    API Note:
      The instruction's name is `new`, which coincides with a reserved keyword of the Java programming language, thus this method is named with an extra `_` suffix instead.
    Parameters:
      `clazz` - the new class type
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `clazz` represents a primitive type
    See Also:
      - `Opcode.NEW`
      - `NewObjectInstruction`

  - ### newarray

    default CodeBuilder newarray(TypeKind typeKind)
    Generates an instruction to create a new array of a primitive type.
    Parameters:
      `typeKind` - the primitive array type
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - when the `typeKind` is not a legal primitive array component type
    See Also:
      - `Opcode.NEWARRAY`
      - `NewPrimitiveArrayInstruction`

  - ### pop

    default CodeBuilder pop()
    Generates an instruction to pop the top operand stack value.
    Returns:
      this builder
    See Also:
      - `Opcode.POP`
      - `StackInstruction`

  - ### pop2

    default CodeBuilder pop2()
    Generates an instruction to pop the top one or two operand stack values.
    Returns:
      this builder
    See Also:
      - `Opcode.POP2`
      - `StackInstruction`

  - ### putfield

    default CodeBuilder putfield(FieldRefEntry ref)
    Generates an instruction to set field in an object.
    Parameters:
      `ref` - the field reference
    Returns:
      this builder
    See Also:
      - `Opcode.PUTFIELD`
      - `fieldAccess(Opcode, FieldRefEntry)`
      - `FieldInstruction`

  - ### putfield

    default CodeBuilder putfield(ClassDesc owner, String name, ClassDesc type)
    Generates an instruction to set field in an object.
    Parameters:
      `owner` - the owner class
      `name` - the field name
      `type` - the field type
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `owner` represents a primitive type
    See Also:
      - `Opcode.PUTFIELD`
      - `fieldAccess(Opcode, ClassDesc, String, ClassDesc)`
      - `FieldInstruction`

  - ### putstatic

    default CodeBuilder putstatic(FieldRefEntry ref)
    Generates an instruction to set static field in a class.
    Parameters:
      `ref` - the field reference
    Returns:
      this builder
    See Also:
      - `Opcode.PUTSTATIC`
      - `fieldAccess(Opcode, FieldRefEntry)`
      - `FieldInstruction`

  - ### putstatic

    default CodeBuilder putstatic(ClassDesc owner, String name, ClassDesc type)
    Generates an instruction to set static field in a class.
    Parameters:
      `owner` - the owner class or interface
      `name` - the field name
      `type` - the field type
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `owner` represents a primitive type
    See Also:
      - `Opcode.PUTSTATIC`
      - `fieldAccess(Opcode, ClassDesc, String, ClassDesc)`
      - `FieldInstruction`

  - ### return_

    default CodeBuilder return_()
    Generates an instruction to return `void` from this method.
    API Note:
      The instruction's name is `return`, which coincides with a reserved keyword of the Java programming language, thus this method is named with an extra `_` suffix instead.
    Returns:
      this builder
    See Also:
      - `Opcode.RETURN`
      - `return_(TypeKind)`
      - `ReturnInstruction`

  - ### saload

    default CodeBuilder saload()
    Generates an instruction to load from a `short` array.
    Returns:
      this builder
    See Also:
      - `Opcode.SALOAD`
      - `arrayLoad(TypeKind)`
      - `ArrayLoadInstruction`

  - ### sastore

    default CodeBuilder sastore()
    Generates an instruction to store into a `short` array.
    Returns:
      this builder
    See Also:
      - `Opcode.SASTORE`
      - `arrayStore(TypeKind)`
      - `ArrayStoreInstruction`

  - ### sipush

    default CodeBuilder sipush(int s)
    Generates an instruction pushing an `int` in the range of `short`, `[-32768, 32767]`, onto the operand stack.
    Parameters:
      `s` - the int in the range of short
    Returns:
      this builder
    Throws:
      `IllegalArgumentException` - if `s` is out of range of short
    See Also:
      - `Opcode.SIPUSH`
      - `loadConstant(int)`
      - `ConstantInstruction.ArgumentConstantInstruction`

  - ### swap

    default CodeBuilder swap()
    Generates an instruction to swap the top two operand stack values.
    Returns:
      this builder
    See Also:
      - `Opcode.SWAP`
      - `StackInstruction`

  - ### tableswitch

    default CodeBuilder tableswitch(int low, int high, Label defaultTarget, List<SwitchCase> cases)
    Generates an instruction to access a jump table by index and jump.
    Parameters:
      `low` - the minimum key, inclusive
      `high` - the maximum key, inclusive
      `defaultTarget` - the default jump target
      `cases` - the switch cases
    Returns:
      this builder
    See Also:
      - `Opcode.TABLESWITCH`
      - `TableSwitchInstruction`

  - ### tableswitch

    default CodeBuilder tableswitch(Label defaultTarget, List<SwitchCase> cases)
    Generates an instruction to access a jump table by index and jump. Computes the minimum and maximum keys from the `cases`.
    Parameters:
      `defaultTarget` - the default jump target
      `cases` - the switch cases
    Returns:
      this builder
    See Also:
      - `Opcode.TABLESWITCH`
      - `tableswitch(int, int, Label, List)`
      - `TableSwitchInstruction`