only add unique objects when first detected

The current implementation relies on `MutableEnumerable#addObject` to
decide whether to actually add the candidate object to the computed
array. This causes a walk of the accumulated array on each call to
`addedItem()`.

Since the item counts are being tracked anyhow, there is no need to call
`addObject()` except the first time it is known that the item should be
in the array.