static UnityEventReflector() { // ReSharper disable PossibleNullReferenceException var baseType = typeof(UnityEventBase); var m_RebuildPersistentCallsIfNeeded = baseType.GetMethod( "RebuildPersistentCallsIfNeeded", BindingFlags.Instance | BindingFlags.NonPublic ); rebuildPersistentCallsIfNeeded = ue => m_RebuildPersistentCallsIfNeeded.Invoke(ue, noArgs); var f_PersistentCalls = baseType.GetField( "m_PersistentCalls", BindingFlags.Instance | BindingFlags.NonPublic ); persistentCalls = ue => new PersistentCallGroup(f_PersistentCalls.GetValue(ue)); var persistentCallType = Type2.getType(UnityEngineEventsPersistentCall).rightOrThrow; var m_methodInfo = typeof(UnityEventBase).GetMethod( "FindMethod", BindingFlags.Instance | BindingFlags.NonPublic, Type.DefaultBinder, new[] { persistentCallType }, null ); findMethod = (ue, pc) => F.opt((MethodInfo)m_methodInfo.Invoke(ue, new [] { pc.obj })); // ReSharper restore PossibleNullReferenceException }