src/vs/editor/browser/widget/diffNavigator.ts/DiffNavigator/_compute
class DiffNavigator:	private _compute(lineChanges: ILineChange[] | null): void {

		// new ranges
		this.ranges = [];

		if (lineChanges) {
			// create ranges from changes
			lineChanges.forEach((lineChange) => {

				if (!this._options.ignoreCharChanges && lineChange.charChanges) {

					lineChange.charChanges.forEach((charChange) => {
						this.ranges.push({
							rhs: true,
							range: new Range(
								charChange.modifiedStartLineNumber,
								charChange.modifiedStartColumn,
								charChange.modifiedEndLineNumber,
								charChange.modifiedEndColumn)
						});
					});

				} else {
					if (lineChange.modifiedEndLineNumber === 0) {
						// a deletion
						this.ranges.push({
							rhs: true,
							range: new Range(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedStartLineNumber + 1, 1)
						});
					} else {
						// an insertion or modification
						this.ranges.push({
							rhs: true,
							range: new Range(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedEndLineNumber + 1, 1)
						});
					}
				}
			});
		}

		// sort
		this.ranges.sort((left, right) => Range.compareRangesUsingStarts(left.range, right.range));
		this._onDidUpdate.fire(this);
	}