public static function startsWith($string, $with, $caseSensitive = true)
    {
        if (!$bytes = static::byteLength($with)) {
            return true;
        }
        if ($caseSensitive) {
            return 0 === strncmp($string, $with, $bytes);
        } else {
            return mb_strtolower(
                    mb_substr($string, 0, $bytes, '8bit'),
                    self::getCharset()
                ) === mb_strtolower($with, self::getCharset());
        }
    }