@Override
    public DecodedInstruction decode(int opcodeUnit, CodeInput in) throws EOFException {
      int baseAddress = in.baseAddressForCursor() - 1; // already read opcode
      int size = in.read();
      int[] keys = new int[size];
      int[] targets = new int[size];

      for (int i = 0; i < size; i++) {
        keys[i] = in.readInt();
      }

      for (int i = 0; i < size; i++) {
        targets[i] = baseAddress + in.readInt();
      }

      return new SparseSwitchPayloadDecodedInstruction(this, opcodeUnit, keys, targets);
    }
Representation of an instruction format, which knows how to decode into and encode from instances
of {@link DecodedInstruction}.
android/android_framework/dex-maker/src/main/java/com/android/dx/io/instructions/InstructionCodec.java