private function doTransitionFromY() : self
    {
        if ($this->getToken() !== '$') {
            throw (new Exception('Invalid Roman', Exception::INVALID_ROMAN))
                ->setPosition($this->getPosition())
                ->setToken($this->getToken());
        }

        // done!
        $this->setState(self::STATE_Z);
        return $this;
    }