createSourceCode(file, parseResult, { languageOptions }) {
		const { body: text, path: filePath, bom: hasBOM } = file;
		const { ast, parserServices, visitorKeys } = parseResult;

		debug("Scope analysis:", filePath);
		const scopeManager =
			parseResult.scopeManager ||
			analyzeScope(ast, languageOptions, visitorKeys);

		debug("Scope analysis successful:", filePath);

		return new SourceCode({
			text,
			ast,
			hasBOM,
			parserServices,
			scopeManager,
			visitorKeys,
		});
	}
Creates a new `SourceCode` object from the given information.
@param {File} file The virtual file to create a `SourceCode` object from.
@param {OkParseResult} parseResult The result returned from `parse()`.
@param {Object} options Additional options passed from ESLint.
@param {JSLanguageOptions} options.languageOptions The language options.
@returns {SourceCode} The new `SourceCode` object.