public void Dispose()
        {
            if (!_disposed)
            {
                _disposed = true;

                if (_monitor is not null)
                {
                    _monitor.Dispose();
                    _monitor = null;
                }

                if (_heartbeatService is not null)
                {
                    _heartbeatService.Dispose();
                    _heartbeatService = null;
                }

                if (_parametersService is not null)
                {
                    _parametersService.Dispose();
                    _parametersService = null;
                }
            }
        }
        internal CommunicationServicesProvider(UavcanService uavcanService)
        {
            if (uavcanService is null)
            {
                throw new ArgumentNullException(nameof(uavcanService));
            }

            _monitor           = new NodeMonitor(uavcanService.Engine);
            _heartbeatService  = new HeartbeatService(uavcanService.Engine);
            _parametersService = new ParametersService(uavcanService.Engine);
        }