public void Remove(Transaction trans, IPreparedComparison preparedComparison, object obj, int index) { if (Remove(trans, obj, index)) { return; } // now we try if removal is OK for the next element in this node if (index != LastIndex()) { if (CompareInWriteMode(preparedComparison, index + 1) != 0) { return; } Remove(trans, preparedComparison, obj, index + 1); return; } // nothing else worked so far, move on to the next node, try there Db4objects.Db4o.Internal.Btree.BTreeNode node = NextNode(); if (node == null) { return; } node.PrepareWrite(trans); if (node.CompareInWriteMode(preparedComparison, 0) != 0) { return; } node.Remove(trans, preparedComparison, obj, 0); }