code: public void insertBefore(final AbstractInsnNode location,
              final AbstractInsnNode insn) {
          ++size;
          AbstractInsnNode prev = location.prev;
          if (prev == null) {
              first = insn;
          } else {
              prev.next = insn;
          }
          location.prev = insn;
          insn.next = location;
          insn.prev = prev;
          cache = null;
          insn.index = 0; // insn now belongs to an InsnList
      }
docs: Inserts the given instruction before the specified instruction.
  
  @param location
  an instruction <i>of this list</i> before which insn must be
  inserted.
  @param insn
  the instruction to be inserted, <i>which must not belong to
  any {@link InsnList}</i>.