code: func (s *OrderedSet) Intersect(other *OrderedSet) *OrderedSet {
  	intersection := NewOrderedSetWithCapacity(MinInt(
  		s.Cardinality(), other.Cardinality()))
  
  	if s.Cardinality() < other.Cardinality() {
  		for _, elem := range s.s {
  			if other.Contains(elem) {
  				intersection.Add(elem)
  			}
  		}
  	} else {
  		for _, elem := range other.s {
  			if s.Contains(elem) {
  				intersection.Add(elem)
  			}
  		}
  	}
  
  	return intersection
  }
docs: // Intersect returns the elements that are in both this set and then given
  // "ordered" set. It is an O(min(n, m)) (in other words, O(n)) operation.