protected unsafe MultipleAccountPublicClientApplication(global::Com.Microsoft.Identity.Client.PublicClientApplicationConfiguration config) : base(IntPtr.Zero, JniHandleOwnership.DoNotTransfer)
        {
            const string __id = "(Lcom/microsoft/identity/client/PublicClientApplicationConfiguration;)V";

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

            try {
                JniArgumentValue *__args = stackalloc JniArgumentValue [1];
                __args [0] = new JniArgumentValue((config == null) ? IntPtr.Zero : ((global::Java.Lang.Object)config).Handle);
                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(config);
            }
        }
        public static unsafe global::Com.Microsoft.Identity.Common.Internal.Commands.Parameters.DeviceCodeFlowCommandParameters CreateDeviceCodeFlowCommandParameters(global::Com.Microsoft.Identity.Client.PublicClientApplicationConfiguration configuration, global::Com.Microsoft.Identity.Common.Internal.Providers.Oauth2.OAuth2TokenCache tokenCache, string[] scopes)
        {
            const string __id          = "createDeviceCodeFlowCommandParameters.(Lcom/microsoft/identity/client/PublicClientApplicationConfiguration;Lcom/microsoft/identity/common/internal/providers/oauth2/OAuth2TokenCache;[Ljava/lang/String;)Lcom/microsoft/identity/common/internal/commands/parameters/DeviceCodeFlowCommandParameters;";
            IntPtr       native_scopes = JNIEnv.NewArray(scopes);

            try {
                JniArgumentValue *__args = stackalloc JniArgumentValue [3];
                __args [0] = new JniArgumentValue((configuration == null) ? IntPtr.Zero : ((global::Java.Lang.Object)configuration).Handle);
                __args [1] = new JniArgumentValue((tokenCache == null) ? IntPtr.Zero : ((global::Java.Lang.Object)tokenCache).Handle);
                __args [2] = new JniArgumentValue(native_scopes);
                var __rm = _members.StaticMethods.InvokeObjectMethod(__id, __args);
                return(global::Java.Lang.Object.GetObject <global::Com.Microsoft.Identity.Common.Internal.Commands.Parameters.DeviceCodeFlowCommandParameters> (__rm.Handle, JniHandleOwnership.TransferLocalRef));
            } finally {
                if (scopes != null)
                {
                    JNIEnv.CopyArray(native_scopes, scopes);
                    JNIEnv.DeleteLocalRef(native_scopes);
                }
                global::System.GC.KeepAlive(configuration);
                global::System.GC.KeepAlive(tokenCache);
                global::System.GC.KeepAlive(scopes);
            }
        }
        public static unsafe global::Com.Microsoft.Identity.Common.Internal.Commands.Parameters.CommandParameters CreateCommandParameters(global::Com.Microsoft.Identity.Client.PublicClientApplicationConfiguration configuration, global::Com.Microsoft.Identity.Common.Internal.Providers.Oauth2.OAuth2TokenCache tokenCache)
        {
            const string __id = "createCommandParameters.(Lcom/microsoft/identity/client/PublicClientApplicationConfiguration;Lcom/microsoft/identity/common/internal/providers/oauth2/OAuth2TokenCache;)Lcom/microsoft/identity/common/internal/commands/parameters/CommandParameters;";

            try {
                JniArgumentValue *__args = stackalloc JniArgumentValue [2];
                __args [0] = new JniArgumentValue((configuration == null) ? IntPtr.Zero : ((global::Java.Lang.Object)configuration).Handle);
                __args [1] = new JniArgumentValue((tokenCache == null) ? IntPtr.Zero : ((global::Java.Lang.Object)tokenCache).Handle);
                var __rm = _members.StaticMethods.InvokeObjectMethod(__id, __args);
                return(global::Java.Lang.Object.GetObject <global::Com.Microsoft.Identity.Common.Internal.Commands.Parameters.CommandParameters> (__rm.Handle, JniHandleOwnership.TransferLocalRef));
            } finally {
                global::System.GC.KeepAlive(configuration);
                global::System.GC.KeepAlive(tokenCache);
            }
        }
        public static unsafe global::Com.Microsoft.Identity.Common.Internal.Commands.Parameters.GenerateShrCommandParameters CreateGenerateShrCommandParameters(global::Com.Microsoft.Identity.Client.PublicClientApplicationConfiguration clientConfig, global::Com.Microsoft.Identity.Common.Internal.Providers.Oauth2.OAuth2TokenCache oAuth2TokenCache, string homeAccountId, global::Com.Microsoft.Identity.Client.PoPAuthenticationScheme popParameters)
        {
            const string __id = "createGenerateShrCommandParameters.(Lcom/microsoft/identity/client/PublicClientApplicationConfiguration;Lcom/microsoft/identity/common/internal/providers/oauth2/OAuth2TokenCache;Ljava/lang/String;Lcom/microsoft/identity/client/PoPAuthenticationScheme;)Lcom/microsoft/identity/common/internal/commands/parameters/GenerateShrCommandParameters;";
            IntPtr       native_homeAccountId = JNIEnv.NewString(homeAccountId);

            try {
                JniArgumentValue *__args = stackalloc JniArgumentValue [4];
                __args [0] = new JniArgumentValue((clientConfig == null) ? IntPtr.Zero : ((global::Java.Lang.Object)clientConfig).Handle);
                __args [1] = new JniArgumentValue((oAuth2TokenCache == null) ? IntPtr.Zero : ((global::Java.Lang.Object)oAuth2TokenCache).Handle);
                __args [2] = new JniArgumentValue(native_homeAccountId);
                __args [3] = new JniArgumentValue((popParameters == null) ? IntPtr.Zero : ((global::Java.Lang.Object)popParameters).Handle);
                var __rm = _members.StaticMethods.InvokeObjectMethod(__id, __args);
                return(global::Java.Lang.Object.GetObject <global::Com.Microsoft.Identity.Common.Internal.Commands.Parameters.GenerateShrCommandParameters> (__rm.Handle, JniHandleOwnership.TransferLocalRef));
            } finally {
                JNIEnv.DeleteLocalRef(native_homeAccountId);
                global::System.GC.KeepAlive(clientConfig);
                global::System.GC.KeepAlive(oAuth2TokenCache);
                global::System.GC.KeepAlive(popParameters);
            }
        }
        public static unsafe global::System.Collections.Generic.IList <global::Com.Microsoft.Identity.Common.Internal.Controllers.BaseController> GetAllControllers(global::Android.Content.Context applicationContext, global::Com.Microsoft.Identity.Common.Internal.Authorities.Authority authority, global::Com.Microsoft.Identity.Client.PublicClientApplicationConfiguration applicationConfiguration)
        {
            const string __id = "getAllControllers.(Landroid/content/Context;Lcom/microsoft/identity/common/internal/authorities/Authority;Lcom/microsoft/identity/client/PublicClientApplicationConfiguration;)Ljava/util/List;";

            try {
                JniArgumentValue *__args = stackalloc JniArgumentValue [3];
                __args [0] = new JniArgumentValue((applicationContext == null) ? IntPtr.Zero : ((global::Java.Lang.Object)applicationContext).Handle);
                __args [1] = new JniArgumentValue((authority == null) ? IntPtr.Zero : ((global::Java.Lang.Object)authority).Handle);
                __args [2] = new JniArgumentValue((applicationConfiguration == null) ? IntPtr.Zero : ((global::Java.Lang.Object)applicationConfiguration).Handle);
                var __rm = _members.StaticMethods.InvokeObjectMethod(__id, __args);
                return(global::Android.Runtime.JavaList <global::Com.Microsoft.Identity.Common.Internal.Controllers.BaseController> .FromJniHandle(__rm.Handle, JniHandleOwnership.TransferLocalRef));
            } finally {
                global::System.GC.KeepAlive(applicationContext);
                global::System.GC.KeepAlive(authority);
                global::System.GC.KeepAlive(applicationConfiguration);
            }
        }
        public static unsafe bool BrokerEligible(global::Android.Content.Context applicationContext, global::Com.Microsoft.Identity.Common.Internal.Authorities.Authority authority, global::Com.Microsoft.Identity.Client.PublicClientApplicationConfiguration applicationConfiguration)
        {
            const string __id = "brokerEligible.(Landroid/content/Context;Lcom/microsoft/identity/common/internal/authorities/Authority;Lcom/microsoft/identity/client/PublicClientApplicationConfiguration;)Z";

            try {
                JniArgumentValue *__args = stackalloc JniArgumentValue [3];
                __args [0] = new JniArgumentValue((applicationContext == null) ? IntPtr.Zero : ((global::Java.Lang.Object)applicationContext).Handle);
                __args [1] = new JniArgumentValue((authority == null) ? IntPtr.Zero : ((global::Java.Lang.Object)authority).Handle);
                __args [2] = new JniArgumentValue((applicationConfiguration == null) ? IntPtr.Zero : ((global::Java.Lang.Object)applicationConfiguration).Handle);
                var __rm = _members.StaticMethods.InvokeBooleanMethod(__id, __args);
                return(__rm);
            } finally {
                global::System.GC.KeepAlive(applicationContext);
                global::System.GC.KeepAlive(authority);
                global::System.GC.KeepAlive(applicationConfiguration);
            }
        }