I just seen that #union: in Collection is implemented as following: ^self copy addAll: aSet. Thus it returns the passed parameter instead of the resulted collection (see #addAll: in collection).
Could be:
^self copy addAll: aSet; yourself
Alexandre