private void removeAll(final boolean mark) {
		if (mark) {
			AbstractInsnNode insn = first;
			while (insn != null) {
				AbstractInsnNode next = insn.next;
				insn.index = -1; // insn no longer belongs to an InsnList
				insn.prev = null;
				insn.next = null;
				insn = next;
			}
		}
		size = 0;
		first = null;
		last = null;
		cache = null;
	}