code: func (s1 Int32) Intersection(s2 Int32) Int32 {
  	var walk, other Int32
  	result := NewInt32()
  	if s1.Len() < s2.Len() {
  		walk = s1
  		other = s2
  	} else {
  		walk = s2
  		other = s1
  	}
  	for key := range walk {
  		if other.Has(key) {
  			result.Insert(key)
  		}
  	}
  	return result
  }
docs: // Intersection returns a new set which includes the item in BOTH s1 and s2
  // For example:
  // s1 = {a1, a2}
  // s2 = {a2, a3}
  // s1.Intersection(s2) = {a2}