protected function rewriteRoutingSetRequestedAndDefaultParams (array & $allMatchedParams, $requestCtrlName = NULL, $requestActionName = NULL) {
		/** @var $this \MvcCore\Router */
		// in array `$allMatchedParams` - there could be sometimes presented matched 
		// or route specified values from configuration already, under keys `controller` and 
		// `action`, always with a value, never with `NULL`
		/** @var $request \MvcCore\Request */
		$request = & $this->request;
		$rawQueryParams = array_merge([], $request->GetParams(FALSE));
		// complete controller and action from any possible source
		list($ctrlDfltNamePc, $actionDfltNamePc) = $this->application->GetDefaultControllerAndActionNames();
		$toolClass = self::$toolClass;
		if ($requestCtrlName !== NULL) {
			$request->SetControllerName($requestCtrlName);
			$allMatchedParams[static::URL_PARAM_CONTROLLER] = $requestCtrlName;
			$rawQueryParams[static::URL_PARAM_CONTROLLER] = $requestCtrlName;
		} else if (isset($allMatchedParams[static::URL_PARAM_CONTROLLER])) {
			$request->SetControllerName($allMatchedParams[static::URL_PARAM_CONTROLLER]);
		} else {
			$defaultCtrlNameDashed = $toolClass::GetDashedFromPascalCase($ctrlDfltNamePc);
			$request->SetControllerName($defaultCtrlNameDashed);
			$allMatchedParams[static::URL_PARAM_CONTROLLER] = $defaultCtrlNameDashed;
		}
		if ($requestActionName !== NULL) {
			$request->SetActionName($requestActionName);
			$allMatchedParams[static::URL_PARAM_ACTION] = $requestActionName;
			$rawQueryParams[static::URL_PARAM_ACTION] = $requestActionName;
		} else if (isset($allMatchedParams[static::URL_PARAM_ACTION])) {
			$request->SetActionName($allMatchedParams[static::URL_PARAM_ACTION]);
		} else {
			$defaultActionNameDashed = $toolClass::GetDashedFromPascalCase($actionDfltNamePc);
			$request->SetActionName($defaultActionNameDashed);
			$allMatchedParams[static::URL_PARAM_ACTION] = $defaultActionNameDashed;
		}
		// complete params for request object - there have to be everything including ctrl and action
		$this->defaultParams = array_merge(
			// default params are merged with previous default params to have 
			// possibility to add domain params by extended module router
			$this->currentRoute->GetDefaults(), $this->defaultParams, 
			$allMatchedParams, $rawQueryParams
		);
		// redirect route with strictly defined match regular expression and not defined reverse could have `NULL` method result:
		$routeReverseParams = $this->currentRoute->GetReverseParams() ?: [];
		// complete really matched params from path - unset ctrl and action if ctrl and even action are not in pattern
		$pathOnlyMatchedParams = array_merge([], $allMatchedParams);
		$controllerInReverse	= in_array(static::URL_PARAM_CONTROLLER, $routeReverseParams, TRUE);
		$actionInReverse		= in_array(static::URL_PARAM_ACTION, $routeReverseParams, TRUE);
		if (!$controllerInReverse)	unset($pathOnlyMatchedParams[static::URL_PARAM_CONTROLLER]);
		if (!$actionInReverse)		unset($pathOnlyMatchedParams[static::URL_PARAM_ACTION]);
		// requested params - all really requested params for self URL addresses
		// building base params array, parsed from path, merged with all query params 
		// and merged later with given params array into method `Url()`.
		// There cannot be `controller` and `action` keys from route configuration,
		// only if ctrl and action is defined by query string, that's different
		$this->requestedParams = array_merge([], $pathOnlyMatchedParams, $rawQueryParams);
	}