<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Cryville.Interop.Java</name>
    </assembly>
    <members>
        <member name="T:Cryville.Interop.Java.Helper.AndroidHelper">
            <summary>
            Provides a set of helper methods for Android.
            </summary>
        </member>
        <member name="P:Cryville.Interop.Java.Helper.AndroidHelper.DeviceApiLevel">
            <summary>
            The Android API level of the device.
            </summary>
        </member>
        <member name="M:Cryville.Interop.Java.Helper.AndroidHelper.GetCurrentApplication(Cryville.Interop.Java.IJniEnv)">
            <summary>
            Gets a local reference to the current <c>android.app.Application</c> object.
            </summary>
            <param name="env">The <see cref="T:Cryville.Interop.Java.IJniEnv" />.</param>
            <returns>A local reference to the current <c>android.app.Application</c> object.</returns>
            <remarks>
            <para>This method can only be called from the main thread, otherwise it may return a reference to <c>null</c>.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.Helper.AndroidHelper.GetSystemService(Cryville.Interop.Java.IJniEnv,System.IntPtr,System.String)">
            <summary>
            Gets a local reference to a system service associated with the context specified by <paramref name="context" />.
            </summary>
            <param name="env">The <see cref="T:Cryville.Interop.Java.IJniEnv" />.</param>
            <param name="context">The context.</param>
            <param name="name">The name of a static field in the class <c>android.content.Context</c>.</param>
            <returns>A local reference to a system service.</returns>
        </member>
        <member name="T:Cryville.Interop.Java.Helper.JniLocalFrame">
            <summary>
            Represents a local reference frame.
            </summary>
            <remarks>
            <para>Use this struct with a <c>using</c> statement:</para>
            <code>
            using (JniLocalFrame frame = new JniLocalFrame(env, capacity)) {
            	// ...
            }
            </code>
            <para>If an object obtained within the frame is required outside the frame, use this code snippet:</para>
            <code>
            IntPtr result;
            using (JniLocalFrame frame = new JniLocalFrame(env, capacity)) {
            	// ...
            	result = frame.Pop(obj);
            }
            </code>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.Helper.JniLocalFrame.#ctor(Cryville.Interop.Java.IJniEnv,System.Int32)">
            <summary>
            Pushes a local reference frame in which at least a given number of local references can be created.
            </summary>
            <param name="env">The <see cref="T:Cryville.Interop.Java.IJniEnv" />.</param>
            <param name="capacity">The capacity.</param>
        </member>
        <member name="M:Cryville.Interop.Java.Helper.JniLocalFrame.Pop(System.IntPtr)">
            <summary>
            Pops off the local reference frame, frees all the local references, and returns a local reference in the previous local reference frame for the given <paramref name="result" /> object.
            </summary>
            <param name="result">The result object.</param>
            <returns>A local reference in the previous local reference frame for the given <paramref name="result" /> object.</returns>
            <exception cref="T:System.ObjectDisposedException">The local reference frame has already been popped.</exception>
            <remarks>Pass <see cref="F:System.IntPtr.Zero" /> as <paramref name="result" /> if you do not need to return a reference to the previous frame.</remarks>
        </member>
        <member name="M:Cryville.Interop.Java.Helper.JniLocalFrame.Dispose">
            <summary>
            Pops off the local reference frame and frees all the local references.
            </summary>
        </member>
        <member name="T:Cryville.Interop.Java.IJniInvoke">
            <summary>
            The JNI Invocation API.
            </summary>
        </member>
        <member name="M:Cryville.Interop.Java.IJniInvoke.DestroyJavaVM">
            <summary>
            Unloads a Java VM and reclaims its resources.
            </summary>
            <exception cref="T:Cryville.Interop.Java.JniException">On failure.</exception>
            <remarks>
            <para>Any thread, whether attached or not, can invoke this function. If the current thread is attached, the VM waits until the current thread is the only non-daemon user-level Java thread. If the current thread is not attached, the VM attaches the current thread and then waits until the current thread is the only non-daemon user-level thread.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniInvoke.AttachCurrentThread(System.Nullable{Cryville.Interop.Java.JavaVMAttachArgs})">
            <summary>
            Attaches the current thread to a Java VM.
            </summary>
            <param name="thr_args"><see langword="null" /> or a <see cref="T:Cryville.Interop.Java.JavaVMAttachArgs" /> structure to specify additional information.</param>
            <returns>A JNI interface.</returns>
            <exception cref="T:Cryville.Interop.Java.JniException">On failure.</exception>
            <remarks>
            <para>Trying to attach a thread that is already attached is a no-op.</para>
            <para>A native thread cannot be attached simultaneously to two Java VMs.</para>
            <para>When a thread is attached to the VM, the context class loader is the bootstrap loader.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniInvoke.DetachCurrentThread">
            <summary>
            Detaches the current thread from a Java VM.
            </summary>
            <exception cref="T:Cryville.Interop.Java.JniException">On failure.</exception>
            <remarks>
            <para>All Java monitors held by this thread are released. All Java threads waiting for this thread to die are notified.</para>
            <para>The main thread can be detached from the VM.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniInvoke.GetEnv(System.Int32)">
            <summary>
            Gets the <see cref="T:Cryville.Interop.Java.IJniEnv" /> attached to the current thread.
            </summary>
            <param name="version">The requested JNI version.</param>
            <returns>A JNI interface, <see langword="null" /> if an error occurs.</returns>
            <exception cref="T:Cryville.Interop.Java.JniException">On failure, with a <see cref="P:Cryville.Interop.Java.JniException.JniResult" /> of <see cref="F:Cryville.Interop.Java.JniResult.Detached" /> if the current thread is not attached to the VM, or <see cref="F:Cryville.Interop.Java.JniResult.Version" /> if the specified version is not supported.</exception>
        </member>
        <member name="M:Cryville.Interop.Java.IJniInvoke.AttachCurrentThreadAsDaemon(System.Nullable{Cryville.Interop.Java.JavaVMAttachArgs})">
            <summary>
            Same semantics as <see cref="M:Cryville.Interop.Java.IJniInvoke.AttachCurrentThread(System.Nullable{Cryville.Interop.Java.JavaVMAttachArgs})" />, but the newly-created <c>java.lang.Thread</c> instance is a daemon.
            </summary>
            <param name="args">A <see cref="T:Cryville.Interop.Java.JavaVMAttachArgs" /> structure to specify additional information.</param>
            <returns>A JNI interface.</returns>
            <exception cref="T:Cryville.Interop.Java.JniException">On failure.</exception>
            <remarks>
            <para>If the thread has already been attached via either <see cref="M:Cryville.Interop.Java.IJniInvoke.AttachCurrentThread(System.Nullable{Cryville.Interop.Java.JavaVMAttachArgs})" /> or <see cref="M:Cryville.Interop.Java.IJniInvoke.AttachCurrentThreadAsDaemon(System.Nullable{Cryville.Interop.Java.JavaVMAttachArgs})" />, this routine simply returns the <see cref="T:Cryville.Interop.Java.IJniEnv" /> of the current thread. In this case neither <see cref="M:Cryville.Interop.Java.IJniInvoke.AttachCurrentThread(System.Nullable{Cryville.Interop.Java.JavaVMAttachArgs})" /> nor this routine have any effect on the daemon status of the thread.</para>
            </remarks>
        </member>
        <member name="T:Cryville.Interop.Java.JavaVMAttachArgs">
            <summary>
            Additional information for attaching the current thread to a Java VM.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JavaVMAttachArgs.Version">
            <summary>
            The requested JNI version.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JavaVMAttachArgs.Name">
            <summary>
            The name of the thread, or <see langword="null" />.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JavaVMAttachArgs.Group">
            <summary>
            Global ref of a <c>ThreadGroup</c> object, or <see cref="F:System.IntPtr.Zero" />.
            </summary>
        </member>
        <member name="M:Cryville.Interop.Java.JavaVMAttachArgs.#ctor(System.Int32,System.String,System.IntPtr)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JavaVMAttachArgs" /> struct.
            </summary>
            <param name="version">The requested JNI version.</param>
            <param name="name">The name of the thread.</param>
            <param name="group">Global ref of a <c>ThreadGroup</c> object.</param>
        </member>
        <member name="T:Cryville.Interop.Java.JavaVMManager">
            <summary>
            Java VM manager.
            </summary>
        </member>
        <member name="M:Cryville.Interop.Java.JavaVMManager.Register(Cryville.Interop.Java.IJniInvoke)">
            <summary>
            Registers a Java VM.
            </summary>
            <param name="vm">A Java VM.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="vm" /> is <see langword="null" />.</exception>
        </member>
        <member name="P:Cryville.Interop.Java.JavaVMManager.VMs">
            <summary>
            All registered Java VMs.
            </summary>
        </member>
        <member name="P:Cryville.Interop.Java.JavaVMManager.CurrentVM">
            <summary>
            The first VM registered.
            </summary>
        </member>
        <member name="P:Cryville.Interop.Java.JavaVMManager.CurrentEnv">
            <summary>
            The <see cref="T:Cryville.Interop.Java.IJniEnv" /> of the first VM registered.
            </summary>
        </member>
        <member name="T:Cryville.Interop.Java.JniException">
            <summary>
            Exception occurring in JNI functions.
            </summary>
        </member>
        <member name="P:Cryville.Interop.Java.JniException.JniResult">
            <summary>
            The result code returned by the JNI function.
            </summary>
        </member>
        <member name="M:Cryville.Interop.Java.JniException.#ctor">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniException" /> class with <see cref="P:Cryville.Interop.Java.JniException.JniResult" /> set to <see cref="F:Cryville.Interop.Java.JniResult.Unknown" />.
            </summary>
        </member>
        <member name="M:Cryville.Interop.Java.JniException.#ctor(System.String)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniException" /> class with <see cref="P:Cryville.Interop.Java.JniException.JniResult" /> set to <see cref="F:Cryville.Interop.Java.JniResult.Unknown" />.
            </summary>
            <param name="message">The error message that explains the reason for the exception.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniException.#ctor(System.String,System.Exception)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniException" /> class with <see cref="P:Cryville.Interop.Java.JniException.JniResult" /> set to <see cref="F:Cryville.Interop.Java.JniResult.Inner" />.
            </summary>
            <param name="message">The error message that explains the reason for the exception.</param>
            <param name="innerException">The exception that is the cause of the current exception.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniException.#ctor(System.Exception)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniException" /> class with <see cref="P:Cryville.Interop.Java.JniException.JniResult" /> set to <see cref="F:Cryville.Interop.Java.JniResult.Inner" />.
            </summary>
            <param name="innerException">The exception that is the cause of the current exception.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniException.#ctor(Cryville.Interop.Java.JniResult)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniException" /> class.
            </summary>
            <param name="result">The result code returned by the JNI function.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniException.#ctor(Cryville.Interop.Java.JniResult,System.String)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniException" /> class.
            </summary>
            <param name="result">The result code returned by the JNI function.</param>
            <param name="message">The error message that explains the reason for the exception.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniException.#ctor(Cryville.Interop.Java.JniResult,System.String,System.Exception)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniException" /> class.
            </summary>
            <param name="result">The result code returned by the JNI function.</param>
            <param name="message">The error message that explains the reason for the exception.</param>
            <param name="innerException">The exception that is the cause of the current exception.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniException" /> class with serialized data.
            </summary>
            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo" /> that holds the serialized object data about the exception being thrown.</param>
            <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext" /> that contains contextual information about the source or destination.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <inheritdoc />
        </member>
        <member name="M:Cryville.Interop.Java.JniException.Check(Cryville.Interop.Java.JniResult)">
            <summary>
            Checks the result code returned by a JNI function and throws a <see cref="T:Cryville.Interop.Java.JniException" /> if an error occurred.
            </summary>
            <param name="result">The result code returned by a JNI function.</param>
            <exception cref="T:Cryville.Interop.Java.JniException">An error occurred.</exception>
        </member>
        <member name="T:Cryville.Interop.Java.JniNativeMethod">
            <summary>
            JNI native method.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JniNativeMethod.Name">
            <summary>
            The name of the native method.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JniNativeMethod.Signature">
            <summary>
            The signature of the native method.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JniNativeMethod.FunctionPointer">
            <summary>
            The function pointer of the native method.
            </summary>
            <remarks>
            <para>The function pointers nominally must have the following signature:</para>
            <code>ReturnType function(IntPtr env, IntPtr objectOrClass, ...)</code>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.JniNativeMethod.#ctor(System.String,System.String,System.Delegate)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniNativeMethod" /> struct.
            </summary>
            <param name="name">The name.</param>
            <param name="signature">The signature.</param>
            <param name="functionPointer">The function pointer.</param>
            <exception cref="T:System.ArgumentNullException">Either of the arguments is <see langword="null" />.</exception>
        </member>
        <member name="T:Cryville.Interop.Java.JniObjectRefType">
            <summary>
            Object reference type.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JniObjectRefType.Invalid">
            <summary>
            Invalid reference.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JniObjectRefType.Local">
            <summary>
            Local reference type.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JniObjectRefType.Global">
            <summary>
            Global reference type.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JniObjectRefType.WeakGlobal">
            <summary>
            Weak global reference type.
            </summary>
        </member>
        <member name="T:Cryville.Interop.Java.JniReleaseArrayElementsMode">
            <summary>
            Provides information on how the array buffer should be released.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JniReleaseArrayElementsMode.Default">
            <summary>
            Copy back the content and free the <c>elems</c> buffer.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JniReleaseArrayElementsMode.Commit">
            <summary>
            Copy back the content but do not free the <c>elems</c> buffer.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JniReleaseArrayElementsMode.Abort">
            <summary>
            Free the buffer without copying back the possible changes.
            </summary>
        </member>
        <member name="T:Cryville.Interop.Java.IJniEnv">
            <summary>
            The Java native interface.
            </summary>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetVersion">
            <summary>
            Returns the version of the native method interface.
            </summary>
            <returns>The version of the native method interface.</returns>
            <remarks>
            <para>Returns the major version number in the higher 16 bits and the minor version number in the lower 16 bits.</para>
            <para>In JDK/JRE 1.1, <see cref="M:Cryville.Interop.Java.IJniEnv.GetVersion" /> returns <c>0x00010001</c>.</para>
            <para>In JDK/JRE 1.2, <see cref="M:Cryville.Interop.Java.IJniEnv.GetVersion" /> returns <c>0x00010002</c>.</para>
            <para>In JDK/JRE 1.4, <see cref="M:Cryville.Interop.Java.IJniEnv.GetVersion" /> returns <c>0x00010004</c>.</para>
            <para>In JDK/JRE 1.6, <see cref="M:Cryville.Interop.Java.IJniEnv.GetVersion" /> returns <c>0x00010006</c>.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.DefineClass(System.String,System.IntPtr,System.IntPtr,System.Int32)">
            <summary>
            Loads a class from a buffer of raw class data.
            </summary>
            <param name="name">The name of the class or interface to be defined.</param>
            <param name="loader">A class loader assigned to the defined class.</param>
            <param name="buf">Buffer containing the .class file data.</param>
            <param name="bufLen">Buffer length.</param>
            <returns>A Java class object or <see cref="F:System.IntPtr.Zero" /> if an error occurs.</returns>
            <remarks>
            <para>The buffer containing the raw class data is not referenced by the VM after the DefineClass call returns, and it may be discarded if desired.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.FindClass(System.String)">
            <summary>
            Searches and loads a defined class.
            </summary>
            <param name="name">A fully-qualified class name (that is, a package name, delimited by “/”, followed by the class name). If the name begins with “[“ (the array signature character), it returns an array class.</param>
            <returns>A class object from a fully-qualified name, or <see cref="F:System.IntPtr.Zero" /> if the class cannot be found.</returns>
            <remarks>
            <para>In JDK release 1.1, this function loads a locally-defined class. It searches the directories and zip files specified by the <c>CLASSPATH</c> environment variable for the class with the specified name.</para>
            <para>Since Java 2 SDK release 1.2, the Java security model allows non-system classes to load and call native methods. <see cref="M:Cryville.Interop.Java.IJniEnv.FindClass(System.String)" /> locates the class loader associated with the current native method; that is, the class loader of the class that declared the native method. If the native method belongs to a system class, no class loader will be involved. Otherwise, the proper class loader will be invoked to load and link the named class.</para>
            <para>Since Java 2 SDK release 1.2, when <see cref="M:Cryville.Interop.Java.IJniEnv.FindClass(System.String)" /> is called through the Invocation Interface, there is no current native method or its associated class loader. In that case, the result of <c>ClassLoader.getSystemClassLoader</c> is used. This is the class loader the virtual machine creates for applications, and is able to locate classes listed in the <c>java.class.path</c> property.</para>
            <para>The name argument is a fully-qualified class name or an array type signature. For example, the fully-qualified class name for the <c>java.lang.String</c> class is:</para>
            <code>"java/lang/String"</code>
            <para>The array type signature of the array class <c>java.lang.Object[]</c> is:</para>
            <code>"[Ljava/lang/Object;"</code>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.FromReflectedMethod(System.IntPtr)">
            <summary>
            Converts a <c>java.lang.reflect.Method</c> or <c>java.lang.reflect.Constructor</c> object to a method ID.
            </summary>
            <param name="method">A <c>java.lang.reflect.Method</c> or <c>java.lang.reflect.Constructor</c> object.</param>
            <returns>A method ID.</returns>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.FromReflectedField(System.IntPtr)">
            <summary>
            Converts a <c>java.lang.reflect.Field</c> to a field ID.
            </summary>
            <param name="field">A <c>java.lang.reflect.Field</c>.</param>
            <returns>A field ID.</returns>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.ToReflectedMethod(System.IntPtr,System.IntPtr,System.Boolean)">
            <summary>
            Converts a method ID derived from <paramref name="cls" /> to a <c>java.lang.reflect.Method</c> or <c>java.lang.reflect.Constructor</c> object.
            </summary>
            <param name="cls">A Java class.</param>
            <param name="methodID">A method ID.</param>
            <param name="isStatic">Whether the method ID refers to a static field.</param>
            <returns>A <c>java.lang.reflect.Method</c> or <c>java.lang.reflect.Constructor</c> object. <see cref="F:System.IntPtr.Zero" /> if fails.</returns>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetSuperclass(System.IntPtr)">
            <summary>
            Returns the object that represents the superclass of the class specified by <paramref name="clazz" />.
            </summary>
            <param name="clazz">A Java class object.</param>
            <returns>The superclass of the class represented by <paramref name="clazz" />, or <see cref="F:System.IntPtr.Zero" />.</returns>
            <remarks>
            <para>If <paramref name="clazz" /> represents any class other than the class <c>Object</c>, then this function returns the object that represents the superclass of the class specified by <paramref name="clazz" />.</para>
            <para>If <paramref name="clazz" /> specifies the class <c>Object</c>, or <paramref name="clazz" /> represents an interface, this function returns <see cref="F:System.IntPtr.Zero" />.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.IsAssignableFrom(System.IntPtr,System.IntPtr)">
            <summary>
            Determines whether an object of <paramref name="clazz1" /> can be safely cast to <paramref name="clazz2" />.
            </summary>
            <param name="clazz1">The first class argument.</param>
            <param name="clazz2">The second class argument.</param>
            <returns><see langword="true" /> if either of the following is true:<list type="bullet"><item>The first and second class arguments refer to the same Java class.</item><item>The first class is a subclass of the second class.</item><item>The first class has the second class as one of its interfaces.</item></list></returns>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.ToReflectedField(System.IntPtr,System.IntPtr,System.Boolean)">
            <summary>
            Converts a field ID derived from <paramref name="cls" /> to a <c>java.lang.reflect.Field</c> object.
            </summary>
            <param name="cls">A Java class.</param>
            <param name="fieldID">A field ID.</param>
            <param name="isStatic">Whether <paramref name="fieldID" /> refers to a static field.</param>
            <returns>A <c>java.lang.reflect.Field</c> object. <see cref="F:System.IntPtr.Zero" /> if fails.</returns>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.Throw(System.IntPtr)">
            <summary>
            Causes a <c>java.lang.Throwable</c> object to be thrown.
            </summary>
            <param name="obj">A <c>java.lang.Throwable</c> object.</param>
            <exception cref="T:Cryville.Interop.Java.JniException">On failure.</exception>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.ThrowNew(System.IntPtr,System.String)">
            <summary>
            Constructs an exception object from the specified class with the message specified by <paramref name="message" /> and causes that exception to be thrown.
            </summary>
            <param name="clazz">A subclass of <c>java.lang.Throwable</c>.</param>
            <param name="message">The message used to construct the <c>java.lang.Throwable</c> object.</param>
            <exception cref="T:Cryville.Interop.Java.JniException">On failure.</exception>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.ExceptionOccurred">
            <summary>
            Determines if an exception is being thrown.
            </summary>
            <returns>The exception object that is currently in the process of being thrown, or <see cref="F:System.IntPtr.Zero" /> if no exception is currently being thrown.</returns>
            <remarks>
            <para>The exception stays being thrown until either the native code calls <see cref="M:Cryville.Interop.Java.IJniEnv.ExceptionClear" />, or the Java code handles the exception.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.ExceptionDescribe">
            <summary>
            Prints an exception and a backtrace of the stack to a system error-reporting channel, such as <c>stderr</c>.
            </summary>
            <remarks>
            <para>This is a convenience routine provided for debugging.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.ExceptionClear">
            <summary>
            Clears any exception that is currently being thrown.
            </summary>
            <remarks>
            <para>If no exception is currently being thrown, this routine has no effect.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.FatalError(System.String)">
            <summary>
            Raises a fatal error and does not expect the VM to recover. This function does not return.
            </summary>
            <param name="msg">An error message.</param>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.PushLocalFrame(System.Int32)">
            <summary>
            Creates a new local reference frame, in which at least a given number of local references can be created.
            </summary>
            <param name="capacity">The capacity of the frame.</param>
            <exception cref="T:Cryville.Interop.Java.JniException">On failure with a pending <c>OutOfMemoryError</c>.</exception>
            <remarks>
            <para>Note that local references already created in previous local frames are still valid in the current local frame.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.PopLocalFrame(System.IntPtr)">
            <summary>
            Pops off the current local reference frame, frees all the local references, and returns a local reference in the previous local reference frame for the given <paramref name="result" /> object.
            </summary>
            <param name="result">The result object.</param>
            <returns>A local reference in the previous local reference frame for the given <paramref name="result" /> object.</returns>
            <remarks>
            <para>Pass <see cref="F:System.IntPtr.Zero" /> as <paramref name="result" /> if you do not need to return a reference to the previous frame.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.NewGlobalRef(System.IntPtr)">
            <summary>
            Creates a new global reference to the object referred to by the <paramref name="obj" /> argument.
            </summary>
            <param name="obj">A global or local reference.</param>
            <returns>A global reference to the given <paramref name="obj" />. <see cref="F:System.IntPtr.Zero" /> if:<list type="bullet"><item><paramref name="obj" /> refers to <c>null</c></item><item>the system has run out of memory</item><item><paramref name="obj" /> was a weak global reference and has already been garbage collected</item></list></returns>
            <remarks>
            <para>Global references must be explicitly disposed of by calling <see cref="M:Cryville.Interop.Java.IJniEnv.DeleteGlobalRef(System.IntPtr)" />.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.DeleteGlobalRef(System.IntPtr)">
            <summary>
            Deletes the global reference pointed to by <paramref name="globalRef" />.
            </summary>
            <param name="globalRef">A global reference.</param>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.DeleteLocalRef(System.IntPtr)">
            <summary>
            Deletes the local reference pointed to by <paramref name="localRef" />.
            </summary>
            <param name="localRef">A local reference.</param>
            <remarks>
            <para>JDK/JRE 1.1 provides the <see cref="M:Cryville.Interop.Java.IJniEnv.DeleteLocalRef(System.IntPtr)" /> function so that programmers can manually delete local references. For example, if native code iterates through a potentially large array of objects and uses one element in each iteration, it is a good practice to delete the local reference to the no-longer-used array element before a new local reference is created in the next iteration.</para>
            <para>As of JDK/JRE 1.2 an additional set of functions are provided for local reference lifetime management. They are the four functions listed below:</para>
            <list type="bullet">
            <item><see cref="M:Cryville.Interop.Java.IJniEnv.EnsureLocalCapacity(System.Int32)" /></item>
            <item><see cref="M:Cryville.Interop.Java.IJniEnv.PushLocalFrame(System.Int32)" /></item>
            <item><see cref="M:Cryville.Interop.Java.IJniEnv.PopLocalFrame(System.IntPtr)" /></item>
            <item><see cref="M:Cryville.Interop.Java.IJniEnv.NewLocalRef(System.IntPtr)" /></item>
            </list>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.IsSameObject(System.IntPtr,System.IntPtr)">
            <summary>
            Tests whether two references refer to the same Java object.
            </summary>
            <param name="ref1">A Java object.</param>
            <param name="ref2">A Java object.</param>
            <returns><see langword="true" /> if <paramref name="ref1" /> and <paramref name="ref2" /> refer to the same Java object, or are both <c>null</c>; otherwise, <see langword="false" />.</returns>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.NewLocalRef(System.IntPtr)">
            <summary>
            Creates a new local reference that refers to the same object as <paramref name="ref" />.
            </summary>
            <param name="ref">A global or local reference.</param>
            <returns>A new local reference that refers to the same object as <paramref name="ref" />. <see cref="F:System.IntPtr.Zero" /> if <paramref name="ref" /> refers to <c>null</c>.</returns>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.EnsureLocalCapacity(System.Int32)">
            <summary>
            Ensures that at least a given number of local references can be created in the current thread.
            </summary>
            <param name="capacity">The number of local references.</param>
            <exception cref="T:Cryville.Interop.Java.JniException">On failure with a pending <c>OutOfMemoryError</c>.</exception>
            <remarks>
            <para>Before it enters a native method, the VM automatically ensures that at least 16 local references can be created.</para>
            <para>For backward compatibility, the VM allocates local references beyond the ensured capacity. (As a debugging support, the VM may give the user warnings that too many local references are being created. In the JDK, the programmer can supply the <c>-verbose:jni</c> command line option to turn on these messages.) The VM calls <c>FatalError</c> if no more local references can be created beyond the ensured capacity.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.AllocObject(System.IntPtr)">
            <summary>
            Allocates a new Java object without invoking any of the constructors for the object.
            </summary>
            <param name="clazz">A Java class object.</param>
            <returns>A Java object, or <see cref="F:System.IntPtr.Zero" /> if the object cannot be constructed.</returns>
            <remarks>
            <para>The <paramref name="clazz" /> argument must not refer to an array class.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.NewObject(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <summary>
            Constructs a new Java object.
            </summary>
            <param name="clazz">A Java class object.</param>
            <param name="methodID">The method ID of the constructor.</param>
            <param name="args">An array of arguments to the constructor.</param>
            <returns>A Java object, or <see cref="F:System.IntPtr.Zero" /> if the object cannot be constructed.</returns>
            <remarks>
            <para>The method ID indicates which constructor method to invoke. This ID must be obtained by calling <see cref="M:Cryville.Interop.Java.IJniEnv.GetMethodID(System.IntPtr,System.String,System.String)" /> with <c>&lt;init&gt;</c> as the method name and <c>void</c> (<c>V</c>) as the return type.</para>
            <para>The <paramref name="clazz" /> argument must not refer to an array class.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetObjectClass(System.IntPtr)">
            <summary>
            Returns the class of an object.
            </summary>
            <param name="obj">A Java object (must not be <see cref="F:System.IntPtr.Zero" />).</param>
            <returns>A Java class object.</returns>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.IsInstanceOf(System.IntPtr,System.IntPtr)">
            <summary>
            Tests whether an object is an instance of a class.
            </summary>
            <param name="obj">A Java object.</param>
            <param name="clazz">A Java class object.</param>
            <returns><see langword="true" /> if <paramref name="obj" /> can be cast to <paramref name="clazz" />; otherwise, <see langword="false" />.</returns>
            <remarks>
            <para><c>null</c> can be cast to any class.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetMethodID(System.IntPtr,System.String,System.String)">
            <summary>
            Returns the method ID for an instance (nonstatic) method of a class or interface.
            </summary>
            <param name="clazz">A Java class object.</param>
            <param name="name">The method name.</param>
            <param name="sig">The method signature.</param>
            <returns>A method ID, or <see cref="F:System.IntPtr.Zero" /> if the specified method cannot be found.</returns>
            <remarks>
            <para>The method may be defined in one of the <paramref name="clazz" />’s superclasses and inherited by <paramref name="clazz" />. The method is determined by its name and signature.</para>
            <para><see cref="M:Cryville.Interop.Java.IJniEnv.GetMethodID(System.IntPtr,System.String,System.String)" /> causes an uninitialized class to be initialized.</para>
            <para>To obtain the method ID of a constructor, supply <c>&lt;init&gt;</c> as the method name and <c>void</c> (<c>V</c>) as the return type.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <summary>
            Invokes an instance (nonstatic) method on a Java object, according to the specified method ID.
            </summary>
            <param name="obj">A Java object.</param>
            <param name="methodID">A method ID.</param>
            <param name="args">An array of arguments.</param>
            <returns>The result of calling the Java method.</returns>
            <remarks>
            <para>The <paramref name="methodID" /> argument must be obtained by calling <see cref="M:Cryville.Interop.Java.IJniEnv.GetMethodID(System.IntPtr,System.String,System.String)" />.</para>
            <para>When the function is used to call private methods and constructors, the method ID must be derived from the real class of <paramref name="obj" />, not from one of its superclasses.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallBooleanMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallByteMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallCharMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallShortMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallIntMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallLongMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallFloatMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallDoubleMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallVoidMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualObjectMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <summary>
            Invokes an instance (nonstatic) method on a Java object, based on the class, designated by the <paramref name="clazz" /> parameter, from which the method ID is obtained.
            </summary>
            <param name="obj">A Java object.</param>
            <param name="clazz">A Java class.</param>
            <param name="methodID">A method ID.</param>
            <param name="args">An array of arguments.</param>
            <returns>The result of calling the Java method.</returns>
            <remarks>
            <para>The <paramref name="methodID" /> argument must be obtained by calling <see cref="M:Cryville.Interop.Java.IJniEnv.GetMethodID(System.IntPtr,System.String,System.String)" />.</para>
            <para>The <see cref="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualObjectMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" /> families of routines and the <see cref="M:Cryville.Interop.Java.IJniEnv.CallObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" /> families of routines are different. <see cref="M:Cryville.Interop.Java.IJniEnv.CallObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" /> routines invoke the method based on the class of the object, while <see cref="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualObjectMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" /> routines invoke the method based on the class, designated by the <paramref name="clazz" /> parameter, from which the method ID is obtained. The method ID must be obtained from the real class of the object or from one of its superclasses.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualBooleanMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualObjectMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualByteMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualObjectMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualCharMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualObjectMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualShortMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualObjectMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualIntMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualObjectMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualLongMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualObjectMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualFloatMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualObjectMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualDoubleMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualObjectMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualVoidMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallNonvirtualObjectMethod(System.IntPtr,System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetFieldID(System.IntPtr,System.String,System.String)">
            <summary>
            Returns the field ID for an instance (nonstatic) field of a class.
            </summary>
            <param name="clazz">A Java class object.</param>
            <param name="name">The field name.</param>
            <param name="sig">The field signature.</param>
            <returns>A field ID, or <see cref="F:System.IntPtr.Zero" /> if the operation fails.</returns>
            <remarks>
            <para>The field is specified by its name and signature. The <see cref="M:Cryville.Interop.Java.IJniEnv.GetObjectField(System.IntPtr,System.IntPtr)" /> and <see cref="M:Cryville.Interop.Java.IJniEnv.SetObjectField(System.IntPtr,System.IntPtr,System.IntPtr)" /> families of accessor functions use field IDs to retrieve object fields.</para>
            <para><see cref="M:Cryville.Interop.Java.IJniEnv.GetFieldID(System.IntPtr,System.String,System.String)" /> causes an uninitialized class to be initialized.</para>
            <para><see cref="M:Cryville.Interop.Java.IJniEnv.GetFieldID(System.IntPtr,System.String,System.String)" /> cannot be used to obtain the length field of an array. Use <see cref="M:Cryville.Interop.Java.IJniEnv.GetArrayLength(System.IntPtr)" /> instead.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetObjectField(System.IntPtr,System.IntPtr)">
            <summary>
            Returns the value of an instance (nonstatic) field of an object.
            </summary>
            <param name="obj">A Java object (must not be <see cref="F:System.IntPtr.Zero" />).</param>
            <param name="fieldID">A valid field ID.</param>
            <returns>The content of the field.</returns>
            <remarks>
            <para>The field to access is specified by a field ID obtained by calling <see cref="M:Cryville.Interop.Java.IJniEnv.GetFieldID(System.IntPtr,System.String,System.String)" />.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetBooleanField(System.IntPtr,System.IntPtr)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetObjectField(System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetByteField(System.IntPtr,System.IntPtr)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetObjectField(System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetCharField(System.IntPtr,System.IntPtr)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetObjectField(System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetShortField(System.IntPtr,System.IntPtr)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetObjectField(System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetIntField(System.IntPtr,System.IntPtr)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetObjectField(System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetLongField(System.IntPtr,System.IntPtr)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetObjectField(System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetFloatField(System.IntPtr,System.IntPtr)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetObjectField(System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetDoubleField(System.IntPtr,System.IntPtr)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetObjectField(System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetObjectField(System.IntPtr,System.IntPtr,System.IntPtr)">
            <summary>
            Sets the value of an instance (nonstatic) field of an object.
            </summary>
            <param name="obj">A Java object (must not be <see cref="F:System.IntPtr.Zero" />).</param>
            <param name="fieldID">A valid field ID.</param>
            <param name="value">The new value of the field.</param>
            <remarks>
            <para>The field to access is specified by a field ID obtained by calling <see cref="M:Cryville.Interop.Java.IJniEnv.GetFieldID(System.IntPtr,System.String,System.String)" />.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetBooleanField(System.IntPtr,System.IntPtr,System.Boolean)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetObjectField(System.IntPtr,System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetByteField(System.IntPtr,System.IntPtr,System.SByte)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetObjectField(System.IntPtr,System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetCharField(System.IntPtr,System.IntPtr,System.Char)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetObjectField(System.IntPtr,System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetShortField(System.IntPtr,System.IntPtr,System.Int16)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetObjectField(System.IntPtr,System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetIntField(System.IntPtr,System.IntPtr,System.Int32)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetObjectField(System.IntPtr,System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetLongField(System.IntPtr,System.IntPtr,System.Int64)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetObjectField(System.IntPtr,System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetFloatField(System.IntPtr,System.IntPtr,System.Single)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetObjectField(System.IntPtr,System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetDoubleField(System.IntPtr,System.IntPtr,System.Double)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetObjectField(System.IntPtr,System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetStaticMethodID(System.IntPtr,System.String,System.String)">
            <summary>
            Returns the method ID for a static method of a class.
            </summary>
            <param name="clazz">A Java class object.</param>
            <param name="name">The static method name.</param>
            <param name="sig">The method signature.</param>
            <returns>A method ID, or <see cref="F:System.IntPtr.Zero" /> if the operation fails.</returns>
            <remarks>
            <para>The method is specified by its name and signature.</para>
            <para><see cref="M:Cryville.Interop.Java.IJniEnv.GetStaticMethodID(System.IntPtr,System.String,System.String)" /> causes an uninitialized class to be initialized.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallStaticObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <summary>
            Invokes a static method on a Java object, according to the specified method ID.
            </summary>
            <param name="clazz">A Java object.</param>
            <param name="methodID">A static method ID.</param>
            <param name="args">An array of arguments.</param>
            <returns>The result of calling the static Java method.</returns>
            <remarks>
            <para>The method ID must be derived from <paramref name="clazz" />, not from one of its superclasses.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallStaticBooleanMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallStaticObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallStaticByteMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallStaticObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallStaticCharMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallStaticObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallStaticShortMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallStaticObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallStaticIntMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallStaticObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallStaticLongMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallStaticObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallStaticFloatMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallStaticObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallStaticDoubleMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallStaticObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.CallStaticVoidMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.CallStaticObjectMethod(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniValue[])" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetStaticFieldID(System.IntPtr,System.String,System.String)">
            <summary>
            Returns the field ID for a static field of a class.
            </summary>
            <param name="clazz">A Java class object.</param>
            <param name="name">The static field name.</param>
            <param name="sig">The field signature.</param>
            <returns>A field ID, or <see cref="F:System.IntPtr.Zero" /> if the specified static field cannot be found.</returns>
            <remarks>
            <para>The field is specified by its name and signature. The <see cref="M:Cryville.Interop.Java.IJniEnv.GetStaticObjectField(System.IntPtr,System.IntPtr)" /> and <see cref="M:Cryville.Interop.Java.IJniEnv.SetStaticObjectField(System.IntPtr,System.IntPtr,System.IntPtr)" /> families of accessor functions use field IDs to retrieve static fields.</para>
            <para><see cref="M:Cryville.Interop.Java.IJniEnv.GetStaticFieldID(System.IntPtr,System.String,System.String)" /> causes an uninitialized class to be initialized.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetStaticObjectField(System.IntPtr,System.IntPtr)">
            <summary>
            Returns the value of a static field of an object.
            </summary>
            <param name="clazz">A Java class object.</param>
            <param name="fieldID">A static field ID.</param>
            <returns>The content of the static field.</returns>
            <remarks>
            <para>The field to access is specified by a field ID, which is obtained by calling <see cref="M:Cryville.Interop.Java.IJniEnv.GetStaticFieldID(System.IntPtr,System.String,System.String)" />.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetStaticBooleanField(System.IntPtr,System.IntPtr)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetStaticObjectField(System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetStaticByteField(System.IntPtr,System.IntPtr)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetStaticObjectField(System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetStaticCharField(System.IntPtr,System.IntPtr)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetStaticObjectField(System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetStaticShortField(System.IntPtr,System.IntPtr)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetStaticObjectField(System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetStaticIntField(System.IntPtr,System.IntPtr)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetStaticObjectField(System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetStaticLongField(System.IntPtr,System.IntPtr)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetStaticObjectField(System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetStaticFloatField(System.IntPtr,System.IntPtr)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetStaticObjectField(System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetStaticDoubleField(System.IntPtr,System.IntPtr)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetStaticObjectField(System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetStaticObjectField(System.IntPtr,System.IntPtr,System.IntPtr)">
            <summary>
            Sets the value of a static field of an object.
            </summary>
            <param name="clazz">A Java class object.</param>
            <param name="fieldID">A static field ID.</param>
            <param name="value">The new value of the field.</param>
            <remarks>
            <para>The field to access is specified by a field ID, which is obtained by calling <see cref="M:Cryville.Interop.Java.IJniEnv.GetStaticFieldID(System.IntPtr,System.String,System.String)" />.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetStaticBooleanField(System.IntPtr,System.IntPtr,System.Boolean)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetStaticObjectField(System.IntPtr,System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetStaticByteField(System.IntPtr,System.IntPtr,System.SByte)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetStaticObjectField(System.IntPtr,System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetStaticCharField(System.IntPtr,System.IntPtr,System.Char)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetStaticObjectField(System.IntPtr,System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetStaticShortField(System.IntPtr,System.IntPtr,System.Int16)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetStaticObjectField(System.IntPtr,System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetStaticIntField(System.IntPtr,System.IntPtr,System.Int32)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetStaticObjectField(System.IntPtr,System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetStaticLongField(System.IntPtr,System.IntPtr,System.Int64)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetStaticObjectField(System.IntPtr,System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetStaticFloatField(System.IntPtr,System.IntPtr,System.Single)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetStaticObjectField(System.IntPtr,System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetStaticDoubleField(System.IntPtr,System.IntPtr,System.Double)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetStaticObjectField(System.IntPtr,System.IntPtr,System.IntPtr)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.NewString(System.Char*,System.Int32)">
            <summary>
            Constructs a new <c>java.lang.String</c> object from an array of Unicode characters.
            </summary>
            <param name="unicodeChars">A pointer to a Unicode string.</param>
            <param name="len">Length of the Unicode string.</param>
            <returns>A Java string object, or <see cref="F:System.IntPtr.Zero" /> if the string cannot be constructed.</returns>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetStringLength(System.IntPtr)">
            <summary>
            Returns the length (the count of Unicode characters) of a Java string.
            </summary>
            <param name="string">A Java string object.</param>
            <returns>The length of the Java string.</returns>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetStringChars(System.IntPtr,System.Boolean@)">
            <summary>
            Returns a pointer to the array of Unicode characters of the string.
            </summary>
            <param name="string">A Java string object.</param>
            <param name="isCopy">Set to <see langword="true" /> if a copy is made; or set to <see langword="false" /> if no copy is made.</param>
            <returns>A pointer to a Unicode string, or <see cref="F:System.IntPtr.Zero" /> if the operation fails.</returns>
            <remarks>
            <para>The returned pointer is valid until <see cref="M:Cryville.Interop.Java.IJniEnv.ReleaseStringChars(System.IntPtr,System.Char*)" /> is called.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.ReleaseStringChars(System.IntPtr,System.Char*)">
            <summary>
            Informs the VM that the native code no longer needs access to <paramref name="chars" />.
            </summary>
            <param name="string">A Java string object.</param>
            <param name="chars">A pointer to a Unicode string.</param>
            <remarks>
            <para>The <paramref name="chars" /> argument is a pointer obtained from string using <see cref="M:Cryville.Interop.Java.IJniEnv.GetStringChars(System.IntPtr,System.Boolean@)" />.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.NewStringUTF(System.Byte*)">
            <summary>
            Constructs a new <c>java.lang.String</c> object from an array of characters in modified UTF-8 encoding.
            </summary>
            <param name="bytes">The pointer to a modified UTF-8 string.</param>
            <returns>A Java string object, or <see cref="F:System.IntPtr.Zero" /> if the string cannot be constructed.</returns>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetStringUTFLength(System.IntPtr)">
            <summary>
            Returns the length in bytes of the modified UTF-8 representation of a string.
            </summary>
            <param name="string">A Java string object.</param>
            <returns>Returns the UTF-8 length of the string.</returns>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetStringUTFChars(System.IntPtr,System.Boolean@)">
            <summary>
            Returns a pointer to an array of bytes representing the string in modified UTF-8 encoding.
            </summary>
            <param name="string">A Java string object.</param>
            <param name="isCopy">Set to <see langword="true" /> if a copy is made; or set to <see langword="false" /> if no copy is made.</param>
            <returns>A pointer to a modified UTF-8 string, or <see cref="F:System.IntPtr.Zero" /> if the operation fails.</returns>
            <remarks>
            <para>The returned array is valid until it is released by <see cref="M:Cryville.Interop.Java.IJniEnv.ReleaseStringUTFChars(System.Char*,System.Byte*)" />.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.ReleaseStringUTFChars(System.Char*,System.Byte*)">
            <summary>
            Informs the VM that the native code no longer needs access to <paramref name="utf" />.
            </summary>
            <param name="string">A Java string object.</param>
            <param name="utf">A pointer to a modified UTF-8 string.</param>
            <remarks>
            <para>The <paramref name="utf" /> argument is a pointer derived from string using <see cref="M:Cryville.Interop.Java.IJniEnv.GetStringUTFChars(System.IntPtr,System.Boolean@)" />.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetArrayLength(System.IntPtr)">
            <summary>
            Returns the number of elements in the array.
            </summary>
            <param name="array">A Java array object.</param>
            <returns>The length of the array.</returns>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.NewObjectArray(System.Int32,System.IntPtr,System.IntPtr)">
            <summary>
            Constructs a new array holding objects in class <paramref name="elementClass" />.
            </summary>
            <param name="length">Array size.</param>
            <param name="elementClass">Array element class.</param>
            <param name="initialElement">Initialization value.</param>
            <returns>A Java array object, or <see cref="F:System.IntPtr.Zero" /> if the array cannot be constructed.</returns>
            <remarks>
            <para>All elements are initially set to <paramref name="initialElement" />.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetObjectArrayElement(System.IntPtr,System.Int32)">
            <summary>
            Returns an element of an <c>Object</c> array.
            </summary>
            <param name="array">A Java array.</param>
            <param name="index">Array index.</param>
            <returns>A Java object.</returns>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetObjectArrayElement(System.IntPtr,System.Int32,System.IntPtr)">
            <summary>
            Sets an element of an <c>Object</c> array.
            </summary>
            <param name="array">A Java array.</param>
            <param name="index">Array index.</param>
            <param name="value">The new value.</param>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.NewBooleanArray(System.Int32)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.NewIntArray(System.Int32)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.NewByteArray(System.Int32)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.NewIntArray(System.Int32)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.NewCharArray(System.Int32)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.NewIntArray(System.Int32)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.NewShortArray(System.Int32)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.NewIntArray(System.Int32)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.NewIntArray(System.Int32)">
            <summary>
            Constructs a new primitive array object.
            </summary>
            <param name="length">The array length.</param>
            <returns>A Java array, or <see cref="F:System.IntPtr.Zero" /> if the array cannot be constructed.</returns>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.NewLongArray(System.Int32)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.NewIntArray(System.Int32)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.NewFloatArray(System.Int32)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.NewIntArray(System.Int32)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.NewDoubleArray(System.Int32)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.NewIntArray(System.Int32)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetBooleanArrayElements(System.IntPtr,System.Boolean@)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetIntArrayElements(System.IntPtr,System.Boolean@)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetByteArrayElements(System.IntPtr,System.Boolean@)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetIntArrayElements(System.IntPtr,System.Boolean@)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetCharArrayElements(System.IntPtr,System.Boolean@)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetIntArrayElements(System.IntPtr,System.Boolean@)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetShortArrayElements(System.IntPtr,System.Boolean@)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetIntArrayElements(System.IntPtr,System.Boolean@)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetIntArrayElements(System.IntPtr,System.Boolean@)">
            <summary>
            Returns the body of the primitive array.
            </summary>
            <param name="array">A Java array.</param>
            <param name="isCopy">Set to <see langword="true" /> if a copy is made; or set to <see langword="false" /> if no copy is made.</param>
            <returns>A pointer to the array elements, or <see cref="F:System.IntPtr.Zero" /> if the operation fails.</returns>
            <remarks>
            <para>The result is valid until the corresponding <see cref="M:Cryville.Interop.Java.IJniEnv.ReleaseIntArrayElements(System.IntPtr,System.Int32*,Cryville.Interop.Java.JniReleaseArrayElementsMode)" /> function is called. Since the returned array may be a copy of the Java array, changes made to the returned array will not necessarily be reflected in the original array until <see cref="M:Cryville.Interop.Java.IJniEnv.ReleaseIntArrayElements(System.IntPtr,System.Int32*,Cryville.Interop.Java.JniReleaseArrayElementsMode)" /> is called.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetLongArrayElements(System.IntPtr,System.Boolean@)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetIntArrayElements(System.IntPtr,System.Boolean@)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetFloatArrayElements(System.IntPtr,System.Boolean@)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetIntArrayElements(System.IntPtr,System.Boolean@)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetDoubleArrayElements(System.IntPtr,System.Boolean@)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetIntArrayElements(System.IntPtr,System.Boolean@)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.ReleaseBooleanArrayElements(System.IntPtr,System.Boolean*,Cryville.Interop.Java.JniReleaseArrayElementsMode)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.ReleaseIntArrayElements(System.IntPtr,System.Int32*,Cryville.Interop.Java.JniReleaseArrayElementsMode)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.ReleaseByteArrayElements(System.IntPtr,System.SByte*,Cryville.Interop.Java.JniReleaseArrayElementsMode)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.ReleaseIntArrayElements(System.IntPtr,System.Int32*,Cryville.Interop.Java.JniReleaseArrayElementsMode)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.ReleaseCharArrayElements(System.IntPtr,System.Char*,Cryville.Interop.Java.JniReleaseArrayElementsMode)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.ReleaseIntArrayElements(System.IntPtr,System.Int32*,Cryville.Interop.Java.JniReleaseArrayElementsMode)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.ReleaseShortArrayElements(System.IntPtr,System.Int16*,Cryville.Interop.Java.JniReleaseArrayElementsMode)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.ReleaseIntArrayElements(System.IntPtr,System.Int32*,Cryville.Interop.Java.JniReleaseArrayElementsMode)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.ReleaseIntArrayElements(System.IntPtr,System.Int32*,Cryville.Interop.Java.JniReleaseArrayElementsMode)">
            <summary>
            Informs the VM that the native code no longer needs access to <paramref name="elems" />.
            </summary>
            <param name="array">A Java array object.</param>
            <param name="elems">A pointer to array elements.</param>
            <param name="mode">The release mode.</param>
            <remarks>
            <para>The <paramref name="elems" /> argument is a pointer derived from array using the corresponding <see cref="M:Cryville.Interop.Java.IJniEnv.GetIntArrayElements(System.IntPtr,System.Boolean@)" /> function. If necessary, this function copies back all changes made to <paramref name="elems" /> to the original array.</para>
            <para>The <paramref name="mode" /> argument provides information on how the array buffer should be released. <paramref name="mode" /> has no effect if <paramref name="elems" /> is not a copy of the elements in <paramref name="array" />.</para>
            <para>In most cases, programmers pass <see cref="F:Cryville.Interop.Java.JniReleaseArrayElementsMode.Default" /> to the mode argument to ensure consistent behavior for both pinned and copied arrays. The other options give the programmer more control over memory management and should be used with extreme care.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.ReleaseLongArrayElements(System.IntPtr,System.Int64*,Cryville.Interop.Java.JniReleaseArrayElementsMode)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.ReleaseIntArrayElements(System.IntPtr,System.Int32*,Cryville.Interop.Java.JniReleaseArrayElementsMode)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.ReleaseFloatArrayElements(System.IntPtr,System.Single*,Cryville.Interop.Java.JniReleaseArrayElementsMode)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.ReleaseIntArrayElements(System.IntPtr,System.Int32*,Cryville.Interop.Java.JniReleaseArrayElementsMode)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.ReleaseDoubleArrayElements(System.IntPtr,System.Double*,Cryville.Interop.Java.JniReleaseArrayElementsMode)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.ReleaseIntArrayElements(System.IntPtr,System.Int32*,Cryville.Interop.Java.JniReleaseArrayElementsMode)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetBooleanArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Boolean*)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetIntArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int32*)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetByteArrayRegion(System.IntPtr,System.Int32,System.Int32,System.SByte*)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetIntArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int32*)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetCharArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Char*)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetIntArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int32*)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetShortArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int16*)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetIntArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int32*)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetIntArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int32*)">
            <summary>
            Copies a region of a primitive array into a buffer.
            </summary>
            <param name="array">A Java array.</param>
            <param name="start">The starting index.</param>
            <param name="len">The number of elements to be copied.</param>
            <param name="buf">The destination buffer.</param>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetLongArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int64*)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetIntArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int32*)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetFloatArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Single*)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetIntArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int32*)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetDoubleArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Double*)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.GetIntArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int32*)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetBooleanArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Boolean*)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetIntArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int32*)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetByteArrayRegion(System.IntPtr,System.Int32,System.Int32,System.SByte*)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetIntArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int32*)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetCharArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Char*)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetIntArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int32*)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetShortArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int16*)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetIntArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int32*)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetIntArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int32*)">
            <summary>
            Copies back a region of a primitive array from a buffer.
            </summary>
            <param name="array">A Java array.</param>
            <param name="start">The starting index.</param>
            <param name="len">The number of elements to be copied.</param>
            <param name="buf">The source buffer.</param>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetLongArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int64*)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetIntArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int32*)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetFloatArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Single*)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetIntArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int32*)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.SetDoubleArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Double*)">
            <inheritdoc cref="M:Cryville.Interop.Java.IJniEnv.SetIntArrayRegion(System.IntPtr,System.Int32,System.Int32,System.Int32*)" />
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.RegisterNatives(System.IntPtr,Cryville.Interop.Java.JniNativeMethod[])">
            <summary>
            Registers native methods with the class specified by the <paramref name="clazz" /> argument.
            </summary>
            <param name="clazz">A Java class object.</param>
            <param name="methods">The native methods in the class.</param>
            <exception cref="T:Cryville.Interop.Java.JniException">On failure.</exception>
            <remarks>
            <para>The <paramref name="methods" /> parameter specifies an array of <see cref="T:Cryville.Interop.Java.JniNativeMethod" /> structures that contain the names, signatures, and function pointers of the native methods.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.UnregisterNatives(System.IntPtr)">
            <summary>
            Unregisters native methods of a class.
            </summary>
            <param name="clazz">A Java class object.</param>
            <exception cref="T:Cryville.Interop.Java.JniException">On failure.</exception>
            <remarks>
            <para>The class goes back to the state before it was linked or registered with its native method functions.</para>
            <para>This function should not be used in normal native code. Instead, it provides special programs a way to reload and relink native libraries.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.MonitorEnter(System.IntPtr)">
            <summary>
            Enters the monitor associated with the underlying Java object referred to by <paramref name="obj" />.
            </summary>
            <param name="obj">A normal Java object or class object.</param>
            <exception cref="T:Cryville.Interop.Java.JniException">On failure.</exception>
            <remarks>
            <para>Enters the monitor associated with the object referred to by <paramref name="obj" />. The <paramref name="obj" /> reference must not be <see cref="F:System.IntPtr.Zero" />.</para>
            <para>Each Java object has a monitor associated with it. If the current thread already owns the monitor associated with <paramref name="obj" />, it increments a counter in the monitor indicating the number of times this thread has entered the monitor. If the monitor associated with <paramref name="obj" /> is not owned by any thread, the current thread becomes the owner of the monitor, setting the entry count of this monitor to 1. If another thread already owns the monitor associated with <paramref name="obj" />, the current thread waits until the monitor is released, then tries again to gain ownership.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.MonitorExit(System.IntPtr)">
            <summary>
            Exits the monitor associated with the underlying Java object referred to by <paramref name="obj" />.
            </summary>
            <param name="obj">A normal Java object or class object.</param>
            <exception cref="T:Cryville.Interop.Java.JniException">On failure.</exception>
            <remarks>
            <para>The current thread must be the owner of the monitor associated with the underlying Java object referred to by <paramref name="obj" />. The thread decrements the counter indicating the number of times it has entered this monitor. If the value of the counter becomes zero, the current thread releases the monitor.</para>
            <para>Native code must not use <see cref="M:Cryville.Interop.Java.IJniEnv.MonitorExit(System.IntPtr)" /> to exit a monitor entered through a synchronized method or a <c>monitorenter</c> Java virtual machine instruction.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetJavaVM">
            <summary>
            Returns the Java VM interface (used in the Invocation API) associated with the current thread.
            </summary>
            <returns>The result.</returns>
            <exception cref="T:Cryville.Interop.Java.JniException">On failure.</exception>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetStringRegion(System.IntPtr,System.Int32,System.Int32,System.Char*)">
            <summary>
            Copies <paramref name="len" /> number of Unicode characters beginning at offset <paramref name="start" /> to the given buffer <paramref name="buf" />.
            </summary>
            <param name="str">A Java string object.</param>
            <param name="start">The offset where the copy starts.</param>
            <param name="len">The number of characters to be copied.</param>
            <param name="buf">The destination buffer.</param>
            <remarks>
            <para>Throws <c>StringIndexOutOfBoundsException</c> on index overflow.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetStringUTFRegion(System.IntPtr,System.Int32,System.Int32,System.Byte*)">
            <summary>
            Translates <paramref name="len" /> number of Unicode characters beginning at offset <paramref name="start" /> into modified UTF-8 encoding and place the result in the given buffer <paramref name="buf" />.
            </summary>
            <param name="str">A Java string object.</param>
            <param name="start">The offset where the translation starts.</param>
            <param name="len">The number of characters to be translated.</param>
            <param name="buf">The destination buffer.</param>
            <remarks>
            <para>Throws <c>StringIndexOutOfBoundsException</c> on index overflow.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetPrimitiveArrayCritical(System.IntPtr,System.Boolean@)">
            <summary>
            Returns the body of the primitive array.
            </summary>
            <param name="array">A Java array.</param>
            <param name="isCopy">Set to <see langword="true" /> if a copy is made; or set to <see langword="false" /> if no copy is made.</param>
            <returns>A pointer to the array elements, or <see cref="F:System.IntPtr.Zero" /> if the operation fails.</returns>
            <remarks>
            <para>The result is valid until the corresponding <see cref="M:Cryville.Interop.Java.IJniEnv.ReleasePrimitiveArrayCritical(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniReleaseArrayElementsMode)" /> function is called. Since the returned array may be a copy of the Java array, changes made to the returned array will not necessarily be reflected in the original array until <see cref="M:Cryville.Interop.Java.IJniEnv.ReleasePrimitiveArrayCritical(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniReleaseArrayElementsMode)" /> is called.</para>
            <para>There are significant restrictions on how this function can be used. After calling <see cref="M:Cryville.Interop.Java.IJniEnv.GetPrimitiveArrayCritical(System.IntPtr,System.Boolean@)" />, the native code should not run for an extended period of time before it calls <see cref="M:Cryville.Interop.Java.IJniEnv.ReleasePrimitiveArrayCritical(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniReleaseArrayElementsMode)" />. We must treat the code inside this pair of functions as running in a "critical region." Inside a critical region, native code must not call other JNI functions, or any system call that may cause the current thread to block and wait for another Java thread. (For example, the current thread must not call <c>read</c> on a stream being written by another Java thread.)</para>
            <para>These restrictions make it more likely that the native code will obtain an uncopied version of the array, even if the VM does not support pinning. For example, a VM may temporarily disable garbage collection when the native code is holding a pointer to an array obtained via <see cref="M:Cryville.Interop.Java.IJniEnv.GetPrimitiveArrayCritical(System.IntPtr,System.Boolean@)" />.</para>
            <para>Multiple pairs of <see cref="M:Cryville.Interop.Java.IJniEnv.GetPrimitiveArrayCritical(System.IntPtr,System.Boolean@)" /> and <see cref="M:Cryville.Interop.Java.IJniEnv.ReleasePrimitiveArrayCritical(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniReleaseArrayElementsMode)" /> may be nested.</para>
            <para>Note that <see cref="M:Cryville.Interop.Java.IJniEnv.GetPrimitiveArrayCritical(System.IntPtr,System.Boolean@)" /> might still make a copy of the array if the VM internally represents arrays in a different format. Therefore we need to check its return value against <see cref="F:System.IntPtr.Zero" /> for possible out of memory situations.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.ReleasePrimitiveArrayCritical(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniReleaseArrayElementsMode)">
            <summary>
            Informs the VM that the native code no longer needs access to <paramref name="carray" />.
            </summary>
            <param name="array">A Java array object.</param>
            <param name="carray">A pointer to array elements.</param>
            <param name="mode">The release mode.</param>
            <remarks>
            <para>The <paramref name="carray" /> argument is a pointer derived from array using the corresponding <see cref="M:Cryville.Interop.Java.IJniEnv.GetPrimitiveArrayCritical(System.IntPtr,System.Boolean@)" /> function. If necessary, this function copies back all changes made to <paramref name="carray" /> to the original array.</para>
            <para>The <paramref name="mode" /> argument provides information on how the array buffer should be released. <paramref name="mode" /> has no effect if <paramref name="carray" /> is not a copy of the elements in <paramref name="array" />.</para>
            <para>In most cases, programmers pass <see cref="F:Cryville.Interop.Java.JniReleaseArrayElementsMode.Default" /> to the mode argument to ensure consistent behavior for both pinned and copied arrays. The other options give the programmer more control over memory management and should be used with extreme care.</para>
            <para>There are significant restrictions on how this function can be used. After calling <see cref="M:Cryville.Interop.Java.IJniEnv.GetPrimitiveArrayCritical(System.IntPtr,System.Boolean@)" />, the native code should not run for an extended period of time before it calls <see cref="M:Cryville.Interop.Java.IJniEnv.ReleasePrimitiveArrayCritical(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniReleaseArrayElementsMode)" />. We must treat the code inside this pair of functions as running in a "critical region." Inside a critical region, native code must not call other JNI functions, or any system call that may cause the current thread to block and wait for another Java thread. (For example, the current thread must not call <c>read</c> on a stream being written by another Java thread.)</para>
            <para>These restrictions make it more likely that the native code will obtain an uncopied version of the array, even if the VM does not support pinning. For example, a VM may temporarily disable garbage collection when the native code is holding a pointer to an array obtained via <see cref="M:Cryville.Interop.Java.IJniEnv.GetPrimitiveArrayCritical(System.IntPtr,System.Boolean@)" />.</para>
            <para>Multiple pairs of <see cref="M:Cryville.Interop.Java.IJniEnv.GetPrimitiveArrayCritical(System.IntPtr,System.Boolean@)" /> and <see cref="M:Cryville.Interop.Java.IJniEnv.ReleasePrimitiveArrayCritical(System.IntPtr,System.IntPtr,Cryville.Interop.Java.JniReleaseArrayElementsMode)" /> may be nested.</para>
            <para>Note that <see cref="M:Cryville.Interop.Java.IJniEnv.GetPrimitiveArrayCritical(System.IntPtr,System.Boolean@)" /> might still make a copy of the array if the VM internally represents arrays in a different format. Therefore we need to check its return value against <see cref="F:System.IntPtr.Zero" /> for possible out of memory situations.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetStringCritical(System.IntPtr,System.Boolean@)">
            <summary>
            Returns a pointer to the array of Unicode characters of the string.
            </summary>
            <param name="string">A Java string object.</param>
            <param name="isCopy">Set to <see langword="true" /> if a copy is made; or it is set to <see langword="false" /> if no copy is made.</param>
            <returns>A pointer to a Unicode string, or <see cref="F:System.IntPtr.Zero" /> if the operation fails.</returns>
            <remarks>
            <para>The returned pointer is valid until <see cref="M:Cryville.Interop.Java.IJniEnv.ReleaseStringChars(System.IntPtr,System.Char*)" /> is called.</para>
            <para>There are significant restrictions on how this function can be used. In a code segment enclosed by <see cref="M:Cryville.Interop.Java.IJniEnv.GetStringCritical(System.IntPtr,System.Boolean@)" /> and <see cref="M:Cryville.Interop.Java.IJniEnv.ReleaseStringCritical(System.IntPtr,System.Char*)" /> calls, the native code must not issue arbitrary JNI calls, or cause the current thread to block.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.ReleaseStringCritical(System.IntPtr,System.Char*)">
            <summary>
            Informs the VM that the native code no longer needs access to <paramref name="carray" />.
            </summary>
            <param name="string">A Java string object.</param>
            <param name="carray">A pointer to a Unicode string.</param>
            <remarks>
            <para>The <paramref name="carray" /> argument is a pointer obtained from string using <see cref="M:Cryville.Interop.Java.IJniEnv.GetStringChars(System.IntPtr,System.Boolean@)" />.</para>
            <para>There are significant restrictions on how this function can be used. In a code segment enclosed by <see cref="M:Cryville.Interop.Java.IJniEnv.GetStringCritical(System.IntPtr,System.Boolean@)" /> and <see cref="M:Cryville.Interop.Java.IJniEnv.ReleaseStringCritical(System.IntPtr,System.Char*)" /> calls, the native code must not issue arbitrary JNI calls, or cause the current thread to block.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.NewWeakGlobalRef(System.IntPtr)">
            <summary>
            Creates a new weak global reference.
            </summary>
            <param name="obj">The object.</param>
            <returns>A new weak global reference. <see cref="F:System.IntPtr.Zero" /> if <paramref name="obj" /> refers to <c>null</c>, or if the VM runs out of memory.</returns>
            <remarks>
            <para>If the VM runs out of memory, an <c>OutOfMemoryError</c> will be thrown.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.DeleteWeakGlobalRef(System.IntPtr)">
            <summary>
            Delete the VM resources needed for the given weak global reference.
            </summary>
            <param name="obj">The weak global reference.</param>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.ExceptionCheck">
            <summary>
            Checks whether there is a pending exception.
            </summary>
            <returns><see langword="true" /> when there is a pending exception; otherwise, <see langword="false" />.</returns>
            <remarks>Identical to <see cref="M:Cryville.Interop.Java.IJniEnv.ExceptionOccurred" />, but without creating a local reference to the exception object.</remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.NewDirectByteBuffer(System.Void*,System.Int64)">
            <summary>
            Allocates and returns a direct <c>java.nio.ByteBuffer</c> referring to the block of memory starting at the memory address <paramref name="address" /> and extending <paramref name="capacity" /> bytes.
            </summary>
            <param name="address">The starting address of the memory region (must not be <see langword="null" />).</param>
            <param name="capacity">The size in bytes of the memory region (must be positive).</param>
            <returns>A local reference to the newly-instantiated <c>java.nio.ByteBuffer</c> object. <see cref="F:System.IntPtr.Zero" /> if an exception occurs, or if JNI access to direct buffers is not supported by this virtual machine.</returns>
            <remarks>
            <para>Native code that calls this function and returns the resulting byte-buffer object to Java-level code should ensure that the buffer refers to a valid region of memory that is accessible for reading and, if appropriate, writing. An attempt to access an invalid memory location from Java code will either return an arbitrary value, have no visible effect, or cause an unspecified exception to be thrown.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetDirectBufferAddress(System.IntPtr)">
            <summary>
            Fetches and returns the starting address of the memory region referenced by the given direct <c>java.nio.Buffer</c>.
            </summary>
            <param name="buf">A direct <c>java.nio.Buffer</c> object (must not be <see cref="F:System.IntPtr.Zero" />).</param>
            <returns>The starting address of the memory region referenced by the buffer. <see langword="null" /> if the memory region is undefined, if the given object is not a direct <c>java.nio.Buffer</c>, or if JNI access to direct buffers is not supported by this virtual machine.</returns>
            <remarks>
            <para>This function allows native code to access the same memory region that is accessible to Java code via the buffer object.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetDirectBufferCapacity(System.IntPtr)">
            <summary>
            Fetches and returns the capacity of the memory region referenced by the given direct <c>java.nio.Buffer</c>.
            </summary>
            <param name="buf">A direct <c>java.nio.Buffer</c> object (must not be <see cref="F:System.IntPtr.Zero" />).</param>
            <returns>The capacity of the memory region associated with the buffer. <c>-1</c> if the given object is not a direct <c>java.nio.Buffer</c>, if the object is an unaligned view buffer and the processor architecture does not support unaligned access, or if JNI access to direct buffers is not supported by this virtual machine.</returns>
            <remarks>
            <para>The capacity is the number of elements that the memory region contains.</para>
            </remarks>
        </member>
        <member name="M:Cryville.Interop.Java.IJniEnv.GetObjectRefType(System.IntPtr)">
            <summary>
            Returns the type of the object referred to by the <paramref name="obj" /> argument.
            </summary>
            <param name="obj">A local, global or weak global reference.</param>
            <returns>One of the enumerated values defined as a <see cref="T:Cryville.Interop.Java.JniObjectRefType" />.</returns>
            <remarks>
            <para>If the <paramref name="obj" /> argument is not a valid reference, the return value for this function will be <see cref="F:Cryville.Interop.Java.JniObjectRefType.Invalid" />. An invalid reference is a reference which is not a valid handle. That is, the <paramref name="obj" /> pointer address does not point to a location in memory which has been allocated from one of the Ref creation functions or returned from a JNI function. As such, <see cref="F:System.IntPtr.Zero" /> would be an invalid reference and <see cref="M:Cryville.Interop.Java.IJniEnv.GetObjectRefType(System.IntPtr)" /> would return <see cref="F:Cryville.Interop.Java.JniObjectRefType.Invalid" />.</para>
            <para>On the other hand, a null reference, which is a reference that points to a <c>null</c>, would return the type of reference that the null reference was originally created as.</para>
            <para><see cref="M:Cryville.Interop.Java.IJniEnv.GetObjectRefType(System.IntPtr)" /> cannot be used on deleted references.</para>
            <para>Since references are typically implemented as pointers to memory data structures that can potentially be reused by any of the reference allocation services in the VM, once deleted, it is not specified what value the <see cref="M:Cryville.Interop.Java.IJniEnv.GetObjectRefType(System.IntPtr)" /> will return.</para>
            </remarks>
        </member>
        <member name="T:Cryville.Interop.Java.JniResult">
            <summary>
            Result code returned by JNI functions.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JniResult.OK">
            <summary>
            Success.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JniResult.Unknown">
            <summary>
            Unknown error.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JniResult.Detached">
            <summary>
            Thread detached from the VM.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JniResult.Version">
            <summary>
            JNI version error.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JniResult.NoMemory">
            <summary>
            Not enough memory.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JniResult.Existed">
            <summary>
            VM already created.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JniResult.Invalid">
            <summary>
            Invalid arguments.
            </summary>
        </member>
        <member name="F:Cryville.Interop.Java.JniResult.Inner">
            <summary>
            Check inner exception.
            </summary>
        </member>
        <member name="T:Cryville.Interop.Java.JniValue">
            <summary>
            JNI value.
            </summary>
        </member>
        <member name="M:Cryville.Interop.Java.JniValue.#ctor(System.Boolean)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniValue" /> struct with a <see cref="T:System.Boolean" /> (<c>boolean</c> in Java) value.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniValue.#ctor(System.SByte)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniValue" /> struct with a <see cref="T:System.SByte" /> (<c>byte</c> in Java) value.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniValue.#ctor(System.Byte)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniValue" /> struct with a <see cref="T:System.Byte" /> (casted to <see cref="T:System.SByte" />, <c>byte</c> in Java) value.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniValue.#ctor(System.Char)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniValue" /> struct with a <see cref="T:System.Char" /> (<c>char</c> in Java) value.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniValue.#ctor(System.Int16)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniValue" /> struct with a <see cref="T:System.Int16" /> (<c>short</c> in Java) value.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniValue.#ctor(System.UInt16)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniValue" /> struct with a <see cref="T:System.UInt16" /> (casted to <see cref="T:System.Int16" />, <c>short</c> in Java) value.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniValue.#ctor(System.Int32)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniValue" /> struct with a <see cref="T:System.Int32" /> (<c>int</c> in Java) value.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniValue.#ctor(System.UInt32)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniValue" /> struct with a <see cref="T:System.UInt32" /> (casted to <see cref="T:System.Int32" />, <c>int</c> in Java) value.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniValue.#ctor(System.Int64)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniValue" /> struct with a <see cref="T:System.Int64" /> (<c>long</c> in Java) value.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniValue.#ctor(System.UInt64)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniValue" /> struct with a <see cref="T:System.UInt64" /> (casted to <see cref="T:System.Int64" />, <c>long</c> in Java) value.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniValue.#ctor(System.Single)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniValue" /> struct with a <see cref="T:System.Single" /> (<c>float</c> in Java) value.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniValue.#ctor(System.Double)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniValue" /> struct with a <see cref="T:System.Double" /> (<c>double</c> in Java) value.
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniValue.#ctor(System.IntPtr)">
            <summary>
            Creates an instance of the <see cref="T:Cryville.Interop.Java.JniValue" /> struct with a <see cref="T:System.IntPtr" /> to an object (<c>java.lang.Object</c> in Java).
            </summary>
            <param name="value">The value.</param>
        </member>
        <member name="M:Cryville.Interop.Java.JniValue.GetHashCode">
            <inheritdoc />
        </member>
        <member name="M:Cryville.Interop.Java.JniValue.Equals(System.Object)">
            <inheritdoc />
        </member>
        <member name="M:Cryville.Interop.Java.JniValue.Equals(Cryville.Interop.Java.JniValue)">
            <inheritdoc />
        </member>
        <member name="M:Cryville.Interop.Java.JniValue.op_Equality(Cryville.Interop.Java.JniValue,Cryville.Interop.Java.JniValue)">
            <inheritdoc />
        </member>
        <member name="M:Cryville.Interop.Java.JniValue.op_Inequality(Cryville.Interop.Java.JniValue,Cryville.Interop.Java.JniValue)">
            <inheritdoc />
        </member>
        <member name="M:Cryville.Interop.Java.JniValue.ToString">
            <inheritdoc />
        </member>
    </members>
</doc>
