public function resolveRouteItem($uriWithParam = null, $resolvers = null, $trailingSlash = false) {
        if (empty($uriWithParam)) {
            $uriWithParam = \Route::getCurrentRoute()->uri();
        }
        if (empty($resolvers)) {
            $resolvers = \RouteResolver::getFromRequest($uriWithParam);
        }
        $resolvedRoute = [];
          
        if (!empty($resolvers)) {
            foreach ($resolvers as $parameter => $resolver) {
                if ($resolver instanceof ParamResolver) {
                    if ($item = $resolver->item()) {
                        $urlCurrent = $uriWithParam;
                        if (isset($resolvedRoute['url'])) {
                            $urlCurrent = $resolvedRoute['url'];
                        }
                        // build real url
                        // last values of label overwrites previous
                        $resolvedRoute = [
                            'locale' => $resolver->locale($item),
                            'label' => $resolver->label($item),
                            'url' => str_replace('{'. $parameter . '}', $resolver->segment($item), $urlCurrent)
                            ];
                    }
                }
                else {
                    throw new \Exception("Resolver has to implement of 'Crumby\RouteResolver\Contracts\ParamResolver', " .  get_class($resolver) . "  given.");
                }
            }
        }  

        /**
         * fix trailng slash
         */
        if ($trailingSlash && isset($resolvedRoute['url'])) {
            $resolvedRoute['url'] = '/' . ltrim($resolvedRoute['url'], '/');
        }
        return empty($resolvedRoute) ? false : $resolvedRoute;   
    }