/**
  * @param Workflow $workflow
  * @throws AssemblerException
  */
 protected function validateWorkflow(Workflow $workflow)
 {
     $startTransitions = $workflow->getTransitionManager()->getTransitions()->filter(function (Transition $transition) {
         return $transition->isStart();
     });
     if (!$startTransitions->count()) {
         throw new AssemblerException(sprintf('Workflow "%s" does not contains neither start step nor start transitions', $workflow->getName()));
     }
     if ($workflow->getType() == Workflow::TYPE_ENTITY) {
         /** @var Step $step */
         foreach ($workflow->getStepManager()->getSteps() as $step) {
             if ($step->getFormOptions()) {
                 throw new AssemblerException(sprintf('Workflow "%s" has type "entity" and cannot support form options in step "%s"', $workflow->getName(), $step->getName()));
             }
         }
     }
 }