internal void ChangeState(AbstractCtxState newstate)
        {
            if (_logger.IsDebugEnabled)
            {
                _logger.Debug("InviteCtx[Id={0}]. State transition: '{1}'-->'{2}'", GetId(), State != null ? State.Name.ToString() : "", newstate.Name);
            }

            /*attention: no locking. Is already called thread safely via call to AdaptToResponse*/
            State = newstate;
            newstate.Initialize(this);

            if (_stateObserver != null)
            {
                _stateObserver.OnNext(CreateStateInfo(newstate.Name));
            }
        }
        internal void ChangeState(AbstractCtxState newstate)
        {
            if (_logger.IsDebugEnabled) _logger.Debug("InviteCtx[Id={0}]. State transition: '{1}'-->'{2}'", GetId(), State != null ? State.Name.ToString() : "", newstate.Name);

            /*attention: no locking. Is already called thread safely via call to AdaptToResponse*/
            State = newstate;
            newstate.Initialize(this);

               if(_stateObserver != null) _stateObserver.OnNext(CreateStateInfo(newstate.Name));
        }