protected function compileRoute()
    {
        if (version_compare(\Illuminate\Foundation\Application::VERSION, '5.5.0') < 0) {
            if ( is_callable( "parent::extractOptionalParameters" ) ) {
                return parent::compileRoute();
            }
        }

        if (! $this->compiled) {

            //todo: this is a bit ugly - we should go deeper and solve the real problem
            //This is ugly - before 5.4, we didn't use "uri()" method in the RouteCompiler (there was no
            //route compiler!), and instead we used the private uri instance variable. Which meant that
            //`uri()` and `uri` were different.
            $tempRouterIntent = $this->routeIntent;
            $this->routeIntent = "";
            $this->compiled = (new RouteCompiler($this))->compile();
            $this->routeIntent = $tempRouterIntent;
        }

        return $this->compiled;
    }