public function __construct($str)
{
$this->str = $str;
$this->byteIdx = 0;
$this->charIdx = 0;
// TODO: `strlen($str)` might return a wrong length when function
// overloading is enabled.
// https://php.net/manual/ro/mbstring.overload.php
$this->byteLen = strlen($str);
$this->charLen = mb_strlen($str, 'UTF-8');
}