/// <summary>
        /// Called from <see cref="GetSummaries"/> when called the first time after summaries were invalidated.
        /// </summary>
        /// <param name="emptySummaries">The empty summaries.</param>
        /// <returns></returns>
        public virtual ITreeTableSummary[] OnGetSummaries(ITreeTableEmptySummaryArraySource emptySummaries)
        {
            ITreeTableSummary[]          summaries          = null;
            ITreeTableSummaryArraySource summaryArraySource = GetSummaryArraySource();

            if (summaryArraySource != null)
            {
                bool summaryChanged;
                summaries = summaryArraySource.GetSummaries(emptySummaries, out summaryChanged);
            }
            return(summaries);
        }
 /// <summary>
 /// Marks all summaries dirty in this node and child nodes.
 /// </summary>
 /// <param name="notifySummaryArraySource">if set to <c>true</c> notify summary array source.</param>
 public void InvalidateSummariesTopDown(bool notifySummaryArraySource)
 {
     summaries = null;
     if (notifySummaryArraySource)
     {
         ITreeTableSummaryArraySource summaryArraySource = GetSummaryArraySource();
         if (summaryArraySource != null)
         {
             summaryArraySource.InvalidateSummariesTopDown();
         }
         summaries = null;
     }
 }