code: func (s *OrderedSet) Union(other *OrderedSet) *OrderedSet {
  	union := NewOrderedSetWithCapacity(other.Cardinality() + s.Cardinality())
  
  	for _, e := range s.s {
  		union.Add(e)
  	}
  	for _, e := range other.s {
  		union.Add(e)
  	}
  
  	return union
  }
docs: // Union returns a union of this set with the given set "other". It returns the
  // items that are in either set while maintaining uniqueness constraints. It
  // preserves ordered within each set, and orders the elements in this set before
  // the elements in "other".
  //
  // It is an O(n+m) operation.