use pushObject() instead of addObject()

Since we're only adding to the accumulated array when we know that an
element belongs, there is no need to invoke `addObject` at all since it
will result in a walk of the array.

This adds a test case to make sure that the computed union is not
searched at all while it is being built.