function splitToken({ token, range, message, tokenStart }) {
			const content = getTokenContent(token);
			const tokenEnd = tokenStart + content.length;

			if (range[0] <= tokenStart && tokenEnd <= range[1]) {
				// The token is in range.
				const marked = new Prism.Token(
					TOKEN_TYPE_ESLINT_MARKED,
					[token],
					[getMessageIdFromMessage(message)],
				);

				return {
					before: null,
					marked: { token: marked, canBeMerged: true },
					after: null,
				};
			}

			let buildToken;

			if (typeof token === "string") {
				buildToken = newContent => newContent;
			} else {
				if (typeof token.content !== "string") {
					if (
						token.content.every(
							childContent => typeof childContent === "string",
						)
					) {
						// It can be flatten.
						buildToken = newContent =>
							new Prism.Token(
								token.type,
								newContent,
								token.alias,
							);
					} else {
						token.content = [
							// eslint-disable-next-line no-use-before-define -- Safe
							...convertMarked({
								tokens: token.content,
								range,
								message,
								tokenStart,
							}),
						];
						return {
							before: null,
							marked: { token, canBeMerged: false },
							after: null,
						};
					}
				} else {
					buildToken = newContent =>
						new Prism.Token(token.type, newContent, token.alias);
				}
			}

			const before =
				tokenStart < range[0]
					? buildToken(content.slice(0, range[0] - tokenStart))
					: null;
			const mark = content.slice(
				before ? range[0] - tokenStart : 0,
				range[1] - tokenStart,
			);
			const marked = new Prism.Token(
				TOKEN_TYPE_ESLINT_MARKED,
				mark ? [buildToken(mark)] : mark,
				[getMessageIdFromMessage(message)],
			);
			const after =
				range[1] - tokenStart < content.length
					? buildToken(content.slice(range[1] - tokenStart))
					: null;

			return {
				before,
				marked: { token: marked, canBeMerged: true },
				after,
			};
		}
Splits the given token into the `eslint-marked` token and the token before and after it with the specified range.
@param {Object} params Parameters
@param {string | Prism.Token} params.token Token to be split
@param {[number, number]} params.range Range to be marked
@param {string} params.message Report message
@param {number} params.tokenStart Starting position of the token
@returns {SplitTokenResult} Splitted tokens