deserialize(value, context) {
		const ctx = { ...context, ...this.context };
		let current = value;
		for (const middleware of this.deserializeMiddlewares) {
			current =
				current &&
				typeof (/** @type {Promise<SerializedValue>} */ (current).then) ===
					"function"
					? /** @type {Promise<SerializedValue>} */ (current).then(data =>
							middleware.deserialize(data, ctx)
						)
					: middleware.deserialize(current, ctx);
		}
		return /** @type {Promise<DeserializedValue>} */ (current);
	}
@template ExtendedContext
@param {SerializedValue | Promise<SerializedValue>} value value
@param {Context & ExtendedContext} context object
@returns {Promise<DeserializedValue>} result