public void RegisterProcessor <T>(ISharedMessageProcessor processor) where T : AbstractSharedMessage
        {
            if (_processors.ContainsValue(processor))
            {
                throw new InvalidOperationException("Repeated processor registration for type :: " + processor.GetType().FullName);
            }

            _processors.Add(typeof(T), processor);
        }
        public void UnregisterProcessor(ISharedMessageProcessor processor)
        {
            Type keyToRemove = null;

            foreach (var kvp in _processors)
            {
                if (kvp.Value == processor)
                {
                    keyToRemove = kvp.Key;
                    break;
                }
            }
            _processors.Remove(keyToRemove);
        }