public CirceControllerSessionManager()
        {
            operationDispatcher = new ControllerIncomingOperationDispatcher(this);
            DeviceTracker = new DeviceTracker();
            outgoingOperationsQueue = new ActionQueue();

            sessionGuard = new SessionGuard(outgoingOperationsQueue);
            sessionGuard.StateChanged += SessionGuardOnStateChanged;
            sessionGuard.OperationReceived += OperationReceived;
        }
        public SessionGuard([NotNull] ActionQueue outgoingOperationsQueue)
        {
            Guard.NotNull(outgoingOperationsQueue, nameof(outgoingOperationsQueue));

            this.outgoingOperationsQueue = outgoingOperationsQueue;
        }