public unsafe BCLasso(global::Com.Bluecats.Sdk.IBCBeacon beacon)
            : 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(beacon);
                if (((object)this).GetType() != typeof(BCLasso))
                {
                    SetHandle(
                        global::Android.Runtime.JNIEnv.StartCreateInstance(((object)this).GetType(), "(Lcom/bluecats/sdk/BCBeacon;)V", __args),
                        JniHandleOwnership.TransferLocalRef);
                    global::Android.Runtime.JNIEnv.FinishCreateInstance(((global::Java.Lang.Object) this).Handle, "(Lcom/bluecats/sdk/BCBeacon;)V", __args);
                    return;
                }

                if (id_ctor_Lcom_bluecats_sdk_BCBeacon_ == IntPtr.Zero)
                {
                    id_ctor_Lcom_bluecats_sdk_BCBeacon_ = JNIEnv.GetMethodID(class_ref, "<init>", "(Lcom/bluecats/sdk/BCBeacon;)V");
                }
                SetHandle(
                    global::Android.Runtime.JNIEnv.StartCreateInstance(class_ref, id_ctor_Lcom_bluecats_sdk_BCBeacon_, __args),
                    JniHandleOwnership.TransferLocalRef);
                JNIEnv.FinishCreateInstance(((global::Java.Lang.Object) this).Handle, class_ref, id_ctor_Lcom_bluecats_sdk_BCBeacon_, __args);
            } finally {
            }
        }
 static void n_DidDetermineState_Lcom_bluecats_sdk_BCBeacon_BCBeaconState_Lcom_bluecats_sdk_BCBeacon_(IntPtr jnienv, IntPtr native__this, IntPtr native_state, IntPtr native_forBeacon)
 {
     global::Com.Bluecats.Sdk.BCBeaconManagerCallback __this = global::Java.Lang.Object.GetObject <global::Com.Bluecats.Sdk.BCBeaconManagerCallback> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     global::Com.Bluecats.Sdk.BCBeaconBCBeaconState   state  = global::Java.Lang.Object.GetObject <global::Com.Bluecats.Sdk.BCBeaconBCBeaconState> (native_state, JniHandleOwnership.DoNotTransfer);
     global::Com.Bluecats.Sdk.IBCBeacon forBeacon            = (global::Com.Bluecats.Sdk.IBCBeacon)global::Java.Lang.Object.GetObject <global::Com.Bluecats.Sdk.IBCBeacon> (native_forBeacon, JniHandleOwnership.DoNotTransfer);
     __this.DidDetermineState(state, forBeacon);
 }
        public unsafe void OnDidGetLatestBeacon(global::Com.Bluecats.Sdk.IBCBeacon p0)
        {
            if (id_onDidGetLatestBeacon_Lcom_bluecats_sdk_BCBeacon_ == IntPtr.Zero)
            {
                id_onDidGetLatestBeacon_Lcom_bluecats_sdk_BCBeacon_ = JNIEnv.GetMethodID(class_ref, "onDidGetLatestBeacon", "(Lcom/bluecats/sdk/BCBeacon;)V");
            }
            JValue *__args = stackalloc JValue [1];

            __args [0] = new JValue(p0);
            JNIEnv.CallVoidMethod(((global::Java.Lang.Object) this).Handle, id_onDidGetLatestBeacon_Lcom_bluecats_sdk_BCBeacon_, __args);
        }
        public virtual unsafe void RequestStateForBeacon(global::Com.Bluecats.Sdk.IBCBeacon beacon)
        {
            if (id_requestStateForBeacon_Lcom_bluecats_sdk_BCBeacon_ == IntPtr.Zero)
            {
                id_requestStateForBeacon_Lcom_bluecats_sdk_BCBeacon_ = JNIEnv.GetMethodID(class_ref, "requestStateForBeacon", "(Lcom/bluecats/sdk/BCBeacon;)V");
            }
            try {
                JValue *__args = stackalloc JValue [1];
                __args [0] = new JValue(beacon);

                if (((object)this).GetType() == ThresholdType)
                {
                    JNIEnv.CallVoidMethod(((global::Java.Lang.Object) this).Handle, id_requestStateForBeacon_Lcom_bluecats_sdk_BCBeacon_, __args);
                }
                else
                {
                    JNIEnv.CallNonvirtualVoidMethod(((global::Java.Lang.Object) this).Handle, ThresholdClass, JNIEnv.GetMethodID(ThresholdClass, "requestStateForBeacon", "(Lcom/bluecats/sdk/BCBeacon;)V"), __args);
                }
            } finally {
            }
        }
 static void n_RequestStateForBeacon_Lcom_bluecats_sdk_BCBeacon_(IntPtr jnienv, IntPtr native__this, IntPtr native_beacon)
 {
     global::Com.Bluecats.Sdk.BCBeaconManager __this = global::Java.Lang.Object.GetObject <global::Com.Bluecats.Sdk.BCBeaconManager> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     global::Com.Bluecats.Sdk.IBCBeacon       beacon = (global::Com.Bluecats.Sdk.IBCBeacon)global::Java.Lang.Object.GetObject <global::Com.Bluecats.Sdk.IBCBeacon> (native_beacon, JniHandleOwnership.DoNotTransfer);
     __this.RequestStateForBeacon(beacon);
 }
 static void n_OnDidGetLatestBeacon_Lcom_bluecats_sdk_BCBeacon_(IntPtr jnienv, IntPtr native__this, IntPtr native_p0)
 {
     global::Com.Bluecats.Sdk.IBCBeaconCallback __this = global::Java.Lang.Object.GetObject <global::Com.Bluecats.Sdk.IBCBeaconCallback> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     global::Com.Bluecats.Sdk.IBCBeacon         p0     = (global::Com.Bluecats.Sdk.IBCBeacon)global::Java.Lang.Object.GetObject <global::Com.Bluecats.Sdk.IBCBeacon> (native_p0, JniHandleOwnership.DoNotTransfer);
     __this.OnDidGetLatestBeacon(p0);
 }
        public virtual unsafe void DidDetermineState(global::Com.Bluecats.Sdk.BCBeaconBCBeaconState state, global::Com.Bluecats.Sdk.IBCBeacon forBeacon)
        {
            if (id_didDetermineState_Lcom_bluecats_sdk_BCBeacon_BCBeaconState_Lcom_bluecats_sdk_BCBeacon_ == IntPtr.Zero)
            {
                id_didDetermineState_Lcom_bluecats_sdk_BCBeacon_BCBeaconState_Lcom_bluecats_sdk_BCBeacon_ = JNIEnv.GetMethodID(class_ref, "didDetermineState", "(Lcom/bluecats/sdk/BCBeacon$BCBeaconState;Lcom/bluecats/sdk/BCBeacon;)V");
            }
            try {
                JValue *__args = stackalloc JValue [2];
                __args [0] = new JValue(state);
                __args [1] = new JValue(forBeacon);

                if (((object)this).GetType() == ThresholdType)
                {
                    JNIEnv.CallVoidMethod(((global::Java.Lang.Object) this).Handle, id_didDetermineState_Lcom_bluecats_sdk_BCBeacon_BCBeaconState_Lcom_bluecats_sdk_BCBeacon_, __args);
                }
                else
                {
                    JNIEnv.CallNonvirtualVoidMethod(((global::Java.Lang.Object) this).Handle, ThresholdClass, JNIEnv.GetMethodID(ThresholdClass, "didDetermineState", "(Lcom/bluecats/sdk/BCBeacon$BCBeaconState;Lcom/bluecats/sdk/BCBeacon;)V"), __args);
                }
            } finally {
            }
        }