code: protected final void adjust_code_for_locals_change(
        MethodGen mgen, int index_first_moved_local, int size) {
  
      InstructionList il = mgen.getInstructionList();
      for (InstructionHandle ih = il.getStart(); ih != null; ih = ih.getNext()) {
        Instruction inst = ih.getInstruction();
        int orig_length = inst.getLength();
        int operand;
  
        if ((inst instanceof RET) || (inst instanceof IINC)) {
          IndexedInstruction index_inst = (IndexedInstruction) inst;
          if (index_inst.getIndex() >= index_first_moved_local) {
            index_inst.setIndex(index_inst.getIndex() + size);
          }
        } else if (inst instanceof LocalVariableInstruction) {
          // BCEL handles all the details of which opcode and if index
          // is implicit or explicit; also, and if needs to be WIDE.
          operand = ((LocalVariableInstruction) inst).getIndex();
          if (operand >= index_first_moved_local) {
            ((LocalVariableInstruction) inst).setIndex(operand + size);
          }
        }
        // Unfortunately, BCEL doesn't take care of incrementing the
        // offset within StackMapEntrys.
        int delta = inst.getLength() - orig_length;
        if (delta > 0) {
          il.setPositions();
          update_stack_map_offset(ih.getPosition(), delta);
          modify_stack_maps_for_switches(ih, il);
        }
      }
    }
docs: Process the instruction list, adding size (1 or 2) to the index of each Instruction that
  references a local that is equal or higher in the local map than index_first_moved_local. Size
  should be the size of the new local that was just inserted at index_first_moved_local.
  
  @param mgen MethodGen to be modified
  @param index_first_moved_local original index of first local moved "up"
  @param size size of new local added (1 or 2)