/**
  * @param GetResponseEvent $event
  */
 public function onKernelRequest(GetResponseEvent $event)
 {
     if (!$event->isMasterRequest()) {
         return;
     }
     $request = $event->getRequest();
     if (!$this->requestMatcher->matches($request)) {
         return;
     }
     /** @var OrderInterface $order */
     $order = $this->cartContext->getCart();
     if ($order->isEmpty()) {
         $event->setResponse(new RedirectResponse($this->urlGenerator->generate('sylius_shop_cart_summary')));
     }
     $stateMachine = $this->stateMachineFactory->get($order, OrderCheckoutTransitions::GRAPH);
     if ($stateMachine->can($this->getRequestedTransition($request))) {
         return;
     }
     if (null !== ($referer = $this->getReferer($request))) {
         $event->setResponse(new RedirectResponse($referer));
         return;
     }
     $event->setResponse(new RedirectResponse($this->urlGenerator->generateForOrderCheckoutState($order)));
 }