public DistinctSet <TSource> Seed(TSource val)
        {
            DistinctSet <TSource> set = new DistinctSet <TSource>();

            set.Add(val, this.m_comparer);
            return(set);
        }
 public DistinctSet <TSource> RecursiveAccumulate(DistinctSet <TSource> acc,
                                                  DistinctSet <TSource> val)
 {
     foreach (TSource x in val.GetElems(this.m_comparer))
     {
         acc.Add(x, this.m_comparer);
     }
     return(acc);
 }
 public IEnumerable <TSource> FinalReduce(DistinctSet <TSource> val)
 {
     return(val.ToArray(this.m_comparer));
 }
 public DistinctSet <TSource> Accumulate(DistinctSet <TSource> acc, TSource val)
 {
     acc.Add(val, this.m_comparer);
     return(acc);
 }