code: def size_on_disk(self, start_pos=0):
          
          # All instructions are at least 1 byte (the opcode itself)
          size = 1
          fmts = opcode_table[self.opcode]['operands']
  
          if self.wide:
              size += 2
              # Special case for iinc which has a 2nd extended operand.
              if self.opcode == 0x84:
                  size += 2
          elif fmts:
              # A simple opcode with simple operands.
              for fmt, _ in fmts:
                  size += fmt.value.size
          elif self.opcode == 0xAB:
              # lookupswitch
              padding = 4 - (start_pos + 1) % 4
              padding = padding if padding != 4 else 0
              size += padding
              # default & npairs
              size += 8
              size += len(self.operands[0]) * 8
          elif self.opcode == 0xAA:
              # tableswitch
              raise NotImplementedError()
  
          return size
docs: Returns the size of this instruction and its operands when
          packed. `start_pos` is required for the `tableswitch` and
          `lookupswitch` instruction as the padding depends on alignment.