src/vs/workbench/contrib/mergeEditor/browser/model/textModelProjection.ts/TextModelProjection/createMonotonousReverseTransformer
class TextModelProjection:	createMonotonousReverseTransformer(): Transformer {
		let lineDelta = 0;
		const blockQueue = new ArrayQueue(this.currentBlocks);
		let lastLineNumber = 0;
		const sourceDocument = this.sourceDocument;
		return {
			transform(position) {
				if (position.lineNumber < lastLineNumber) {
					throw new BugIndicatingError();
				}
				lastLineNumber = position.lineNumber;

				while (true) {
					const next = blockQueue.peek();
					if (!next) {
						break;
					}
					if (position.lineNumber + lineDelta > next.lineRange.startLineNumber) {
						blockQueue.dequeue();
						lineDelta += next.lineRange.lineCount - 1;
					} else if (position.lineNumber + lineDelta === next.lineRange.startLineNumber && position.column === 2) {
						const targetLineNumber = position.lineNumber + lineDelta + next.lineRange.lineCount - 1;
						return new Position(targetLineNumber, sourceDocument.getLineMaxColumn(targetLineNumber));
					} else {
						break;
					}
				}

				// Column number never changes
				return new Position(position.lineNumber + lineDelta, position.column);
			},
		};
	}