public override IReadOnlyList <TextChangeRange> GetChangeRanges(SourceText oldText) { if (oldText == null) { throw new ArgumentNullException(nameof(oldText)); } if (ReferenceEquals(_oldText, oldText)) { // check whether the bases are same one return(_changes); } if (_oldText.GetChangeRanges(oldText).Count == 0) { // okay, the bases are different, but the contents might be same. return(_changes); } if (this == oldText) { return(TextChangeRange.NoChanges); } return(ImmutableArray.Create(new TextChangeRange(new TextSpan(0, oldText.Length), _newText.Length))); }