def union(other)
      if other.is_a?(AbsoluteSet) and other.universe.eql?(@universe)
        copy(:mask => @mask | other.mask)
      elsif other.is_a?(AbstractSet) and other.infinite?
        other.union(self)
      else
        copy(:mask => @mask | as_mask(other, true))
      end
    end
def union(other)
      if other.is_a?(AbsoluteSet) and other.universe.eql?(@universe)
        copy(:mask => @mask | other.mask)
      elsif other.is_a?(AbstractSet) and other.infinite?
        other.union(self)
      else
        copy(:mask => @mask | as_mask(other, true))
      end
    end
(see AbstractSet#union)