ZXZGQJTGQS4DMMHP73A3MAP5EMVDFQ727P6DTZWOMBUTPJNCB33AC
E6N5WBHRYQKCNE5GDHDO46KKQ3HHGUV7TZLHD63TV3P2PQ65VJGAC
NKL44S6YUCLZDH5EDDUJB5BHX2QWDP7SI5RROBVAUXKAU4ADKPAQC
LD2TP6CDUHET2ISQB3P4JOTQTIDDPRLSZJTIYWAO7JTHKUWOF7MQC
YZHIW6KGNEA34657YJAFI7BWYYRA7KBEX6X6IXA2UDCDMWMRBJPQC
LVNADDHM446QNUHG3VTNBOHNJGCDROOFBVGO4WXMUUAN6Y4LNCNAC
const level_found = findNode(remove_key, &preds, &succs);
const level_found = findNode(remove_key, &preds, &succs) orelse return false;
if (is_marked or (level_found != null and okDelete(succs[level_found.?].?, level_found.?))) {
if (is_marked or
(level_found != null and okDelete(succs[level_found.?].?, level_found.?)))
{
if (is_marked or okDelete(succs[level_found].?, level_found)) {
node_delete = succs[level_found.?].?;
node_delete = succs[level_found].?;
// TODO: if it never fails we can change node_delete type to *Node std.debug.assert(node_delete != null);
// TODO: if it never fails we can change node_delete type to *Node
std.debug.assert(node_delete != null);
// Make sure that the newly set next node does not equal to the one marked for removal std.debug.assert(node_delete.?.nexts[level - 1] != node_delete);
// Make sure that the newly set next node does not equal to the one marked for removal
std.debug.assert(node_delete.?.nexts[level - 1] != node_delete);
// Already marked for deletion or (not found or !okDelete)
// Already marked for deletion or !okDelete