/**
* @param StateInterface $state
*/
protected function addState(StateInterface $state)
{
$name = $state->getName();
if ($this->states->hasState($name)) {
if ($this->states->getState($name) !== $state) {
throw new \Exception('There is already a different state with name "' . $name . '"');
}
} else {
$this->states->addState($state);
/* @var $transition TransitionInterface */
foreach ($state->getTransitions() as $transition) {
$targetState = $transition->getTargetState();
$this->addState($targetState);
}
}
}