flatten = (targetSet, toDeepMerge) => {
	for (const set of toDeepMerge) {
		if (set._set.size > 0) targetSet.add(set._set);
		if (set._needMerge) {
			for (const mergedSet of set._toMerge) {
				targetSet.add(mergedSet);
			}
			flatten(targetSet, set._toDeepMerge);
		}
	}
}
@template T
@param {Set<Iterable<T>>} targetSet set where iterables should be added
@param {Array<LazySet<T>>} toDeepMerge lazy sets to be flattened
@returns {void}