private void ProcessCommand(InCommand command)
 {
     try
     {
         foreach (var interceptor in _inputInterceptors)
         {
             interceptor(command);
         }
         var consumer = _inputConsumers.First();
         consumer.TryConsume(command, new InputCommandConsumerScope(() => _inputConsumers.Remove(consumer)));
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex);
     }
 }
 public void QueueInCommand(InCommand command)
 {
     _inputQueue.Add(command);
 }
 public void TryConsume(InCommand command, IDisposable scope)
 {
     _action(command, scope);
 }