code: public static int encodedLength(CharSequence sequence) {
      // Warning to maintainers: this implementation is highly optimized.
      int utf16Length = sequence.length();
      int utf8Length = utf16Length;
      int i = 0;
  
      // This loop optimizes for pure ASCII.
      while (i < utf16Length && sequence.charAt(i) < 0x80) {
        i++;
      }
  
      // This loop optimizes for chars less than 0x800.
      for (; i < utf16Length; i++) {
        char c = sequence.charAt(i);
        if (c < 0x800) {
          utf8Length += ((0x7f - c) >>> 31); // branch free!
        } else {
          utf8Length += encodedLengthGeneral(sequence, i);
          break;
        }
      }
  
      if (utf8Length < utf16Length) {
        // Necessary and sufficient condition for overflow because of maximum 3x expansion
        throw new IllegalArgumentException(
            "UTF-8 length does not fit in int: " + (utf8Length + (1L << 32)));
      }
      return utf8Length;
    }
docs: Returns the number of bytes in the UTF-8-encoded form of {@code sequence}. For a string, this
  method is equivalent to {@code string.getBytes(UTF_8).length}, but is more efficient in both
  time and space.
  
  @throws IllegalArgumentException if {@code sequence} contains ill-formed UTF-16 (unpaired
  surrogates)