public function offsetSet($offset, $value)
    {
        $head = null;
        $offset = $this->computeOffset($offset);

        if (0 < $offset) {
            $head = \mb_substr($this->_string, 0, $offset);
        }

        $tail = \mb_substr($this->_string, $offset + 1);
        $this->_string = $head . $value . $tail;
        $this->_direction = null;

        return $this;
    }