src/vs/workbench/api/browser/mainThreadLanguageFeatures.ts/MainThreadPasteEditProvider/constructor
class MainThreadPasteEditProvider:	constructor(
		private readonly handle: number,
		private readonly _proxy: ExtHostLanguageFeaturesShape,
		supportsCopy: boolean,
		pasteMimeTypes: readonly string[],
		@IUriIdentityService private readonly _uriIdentService: IUriIdentityService
	) {
		this.pasteMimeTypes = pasteMimeTypes;

		if (supportsCopy) {
			this.prepareDocumentPaste = async (model: ITextModel, selections: readonly IRange[], dataTransfer: VSDataTransfer, token: CancellationToken): Promise<VSDataTransfer | undefined> => {
				const dataTransferDto = await typeConvert.DataTransfer.toDataTransferDTO(dataTransfer);
				if (token.isCancellationRequested) {
					return undefined;
				}

				const result = await this._proxy.$prepareDocumentPaste(handle, model.uri, selections, dataTransferDto, token);
				if (!result) {
					return undefined;
				}

				const dataTransferOut = new VSDataTransfer();
				result.items.forEach(([type, item]) => {
					dataTransferOut.replace(type, createStringDataTransferItem(item.asString));
				});
				return dataTransferOut;
			};
		}
	}