protected unsafe FileMetadata(global::Com.Algorithmia.Data.DataDirectory __self, string p1)
                : base(IntPtr.Zero, JniHandleOwnership.DoNotTransfer)
            {
                if (((global::Java.Lang.Object) this).Handle != IntPtr.Zero)
                {
                    return;
                }

                IntPtr native_p1 = JNIEnv.NewString(p1);

                try {
                    JValue *__args = stackalloc JValue [2];
                    __args [0] = new JValue(__self);
                    __args [1] = new JValue(native_p1);
                    if (GetType() != typeof(FileMetadata))
                    {
                        SetHandle(
                            global::Android.Runtime.JNIEnv.StartCreateInstance(GetType(), "(L" + global::Android.Runtime.JNIEnv.GetJniName(GetType().DeclaringType) + ";Ljava/lang/String;)V", __args),
                            JniHandleOwnership.TransferLocalRef);
                        global::Android.Runtime.JNIEnv.FinishCreateInstance(((global::Java.Lang.Object) this).Handle, "(L" + global::Android.Runtime.JNIEnv.GetJniName(GetType().DeclaringType) + ";Ljava/lang/String;)V", __args);
                        return;
                    }

                    if (id_ctor_Lcom_algorithmia_data_DataDirectory_Ljava_lang_String_ == IntPtr.Zero)
                    {
                        id_ctor_Lcom_algorithmia_data_DataDirectory_Ljava_lang_String_ = JNIEnv.GetMethodID(class_ref, "<init>", "(Lcom/algorithmia/data/DataDirectory;Ljava/lang/String;)V");
                    }
                    SetHandle(
                        global::Android.Runtime.JNIEnv.StartCreateInstance(class_ref, id_ctor_Lcom_algorithmia_data_DataDirectory_Ljava_lang_String_, __args),
                        JniHandleOwnership.TransferLocalRef);
                    JNIEnv.FinishCreateInstance(((global::Java.Lang.Object) this).Handle, class_ref, id_ctor_Lcom_algorithmia_data_DataDirectory_Ljava_lang_String_, __args);
                } finally {
                    JNIEnv.DeleteLocalRef(native_p1);
                }
            }
        protected unsafe AbstractDataIterator(global::Com.Algorithmia.Data.DataDirectory p0)
            : 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(p0);
                if (GetType() != typeof(AbstractDataIterator))
                {
                    SetHandle(
                        global::Android.Runtime.JNIEnv.StartCreateInstance(GetType(), "(Lcom/algorithmia/data/DataDirectory;)V", __args),
                        JniHandleOwnership.TransferLocalRef);
                    global::Android.Runtime.JNIEnv.FinishCreateInstance(((global::Java.Lang.Object) this).Handle, "(Lcom/algorithmia/data/DataDirectory;)V", __args);
                    return;
                }

                if (id_ctor_Lcom_algorithmia_data_DataDirectory_ == IntPtr.Zero)
                {
                    id_ctor_Lcom_algorithmia_data_DataDirectory_ = JNIEnv.GetMethodID(class_ref, "<init>", "(Lcom/algorithmia/data/DataDirectory;)V");
                }
                SetHandle(
                    global::Android.Runtime.JNIEnv.StartCreateInstance(class_ref, id_ctor_Lcom_algorithmia_data_DataDirectory_, __args),
                    JniHandleOwnership.TransferLocalRef);
                JNIEnv.FinishCreateInstance(((global::Java.Lang.Object) this).Handle, class_ref, id_ctor_Lcom_algorithmia_data_DataDirectory_, __args);
            } finally {
            }
        }
        static bool n_UpdatePermissions_Lcom_algorithmia_data_DataAcl_(IntPtr jnienv, IntPtr native__this, IntPtr native_p0)
        {
            global::Com.Algorithmia.Data.DataDirectory __this = global::Java.Lang.Object.GetObject <global::Com.Algorithmia.Data.DataDirectory> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
            global::Com.Algorithmia.Data.DataAcl       p0     = global::Java.Lang.Object.GetObject <global::Com.Algorithmia.Data.DataAcl> (native_p0, JniHandleOwnership.DoNotTransfer);
            bool __ret = __this.UpdatePermissions(p0);

            return(__ret);
        }
        static IntPtr n_PutFile_Ljava_io_File_(IntPtr jnienv, IntPtr native__this, IntPtr native_p0)
        {
            global::Com.Algorithmia.Data.DataDirectory __this = global::Java.Lang.Object.GetObject <global::Com.Algorithmia.Data.DataDirectory> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
            global::Java.IO.File p0 = global::Java.Lang.Object.GetObject <global::Java.IO.File> (native_p0, JniHandleOwnership.DoNotTransfer);
            IntPtr __ret            = JNIEnv.ToLocalJniHandle(__this.PutFile(p0));

            return(__ret);
        }
        static IntPtr n_GetPage_Ljava_lang_String_Z(IntPtr jnienv, IntPtr native__this, IntPtr native_p0, bool p1)
        {
            global::Com.Algorithmia.Data.DataDirectory __this = global::Java.Lang.Object.GetObject <global::Com.Algorithmia.Data.DataDirectory> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
            string p0    = JNIEnv.GetString(native_p0, JniHandleOwnership.DoNotTransfer);
            IntPtr __ret = JNIEnv.ToLocalJniHandle(__this.GetPage(p0, p1));

            return(__ret);
        }
            protected unsafe DirectoryListResponse(global::Com.Algorithmia.Data.DataDirectory __self, global::System.Collections.Generic.IList <global::Com.Algorithmia.Data.DataDirectory.FileMetadata> p0, global::System.Collections.Generic.IList <global::Com.Algorithmia.Data.DataDirectory.DirectoryMetadata> p1, string p2, global::System.Collections.Generic.IDictionary <string, global::System.Collections.Generic.IList <string> > p3)
                : base(IntPtr.Zero, JniHandleOwnership.DoNotTransfer)
            {
                if (((global::Java.Lang.Object) this).Handle != IntPtr.Zero)
                {
                    return;
                }

                IntPtr native_p0 = global::Android.Runtime.JavaList <global::Com.Algorithmia.Data.DataDirectory.FileMetadata> .ToLocalJniHandle(p0);

                IntPtr native_p1 = global::Android.Runtime.JavaList <global::Com.Algorithmia.Data.DataDirectory.DirectoryMetadata> .ToLocalJniHandle(p1);

                IntPtr native_p2 = JNIEnv.NewString(p2);
                IntPtr native_p3 = global::Android.Runtime.JavaDictionary <string, global::System.Collections.Generic.IList <string> > .ToLocalJniHandle(p3);

                try {
                    JValue *__args = stackalloc JValue [5];
                    __args [0] = new JValue(__self);
                    __args [1] = new JValue(native_p0);
                    __args [2] = new JValue(native_p1);
                    __args [3] = new JValue(native_p2);
                    __args [4] = new JValue(native_p3);
                    if (GetType() != typeof(DirectoryListResponse))
                    {
                        SetHandle(
                            global::Android.Runtime.JNIEnv.StartCreateInstance(GetType(), "(L" + global::Android.Runtime.JNIEnv.GetJniName(GetType().DeclaringType) + ";Ljava/util/List;Ljava/util/List;Ljava/lang/String;Ljava/util/Map;)V", __args),
                            JniHandleOwnership.TransferLocalRef);
                        global::Android.Runtime.JNIEnv.FinishCreateInstance(((global::Java.Lang.Object) this).Handle, "(L" + global::Android.Runtime.JNIEnv.GetJniName(GetType().DeclaringType) + ";Ljava/util/List;Ljava/util/List;Ljava/lang/String;Ljava/util/Map;)V", __args);
                        return;
                    }

                    if (id_ctor_Lcom_algorithmia_data_DataDirectory_Ljava_util_List_Ljava_util_List_Ljava_lang_String_Ljava_util_Map_ == IntPtr.Zero)
                    {
                        id_ctor_Lcom_algorithmia_data_DataDirectory_Ljava_util_List_Ljava_util_List_Ljava_lang_String_Ljava_util_Map_ = JNIEnv.GetMethodID(class_ref, "<init>", "(Lcom/algorithmia/data/DataDirectory;Ljava/util/List;Ljava/util/List;Ljava/lang/String;Ljava/util/Map;)V");
                    }
                    SetHandle(
                        global::Android.Runtime.JNIEnv.StartCreateInstance(class_ref, id_ctor_Lcom_algorithmia_data_DataDirectory_Ljava_util_List_Ljava_util_List_Ljava_lang_String_Ljava_util_Map_, __args),
                        JniHandleOwnership.TransferLocalRef);
                    JNIEnv.FinishCreateInstance(((global::Java.Lang.Object) this).Handle, class_ref, id_ctor_Lcom_algorithmia_data_DataDirectory_Ljava_util_List_Ljava_util_List_Ljava_lang_String_Ljava_util_Map_, __args);
                } finally {
                    JNIEnv.DeleteLocalRef(native_p0);
                    JNIEnv.DeleteLocalRef(native_p1);
                    JNIEnv.DeleteLocalRef(native_p2);
                    JNIEnv.DeleteLocalRef(native_p3);
                }
            }
        public unsafe global::Com.Algorithmia.Data.DataDirectory Dir(string p0)
        {
            if (id_dir_Ljava_lang_String_ == IntPtr.Zero)
            {
                id_dir_Ljava_lang_String_ = JNIEnv.GetMethodID(class_ref, "dir", "(Ljava/lang/String;)Lcom/algorithmia/data/DataDirectory;");
            }
            IntPtr native_p0 = JNIEnv.NewString(p0);

            try {
                JValue *__args = stackalloc JValue [1];
                __args [0] = new JValue(native_p0);
                global::Com.Algorithmia.Data.DataDirectory __ret = global::Java.Lang.Object.GetObject <global::Com.Algorithmia.Data.DataDirectory> (JNIEnv.CallObjectMethod(((global::Java.Lang.Object) this).Handle, id_dir_Ljava_lang_String_, __args), JniHandleOwnership.TransferLocalRef);
                return(__ret);
            } finally {
                JNIEnv.DeleteLocalRef(native_p0);
            }
        }
 static IntPtr n_Files(IntPtr jnienv, IntPtr native__this)
 {
     global::Com.Algorithmia.Data.DataDirectory __this = global::Java.Lang.Object.GetObject <global::Com.Algorithmia.Data.DataDirectory> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     return(JNIEnv.ToLocalJniHandle(__this.Files()));
 }
 static bool n_Exists(IntPtr jnienv, IntPtr native__this)
 {
     global::Com.Algorithmia.Data.DataDirectory __this = global::Java.Lang.Object.GetObject <global::Com.Algorithmia.Data.DataDirectory> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     return(__this.Exists());
 }
 static void n_Delete_Z(IntPtr jnienv, IntPtr native__this, bool p0)
 {
     global::Com.Algorithmia.Data.DataDirectory __this = global::Java.Lang.Object.GetObject <global::Com.Algorithmia.Data.DataDirectory> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     __this.Delete(p0);
 }
 static void n_Create_Lcom_algorithmia_data_DataAcl_(IntPtr jnienv, IntPtr native__this, IntPtr native_p0)
 {
     global::Com.Algorithmia.Data.DataDirectory __this = global::Java.Lang.Object.GetObject <global::Com.Algorithmia.Data.DataDirectory> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     global::Com.Algorithmia.Data.DataAcl       p0     = global::Java.Lang.Object.GetObject <global::Com.Algorithmia.Data.DataAcl> (native_p0, JniHandleOwnership.DoNotTransfer);
     __this.Create(p0);
 }