public unsafe ShutDownEvent(global::Com.Liveperson.Infra.Statemachine.ShutDownProcess p0)
            : base(IntPtr.Zero, JniHandleOwnership.DoNotTransfer)
        {
            if (((global::Java.Lang.Object) this).Handle != IntPtr.Zero)
            {
                return;
            }

            try {
                JValue *__args = stackalloc JValue [1];
                __args [0] = new JValue(p0);
                if (((object)this).GetType() != typeof(ShutDownEvent))
                {
                    SetHandle(
                        global::Android.Runtime.JNIEnv.StartCreateInstance(((object)this).GetType(), "(Lcom/liveperson/infra/statemachine/ShutDownProcess;)V", __args),
                        JniHandleOwnership.TransferLocalRef);
                    global::Android.Runtime.JNIEnv.FinishCreateInstance(((global::Java.Lang.Object) this).Handle, "(Lcom/liveperson/infra/statemachine/ShutDownProcess;)V", __args);
                    return;
                }

                if (id_ctor_Lcom_liveperson_infra_statemachine_ShutDownProcess_ == IntPtr.Zero)
                {
                    id_ctor_Lcom_liveperson_infra_statemachine_ShutDownProcess_ = JNIEnv.GetMethodID(class_ref, "<init>", "(Lcom/liveperson/infra/statemachine/ShutDownProcess;)V");
                }
                SetHandle(
                    global::Android.Runtime.JNIEnv.StartCreateInstance(class_ref, id_ctor_Lcom_liveperson_infra_statemachine_ShutDownProcess_, __args),
                    JniHandleOwnership.TransferLocalRef);
                JNIEnv.FinishCreateInstance(((global::Java.Lang.Object) this).Handle, class_ref, id_ctor_Lcom_liveperson_infra_statemachine_ShutDownProcess_, __args);
            } finally {
            }
        }
        public virtual unsafe void ShutDown(global::Com.Liveperson.Infra.Statemachine.ShutDownProcess p0)
        {
            if (id_shutDown_Lcom_liveperson_infra_statemachine_ShutDownProcess_ == IntPtr.Zero)
            {
                id_shutDown_Lcom_liveperson_infra_statemachine_ShutDownProcess_ = JNIEnv.GetMethodID(class_ref, "shutDown", "(Lcom/liveperson/infra/statemachine/ShutDownProcess;)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_shutDown_Lcom_liveperson_infra_statemachine_ShutDownProcess_, __args);
                }
                else
                {
                    JNIEnv.CallNonvirtualVoidMethod(((global::Java.Lang.Object) this).Handle, ThresholdClass, JNIEnv.GetMethodID(ThresholdClass, "shutDown", "(Lcom/liveperson/infra/statemachine/ShutDownProcess;)V"), __args);
                }
            } finally {
            }
        }
 static IntPtr n_GetShutDownCallback(IntPtr jnienv, IntPtr native__this)
 {
     global::Com.Liveperson.Infra.Statemachine.ShutDownProcess __this = global::Java.Lang.Object.GetObject <global::Com.Liveperson.Infra.Statemachine.ShutDownProcess> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     return(JNIEnv.ToLocalJniHandle(__this.ShutDownCallback));
 }
 static void n_ShutDown_Lcom_liveperson_infra_sdkstatemachine_shutdown_ShutDownCompletionListener_(IntPtr jnienv, IntPtr native__this, IntPtr native_p0)
 {
     global::Com.Liveperson.Infra.Statemachine.ShutDownProcess __this = global::Java.Lang.Object.GetObject <global::Com.Liveperson.Infra.Statemachine.ShutDownProcess> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     global::Com.Liveperson.Infra.Sdkstatemachine.Shutdown.IShutDownCompletionListener p0 = (global::Com.Liveperson.Infra.Sdkstatemachine.Shutdown.IShutDownCompletionListener)global::Java.Lang.Object.GetObject <global::Com.Liveperson.Infra.Sdkstatemachine.Shutdown.IShutDownCompletionListener> (native_p0, JniHandleOwnership.DoNotTransfer);
     __this.ShutDown(p0);
 }
 static void n_ShutDown_Lcom_liveperson_infra_statemachine_ShutDownProcess_(IntPtr jnienv, IntPtr native__this, IntPtr native_p0)
 {
     global::Com.Liveperson.Messaging.MessagingFactory         __this = global::Java.Lang.Object.GetObject <global::Com.Liveperson.Messaging.MessagingFactory> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     global::Com.Liveperson.Infra.Statemachine.ShutDownProcess p0     = global::Java.Lang.Object.GetObject <global::Com.Liveperson.Infra.Statemachine.ShutDownProcess> (native_p0, JniHandleOwnership.DoNotTransfer);
     __this.ShutDown(p0);
 }