public void Unsubscribe <ComponentType>(int eventName, IntraObjectHandler <ComponentType> handler, bool suppressWarnings)
 {
     if (!intraObjectDispatcher.TryGetValue(eventName, out List <IntraObjectHandlerBase> value))
     {
         if (!suppressWarnings)
         {
             Debug.LogWarning("Failed to Unsubscribe event handler: " + handler.ToString() + "\nNo subscriptions have been made to event");
         }
     }
     else
     {
         int num = value.IndexOf((IntraObjectHandlerBase)handler);
         if (num == -1)
         {
             if (!suppressWarnings)
             {
                 Debug.LogWarning("Failed to Unsubscribe event handler: " + handler.ToString() + "\nNot subscribed to event");
             }
         }
         else
         {
             Unsubscribe(eventName, num, suppressWarnings);
         }
     }
 }
    public int Subscribe <ComponentType>(int eventName, IntraObjectHandler <ComponentType> handler)
    {
        if (!intraObjectDispatcher.TryGetValue(eventName, out List <IntraObjectHandlerBase> value))
        {
            value = new List <IntraObjectHandlerBase>();
            intraObjectDispatcher.Add(eventName, value);
        }
        int num = value.IndexOf((IntraObjectHandlerBase)handler);

        if (num == -1)
        {
            value.Add((IntraObjectHandlerBase)handler);
            num = value.Count - 1;
        }
        intraObjectRoutes.Add(new IntraObjectRoute(eventName, num));
        return(num);
    }