/**
  * Creates a new EventEmittingStateMachine instance,
  * by either using a given event emitter or otherwise creating it's own.
  *
  * @param string $name
  * @param array $states
  * @param array $transitions
  * @param EventEmitterInterface $event_emitter
  */
 public function __construct($name, array $states, array $transitions, EventEmitterInterface $event_emitter = null)
 {
     parent::__construct($name, $states, $transitions);
     $this->event_emitter = $event_emitter ?: new EventEmitter();
 }