docs: public void set(final AbstractInsnNode location, final AbstractInsnNode insn) {
          AbstractInsnNode next = location.next;
          insn.next = next;
          if (next != null) {
              next.prev = insn;
          } else {
              last = insn;
          }
          AbstractInsnNode prev = location.prev;
          insn.prev = prev;
          if (prev != null) {
              prev.next = insn;
          } else {
              first = insn;
          }
          if (cache != null) {
              int index = location.index;
              cache[index] = insn;
              insn.index = index;
          } else {
              insn.index = 0; // insn now belongs to an InsnList
          }
          location.index = -1; // i no longer belongs to an InsnList
          location.prev = null;
          location.next = null;
      }