src/vs/base/common/skipList.ts/SkipList/_insert
class SkipList:	private static _insert<K, V>(list: SkipList<K, V>, searchKey: K, value: V, comparator: Comparator<K>) {
		const 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) {
			// update
			x.value = value;
			return false;
		} else {
			// insert
			const lvl = SkipList._randomLevel(list);
			if (lvl > list._level) {
				for (let i = list._level; i < lvl; i++) {
					update[i] = list._header;
				}
				list._level = lvl;
			}
			x = new Node<K, V>(lvl, searchKey, value);
			for (let i = 0; i < lvl; i++) {
				x.forward[i] = update[i].forward[i];
				update[i].forward[i] = x;
			}
			return true;
		}
	}