function* convertMarked({ tokens, range, message, tokenStart = 0 }) {
			let start = tokenStart;

			const buffer = [tokens].flat();

			let token;

			// Find the first token to mark
			while ((token = buffer.shift())) {
				const content = getTokenContent(token);
				const end = start + content.length;

				if (!content || end <= range[0]) {
					yield token;
					start = end;
					continue;
				}

				break;
			}
			if (!token) {
				return;
			}

			// Mark the token.
			const { before, marked, after } = splitToken({
				token,
				range,
				message,
				tokenStart: start,
			});

			if (before) {
				yield before;
			}
			if (after) {
				yield* splitTokensByLineFeed([marked.token]);
				yield after;
			} else {
				// Subsequent tokens may still be present in the range.
				let nextTokenStartIndex = start + getTokenContent(token).length;
				let prevMarked = marked;
				let nextAfter;

				while (nextTokenStartIndex < range[1] && buffer.length) {
					const nextToken = buffer.shift();
					const next = splitToken({
						token: nextToken,
						range,
						message,
						tokenStart: nextTokenStartIndex,
					});

					if (prevMarked.canBeMerged && next.marked.canBeMerged) {
						prevMarked.token.content.push(
							...next.marked.token.content,
						);
					} else {
						yield* splitTokensByLineFeed([prevMarked.token]);
						prevMarked = next.marked;
					}
					if (next.after) {
						nextAfter = next.after;
					}
					nextTokenStartIndex += getTokenContent(nextToken).length;
				}

				yield* splitTokensByLineFeed([prevMarked.token]);
				if (nextAfter) {
					yield nextAfter;
				}
			}

			yield* buffer;
		}
Generates a token stream with the `eslint-marked` class assigned to the error range.
@param {Object} params Parameters
@param {string | Prism.Token | (string | Prism.Token[])} params.tokens Tokens to be converted
@param {[number, number]} params.range Range to be marked
@param {string} params.message Report message
@param {number} params.tokenStart Starting position of the tokens
@returns {IterableIterator<string | Prism.Token>} converted tokens