@Override
    public int compareTo(Utf8String anotherString) {
        int i = 0;
        int j = 0;
        byte[] aBytes = this.bytes;
        byte[] bBytes = anotherString.bytes;
        int aByteEnd = this.byteOffset + this.byteCount;
        int bByteEnd = anotherString.byteOffset + anotherString.byteCount;
        while (i < aByteEnd && j < bByteEnd) {
            int aChar = getCodepoint(aBytes, i);
            int bChar = getCodepoint(bBytes, j);
            if (aChar != bChar) {
                return aChar - bChar;
            }
            i += getByteCountFromFirstUtf8Byte(aBytes[i]);
            j += getByteCountFromFirstUtf8Byte(bBytes[j]);
        }
        if (i < aByteEnd) {
            return 1;
        } else if (j < bByteEnd) {
            return -1;
        } else {
            return 0;
        }
    }
@see java.nio.charset.CharsetEncoder#maxBytesPerChar()
turms-server-common/src/main/java/im/turms/server/common/infra/lang/Utf8String.java