public function set($idx, $char)
    {
        self::mustBeInteger($idx, 'Index');

        if($idx instanceof N) $idx = $idx->int;

        if ($idx < 0 || $idx >= count($this)) {
            throw new \RuntimeException(
                sprintf('Index %d is not defined into this string!', $idx)
            );
        }

        self::mustBeString($char, 'New character');

        if (mb_strlen($char, C::ENCODING) != 1) {
            throw new \InvalidArgumentException(
                'Given string must be a only ONE character.'
            );
        }

        return $this->_chars()->replace($idx, $char)->join;
    }