code: func compareUTF16SortedAsUTF8(a, b []rune) int {
  	// if a == b {
  	// 	return 0
  	// }
  
  	for i, lenA, lenB := 0, len(a), len(b); i < lenA && i < lenB; i++ {
  		aChar, bChar := a[i], b[i]
  		if aChar != bChar {
  			// http://icu-project.org/docs/papers/utf16_code_point_order.html
  
  			// aChar != bChar, fix up each one if they're both in or above
  			// the surrogate range, then compare them
  			if aChar >= 0xd800 && bChar >= 0xd800 {
  				if aChar >= 0xe000 {
  					aChar -= 0x800
  				} else {
  					aChar += 0x2000
  				}
  
  				if bChar >= 0xe000 {
  					bChar -= 0x800
  				} else {
  					bChar += 0x2000
  				}
  			}
  
  			// now aChar and bChar are in code point order
  			return int(aChar) - int(bChar)
  		}
  	}
  
  	// One is a prefix of the other, or, they are equal:
  	return len(a) - len(b)
  }
docs: // utils/CharsRef.java