public function addState(callable $stateBuilderCallable)
    {
        $stateBuilder = new StateBuilder();
        call_user_func($stateBuilderCallable, $stateBuilder, $this);
        $state = $stateBuilder->getState();

        $this->states[$state->getName()] = $state;

        return $this;
    }