_forEachLevelWaterfall(hookMap, type, data, fn) {
		for (const hook of this._getAllLevelHooks(hookMap, type)) {
			data = fn(/** @type {H} */ (hook), data);
		}
		return data;
	}
Run `fn` for each level
@private
@template {StatsPrintHooks[keyof StatsPrintHooks]} HM
@template {HM extends HookMap<infer H> ? H : never} H
@param {HM} hookMap hook map
@param {string} type type
@param {string} data data
@param {(hook: H, data: string) => string} fn fn
@returns {string | undefined} result of `fn`