public virtual unsafe void Visit(global::Com.Liveperson.Infra.Sdkstatemachine.Events.ShutDownCompletedEvent p0)
        {
            if (id_visit_Lcom_liveperson_infra_sdkstatemachine_events_ShutDownCompletedEvent_ == IntPtr.Zero)
            {
                id_visit_Lcom_liveperson_infra_sdkstatemachine_events_ShutDownCompletedEvent_ = JNIEnv.GetMethodID(class_ref, "visit", "(Lcom/liveperson/infra/sdkstatemachine/events/ShutDownCompletedEvent;)V");
            }
            try {
                JValue *__args = stackalloc JValue [1];
                __args [0] = new JValue(p0);

                if (((object)this).GetType() == ThresholdType)
                {
                    JNIEnv.CallVoidMethod(((global::Java.Lang.Object) this).Handle, id_visit_Lcom_liveperson_infra_sdkstatemachine_events_ShutDownCompletedEvent_, __args);
                }
                else
                {
                    JNIEnv.CallNonvirtualVoidMethod(((global::Java.Lang.Object) this).Handle, ThresholdClass, JNIEnv.GetMethodID(ThresholdClass, "visit", "(Lcom/liveperson/infra/sdkstatemachine/events/ShutDownCompletedEvent;)V"), __args);
                }
            } finally {
            }
        }
 static void n_Visit_Lcom_liveperson_infra_sdkstatemachine_events_ShutDownCompletedEvent_(IntPtr jnienv, IntPtr native__this, IntPtr native_p0)
 {
     global::Com.Liveperson.Infra.Sdkstatemachine.BaseInfraState __this            = global::Java.Lang.Object.GetObject <global::Com.Liveperson.Infra.Sdkstatemachine.BaseInfraState> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     global::Com.Liveperson.Infra.Sdkstatemachine.Events.ShutDownCompletedEvent p0 = global::Java.Lang.Object.GetObject <global::Com.Liveperson.Infra.Sdkstatemachine.Events.ShutDownCompletedEvent> (native_p0, JniHandleOwnership.DoNotTransfer);
     __this.Visit(p0);
 }
 static void n_Accept_Lcom_liveperson_infra_statemachine_interfaces_IState_(IntPtr jnienv, IntPtr native__this, IntPtr native_p0)
 {
     global::Com.Liveperson.Infra.Sdkstatemachine.Events.ShutDownCompletedEvent __this = global::Java.Lang.Object.GetObject <global::Com.Liveperson.Infra.Sdkstatemachine.Events.ShutDownCompletedEvent> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     global::Com.Liveperson.Infra.Statemachine.Interfaces.IState p0 = (global::Com.Liveperson.Infra.Statemachine.Interfaces.IState)global::Java.Lang.Object.GetObject <global::Com.Liveperson.Infra.Statemachine.Interfaces.IState> (native_p0, JniHandleOwnership.DoNotTransfer);
     __this.Accept(p0);
 }