/// ------------------------------------------------------------------------------------
 /// <summary>
 /// Returns a value indicating whether the given boundary cannot be deleted or moved in
 /// either direction. A boundary is absolutely "permanent" if the time tier has readonly
 /// ranges. Typically it will also be considered permanent if it is adjacent to a
 /// segment that already has an oral annotation (text annotations can also prevent moves
 /// if PreventSegmentBoundaryMovingWhereTextAnnotationsAreAdjacent is set); however, the
 /// caller can elect to disregard annotations when determining this.
 /// </summary>
 /// ------------------------------------------------------------------------------------
 public bool IsBoundaryPermanent(TimeSpan boundary, bool disregardAnnotations = false)
 {
     return(TimeTier.ReadOnlyTimeRanges || (!disregardAnnotations &&
                                            Tiers.HasAdjacentAnnotation((float)boundary.TotalSeconds)));
 }