/// <summary>
        /// Adds or updates given range.
        /// Updates range only when existing range with given start position is found
        /// </summary>
        /// <param name="newRange"></param>
        public void UpdateOrAdd(Range newRange)
        {
            if (newRange.Equals(Range.Empty))
            {
                throw new ArgumentException("Range can not be empty");
            }
            Range?index = this.SpannedRangesCollection.FindRangeWithStart(newRange.Start);

            if (index == null)
            {
                this.SpannedRangesCollection.Add(newRange);
            }
            else
            {
                this.SpannedRangesCollection.Update(Range.FromPosition(newRange.Start), newRange);
            }
        }