private void OnCloseScreenRequest(CloseScreenRequestSignal signal)
    {
        var subjectScreenStackItem = _navigationStack.FirstOrDefault(screenStackItem => screenStackItem.ScreenController == signal.ScreenController);

        if (subjectScreenStackItem == null)
        {
            Debug.LogWarningFormat("Trying to close a screen '{0}', but it doesn't exist in the navigation stack!", signal.ScreenController.GetType().ToString());
            return;
        }

        // If the closed screen was the screen in front, focus the next screen
        var frontScreen = _navigationStack.Last();

        if (signal.ScreenController == frontScreen.ScreenController)
        {
            var newFrontScreenStackItem = _navigationStack[_navigationStack.Count - 2];
            newFrontScreenStackItem.ScreenController.Focus();
            _currentFocussed = newFrontScreenStackItem;
        }

        // Close the screen
        subjectScreenStackItem.ScreenController.Close();
    }
 private void OnCloseScreenRequestSignal(CloseScreenRequestSignal signal)
 {
     CloseScreen(signal.Screen, signal.Animation);
 }