public void UnregisterEvent(GameObject target, int eventName, Action <object> handler)
    {
        int num = 0;

        while (true)
        {
            if (num >= subscribedEvents.size)
            {
                return;
            }
            SubscribedEntry subscribedEntry = subscribedEvents[num];
            if (subscribedEntry.hash == eventName)
            {
                SubscribedEntry subscribedEntry2 = subscribedEvents[num];
                if (subscribedEntry2.handler == handler)
                {
                    SubscribedEntry subscribedEntry3 = subscribedEvents[num];
                    if ((UnityEngine.Object)subscribedEntry3.go == (UnityEngine.Object)target)
                    {
                        break;
                    }
                }
            }
            num++;
        }
        subscribedEvents.RemoveAt(num);
    }
 public void OnCleanUp()
 {
     for (int num = subscribedEvents.size - 1; num >= 0; num--)
     {
         SubscribedEntry subscribedEntry = subscribedEvents[num];
         if ((UnityEngine.Object)subscribedEntry.go != (UnityEngine.Object)null)
         {
             Unsubscribe(subscribedEntry.go, subscribedEntry.hash, subscribedEntry.handler);
         }
     }
     for (int i = 0; i < entries.size; i++)
     {
         Entry value = entries[i];
         value.handler = null;
         entries[i]    = value;
     }
     entries.Clear();
     subscribedEvents.Clear();
     intraObjectRoutes.Clear();
 }