/// <summary>
            /// Adds the intervals to the containers in batch mode.
            /// </summary>
            /// <param name="newSymbols">Intervals.</param>
            public void Add(IEnumerable <Symbol> newSymbols)
            {
                var sortedIntervals = SelectDistinctViaImportance(newSymbols).ToArray();

                Array.Sort(sortedIntervals, comparer);

                if (Count > 0)
                {
                    List <Symbol> createdSymbols;
                    List <Symbol> deletedSymbols;
                    MergeInSymbolArray(sortedIntervals, out createdSymbols, out deletedSymbols);
                    foreach (var deletedSymbol in deletedSymbols)
                    {
                        owner.RemoveSymbolFromNameLookup(deletedSymbol);
                    }
                    foreach (var createdSymbol in createdSymbols)
                    {
                        owner.AddSymbolToNameLookup(SymbolLookup.GetUnique(createdSymbol));
                    }
                }
                else
                {
                    symbols = sortedIntervals;
                }

                Count = symbols.Length;
                RebuildEnclosingIntervals();
            }
 public SortedIntervals(SymbolLookup owner)
 {
     this.owner = owner;
     symbols    = new Symbol[0];
     indexOfEnclosingInterval = new int[0];
     Count = 0;
 }