docs: public void setTableSwitchJump(int switchStart, int caseIndex,
          int jumpTarget) {
          if (jumpTarget < 0 || itsCodeBufferTop < jumpTarget)
              throw new IllegalArgumentException("Bad jump target: " + jumpTarget);
          if (caseIndex < -1)
              throw new IllegalArgumentException("Bad case index: " + caseIndex);
  
          int padSize = 3 & ~switchStart; // == 3 - switchStart % 4
          int caseOffset;
          if (caseIndex < 0) {
              // default label
              caseOffset = switchStart + 1 + padSize;
          } else {
              caseOffset = switchStart + 1 + padSize + 4 * (3 + caseIndex);
          }
          if (switchStart < 0 || itsCodeBufferTop - 4 * 4 - padSize - 1 < switchStart) {
              throw new IllegalArgumentException(
                  switchStart + " is outside a possible range of tableswitch"
                      + " in already generated code");
          }
          if ((0xFF & itsCodeBuffer[switchStart]) != ByteCode.TABLESWITCH) {
              throw new IllegalArgumentException(
                  switchStart + " is not offset of tableswitch statement");
          }
          if (caseOffset < 0 || itsCodeBufferTop < caseOffset + 4) {
              // caseIndex >= -1 does not guarantee that caseOffset >= 0 due
              // to a possible overflow.
              throw new ClassFileFormatException("Too big case index: " + caseIndex);
          }
          // ALERT: perhaps check against case bounds?
          putInt32(jumpTarget - switchStart, itsCodeBuffer, caseOffset);
      }