public virtual unsafe void AcquireTokenSilentAsync(string[] scopes, global::Com.Microsoft.Identity.Client.IAccount account, string authority, global::Com.Microsoft.Identity.Client.ISilentAuthenticationCallback @callback)
        {
            const string __id             = "acquireTokenSilentAsync.([Ljava/lang/String;Lcom/microsoft/identity/client/IAccount;Ljava/lang/String;Lcom/microsoft/identity/client/SilentAuthenticationCallback;)V";
            IntPtr       native_scopes    = JNIEnv.NewArray(scopes);
            IntPtr       native_authority = JNIEnv.NewString(authority);

            try {
                JniArgumentValue *__args = stackalloc JniArgumentValue [4];
                __args [0] = new JniArgumentValue(native_scopes);
                __args [1] = new JniArgumentValue((account == null) ? IntPtr.Zero : ((global::Java.Lang.Object)account).Handle);
                __args [2] = new JniArgumentValue(native_authority);
                __args [3] = new JniArgumentValue((@callback == null) ? IntPtr.Zero : ((global::Java.Lang.Object)@callback).Handle);
                _members.InstanceMethods.InvokeVirtualVoidMethod(__id, this, __args);
            } finally {
                if (scopes != null)
                {
                    JNIEnv.CopyArray(native_scopes, scopes);
                    JNIEnv.DeleteLocalRef(native_scopes);
                }
                JNIEnv.DeleteLocalRef(native_authority);
                global::System.GC.KeepAlive(scopes);
                global::System.GC.KeepAlive(account);
                global::System.GC.KeepAlive(@callback);
            }
        }
        public virtual unsafe bool RemoveAccount(global::Com.Microsoft.Identity.Client.IAccount account)
        {
            const string __id = "removeAccount.(Lcom/microsoft/identity/client/IAccount;)Z";

            try {
                JniArgumentValue *__args = stackalloc JniArgumentValue [1];
                __args [0] = new JniArgumentValue((account == null) ? IntPtr.Zero : ((global::Java.Lang.Object)account).Handle);
                var __rm = _members.InstanceMethods.InvokeVirtualBooleanMethod(__id, this, __args);
                return(__rm);
            } finally {
                global::System.GC.KeepAlive(account);
            }
        }
        public virtual unsafe void RemoveAccount(global::Com.Microsoft.Identity.Client.IAccount account, global::Com.Microsoft.Identity.Client.IMultipleAccountPublicClientApplicationRemoveAccountCallback @callback)
        {
            const string __id = "removeAccount.(Lcom/microsoft/identity/client/IAccount;Lcom/microsoft/identity/client/IMultipleAccountPublicClientApplication$RemoveAccountCallback;)V";

            try {
                JniArgumentValue *__args = stackalloc JniArgumentValue [2];
                __args [0] = new JniArgumentValue((account == null) ? IntPtr.Zero : ((global::Java.Lang.Object)account).Handle);
                __args [1] = new JniArgumentValue((@callback == null) ? IntPtr.Zero : ((global::Java.Lang.Object)@callback).Handle);
                _members.InstanceMethods.InvokeVirtualVoidMethod(__id, this, __args);
            } finally {
                global::System.GC.KeepAlive(account);
                global::System.GC.KeepAlive(@callback);
            }
        }
        public unsafe CurrentAccountResult(global::Com.Microsoft.Identity.Client.IAccount current, global::Com.Microsoft.Identity.Client.IAccount prior, bool changed) : base(IntPtr.Zero, JniHandleOwnership.DoNotTransfer)
        {
            const string __id = "(Lcom/microsoft/identity/client/IAccount;Lcom/microsoft/identity/client/IAccount;Z)V";

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

            try {
                JniArgumentValue *__args = stackalloc JniArgumentValue [3];
                __args [0] = new JniArgumentValue((current == null) ? IntPtr.Zero : ((global::Java.Lang.Object)current).Handle);
                __args [1] = new JniArgumentValue((prior == null) ? IntPtr.Zero : ((global::Java.Lang.Object)prior).Handle);
                __args [2] = new JniArgumentValue(changed);
                var __r = _members.InstanceMethods.StartCreateInstance(__id, ((object)this).GetType(), __args);
                SetHandle(__r.Handle, JniHandleOwnership.TransferLocalRef);
                _members.InstanceMethods.FinishCreateInstance(__id, this, __args);
            } finally {
                global::System.GC.KeepAlive(current);
                global::System.GC.KeepAlive(prior);
            }
        }
        public virtual unsafe global::Com.Microsoft.Identity.Client.IAuthenticationResult AcquireTokenSilent(string[] scopes, global::Com.Microsoft.Identity.Client.IAccount account, string authority)
        {
            const string __id             = "acquireTokenSilent.([Ljava/lang/String;Lcom/microsoft/identity/client/IAccount;Ljava/lang/String;)Lcom/microsoft/identity/client/IAuthenticationResult;";
            IntPtr       native_scopes    = JNIEnv.NewArray(scopes);
            IntPtr       native_authority = JNIEnv.NewString(authority);

            try {
                JniArgumentValue *__args = stackalloc JniArgumentValue [3];
                __args [0] = new JniArgumentValue(native_scopes);
                __args [1] = new JniArgumentValue((account == null) ? IntPtr.Zero : ((global::Java.Lang.Object)account).Handle);
                __args [2] = new JniArgumentValue(native_authority);
                var __rm = _members.InstanceMethods.InvokeVirtualObjectMethod(__id, this, __args);
                return(global::Java.Lang.Object.GetObject <global::Com.Microsoft.Identity.Client.IAuthenticationResult> (__rm.Handle, JniHandleOwnership.TransferLocalRef));
            } finally {
                if (scopes != null)
                {
                    JNIEnv.CopyArray(native_scopes, scopes);
                    JNIEnv.DeleteLocalRef(native_scopes);
                }
                JNIEnv.DeleteLocalRef(native_authority);
                global::System.GC.KeepAlive(scopes);
                global::System.GC.KeepAlive(account);
            }
        }