/// <summary>
 ///     Removes a handler from the registry, if possible.
 /// </summary>
 /// <param name="handler">Handler to remove.</param>
 public void RemoveHandler(INetworkPackageHandler handler)
 {
     foreach (Type packageType in handler.packageTypes)
     {
         List <INetworkPackageHandler> handlers;
         if (!_handlers.TryGetValue(packageType, out handlers) || !handlers.Contains(handler))
         {
             continue;
         }
         handlers.Remove(handler);
     }
 }
 /// <summary>
 ///     Adds a handler to the registry. Adding a handler multiple times is prevented.
 /// </summary>
 /// <param name="handler">Handler to add.</param>
 public void AddHandler(INetworkPackageHandler handler)
 {
     foreach (Type packageType in handler.packageTypes)
     {
         List <INetworkPackageHandler> handlers;
         if (!_handlers.TryGetValue(packageType, out handlers))
         {
             _handlers[packageType] = new List <INetworkPackageHandler>();
             handlers = _handlers[packageType];
         }
         if (handlers.Contains(handler))
         {
             continue;
         }
         handlers.Add(handler);
     }
 }