internal VoiceServer(IVoiceClientFactory <TClient, TIdentifier> factory, VoiceServerConfiguration configuration, IVoiceWrapper voiceWrapper)
        {
            _factory      = factory ?? throw new ArgumentNullException(nameof(factory));
            NativeWrapper = voiceWrapper ?? throw new ArgumentNullException(nameof(voiceWrapper));

            Configuration = configuration;

            NativeWrapper.CreateNativeServer(configuration);

            AttachToNativeEvents();
            AttachTasksToStartAndStopEvent();
        }