internal NotificationOutcomeCollection Add(NotificationOutcomeCollection outcomeCollection)
        {
            foreach (var kvp in outcomeCollection)
            {
                if (this.ContainsKey(kvp.Key))
                {
                    this[kvp.Key] = this[kvp.Key] + kvp.Value;
                }
                else
                {
                    this[kvp.Key] = kvp.Value;
                }
            }

            return(this);
        }
        internal static NotificationOutcomeCollection Rollup(IEnumerable <NotificationOutcomeCollection> outcomeCollection)
        {
            var combinedOutcome = new NotificationOutcomeCollection();

            foreach (var outcome in outcomeCollection)
            {
                foreach (var kvp in outcome)
                {
                    if (combinedOutcome.ContainsKey(kvp.Key))
                    {
                        combinedOutcome[kvp.Key] = combinedOutcome[kvp.Key] + kvp.Value;
                    }
                    else
                    {
                        combinedOutcome[kvp.Key] = kvp.Value;
                    }
                }
            }

            return(combinedOutcome);
        }