code: func collectIdentities(seqs ...interface{}) (map[interface{}]bool, error) {
  	seen := make(map[interface{}]bool)
  	for _, seq := range seqs {
  		v := reflect.ValueOf(seq)
  		switch v.Kind() {
  		case reflect.Array, reflect.Slice:
  			for i := 0; i < v.Len(); i++ {
  				ev, _ := indirectInterface(v.Index(i))
  
  				if !ev.Type().Comparable() {
  					return nil, errors.New("elements must be comparable")
  				}
  
  				seen[normalize(ev)] = true
  			}
  		default:
  			return nil, fmt.Errorf("arguments must be slices or arrays")
  		}
  	}
  
  	return seen, nil
  }
docs: // collects identities from the slices in seqs into a set. Numeric values are normalized,
  // pointers unwrapped.