public unsafe void OnComplete(global::Android.Bluetooth.BluetoothGattDescriptor p0, int p1, byte[] p2)
            {
                if (id_onComplete_Landroid_bluetooth_BluetoothGattDescriptor_IarrayB == IntPtr.Zero)
                {
                    id_onComplete_Landroid_bluetooth_BluetoothGattDescriptor_IarrayB = JNIEnv.GetMethodID(class_ref, "onComplete", "(Landroid/bluetooth/BluetoothGattDescriptor;I[B)V");
                }
                IntPtr  native_p2 = JNIEnv.NewArray(p2);
                JValue *__args    = stackalloc JValue [3];

                __args [0] = new JValue((p0 == null) ? IntPtr.Zero : ((global::Java.Lang.Object)p0).Handle);
                __args [1] = new JValue(p1);
                __args [2] = new JValue(native_p2);
                JNIEnv.CallVoidMethod(((global::Java.Lang.Object) this).Handle, id_onComplete_Landroid_bluetooth_BluetoothGattDescriptor_IarrayB, __args);
                if (p2 != null)
                {
                    JNIEnv.CopyArray(native_p2, p2);
                    JNIEnv.DeleteLocalRef(native_p2);
                }
            }
        public unsafe BleGattDescriptor(global::Android.Bluetooth.BluetoothGattDescriptor descriptor)
            : base(IntPtr.Zero, JniHandleOwnership.DoNotTransfer)
        {
            const string __id = "(Landroid/bluetooth/BluetoothGattDescriptor;)V";

            if (((global::Java.Lang.Object) this).Handle != IntPtr.Zero)
            {
                return;
            }

            try {
                JniArgumentValue *__args = stackalloc JniArgumentValue [1];
                __args [0] = new JniArgumentValue((descriptor == null) ? IntPtr.Zero : ((global::Java.Lang.Object)descriptor).Handle);
                var __r = _members.InstanceMethods.StartCreateInstance(__id, ((object)this).GetType(), __args);
                SetHandle(__r.Handle, JniHandleOwnership.TransferLocalRef);
                _members.InstanceMethods.FinishCreateInstance(__id, this, __args);
            } finally {
            }
        }