createSource(context, content, sourceMap, associatedObjectForCache) {
		if (Buffer.isBuffer(content)) {
			return new RawSource(content);
		}

		// if there is no identifier return raw source
		if (!this.identifier) {
			return new RawSource(content);
		}

		// from here on we assume we have an identifier
		const identifier = this.identifier();

		if (this.useSourceMap && sourceMap) {
			return new SourceMapSource(
				content,
				contextifySourceUrl(context, identifier, associatedObjectForCache),
				contextifySourceMap(
					context,
					/** @type {TODO} */ (sourceMap),
					associatedObjectForCache
				)
			);
		}

		if (this.useSourceMap || this.useSimpleSourceMap) {
			return new OriginalSource(
				content,
				contextifySourceUrl(context, identifier, associatedObjectForCache)
			);
		}

		return new RawSource(content);
	}
@param {string} context the compilation context
@param {string | Buffer} content the content
@param {(string | SourceMapSource | null)=} sourceMap an optional source map
@param {AssociatedObjectForCache=} associatedObjectForCache object for caching
@returns {Source} the created source