anchor.diff:        var current = this[element];
         if (current <= occurences) {
           _container.remove(element);
  +        _length -= current;
         } else {
           _container[element] = current - occurences;
  +        _length -= occurences;
         }
       }
     }
  
positive.code:   Iterator<E> get iterator => new _MultisetIterator<E>(this._container, distinct.iterator);
  
    /**
     * The distinct elements of the receiver.
     */
    Iterable<E> get distinct => _container.keys;
  
    @override
    int get length => _container.values.fold(0, (a, b) => a + b);
  
    @override
    bool get isEmpty => _container.isEmpty;
  
  }
  
  
negative.code:   void operator []= (E element, int occurences) {
      if (occurences < 0) {
        throw new ArgumentError('Negative number of occurences');
      } else {
        var current = this[element];
        if (occurences > 0) {
          _container[element] = occurences;
          _length += occurences - current;
        } else {
          _container.remove(element);
          _length -= current;
        }
      }
    }
  
  