/**
  * {@inheritDoc}
  */
 public function finishView(FormView $view, FormInterface $conversationForm, array $options)
 {
     $conversation = $this->conversationContext->getConversation();
     if ($conversation !== null && !$view->parent && $options['compound']) {
         $conversationForm = $conversationForm->getConfig()->getAttribute('conversation_factory')->createNamed($this->conversationContext->getConversationParameterName(), 'hidden', $conversation->getConversationId(), array('mapped' => false));
         $conversationFormView = $conversationForm->createView($view);
         $conversationFormView->vars['full_name'] = $this->conversationContext->getConversationParameterName();
         $view->children[$this->conversationContext->getConversationParameterName()] = $conversationFormView;
     }
 }
 /**
  * @param \Symfony\Component\HttpKernel\Event\FilterResponseEvent $event
  */
 public function onKernelResponse(FilterResponseEvent $event)
 {
     if ($event->getRequestType() == HttpKernelInterface::MASTER_REQUEST) {
         $conversation = $this->conversationContext->getConversation();
         if ($conversation !== null) {
             if ($conversation->getCurrentState()->isEndState()) {
                 $conversation->end();
                 $this->conversationRepository->remove($conversation);
                 $conversationalController = $this->conversationContext->getConversationalController();
                 $reflectionConversationalController = $this->conversationContext->getReflectionConversationalController();
                 if ($conversationalController !== null && $reflectionConversationalController !== null) {
                     foreach ($reflectionConversationalController->getStatefulProperties() as $statefulProperty) {
                         /* @var $statefulProperty \ReflectionProperty */
                         if ($conversation->attributes->has($statefulProperty->getName())) {
                             $conversation->attributes->remove($statefulProperty->getName());
                         }
                     }
                 }
             } else {
                 $conversationalController = $this->conversationContext->getConversationalController();
                 $reflectionConversationalController = $this->conversationContext->getReflectionConversationalController();
                 if ($conversationalController !== null && $reflectionConversationalController !== null) {
                     foreach ($reflectionConversationalController->getStatefulProperties() as $statefulProperty) {
                         /* @var $statefulProperty \ReflectionProperty */
                         if (!$statefulProperty->isPublic()) {
                             $statefulProperty->setAccessible(true);
                         }
                         $conversation->attributes->set($statefulProperty->getName(), $statefulProperty->getValue($conversationalController));
                         if (!$statefulProperty->isPublic()) {
                             $statefulProperty->setAccessible(false);
                         }
                     }
                 }
             }
         }
     }
 }