private function checkStates(TransitionChain $transitionChain)
    {
        /**
         * @var Transition $transition
         */
        foreach ($transitionChain->getTransitions() as $transition) {
            $initialStateName = $transition->getStart()->getName();

            if ($initialStateName === $this->pointOfEntry) {
                continue;
            }

            if (!$this->transitionChain->getTransitionsByFinalState($initialStateName)) {
                throw new StateNotValidException($initialStateName);
            }
        }

        return $this;
    }