code: protected final void modify_stack_maps_for_switches(InstructionHandle ih, InstructionList il) {
      Instruction inst;
      short opcode;
  
      if (!needStackMap) {
        return;
      }
  
      // Make sure all instruction offsets are uptodate.
      il.setPositions();
  
      // Loop through each instruction looking for a switch
      while (ih != null) {
        inst = ih.getInstruction();
        opcode = inst.getOpcode();
  
        if (opcode == Const.TABLESWITCH || opcode == Const.LOOKUPSWITCH) {
          int current_offset = ih.getPosition();
          int index = find_stack_map_index_after(current_offset);
          if (index == -1) {
            throw new RuntimeException("Invalid StackMap offset 3");
          }
          StackMapEntry stack_map = stack_map_table[index];
          int delta = (current_offset + inst.getLength()) - running_offset;
          if (delta != 0) {
            stack_map.updateByteCodeOffset(delta);
          }
          // Since StackMap offsets are relative to the previous one
          // we only have to do the first one after a switch.
          // But we do need to look at all the switch instructions.
        }
  
        // Go on to the next instruction in the list
        ih = ih.getNext();
      }
    }
docs: Check to see if (due to some instruction modifications) there have been any changes in a switch
  statement's padding bytes. If so, then update the corresponding StackMap to reflect this
  change.
  
  @param ih where to start looking for a switch instruction
  @param il instruction list to search