verify(textOrSourceCode, config, filenameOrOptions) {
		debug("Verify");

		const { configType, cwd } = internalSlotsMap.get(this);

		const options =
			typeof filenameOrOptions === "string"
				? { filename: filenameOrOptions }
				: filenameOrOptions || {};

		const configToUse = config ?? {};

		if (configType !== "eslintrc") {
			/*
			 * Because of how Webpack packages up the files, we can't
			 * compare directly to `FlatConfigArray` using `instanceof`
			 * because it's not the same `FlatConfigArray` as in the tests.
			 * So, we work around it by assuming an array is, in fact, a
			 * `FlatConfigArray` if it has a `getConfig()` method.
			 */
			let configArray = configToUse;

			if (
				!Array.isArray(configToUse) ||
				typeof configToUse.getConfig !== "function"
			) {
				configArray = new FlatConfigArray(configToUse, {
					basePath: cwd,
				});
				configArray.normalizeSync();
			}

			return this._distinguishSuppressedMessages(
				this._verifyWithFlatConfigArray(
					textOrSourceCode,
					configArray,
					options,
					true,
				),
			);
		}

		if (typeof configToUse.extractConfig === "function") {
			return this._distinguishSuppressedMessages(
				this._verifyWithConfigArray(
					textOrSourceCode,
					configToUse,
					options,
				),
			);
		}

		/*
		 * If we get to here, it means `config` is just an object rather
		 * than a config array so we can go right into linting.
		 */

		/*
		 * `Linter` doesn't support `overrides` property in configuration.
		 * So we cannot apply multiple processors.
		 */
		if (options.preprocess || options.postprocess) {
			return this._distinguishSuppressedMessages(
				this._verifyWithProcessor(
					textOrSourceCode,
					configToUse,
					options,
				),
			);
		}
		return this._distinguishSuppressedMessages(
			this._verifyWithoutProcessors(
				textOrSourceCode,
				configToUse,
				options,
			),
		);
	}
Verifies the text against the rules specified by the second argument.
@param {string|SourceCode} textOrSourceCode The text to parse or a SourceCode object.
@param {ConfigData|ConfigArray} config An ESLintConfig instance to configure everything.
@param {(string|(VerifyOptions&ProcessorOptions))} [filenameOrOptions] The optional filename of the file being checked.
     If this is not set, the filename will default to '<input>' in the rule context. If
     an object, then it has "filename", "allowInlineConfig", and some properties.
@returns {LintMessage[]} The results as an array of messages or an empty array if no messages.