public unsafe GifDecoder(global::Com.Bumptech.Glide.Gifdecoder.GifDecoder.IBitmapProvider p0)
            : base(IntPtr.Zero, JniHandleOwnership.DoNotTransfer)
        {
            if (Handle != IntPtr.Zero)
            {
                return;
            }

            try {
                JValue *__args = stackalloc JValue [1];
                __args [0] = new JValue(p0);
                if (GetType() != typeof(GifDecoder))
                {
                    SetHandle(
                        global::Android.Runtime.JNIEnv.StartCreateInstance(GetType(), "(Lcom/bumptech/glide/gifdecoder/GifDecoder$BitmapProvider;)V", __args),
                        JniHandleOwnership.TransferLocalRef);
                    global::Android.Runtime.JNIEnv.FinishCreateInstance(Handle, "(Lcom/bumptech/glide/gifdecoder/GifDecoder$BitmapProvider;)V", __args);
                    return;
                }

                if (id_ctor_Lcom_bumptech_glide_gifdecoder_GifDecoder_BitmapProvider_ == IntPtr.Zero)
                {
                    id_ctor_Lcom_bumptech_glide_gifdecoder_GifDecoder_BitmapProvider_ = JNIEnv.GetMethodID(class_ref, "<init>", "(Lcom/bumptech/glide/gifdecoder/GifDecoder$BitmapProvider;)V");
                }
                SetHandle(
                    global::Android.Runtime.JNIEnv.StartCreateInstance(class_ref, id_ctor_Lcom_bumptech_glide_gifdecoder_GifDecoder_BitmapProvider_, __args),
                    JniHandleOwnership.TransferLocalRef);
                JNIEnv.FinishCreateInstance(Handle, class_ref, id_ctor_Lcom_bumptech_glide_gifdecoder_GifDecoder_BitmapProvider_, __args);
            } finally {
            }
        }
			static IntPtr n_BuildDecoder_Lcom_bumptech_glide_gifdecoder_GifDecoder_BitmapProvider_ (IntPtr jnienv, IntPtr native__this, IntPtr native_p0)
			{
				global::Com.Bumptech.Glide.Load.Resource.Gif.GifResourceEncoder.Factory __this = global::Java.Lang.Object.GetObject<global::Com.Bumptech.Glide.Load.Resource.Gif.GifResourceEncoder.Factory> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
				global::Com.Bumptech.Glide.Gifdecoder.GifDecoder.IBitmapProvider p0 = (global::Com.Bumptech.Glide.Gifdecoder.GifDecoder.IBitmapProvider)global::Java.Lang.Object.GetObject<global::Com.Bumptech.Glide.Gifdecoder.GifDecoder.IBitmapProvider> (native_p0, JniHandleOwnership.DoNotTransfer);
				IntPtr __ret = JNIEnv.ToLocalJniHandle (__this.BuildDecoder (p0));
				return __ret;
			}
            static IntPtr n_Obtain_IILandroid_graphics_Bitmap_Config_(IntPtr jnienv, IntPtr native__this, int p0, int p1, IntPtr native_p2)
            {
                global::Com.Bumptech.Glide.Gifdecoder.GifDecoder.IBitmapProvider __this = global::Java.Lang.Object.GetObject <global::Com.Bumptech.Glide.Gifdecoder.GifDecoder.IBitmapProvider> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
                global::Android.Graphics.Bitmap.Config p2 = global::Java.Lang.Object.GetObject <global::Android.Graphics.Bitmap.Config> (native_p2, JniHandleOwnership.DoNotTransfer);
                IntPtr __ret = JNIEnv.ToLocalJniHandle(__this.Obtain(p0, p1, p2));

                return(__ret);
            }
 static void n_Release_Landroid_graphics_Bitmap_(IntPtr jnienv, IntPtr native__this, IntPtr native_p0)
 {
     global::Com.Bumptech.Glide.Gifdecoder.GifDecoder.IBitmapProvider __this = global::Java.Lang.Object.GetObject <global::Com.Bumptech.Glide.Gifdecoder.GifDecoder.IBitmapProvider> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     global::Android.Graphics.Bitmap p0 = global::Java.Lang.Object.GetObject <global::Android.Graphics.Bitmap> (native_p0, JniHandleOwnership.DoNotTransfer);
     __this.Release(p0);
 }
            public virtual unsafe global::Com.Bumptech.Glide.Gifdecoder.GifDecoder Obtain(global::Com.Bumptech.Glide.Gifdecoder.GifDecoder.IBitmapProvider p0)
            {
                if (id_obtain_Lcom_bumptech_glide_gifdecoder_GifDecoder_BitmapProvider_ == IntPtr.Zero)
                {
                    id_obtain_Lcom_bumptech_glide_gifdecoder_GifDecoder_BitmapProvider_ = JNIEnv.GetMethodID(class_ref, "obtain", "(Lcom/bumptech/glide/gifdecoder/GifDecoder$BitmapProvider;)Lcom/bumptech/glide/gifdecoder/GifDecoder;");
                }
                try {
                    JValue *__args = stackalloc JValue [1];
                    __args [0] = new JValue(p0);

                    global::Com.Bumptech.Glide.Gifdecoder.GifDecoder __ret;
                    if (GetType() == ThresholdType)
                    {
                        __ret = global::Java.Lang.Object.GetObject <global::Com.Bumptech.Glide.Gifdecoder.GifDecoder> (JNIEnv.CallObjectMethod(Handle, id_obtain_Lcom_bumptech_glide_gifdecoder_GifDecoder_BitmapProvider_, __args), JniHandleOwnership.TransferLocalRef);
                    }
                    else
                    {
                        __ret = global::Java.Lang.Object.GetObject <global::Com.Bumptech.Glide.Gifdecoder.GifDecoder> (JNIEnv.CallNonvirtualObjectMethod(Handle, ThresholdClass, JNIEnv.GetMethodID(ThresholdClass, "obtain", "(Lcom/bumptech/glide/gifdecoder/GifDecoder$BitmapProvider;)Lcom/bumptech/glide/gifdecoder/GifDecoder;"), __args), JniHandleOwnership.TransferLocalRef);
                    }
                    return(__ret);
                } finally {
                }
            }