diff --git a/typo3/sysext/core/Classes/Routing/Enhancer/SimpleEnhancer.php b/typo3/sysext/core/Classes/Routing/Enhancer/SimpleEnhancer.php
index 745b8b718987f5fc29c11e7f34a585b1dee088c9..7af253021371e84d5ef33a70c9a23477696d95ac 100644
--- a/typo3/sysext/core/Classes/Routing/Enhancer/SimpleEnhancer.php
+++ b/typo3/sysext/core/Classes/Routing/Enhancer/SimpleEnhancer.php
@@ -51,23 +51,22 @@ class SimpleEnhancer extends AbstractEnhancer implements RoutingEnhancerInterfac
      */
     public function buildResult(Route $route, array $results, array $remainingQueryParameters = []): PageArguments
     {
-        $variableProcessor = $this->getVariableProcessor();
         // determine those parameters that have been processed
         $parameters = array_intersect_key(
             $results,
             array_flip($route->compile()->getPathVariables())
         );
         // strip of those that where not processed (internals like _route, etc.)
+        $internals = array_diff_key($results, $parameters);
         $matchedVariableNames = array_keys($parameters);
 
         $staticMappers = $route->filterAspects([StaticMappableAspectInterface::class], $matchedVariableNames);
         $dynamicCandidates = array_diff_key($parameters, $staticMappers);
 
         // all route arguments
-        $routeArguments = $variableProcessor->inflateParameters($parameters, $route->getArguments());
+        $routeArguments = $this->inflateParameters($parameters, $internals);
         // dynamic arguments, that don't have a static mapper
-        $dynamicArguments = $variableProcessor
-            ->inflateNamespaceParameters($dynamicCandidates, '');
+        $dynamicArguments = $this->inflateParameters($dynamicCandidates);
         // route arguments, that don't appear in dynamic arguments
         $staticArguments = ArrayUtility::arrayDiffKeyRecursive($routeArguments, $dynamicArguments);
 
@@ -142,7 +141,6 @@ class SimpleEnhancer extends AbstractEnhancer implements RoutingEnhancerInterfac
 
     public function inflateParameters(array $parameters, array $internals = []): array
     {
-        return $this->getVariableProcessor()
-            ->inflateNamespaceParameters($parameters, '');
+        return $this->getVariableProcessor()->inflateParameters($parameters, $internals);
     }
 }
diff --git a/typo3/sysext/frontend/Tests/Functional/SiteHandling/Fixtures/LinkHandlingController.php b/typo3/sysext/frontend/Tests/Functional/SiteHandling/Fixtures/LinkHandlingController.php
index ba3033c213f31b7415ce6b51d4c19bdcbaaa1ff6..0c3a11534cd4f29ebc030f9c1a1e1bc4aaaa7f95 100644
--- a/typo3/sysext/frontend/Tests/Functional/SiteHandling/Fixtures/LinkHandlingController.php
+++ b/typo3/sysext/frontend/Tests/Functional/SiteHandling/Fixtures/LinkHandlingController.php
@@ -58,9 +58,11 @@ class LinkHandlingController
     }
 
     /**
+     * @param string|null $content
+     * @param array|null $configuration
      * @return string
      */
-    public function dumpPageArgumentsAction(): string
+    public function dumpPageArgumentsAction(?string $content, array $configuration = null): string
     {
         /** @var ServerRequestInterface $request */
         $request = $GLOBALS['TYPO3_REQUEST'];
@@ -68,15 +70,20 @@ class LinkHandlingController
         $pageArguments = $request->getAttribute('routing');
         /** @var SiteLanguage $language */
         $language = $request->getAttribute('language');
+        $flags = 0;
+        if ($configuration['userFunc.']['prettyPrint'] ?? true) {
+            $flags += JSON_PRETTY_PRINT;
+        }
         return json_encode([
             'pageId' => $pageArguments->getPageId(),
             'pageType' => $pageArguments->getPageType(),
             'languageId' => $language->getLanguageId(),
-            'dynamicArguments' => $pageArguments->getDynamicArguments(),
             'staticArguments' => $pageArguments->getStaticArguments(),
+            'routeArguments' => $pageArguments->getRouteArguments(),
+            'dynamicArguments' => $pageArguments->getDynamicArguments(),
             'queryArguments' => $pageArguments->getQueryArguments(),
             'requestQueryParams' => $request->getQueryParams(),
             '_GET' => $_GET,
-        ]);
+        ], $flags);
     }
 }
diff --git a/typo3/sysext/frontend/Tests/Functional/SiteHandling/Framework/Builder/Builder.php b/typo3/sysext/frontend/Tests/Functional/SiteHandling/Framework/Builder/Builder.php
index 05daa95b18d35a7f318a1d6e5d8b588f74ed0edb..a5584682fc15f05c7923d4e85e5da81d12f58b32 100644
--- a/typo3/sysext/frontend/Tests/Functional/SiteHandling/Framework/Builder/Builder.php
+++ b/typo3/sysext/frontend/Tests/Functional/SiteHandling/Framework/Builder/Builder.php
@@ -230,6 +230,11 @@ class Builder
         $resolveArguments['staticArguments'] = $resolveArguments['staticArguments'] ?? [];
         $resolveArguments['dynamicArguments'] = $resolveArguments['dynamicArguments'] ?? [];
         $resolveArguments['queryArguments'] = $resolveArguments['queryArguments'] ?? [];
+        // generate ("assume") `routeArguments` from expected static and dynamic arguments if not declared
+        $resolveArguments['routeArguments'] = $resolveArguments['routeArguments'] ?? array_replace_recursive(
+            $resolveArguments['staticArguments'],
+            $resolveArguments['dynamicArguments']
+        );
         if (preg_match('#\?cHash=([a-z0-9]+)#i', $this->compileUrl($testSet), $matches)) {
             $resolveArguments['dynamicArguments']['cHash'] = $matches[1];
             $resolveArguments['queryArguments']['cHash'] = $matches[1];
diff --git a/typo3/sysext/frontend/Tests/Functional/SiteHandling/TestSetDataProviderTrait.php b/typo3/sysext/frontend/Tests/Functional/SiteHandling/TestSetDataProviderTrait.php
index bd6ad6b97663a231ab5d212a008a7d565bbfbf54..db96146801bc763e219d9411f360196fb7f37b8a 100644
--- a/typo3/sysext/frontend/Tests/Functional/SiteHandling/TestSetDataProviderTrait.php
+++ b/typo3/sysext/frontend/Tests/Functional/SiteHandling/TestSetDataProviderTrait.php
@@ -61,18 +61,16 @@ trait TestSetDataProviderTrait
                         ->withRequiredDefinedVariableNames('value'),
                 ])
                 ->withResolveArguments([
+                    'routeArguments' => [
+                        'known' => ['value' => $resolveValueVar],
+                    ],
                     'dynamicArguments' => [
-                        // @todo Wrong
-                        'any__other' => 'other',
+                        'known' => ['value' => $resolveValueVar],
+                        'any' => ['other' => 'other'],
                         'cHash' => $cHashVar,
                     ],
-                    'staticArguments' => [
-                        // @todo Wrong
-                        'known_value' => 'known',
-                    ],
                     'queryArguments' => [
-                        // @todo Wrong
-                        'any__other' => 'other',
+                        'any' => ['other' => 'other'],
                         'cHash' => $cHashVar,
                     ],
                 ]),
@@ -90,6 +88,11 @@ trait TestSetDataProviderTrait
                         ->withRequiredDefinedVariableNames('value'),
                 ])
                 ->withResolveArguments([
+                    'routeArguments' => [
+                        'testing' => [
+                            'known' => ['value' => $resolveValueVar],
+                        ],
+                    ],
                     'dynamicArguments' => [
                         'testing' => [
                             'known' => ['value' => $resolveValueVar],
@@ -123,6 +126,13 @@ trait TestSetDataProviderTrait
                         ->withRequiredDefinedVariableNames('value'),
                 ])
                 ->withResolveArguments([
+                    'routeArguments' => [
+                        'tx_testing_link' => [
+                            'known' => ['value' => $resolveValueVar],
+                            'controller' => 'Link',
+                            'action' => 'index',
+                        ],
+                    ],
                     'dynamicArguments' => [
                         'tx_testing_link' => [
                             'known' => ['value' => $resolveValueVar],
@@ -166,9 +176,8 @@ trait TestSetDataProviderTrait
             ->withApplicableItems($enhancers)
             ->withApplicableSet(
                 VariablesContext::create(Variables::create([
-                    // @todo Should be '?any%5Bother%5D=other&cHash='
-                    'pathSuffix' => '?any__other=other&cHash=[[cHash]]',
-                    'cHash' => '02ee401c0a183d11d30b7a61deeb3361',
+                    'pathSuffix' => '?any%5Bother%5D=other&cHash=[[cHash]]',
+                    'cHash' => 'a655d1f1d346f7d3fa7aef5459a6547f',
                 ]))->withRequiredApplicables($enhancers['Simple']),
                 VariablesContext::create(Variables::create([
                     'pathSuffix' => '?testing%5Bany%5D%5Bother%5D=other&cHash=[[cHash]]',