/// <returns>total number of entries (key pairs)</returns>
        public virtual int Size()
        {
            int result = 0;

            foreach (K1 o in FirstKeySet())
            {
                ClassicCounter <K2> c = map[o];
                result += c.Size();
            }
            return(result);
        }
        public virtual double Remove(K1 o1, K2 o2)
        {
            ClassicCounter <K2> c = GetCounter(o1);
            double oldCount       = GetCount(o1, o2);

            total -= oldCount;
            c.Remove(o2);
            if (c.Size() == 0)
            {
                Sharpen.Collections.Remove(map, o1);
            }
            return(oldCount);
        }
        public virtual void RemoveZeroCounts()
        {
            ICollection <K1> firstKeySet = Generics.NewHashSet(FirstKeySet());

            foreach (K1 k1 in firstKeySet)
            {
                ClassicCounter <K2> c = GetCounter(k1);
                Counters.RetainNonZeros(c);
                if (c.Size() == 0)
                {
                    Sharpen.Collections.Remove(map, k1);
                }
            }
        }