getFromCache(fn) {
		if (this._cache === undefined) {
			this._cache = new Map();
		} else {
			const result = this._cache.get(fn);
			const data = /** @type {R} */ (result);
			if (data !== undefined) {
				return data;
			}
		}
		const newData = fn(this);
		this._cache.set(fn, newData);
		return newData;
	}
Get data from cache
@template {EXPECTED_ANY} R
@param {(set: SortableSet<T>) => R} fn function to calculate value
@returns {R} returns result of fn(this), cached until set changes