code: func prepareForSymMerge(u, w Comparators) (u1, w1, u2, w2 Comparators) {
  	if u.Len() > w.Len() {
  		u, w = w, u
  	}
  	v1, w, v2 := decomposeForSymMerge(len(u), w)
  
  	i := symSearch(u, w)
  
  	u1 = make(Comparators, i)
  	copy(u1, u[:i])
  	w1 = append(v1, w[:len(w)-i]...)
  
  	u2 = make(Comparators, len(u)-i)
  	copy(u2, u[i:])
  
  	w2 = append(w[len(w)-i:], v2...)
  	return
  }
docs: // prepareForSymMerge performs a symmetrical decomposition on two
  // lists of different sizes.  It breaks apart the longer list into
  // an active site (equal to the size of the shorter list) and performs
  // a symmetrical rotation with the active site and the shorter list.
  // The two stubs are then split between the active site and shorter list
  // ensuring two equally sized lists where every value in u' is less
  // than w'.