diff --git a/jni.cabal b/jni.cabal
--- a/jni.cabal
+++ b/jni.cabal
@@ -1,5 +1,5 @@
 name:                jni
-version:             0.1
+version:             0.2
 synopsis:            Complete JNI raw bindings.
 description:         Please see README.md.
 homepage:            https://github.com/tweag/inline-java/tree/master/jni#readme
diff --git a/src/Foreign/JNI.c b/src/Foreign/JNI.c
--- a/src/Foreign/JNI.c
+++ b/src/Foreign/JNI.c
@@ -42,14 +42,14 @@
 }
 
 
-JavaVM * inline_c_Foreign_JNI_4_c815bc1d60971caaef72b2be0a16ae8be8624208(int n_inline_c_0, int n_inline_c_1, char ** coptions_inline_c_2, int n_inline_c_3) {
+JavaVM * inline_c_Foreign_JNI_4_f557a003ca7539d0e773add5685200b79a1045cb(int n_inline_c_0, int n_inline_c_1, char ** coptions_inline_c_2, int n_inline_c_3) {
 
             JavaVM *jvm;
             JNIEnv *env;
             JavaVMInitArgs vm_args;
             JavaVMOption *options = malloc(sizeof(JavaVMOption) * n_inline_c_0);
             for(int i = 0; i < n_inline_c_1; i++)
-                    options[0].optionString = coptions_inline_c_2[i];
+                    options[i].optionString = coptions_inline_c_2[i];
             vm_args.version = JNI_VERSION_1_6;
             vm_args.nOptions = n_inline_c_3;
             vm_args.options = options;
@@ -98,16 +98,42 @@
 }
 
 
-jobject inline_c_Foreign_JNI_10_fd81942890ffe8025c7c8e605b29bfa2d631bf64(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jfieldID field_inline_c_3) {
+jfieldID inline_c_Foreign_JNI_10_7f51c9e3dfc10d19fa55f2bad6ee5d30c55df36e(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, char * fieldnamep_inline_c_3, char * sigp_inline_c_4) {
 return (
+      (*env_inline_c_0)->GetStaticFieldID(env_inline_c_1,
+                                          cls_inline_c_2,
+                                          fieldnamep_inline_c_3,
+                                          sigp_inline_c_4) );
+}
+
+
+jobject inline_c_Foreign_JNI_11_fd81942890ffe8025c7c8e605b29bfa2d631bf64(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jfieldID field_inline_c_3) {
+return (
       (*env_inline_c_0)->GetObjectField(env_inline_c_1,
                                         obj_inline_c_2,
                                         field_inline_c_3) );
 }
 
 
-jmethodID inline_c_Foreign_JNI_11_e722a7a0d6891db8a6cda0ec21cc6312aaeec3c0(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, char * methodnamep_inline_c_3, char * sigp_inline_c_4) {
+jobject inline_c_Foreign_JNI_12_1a61c240cf989921cf3de3040c147f73e14adeda(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass klass_inline_c_2, jfieldID field_inline_c_3) {
 return (
+      (*env_inline_c_0)->GetStaticObjectField(env_inline_c_1,
+                                              klass_inline_c_2,
+                                              field_inline_c_3) );
+}
+
+
+void inline_c_Foreign_JNI_13_afa80a9b59e6bbc9bb12dee01bee2f7e93eefcae(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jfieldID field_inline_c_3, jboolean b_inline_c_4) {
+
+      (*env_inline_c_0)->SetBooleanField(env_inline_c_1,
+                                        obj_inline_c_2,
+                                        field_inline_c_3,
+                                        b_inline_c_4); 
+}
+
+
+jmethodID inline_c_Foreign_JNI_14_e722a7a0d6891db8a6cda0ec21cc6312aaeec3c0(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, char * methodnamep_inline_c_3, char * sigp_inline_c_4) {
+return (
       (*env_inline_c_0)->GetMethodID(env_inline_c_1,
                                      cls_inline_c_2,
                                      methodnamep_inline_c_3,
@@ -115,7 +141,7 @@
 }
 
 
-jmethodID inline_c_Foreign_JNI_12_196e9055f6891bfa3cf856c108612c9572ecc877(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, char * methodnamep_inline_c_3, char * sigp_inline_c_4) {
+jmethodID inline_c_Foreign_JNI_15_196e9055f6891bfa3cf856c108612c9572ecc877(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, char * methodnamep_inline_c_3, char * sigp_inline_c_4) {
 return (
       (*env_inline_c_0)->GetStaticMethodID(env_inline_c_1,
                                            cls_inline_c_2,
@@ -124,107 +150,107 @@
 }
 
 
-void inline_c_Foreign_JNI_13_1fc0f64f3f314012d49ffbd906fd558d03aef37d(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+void inline_c_Foreign_JNI_16_1fc0f64f3f314012d49ffbd906fd558d03aef37d(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
        (*env_inline_c_0)->CallVoidMethodA(env_inline_c_1,                                                obj_inline_c_2,                                                method_inline_c_3,                                                cargs_inline_c_4) ;
 }
 
 
-jobject inline_c_Foreign_JNI_14_203a086f6ff15893a2417732fde0904a88dd4307(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+jobject inline_c_Foreign_JNI_17_203a086f6ff15893a2417732fde0904a88dd4307(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
 return (       (*env_inline_c_0)->CallObjectMethodA(env_inline_c_1,                                                obj_inline_c_2,                                                method_inline_c_3,                                                cargs_inline_c_4) );
 }
 
 
-jboolean inline_c_Foreign_JNI_15_b729da20539bd62f9d8b8e8579dbf42bbafc76c4(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+jboolean inline_c_Foreign_JNI_18_b729da20539bd62f9d8b8e8579dbf42bbafc76c4(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
 return (       (*env_inline_c_0)->CallBooleanMethodA(env_inline_c_1,                                                obj_inline_c_2,                                                method_inline_c_3,                                                cargs_inline_c_4) );
 }
 
 
-jbyte inline_c_Foreign_JNI_16_4e4bdbfc154de6ffe6eb562e1edfcbb529c275e8(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+jbyte inline_c_Foreign_JNI_19_4e4bdbfc154de6ffe6eb562e1edfcbb529c275e8(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
 return (       (*env_inline_c_0)->CallByteMethodA(env_inline_c_1,                                                obj_inline_c_2,                                                method_inline_c_3,                                                cargs_inline_c_4) );
 }
 
 
-jchar inline_c_Foreign_JNI_17_5e000da030371e4db09c808934e3e5f504eda6c9(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+jchar inline_c_Foreign_JNI_20_5e000da030371e4db09c808934e3e5f504eda6c9(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
 return (       (*env_inline_c_0)->CallCharMethodA(env_inline_c_1,                                                obj_inline_c_2,                                                method_inline_c_3,                                                cargs_inline_c_4) );
 }
 
 
-jshort inline_c_Foreign_JNI_18_516aded3c2f638c87a12e56d246bdcea1c7e1a47(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+jshort inline_c_Foreign_JNI_21_516aded3c2f638c87a12e56d246bdcea1c7e1a47(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
 return (       (*env_inline_c_0)->CallShortMethodA(env_inline_c_1,                                                obj_inline_c_2,                                                method_inline_c_3,                                                cargs_inline_c_4) );
 }
 
 
-jint inline_c_Foreign_JNI_19_58b123994733ee132cc23af0e5a7da34ef37f584(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+jint inline_c_Foreign_JNI_22_58b123994733ee132cc23af0e5a7da34ef37f584(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
 return (       (*env_inline_c_0)->CallIntMethodA(env_inline_c_1,                                                obj_inline_c_2,                                                method_inline_c_3,                                                cargs_inline_c_4) );
 }
 
 
-jlong inline_c_Foreign_JNI_20_46357804ee4af723721f601341c61ac4eecad475(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+jlong inline_c_Foreign_JNI_23_46357804ee4af723721f601341c61ac4eecad475(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
 return (       (*env_inline_c_0)->CallLongMethodA(env_inline_c_1,                                                obj_inline_c_2,                                                method_inline_c_3,                                                cargs_inline_c_4) );
 }
 
 
-jfloat inline_c_Foreign_JNI_21_75b26f9688a40ee63e314f73ee5f9563c48e02c0(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+jfloat inline_c_Foreign_JNI_24_75b26f9688a40ee63e314f73ee5f9563c48e02c0(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
 return (       (*env_inline_c_0)->CallFloatMethodA(env_inline_c_1,                                                obj_inline_c_2,                                                method_inline_c_3,                                                cargs_inline_c_4) );
 }
 
 
-jdouble inline_c_Foreign_JNI_22_f33654d183f21d1a2c8ffc121684d4e60e273fa2(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+jdouble inline_c_Foreign_JNI_25_f33654d183f21d1a2c8ffc121684d4e60e273fa2(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject obj_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
 return (       (*env_inline_c_0)->CallDoubleMethodA(env_inline_c_1,                                                obj_inline_c_2,                                                method_inline_c_3,                                                cargs_inline_c_4) );
 }
 
 
-void inline_c_Foreign_JNI_23_5e76a5cd24826d8a13100c53ae77823083465978(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+void inline_c_Foreign_JNI_26_5e76a5cd24826d8a13100c53ae77823083465978(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
        (*env_inline_c_0)->CallStaticVoidMethodA(env_inline_c_1,                                                        cls_inline_c_2,                                                        method_inline_c_3,                                                        cargs_inline_c_4) ;
 }
 
 
-jobject inline_c_Foreign_JNI_24_6b65c20aae594d93c02434b3de002e443794ad14(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+jobject inline_c_Foreign_JNI_27_6b65c20aae594d93c02434b3de002e443794ad14(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
 return (       (*env_inline_c_0)->CallStaticObjectMethodA(env_inline_c_1,                                                        cls_inline_c_2,                                                        method_inline_c_3,                                                        cargs_inline_c_4) );
 }
 
 
-jboolean inline_c_Foreign_JNI_25_58bcbcce6c8bf92799bd1db44c288a7b0a260a36(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+jboolean inline_c_Foreign_JNI_28_58bcbcce6c8bf92799bd1db44c288a7b0a260a36(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
 return (       (*env_inline_c_0)->CallStaticBooleanMethodA(env_inline_c_1,                                                        cls_inline_c_2,                                                        method_inline_c_3,                                                        cargs_inline_c_4) );
 }
 
 
-jbyte inline_c_Foreign_JNI_26_1f0c41a419f29557514552df4d07022a006f2ca3(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+jbyte inline_c_Foreign_JNI_29_1f0c41a419f29557514552df4d07022a006f2ca3(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
 return (       (*env_inline_c_0)->CallStaticByteMethodA(env_inline_c_1,                                                        cls_inline_c_2,                                                        method_inline_c_3,                                                        cargs_inline_c_4) );
 }
 
 
-jchar inline_c_Foreign_JNI_27_51a3cb1cefc6391ba5958a887d84196690a418f2(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+jchar inline_c_Foreign_JNI_30_51a3cb1cefc6391ba5958a887d84196690a418f2(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
 return (       (*env_inline_c_0)->CallStaticCharMethodA(env_inline_c_1,                                                        cls_inline_c_2,                                                        method_inline_c_3,                                                        cargs_inline_c_4) );
 }
 
 
-jshort inline_c_Foreign_JNI_28_5822dfce2b301e3b90f80885a4a5838bdc57cd44(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+jshort inline_c_Foreign_JNI_31_5822dfce2b301e3b90f80885a4a5838bdc57cd44(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
 return (       (*env_inline_c_0)->CallStaticShortMethodA(env_inline_c_1,                                                        cls_inline_c_2,                                                        method_inline_c_3,                                                        cargs_inline_c_4) );
 }
 
 
-jint inline_c_Foreign_JNI_29_4fdc28424fe7ef156763f715ef79463ed387abb2(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+jint inline_c_Foreign_JNI_32_4fdc28424fe7ef156763f715ef79463ed387abb2(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
 return (       (*env_inline_c_0)->CallStaticIntMethodA(env_inline_c_1,                                                        cls_inline_c_2,                                                        method_inline_c_3,                                                        cargs_inline_c_4) );
 }
 
 
-jlong inline_c_Foreign_JNI_30_93382b358dc7f0275c6a620eaa67fdfd75167d54(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+jlong inline_c_Foreign_JNI_33_93382b358dc7f0275c6a620eaa67fdfd75167d54(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
 return (       (*env_inline_c_0)->CallStaticLongMethodA(env_inline_c_1,                                                        cls_inline_c_2,                                                        method_inline_c_3,                                                        cargs_inline_c_4) );
 }
 
 
-jfloat inline_c_Foreign_JNI_31_89ea2435847f3d94e8b71bcceba739a077829ca9(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+jfloat inline_c_Foreign_JNI_34_89ea2435847f3d94e8b71bcceba739a077829ca9(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
 return (       (*env_inline_c_0)->CallStaticFloatMethodA(env_inline_c_1,                                                        cls_inline_c_2,                                                        method_inline_c_3,                                                        cargs_inline_c_4) );
 }
 
 
-jdouble inline_c_Foreign_JNI_32_0b9bb41f21f19495338507ff5779f50a17ac0245(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
+jdouble inline_c_Foreign_JNI_35_0b9bb41f21f19495338507ff5779f50a17ac0245(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jclass cls_inline_c_2, jmethodID method_inline_c_3, jvalue * cargs_inline_c_4) {
 return (       (*env_inline_c_0)->CallStaticDoubleMethodA(env_inline_c_1,                                                        cls_inline_c_2,                                                        method_inline_c_3,                                                        cargs_inline_c_4) );
 }
 
 
-jobjectArray inline_c_Foreign_JNI_33_0b57533e83360b5a6660bf703521b3b6c2fbec66(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jsize sz_inline_c_2, jclass cls_inline_c_3) {
+jobjectArray inline_c_Foreign_JNI_36_0b57533e83360b5a6660bf703521b3b6c2fbec66(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jsize sz_inline_c_2, jclass cls_inline_c_3) {
 return (
       (*env_inline_c_0)->NewObjectArray(env_inline_c_1,
                                         sz_inline_c_2,
@@ -233,47 +259,47 @@
 }
 
 
-jbooleanArray inline_c_Foreign_JNI_34_b1841567b8f0e99405458b9e8a3b7f3a3e20812f(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jsize sz_inline_c_2) {
+jbooleanArray inline_c_Foreign_JNI_37_b1841567b8f0e99405458b9e8a3b7f3a3e20812f(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jsize sz_inline_c_2) {
 return (       (*env_inline_c_0)->NewBooleanArray(env_inline_c_1,                                               sz_inline_c_2) );
 }
 
 
-jbyteArray inline_c_Foreign_JNI_35_1a9345ff427557126ba3aa5f0fb460f3df632ff8(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jsize sz_inline_c_2) {
+jbyteArray inline_c_Foreign_JNI_38_1a9345ff427557126ba3aa5f0fb460f3df632ff8(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jsize sz_inline_c_2) {
 return (       (*env_inline_c_0)->NewByteArray(env_inline_c_1,                                               sz_inline_c_2) );
 }
 
 
-jcharArray inline_c_Foreign_JNI_36_b00869a9422815fdc3aa43f15e3b782dc6f19e03(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jsize sz_inline_c_2) {
+jcharArray inline_c_Foreign_JNI_39_b00869a9422815fdc3aa43f15e3b782dc6f19e03(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jsize sz_inline_c_2) {
 return (       (*env_inline_c_0)->NewCharArray(env_inline_c_1,                                               sz_inline_c_2) );
 }
 
 
-jshortArray inline_c_Foreign_JNI_37_06a1e38de0ed2d7764757388457ed0797c72d8aa(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jsize sz_inline_c_2) {
+jshortArray inline_c_Foreign_JNI_40_06a1e38de0ed2d7764757388457ed0797c72d8aa(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jsize sz_inline_c_2) {
 return (       (*env_inline_c_0)->NewShortArray(env_inline_c_1,                                               sz_inline_c_2) );
 }
 
 
-jintArray inline_c_Foreign_JNI_38_af7c087746afd64be9d977ebf078c2df4b3d918e(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jsize sz_inline_c_2) {
+jintArray inline_c_Foreign_JNI_41_af7c087746afd64be9d977ebf078c2df4b3d918e(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jsize sz_inline_c_2) {
 return (       (*env_inline_c_0)->NewIntArray(env_inline_c_1,                                               sz_inline_c_2) );
 }
 
 
-jlongArray inline_c_Foreign_JNI_39_270c75c62cc97fdc3741af544fa35a61abf37fba(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jsize sz_inline_c_2) {
+jlongArray inline_c_Foreign_JNI_42_270c75c62cc97fdc3741af544fa35a61abf37fba(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jsize sz_inline_c_2) {
 return (       (*env_inline_c_0)->NewLongArray(env_inline_c_1,                                               sz_inline_c_2) );
 }
 
 
-jfloatArray inline_c_Foreign_JNI_40_312dee8af1c4b2058cb1b2703277cf297ba34224(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jsize sz_inline_c_2) {
+jfloatArray inline_c_Foreign_JNI_43_312dee8af1c4b2058cb1b2703277cf297ba34224(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jsize sz_inline_c_2) {
 return (       (*env_inline_c_0)->NewFloatArray(env_inline_c_1,                                               sz_inline_c_2) );
 }
 
 
-jdoubleArray inline_c_Foreign_JNI_41_103070e78986a21762e18c9aebfa9162a3565d9b(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jsize sz_inline_c_2) {
+jdoubleArray inline_c_Foreign_JNI_44_103070e78986a21762e18c9aebfa9162a3565d9b(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jsize sz_inline_c_2) {
 return (       (*env_inline_c_0)->NewDoubleArray(env_inline_c_1,                                               sz_inline_c_2) );
 }
 
 
-jstring inline_c_Foreign_JNI_42_d5ed5b314231e7dc3292c2329a2cb4191e262633(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jchar * ptr_inline_c_2, jsize len_inline_c_3) {
+jstring inline_c_Foreign_JNI_45_d5ed5b314231e7dc3292c2329a2cb4191e262633(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jchar * ptr_inline_c_2, jsize len_inline_c_3) {
 return (
       (*env_inline_c_0)->NewString(env_inline_c_1,
                                    ptr_inline_c_2,
@@ -281,61 +307,61 @@
 }
 
 
-jsize inline_c_Foreign_JNI_43_9be0134c89fa74c4d07a2601d81d89982ce8bdf6(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jarray array_inline_c_2) {
+jsize inline_c_Foreign_JNI_46_9be0134c89fa74c4d07a2601d81d89982ce8bdf6(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jarray array_inline_c_2) {
 return (
       (*env_inline_c_0)->GetArrayLength(env_inline_c_1,
                                         array_inline_c_2) );
 }
 
 
-jsize inline_c_Foreign_JNI_44_2e55ce4ded52c43b7b69c0c49c4425aef4f8a80b(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jstring jstr_inline_c_2) {
+jsize inline_c_Foreign_JNI_47_2e55ce4ded52c43b7b69c0c49c4425aef4f8a80b(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jstring jstr_inline_c_2) {
 return (
       (*env_inline_c_0)->GetStringLength(env_inline_c_1,
                                          jstr_inline_c_2) );
 }
 
 
-jboolean * inline_c_Foreign_JNI_45_3452f86c23995e2bdb3311f77b789016b4891c28(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2) {
-return (       (*env_inline_c_0)->GetIntArrayElements(env_inline_c_1,                                              array_inline_c_2,                                              NULL) );
+jboolean * inline_c_Foreign_JNI_48_153a97a3a91d03dbe7d10fe0e3d48afaa842ee96(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2) {
+return (       (*env_inline_c_0)->GetBooleanArrayElements(env_inline_c_1,                                                       array_inline_c_2,                                                       NULL) );
 }
 
 
-jbyte * inline_c_Foreign_JNI_46_9add218acf6a238caef1a0f8b4571cc5899ea0b3(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2) {
-return (       (*env_inline_c_0)->GetIntArrayElements(env_inline_c_1,                                              array_inline_c_2,                                              NULL) );
+jbyte * inline_c_Foreign_JNI_49_b630cdc25e3d575cad69a3fc3bec490a99a6ab49(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2) {
+return (       (*env_inline_c_0)->GetByteArrayElements(env_inline_c_1,                                                       array_inline_c_2,                                                       NULL) );
 }
 
 
-jchar * inline_c_Foreign_JNI_47_c638e51693b825e64d0379c8101ad9dd3d982cfe(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2) {
-return (       (*env_inline_c_0)->GetIntArrayElements(env_inline_c_1,                                              array_inline_c_2,                                              NULL) );
+jchar * inline_c_Foreign_JNI_50_7c0f806fe4d40ac0c1d06b4ccccc42fdc562c8ec(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2) {
+return (       (*env_inline_c_0)->GetCharArrayElements(env_inline_c_1,                                                       array_inline_c_2,                                                       NULL) );
 }
 
 
-jshort * inline_c_Foreign_JNI_48_7ae0d7df7381ab0493b342a2b5ecef83543bacf4(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2) {
-return (       (*env_inline_c_0)->GetIntArrayElements(env_inline_c_1,                                              array_inline_c_2,                                              NULL) );
+jshort * inline_c_Foreign_JNI_51_66e42eb3b8a0e71cc0cc2b722b925689a20ed23f(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2) {
+return (       (*env_inline_c_0)->GetShortArrayElements(env_inline_c_1,                                                       array_inline_c_2,                                                       NULL) );
 }
 
 
-jint * inline_c_Foreign_JNI_49_7f867cf87497f6014014c05b4ba430b8679af808(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2) {
-return (       (*env_inline_c_0)->GetIntArrayElements(env_inline_c_1,                                              array_inline_c_2,                                              NULL) );
+jint * inline_c_Foreign_JNI_52_9ca3666fbed332c3a833881ceba71295e27d5d16(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2) {
+return (       (*env_inline_c_0)->GetIntArrayElements(env_inline_c_1,                                                       array_inline_c_2,                                                       NULL) );
 }
 
 
-jlong * inline_c_Foreign_JNI_50_8dc382d755e548849b2f1319b25ead4efb3022d5(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2) {
-return (       (*env_inline_c_0)->GetIntArrayElements(env_inline_c_1,                                              array_inline_c_2,                                              NULL) );
+jlong * inline_c_Foreign_JNI_53_3bd0969839fbd68b98c00a27f6197704f6e2718b(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2) {
+return (       (*env_inline_c_0)->GetLongArrayElements(env_inline_c_1,                                                       array_inline_c_2,                                                       NULL) );
 }
 
 
-jfloat * inline_c_Foreign_JNI_51_ed2d3f0a0ffc45cf2aade1b15e8bb54c57efafe4(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2) {
-return (       (*env_inline_c_0)->GetIntArrayElements(env_inline_c_1,                                              array_inline_c_2,                                              NULL) );
+jfloat * inline_c_Foreign_JNI_54_1799b6e92e7df6d5155518d25fe2fde47055a7ff(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2) {
+return (       (*env_inline_c_0)->GetFloatArrayElements(env_inline_c_1,                                                       array_inline_c_2,                                                       NULL) );
 }
 
 
-jdouble * inline_c_Foreign_JNI_52_8397aa1311000201220e8c65b056dc1011b84b03(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2) {
-return (       (*env_inline_c_0)->GetIntArrayElements(env_inline_c_1,                                              array_inline_c_2,                                              NULL) );
+jdouble * inline_c_Foreign_JNI_55_6b454504f66bff257e7cb14d00f7064112a8f5a2(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2) {
+return (       (*env_inline_c_0)->GetDoubleArrayElements(env_inline_c_1,                                                       array_inline_c_2,                                                       NULL) );
 }
 
 
-const jchar * inline_c_Foreign_JNI_53_ac075a3bdcb535575fe36c6f7b5eb3d66ace44a7(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jstring jstr_inline_c_2) {
+const jchar * inline_c_Foreign_JNI_56_ac075a3bdcb535575fe36c6f7b5eb3d66ace44a7(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jstring jstr_inline_c_2) {
 return (
       (*env_inline_c_0)->GetStringChars(env_inline_c_1,
                                         jstr_inline_c_2,
@@ -343,87 +369,87 @@
 }
 
 
-void inline_c_Foreign_JNI_54_8718c0a7d8c303688780594268997465ed29e125(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jbooleanArray array_inline_c_2, jsize start_inline_c_3, jsize len_inline_c_4, jboolean * buf_inline_c_5) {
-       (*env_inline_c_0)->SetIntArrayRegion(env_inline_c_1,                                             array_inline_c_2,                                             start_inline_c_3,                                             len_inline_c_4,                                             buf_inline_c_5) ;
+void inline_c_Foreign_JNI_57_c405fd2cc3cc77bea5093b022f17d3b2c443e2a2(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jbooleanArray array_inline_c_2, jsize start_inline_c_3, jsize len_inline_c_4, jboolean * buf_inline_c_5) {
+       (*env_inline_c_0)->SetBooleanArrayRegion(env_inline_c_1,                                                     array_inline_c_2,                                                     start_inline_c_3,                                                     len_inline_c_4,                                                     buf_inline_c_5) ;
 }
 
 
-void inline_c_Foreign_JNI_55_1e6650c511f837ea6b18ef538b08f6ac2efec990(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jbyteArray array_inline_c_2, jsize start_inline_c_3, jsize len_inline_c_4, jbyte * buf_inline_c_5) {
-       (*env_inline_c_0)->SetIntArrayRegion(env_inline_c_1,                                             array_inline_c_2,                                             start_inline_c_3,                                             len_inline_c_4,                                             buf_inline_c_5) ;
+void inline_c_Foreign_JNI_58_6aefb6e6ad5f3a169ff39bd2c3186b897bcd220f(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jbyteArray array_inline_c_2, jsize start_inline_c_3, jsize len_inline_c_4, jbyte * buf_inline_c_5) {
+       (*env_inline_c_0)->SetByteArrayRegion(env_inline_c_1,                                                     array_inline_c_2,                                                     start_inline_c_3,                                                     len_inline_c_4,                                                     buf_inline_c_5) ;
 }
 
 
-void inline_c_Foreign_JNI_56_f5f11dc3b4a4f818c20e98d145b7e702fdd2a36f(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jcharArray array_inline_c_2, jsize start_inline_c_3, jsize len_inline_c_4, jchar * buf_inline_c_5) {
-       (*env_inline_c_0)->SetIntArrayRegion(env_inline_c_1,                                             array_inline_c_2,                                             start_inline_c_3,                                             len_inline_c_4,                                             buf_inline_c_5) ;
+void inline_c_Foreign_JNI_59_a1e161a18fa39331bad743b7e07b0399b3104242(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jcharArray array_inline_c_2, jsize start_inline_c_3, jsize len_inline_c_4, jchar * buf_inline_c_5) {
+       (*env_inline_c_0)->SetCharArrayRegion(env_inline_c_1,                                                     array_inline_c_2,                                                     start_inline_c_3,                                                     len_inline_c_4,                                                     buf_inline_c_5) ;
 }
 
 
-void inline_c_Foreign_JNI_57_13a8c656865a4d57362e32022c0ab2d6bbd75c25(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jshortArray array_inline_c_2, jsize start_inline_c_3, jsize len_inline_c_4, jshort * buf_inline_c_5) {
-       (*env_inline_c_0)->SetIntArrayRegion(env_inline_c_1,                                             array_inline_c_2,                                             start_inline_c_3,                                             len_inline_c_4,                                             buf_inline_c_5) ;
+void inline_c_Foreign_JNI_60_4221edb9c7b0c1666f5952fe23aad965e2f58085(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jshortArray array_inline_c_2, jsize start_inline_c_3, jsize len_inline_c_4, jshort * buf_inline_c_5) {
+       (*env_inline_c_0)->SetShortArrayRegion(env_inline_c_1,                                                     array_inline_c_2,                                                     start_inline_c_3,                                                     len_inline_c_4,                                                     buf_inline_c_5) ;
 }
 
 
-void inline_c_Foreign_JNI_58_f19513a74700e6f92f951ef54ff61b112be8cfb2(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jintArray array_inline_c_2, jsize start_inline_c_3, jsize len_inline_c_4, jint * buf_inline_c_5) {
-       (*env_inline_c_0)->SetIntArrayRegion(env_inline_c_1,                                             array_inline_c_2,                                             start_inline_c_3,                                             len_inline_c_4,                                             buf_inline_c_5) ;
+void inline_c_Foreign_JNI_61_0cf86cc89e108bd7ed150e5aad2e7d8d8f95dd7a(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jintArray array_inline_c_2, jsize start_inline_c_3, jsize len_inline_c_4, jint * buf_inline_c_5) {
+       (*env_inline_c_0)->SetIntArrayRegion(env_inline_c_1,                                                     array_inline_c_2,                                                     start_inline_c_3,                                                     len_inline_c_4,                                                     buf_inline_c_5) ;
 }
 
 
-void inline_c_Foreign_JNI_59_9299b35c10f5adfc67ff0810b5a9dd48fae257cf(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jlongArray array_inline_c_2, jsize start_inline_c_3, jsize len_inline_c_4, jlong * buf_inline_c_5) {
-       (*env_inline_c_0)->SetIntArrayRegion(env_inline_c_1,                                             array_inline_c_2,                                             start_inline_c_3,                                             len_inline_c_4,                                             buf_inline_c_5) ;
+void inline_c_Foreign_JNI_62_983cb43fd1962ef866086f1819815a8b05791888(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jlongArray array_inline_c_2, jsize start_inline_c_3, jsize len_inline_c_4, jlong * buf_inline_c_5) {
+       (*env_inline_c_0)->SetLongArrayRegion(env_inline_c_1,                                                     array_inline_c_2,                                                     start_inline_c_3,                                                     len_inline_c_4,                                                     buf_inline_c_5) ;
 }
 
 
-void inline_c_Foreign_JNI_60_f1a270bb87de9f6a253141b58a8c53872db6bcff(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jfloatArray array_inline_c_2, jsize start_inline_c_3, jsize len_inline_c_4, jfloat * buf_inline_c_5) {
-       (*env_inline_c_0)->SetIntArrayRegion(env_inline_c_1,                                             array_inline_c_2,                                             start_inline_c_3,                                             len_inline_c_4,                                             buf_inline_c_5) ;
+void inline_c_Foreign_JNI_63_26c6b32031e2561eb5fc3b047d493c3a784bbf40(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jfloatArray array_inline_c_2, jsize start_inline_c_3, jsize len_inline_c_4, jfloat * buf_inline_c_5) {
+       (*env_inline_c_0)->SetFloatArrayRegion(env_inline_c_1,                                                     array_inline_c_2,                                                     start_inline_c_3,                                                     len_inline_c_4,                                                     buf_inline_c_5) ;
 }
 
 
-void inline_c_Foreign_JNI_61_7f6d994b3ef9868bdf85787db5a83f6147cdf6a4(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jdoubleArray array_inline_c_2, jsize start_inline_c_3, jsize len_inline_c_4, jdouble * buf_inline_c_5) {
-       (*env_inline_c_0)->SetIntArrayRegion(env_inline_c_1,                                             array_inline_c_2,                                             start_inline_c_3,                                             len_inline_c_4,                                             buf_inline_c_5) ;
+void inline_c_Foreign_JNI_64_fbded71aa93cca94c495be618b75c7f610619a93(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jdoubleArray array_inline_c_2, jsize start_inline_c_3, jsize len_inline_c_4, jdouble * buf_inline_c_5) {
+       (*env_inline_c_0)->SetDoubleArrayRegion(env_inline_c_1,                                                     array_inline_c_2,                                                     start_inline_c_3,                                                     len_inline_c_4,                                                     buf_inline_c_5) ;
 }
 
 
-void inline_c_Foreign_JNI_62_5d5355f911ff38accf7df59e4f3407823efa0055(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2, jboolean * xs_inline_c_3) {
+void inline_c_Foreign_JNI_65_5d5355f911ff38accf7df59e4f3407823efa0055(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2, jboolean * xs_inline_c_3) {
        (*env_inline_c_0)->ReleaseBooleanArrayElements(env_inline_c_1,                                                           array_inline_c_2,                                                           xs_inline_c_3,                                                           JNI_ABORT) ;
 }
 
 
-void inline_c_Foreign_JNI_63_93701f28f0a45b8531f977f3ad28d48b747bb58c(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2, jbyte * xs_inline_c_3) {
+void inline_c_Foreign_JNI_66_93701f28f0a45b8531f977f3ad28d48b747bb58c(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2, jbyte * xs_inline_c_3) {
        (*env_inline_c_0)->ReleaseByteArrayElements(env_inline_c_1,                                                           array_inline_c_2,                                                           xs_inline_c_3,                                                           JNI_ABORT) ;
 }
 
 
-void inline_c_Foreign_JNI_64_d799968701da7f57e4eb07390e1efda373184222(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2, jchar * xs_inline_c_3) {
+void inline_c_Foreign_JNI_67_d799968701da7f57e4eb07390e1efda373184222(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2, jchar * xs_inline_c_3) {
        (*env_inline_c_0)->ReleaseCharArrayElements(env_inline_c_1,                                                           array_inline_c_2,                                                           xs_inline_c_3,                                                           JNI_ABORT) ;
 }
 
 
-void inline_c_Foreign_JNI_65_03e0c5a40ab324b1c42f0b70ceaeb6b1605a0ded(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2, jshort * xs_inline_c_3) {
+void inline_c_Foreign_JNI_68_03e0c5a40ab324b1c42f0b70ceaeb6b1605a0ded(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2, jshort * xs_inline_c_3) {
        (*env_inline_c_0)->ReleaseShortArrayElements(env_inline_c_1,                                                           array_inline_c_2,                                                           xs_inline_c_3,                                                           JNI_ABORT) ;
 }
 
 
-void inline_c_Foreign_JNI_66_4c2726a53e147cd6eb61733e27bfc599bc883f74(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2, jint * xs_inline_c_3) {
+void inline_c_Foreign_JNI_69_4c2726a53e147cd6eb61733e27bfc599bc883f74(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2, jint * xs_inline_c_3) {
        (*env_inline_c_0)->ReleaseIntArrayElements(env_inline_c_1,                                                           array_inline_c_2,                                                           xs_inline_c_3,                                                           JNI_ABORT) ;
 }
 
 
-void inline_c_Foreign_JNI_67_9e1790871e959852cb5032b3f2833c370b81bb0f(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2, jlong * xs_inline_c_3) {
+void inline_c_Foreign_JNI_70_9e1790871e959852cb5032b3f2833c370b81bb0f(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2, jlong * xs_inline_c_3) {
        (*env_inline_c_0)->ReleaseLongArrayElements(env_inline_c_1,                                                           array_inline_c_2,                                                           xs_inline_c_3,                                                           JNI_ABORT) ;
 }
 
 
-void inline_c_Foreign_JNI_68_44c06b418c79983d60f09ffc49851077b1feb632(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2, jfloat * xs_inline_c_3) {
+void inline_c_Foreign_JNI_71_44c06b418c79983d60f09ffc49851077b1feb632(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2, jfloat * xs_inline_c_3) {
        (*env_inline_c_0)->ReleaseFloatArrayElements(env_inline_c_1,                                                           array_inline_c_2,                                                           xs_inline_c_3,                                                           JNI_ABORT) ;
 }
 
 
-void inline_c_Foreign_JNI_69_94830601ce91790b75e74abe9c9819be2e748762(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2, jdouble * xs_inline_c_3) {
+void inline_c_Foreign_JNI_72_94830601ce91790b75e74abe9c9819be2e748762(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobject array_inline_c_2, jdouble * xs_inline_c_3) {
        (*env_inline_c_0)->ReleaseDoubleArrayElements(env_inline_c_1,                                                           array_inline_c_2,                                                           xs_inline_c_3,                                                           JNI_ABORT) ;
 }
 
 
-void inline_c_Foreign_JNI_70_7a962d5f8e6114066dca42386535e4a079022eae(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jstring jstr_inline_c_2, jchar * chars_inline_c_3) {
+void inline_c_Foreign_JNI_73_7a962d5f8e6114066dca42386535e4a079022eae(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jstring jstr_inline_c_2, jchar * chars_inline_c_3) {
 
       (*env_inline_c_0)->ReleaseStringChars(env_inline_c_1,
                                             jstr_inline_c_2,
@@ -431,7 +457,7 @@
 }
 
 
-jobject inline_c_Foreign_JNI_71_bb66272284cce01d85b6ec31967e1a66eae7e0c5(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jarray array_inline_c_2, jsize i_inline_c_3) {
+jobject inline_c_Foreign_JNI_74_bb66272284cce01d85b6ec31967e1a66eae7e0c5(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jarray array_inline_c_2, jsize i_inline_c_3) {
 return (
       (*env_inline_c_0)->GetObjectArrayElement(env_inline_c_1,
                                                array_inline_c_2,
@@ -439,7 +465,7 @@
 }
 
 
-void inline_c_Foreign_JNI_72_c069b4edd080791f4858d4a7a48b8c42c99c8e4a(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobjectArray array_inline_c_2, jsize i_inline_c_3, jobject x_inline_c_4) {
+void inline_c_Foreign_JNI_75_c069b4edd080791f4858d4a7a48b8c42c99c8e4a(JNIEnv * env_inline_c_0, JNIEnv * env_inline_c_1, jobjectArray array_inline_c_2, jsize i_inline_c_3, jobject x_inline_c_4) {
 
       (*env_inline_c_0)->SetObjectArrayElement(env_inline_c_1,
                                                array_inline_c_2,
diff --git a/src/Foreign/JNI.hs b/src/Foreign/JNI.hs
--- a/src/Foreign/JNI.hs
+++ b/src/Foreign/JNI.hs
@@ -34,9 +34,13 @@
     -- ** Query functions
   , findClass
   , getFieldID
-  , getObjectField
+  , getStaticFieldID
   , getMethodID
   , getStaticMethodID
+    -- ** Field accessor functions
+  , getObjectField
+  , getStaticObjectField
+  , setBooleanField
     -- ** Method invocation
   , callObjectMethod
   , callBooleanMethod
@@ -215,7 +219,7 @@
             JavaVMInitArgs vm_args;
             JavaVMOption *options = malloc(sizeof(JavaVMOption) * $(int n));
             for(int i = 0; i < $(int n); i++)
-                    options[0].optionString = $(char **coptions)[i];
+                    options[i].optionString = $(char **coptions)[i];
             vm_args.version = JNI_VERSION_1_6;
             vm_args.nOptions = $(int n);
             vm_args.options = options;
@@ -275,6 +279,21 @@
                                     $(char *fieldnamep),
                                     $(char *sigp)) } |]
 
+getStaticFieldID
+  :: JClass -- ^ A class object as returned by 'findClass'
+  -> JNI.String -- ^ Field name
+  -> JNI.String -- ^ JNI signature
+  -> IO JFieldID
+getStaticFieldID cls fieldname sig = withJNIEnv $ \env ->
+    throwIfException env $
+    JNI.withString fieldname $ \fieldnamep ->
+    JNI.withString sig $ \sigp ->
+    [CU.exp| jfieldID {
+      (*$(JNIEnv *env))->GetStaticFieldID($(JNIEnv *env),
+                                          $(jclass cls),
+                                          $(char *fieldnamep),
+                                          $(char *sigp)) } |]
+
 getObjectField
   :: Coercible o (J a)
   => o -- ^ Any object of any class
@@ -287,6 +306,32 @@
                                         $(jobject obj),
                                         $(jfieldID field)) } |]
 
+getStaticObjectField
+  :: JClass
+  -> JFieldID
+  -> IO JObject
+getStaticObjectField klass field = withJNIEnv $ \env ->
+    throwIfException env $
+    [CU.exp| jobject {
+      (*$(JNIEnv *env))->GetStaticObjectField($(JNIEnv *env),
+                                              $(jclass klass),
+                                              $(jfieldID field)) } |]
+
+setBooleanField
+  :: Coercible o (J a)
+  => o -- ^ Any object of any class
+  -> JFieldID
+  -> Bool
+  -> IO ()
+setBooleanField (coerce -> upcast -> obj) field (fromEnum -> fromIntegral -> b) =
+    withJNIEnv $ \env ->
+    throwIfException env $
+    [CU.block| void {
+      (*$(JNIEnv *env))->SetBooleanField($(JNIEnv *env),
+                                        $(jobject obj),
+                                        $(jfieldID field),
+                                        $(jboolean b)); } |]
+
 getMethodID
   :: JClass -- ^ A class object as returned by 'findClass'
   -> JNI.String -- ^ Field name
@@ -327,7 +372,7 @@
 call/**/name/**/Method (coerce -> upcast -> obj) method args = withJNIEnv $ \env -> \
     throwIfException env $ \
     withArray args $ \cargs -> \
-    [C.exp| c_rettype { \
+    [CU.exp| c_rettype { \
       (*$(JNIEnv *env))->Call/**/name/**/MethodA($(JNIEnv *env), \
                                                $(jobject obj), \
                                                $(jmethodID method), \
@@ -352,7 +397,7 @@
 callStatic/**/name/**/Method cls method args = withJNIEnv $ \env -> \
     throwIfException env $ \
     withArray args $ \cargs -> \
-    [C.exp| c_rettype { \
+    [CU.exp| c_rettype { \
       (*$(JNIEnv *env))->CallStatic/**/name/**/MethodA($(JNIEnv *env), \
                                                        $(jclass cls), \
                                                        $(jmethodID method), \
@@ -423,9 +468,9 @@
 get/**/name/**/ArrayElements (upcast -> array) = withJNIEnv $ \env -> \
     throwIfNull $ \
     [CU.exp| c_rettype* { \
-      (*$(JNIEnv *env))->GetIntArrayElements($(JNIEnv *env), \
-                                             $(jobject array), \
-                                             NULL) } |]
+      (*$(JNIEnv *env))->Get/**/name/**/ArrayElements($(JNIEnv *env), \
+                                                      $(jobject array), \
+                                                      NULL) } |]
 
 GET_ARRAY_ELEMENTS(Boolean, Word8, jboolean)
 GET_ARRAY_ELEMENTS(Byte, CChar, jbyte)
@@ -449,11 +494,11 @@
 set/**/name/**/ArrayRegion array start len buf = withJNIEnv $ \env -> \
     throwIfException env $ \
     [CU.exp| void { \
-      (*$(JNIEnv *env))->SetIntArrayRegion($(JNIEnv *env), \
-                                            $(c_argtype/**/Array array), \
-                                            $(jsize start), \
-                                            $(jsize len), \
-                                            $(c_argtype *buf)) } |]
+      (*$(JNIEnv *env))->Set/**/name/**/ArrayRegion($(JNIEnv *env), \
+                                                    $(c_argtype/**/Array array), \
+                                                    $(jsize start), \
+                                                    $(jsize len), \
+                                                    $(c_argtype *buf)) } |]
 
 SET_ARRAY_REGION(Boolean, Word8, jboolean)
 SET_ARRAY_REGION(Byte, CChar, jbyte)
diff --git a/src/Foreign/JNI/Types.hs b/src/Foreign/JNI/Types.hs
--- a/src/Foreign/JNI/Types.hs
+++ b/src/Foreign/JNI/Types.hs
@@ -12,6 +12,10 @@
 {-# LANGUAGE TypeOperators #-}
 {-# LANGUAGE ViewPatterns #-}
 
+#if __GLASGOW_HASKELL__ >= 800
+{-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
+#endif
+
 module Foreign.JNI.Types
   ( JType(..)
   , IsPrimitiveType
