constructor(getKey, comparator, ...args) {
		this._getKey = getKey;
		this._innerArgs = args;
		this._leaf = args.length <= 1;
		this._keys = new SortableSet(undefined, comparator);
		/** @type {Map<K, Entry<T, K>>} */
		this._map = new Map();
		this._unsortedItems = new Set();
		this.size = 0;
	}
@param {GetKey<T, K>} getKey function to get key from item
@param {Comparator<K>=} comparator comparator to sort keys
@param {...Arg<T, K>} args more pairs of getKey and comparator plus optional final comparator for the last layer