anchor.diff:    ///   * `null` if the implementation takes no argument
     ///   * `int` if the value can be directly resolved
     ///   * An [AstNode] if the value can't be determined at the time when this
  -  ///     object is created. This happens when a control flow statement jumps
  +  ///     object is created. This happens when a control flow instruction jumps
     ///     "forward", targeting an instruction with a higher address that itself.
     var immediateValue;
   
  
positive.code: }
  
  /// Bitwise _and_ of the two top stack elements.
  class BinaryAndInstruction extends ArithmeticOperationInstruction {
    String get name => 'and<${numberType}>';
  
    const BinaryAndInstruction(numberType) : super(numberType);
  
    int calculate(int a, int b) => a & b;
  }
  
  /// Bitwise _or_ of the two top stack elements.
  class BinaryOrInstruction extends ArithmeticOperationInstruction {
    String get name => 'or<${numberType}>';
  
    const BinaryOrInstruction(numberType) : super(numberType);
  
    int calculate(int a, int b) => a | b;
  }
  
  /// Bitwise _xor_ of the two top stack elements.
  class BinaryExclusiveOrInstruction extends ArithmeticOperationInstruction {
    String get name => 'xor<${numberType}>';
  
    const BinaryExclusiveOrInstruction(numberType) : super(numberType);
  
    int calculate(int a, int b) => a ^ b;
  }
  
negative.code: /// Sets the program counter to the immediate value.
  class JumpInstruction extends InstructionTemplate {
    String get name => 'jump';
  
    const JumpInstruction();
  
    void execute(VM vm, int address) {
      vm.programCounter = address;
  