src/vs/base/common/skipList.ts/SkipList/_delete
class SkipList:	private static _delete<K, V>(list: SkipList<K, V>, searchKey: K, comparator: Comparator<K>) {
		let update: Node<K, V>[] = [];
		let x = list._header;
		for (let i = list._level - 1; i >= 0; i--) {
			while (x.forward[i] && comparator(x.forward[i].key, searchKey) < 0) {
				x = x.forward[i];
			}
			update[i] = x;
		}
		x = x.forward[0];
		if (!x || comparator(x.key, searchKey) !== 0) {
			// not found
			return false;
		}
		for (let i = 0; i < list._level; i++) {
			if (update[i].forward[i] !== x) {
				break;
			}
			update[i].forward[i] = x.forward[i];
		}
		while (list._level > 0 && list._header.forward[list._level - 1] === NIL) {
			list._level -= 1;
		}
		return true;
	}