static createLazy(
		value,
		target,
		options = /** @type {TLazyOptions} */ ({}),
		serializedValue = undefined
	) {
		if (SerializerMiddleware.isLazy(value, target)) return value;
		const fn =
			/** @type {LazyFunction<TLazyInputValue, TLazyOutputValue, TLazyTarget, TLazyOptions>} */
			(typeof value === "function" ? value : () => value);
		fn[LAZY_TARGET] = target;
		fn.options = options;
		fn[LAZY_SERIALIZED_VALUE] = serializedValue;
		return fn;
	}
@template TLazyInputValue
@template TLazyOutputValue
@template {LazyTarget} TLazyTarget
@template {LazyOptions | undefined} TLazyOptions
@param {TLazyInputValue | (() => TLazyInputValue)} value contained value or function to value
@param {TLazyTarget} target target middleware
@param {TLazyOptions=} options lazy options
@param {TLazyOutputValue=} serializedValue serialized value
@returns {LazyFunction<TLazyInputValue, TLazyOutputValue, TLazyTarget, TLazyOptions>} lazy function