a bag collection class similar to the one in SmallTalk (or MultiSets in C++ or Haskell's Edison module) [1]