Merge "Revert "On let jack retry with debug on 2 curl errors"" into ub-jack
diff --git a/.gitignore b/.gitignore
index fc8c579..d50522a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,12 +11,19 @@
 # Generated output / temp files
 **/bin/
 **/build/
+**/gradle-build/
 **/dist/
+**/gradle-dist/
 **/libs/
 */tools/
+.gradle/
 jack-tests/intermediates/
 tests-results/
 
-# Version propertie files
+# Version property files
 jack/rsc/jack-version.properties
 jill/rsc/jill-version.properties
+
+# Code coverage
+jack-coverage/testResults/
+
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/args4j/build.gradle
similarity index 71%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to args4j/build.gradle
index 0b9fd92..850bae5 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/args4j/build.gradle
@@ -13,8 +13,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+apply plugin: 'java'
+apply plugin: 'maven'
 
-package com.android.jack.coverage.test002;
-
-public interface Interface {}
-
+sourceSets {
+    main {
+        java {
+            srcDirs = ['args4j/src']
+        }
+        resources {
+            srcDirs = ['args4j/src']
+            include  '**/*.properties'
+        }
+    }
+}
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..897146d
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+subprojects {
+
+  repositories {
+      jcenter()
+  }
+  apply plugin: 'java'
+}
+
+ buildscript {
+
+apply from: "$rootDir/gradle-script/libversions.gradle"
+
+  repositories {
+    jcenter()
+    maven {
+      url "https://plugins.gradle.org/m2/"
+    }
+  }
+
+  dependencies {
+    classpath libs.shadow_plugin
+    classpath libs.gradle_processors_plugin
+    classpath libs.jarjar_plugin
+  }
+}
+
+project.ext {
+  uuid = java.util.UUID.randomUUID()
+  emitterId = System.getProperty("user.name") + "@" + java.net.InetAddress.getLocalHost().getCanonicalHostName()
+}
+
+task stopShip() {
+  doLast {
+    int nbStopShips = 0
+    new File("${rootDir}").eachDirRecurse { File dir ->
+      dir.eachFileMatch(~/.+.java/) { File f ->
+        f.eachLine { String l ->
+          if(l.matches(~/.*STOPSHIP.*/)) {
+            nbStopShips++
+          }
+        }
+      }
+    }
+    println "STOPSHIP: " + nbStopShips
+  }
+}
diff --git a/build.xml b/build.xml
index fec24af..b798d0d 100644
--- a/build.xml
+++ b/build.xml
@@ -36,8 +36,7 @@
     schedtests-lib,
     jill,
     jill-api,
-    jack-jar-tools,
-    jack-jacoco-reporter"/>
+    jack-jar-tools"/>
 
   <target name="clean" depends="jack-clean,
     jack-api-lib-clean,
@@ -79,10 +78,7 @@
     jill-api-lib-clean,
     jill-api-src-clean,
     jack-jar-tools-clean,
-    jack-jacoco-reporter-clean,
-    jacoco-clean,
     asm4-clean,
-    gson-clean,
     dist-clean" />
 
   <dirname property="jack-project.dir" file="${ant.file.jack}"/>
@@ -112,13 +108,10 @@
   <property name="dx-ref.dir" value="${jack-project.dir}/dx-ref"/>
   <property name="core-stubs-mini.dir" value="${jack-project.dir}/core-stubs-mini"/>
   <property name="jack-jar-tools.dir" value="${jack-project.dir}/jack-jar-tools"/>
-  <property name="jack-jacoco-reporter.dir" value="${jack-project.dir}/jack-jacoco-reporter"/>
-  <property name="jacoco.dir" value="${jack-project.dir}/jacoco"/>
 
   <property name="jill.dir" value="${jack-project.dir}/jill" />
   <property name="jill-api.dir" value="${jack-project.dir}/jill-api" />
   <property name="asm4.dir" value="${jack-project.dir}/asm4" />
-  <property name="gson.dir" value="${jack-project.dir}/gson"/>
 
   <taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask"
       classpath="${jack-project.dir}/jarjar/jarjar.jar"/>
@@ -134,7 +127,6 @@
   <property name="jack-internal-doc.dir" value="${jack.doc.dir}/jack-internal" />
   <property name="jack-external-doc.dir" value="${jack.doc.dir}/jack-external" />
   <property name="jack-server.doc.dir" value="${jack.dist-doc.dir}/server" />
-  <property name="jack.coverage.doc.dir" value="${jack.dist-doc.dir}/coverage" />
 
   <target name="dist-clean">
     <delete dir="${jack-top-dist.dir}"/>
@@ -196,7 +188,7 @@
       </javadoc>
       <!-- Jack API and Jill API -->
       <mkdir dir="${jack-external-doc.dir}/jack-api" />
-      <javadoc destdir="${jack-external-doc.dir}"
+      <javadoc destdir="${jack-external-doc.dir}/jack-api"
         author="true"
         version="true"
         use="true"
@@ -222,6 +214,17 @@
         <arg value="--sanity-checks"/>
         <arg value="on"/>
       </java>
+      <!-- Jack annotations -->
+      <mkdir dir="${jack-external-doc.dir}/jack-annotations" />
+      <javadoc destdir="${jack-external-doc.dir}/jack-annotations"
+        author="true"
+        version="true"
+        use="true"
+        windowtitle="Jack annotations"
+        classpath="${dist-doc.classpath.path}"
+        nodeprecated="true">
+        <fileset dir="${jack.dir}/src" includes="com/android/jack/annotations/**/*.java" />
+      </javadoc>
       <!-- Jack server -->
       <mkdir dir="${jack-server.doc.dir}" />
       <copy file="${jack-project.dir}/server/jack-server/README-jack-server.md"
@@ -234,13 +237,6 @@
       <exec executable="pandoc" failifexecutionfails="false">
         <arg line="--from=markdown --to=plain --output=${jack-server.doc.dir}/README-jack-server.txt ${jack-server.doc.dir}/README-jack-server.md"/>
       </exec>
-      <!-- Jack coverage -->
-      <mkdir dir="${jack.coverage.doc.dir}" />
-      <copy file="${jack-project.dir}/jacoco/README.md"
-            todir="${jack.coverage.doc.dir}" />
-      <exec executable="pandoc" failifexecutionfails="false">
-        <arg line="--from=markdown --to=plain --output=${jack.coverage.doc.dir}/README.txt ${jack.coverage.doc.dir}/README.md"/>
-      </exec>
     </target>
 
   <target name="jack-dist"
@@ -326,10 +322,6 @@
 
     <mkdir dir="${jack-top-dist.dir}"/>
 
-    <jar destfile="${jack-top-dist.dir}/${jill.execname}" filesetmanifest="merge">
-      <zipfileset src="${jill.dist.dir}/${jill.execname}"
-      excludes="jill-version.properties"/>
-    </jar>
     <jar destfile="${jack-top-dist.dir}/${jill-api.name}" filesetmanifest="merge">
       <zipfileset src="${jill-api.dist.dir}/${jill-api.name}"
       excludes="jill-api-version.properties"/>
@@ -339,6 +331,25 @@
     <mkdir dir="${jill-sign.tmp}"/>
     <copy file="${dist.version.file}" tofile="${jill-sign.tmp}/version.properties"/>
 
+    <jarjar jarfile="${jill-sign.tmp}/${jill.execname}" filesetmanifest="merge">
+      <zipfileset src="${jill.dist.dir}/${jill.execname}"
+      excludes="jill-version.properties"/>
+      <rule pattern="org.objectweb.**" result="com.android.jill.objectweb.@1"/>
+      <rule pattern="org.kohsuke.**" result="com.android.jill.kohsuke.@1"/>
+      <rule pattern="javax.annotation.**" result="com.android.jill.javax.annotation.@1"/>
+      <rule pattern="com.google.**" result="com.android.jill.google.@1"/>
+    </jarjar>
+    <mkdir dir="${jill-sign.tmp}/with-empty-directories" />
+    <mkdir dir="${jill-sign.tmp}/without-empty-directories" />
+    <unzip src="${jill-sign.tmp}/${jill.execname}" dest="${jill-sign.tmp}/with-empty-directories"/>
+    <copy includeemptydirs="false" todir="${jill-sign.tmp}/without-empty-directories">
+      <fileset dir="${jill-sign.tmp}/with-empty-directories" />
+    </copy>
+    <jar  destfile="${jack-top-dist.dir}/${jill.execname}" manifest="${jill.dir}/etc/manifest.txt">
+      <fileset dir="${jill-sign.tmp}/without-empty-directories"/>
+    </jar>
+
+
     <propertyfile file="${jill-sign.tmp}/version.properties">
       <entry key="releaser" default="${sign.eng.releaser}"/>
       <entry key="version.buildid" default="${sign.eng.buildid}"/>
@@ -362,7 +373,6 @@
     description="package a tools distribution"
     depends="dist-check-version-files,
              jack-jar-tools,
-             jack-jacoco-reporter,
              generate-eng-signature">
 
     <mkdir dir="${jack-top-dist.dir}"/>
@@ -385,10 +395,6 @@
         basedir="${tools-sign.tmp}"
         includes="jack-jar-tools-version.properties"/>
 
-    <jar destfile="${jack-top-dist.dir}/${jack-jacoco-reporter.name}" filesetmanifest="merge">
-      <zipfileset src="${jack-jacoco-reporter.dist.dir}/${jack-jacoco-reporter.name}"/>
-    </jar>
-
     <delete dir="${tools-sign.tmp}"/>
 
   </target>
@@ -526,7 +532,7 @@
     </dependset>
     <javac encoding="UTF-8" srcdir="${jack.dir}/src"
       destdir="${jack.build.outdir}"
-      source="1.7" target="1.7"
+      source="1.8" target="1.8"
       debug="true" includeantruntime="false" includeDestClasses="false">
       <classpath>
         <filelist refid="jack.link.libs.fileset" />
@@ -660,7 +666,7 @@
       </targets>
     </dependset>
      <javac encoding="UTF-8" srcdir="${jack-api.dir}/src" destdir="${jack-api.lib.build.outdir}"
-          source="1.6" target="1.6" debug="true"
+          source="1.8" target="1.8" debug="true"
           includeantruntime="false"  includeDestClasses="false" nowarn="true">
           <classpath>
             <filelist dir="/" files="${jsr305.dist.dir}/${jsr305.libname}" />
@@ -735,7 +741,7 @@
      <javac encoding="UTF-8" srcdir="${jack-tests.dir}/src"
           includes="com/android/jack/annotations/**/*.java"
           destdir="${jack-test-annotations.build.outdir}"
-          source="1.6" target="1.6" debug="true"
+          source="1.8" target="1.8" debug="true"
           includeantruntime="false"  includeDestClasses="false" nowarn="true" />
 
      <copy file="${jack-project.dir}/version.properties"
@@ -791,7 +797,7 @@
      <javac encoding="UTF-8" srcdir="${jack.dir}/src"
           includes="com/android/jack/annotations/**/*.java"
           destdir="${jack-annotations.build.outdir}"
-          source="1.6" target="1.6" debug="true"
+          source="1.8" target="1.8" debug="true"
           includeantruntime="false"  includeDestClasses="false" nowarn="true" />
 
      <copy file="${jack-project.dir}/version.properties"
@@ -855,7 +861,7 @@
     <copy file="${sched-build.dist.dir}/${sched-build.execname}" todir="${jackunittests.tools.dir}" />
     <!-- compile -->
     <javac encoding="UTF-8" srcdir="${jack.dir}/tests" destdir="${jackunittests.build.outdir}"
-      source="1.7" target="1.7" debug="true"
+      source="1.8" target="1.8" debug="true"
       includeantruntime="false"  includeDestClasses="false" nowarn="true">
       <classpath>
         <filelist refid="jackunittests.link.libs.fileset"/>
@@ -965,12 +971,12 @@
     <javac
       encoding="UTF-8"
       destdir="${jack-tests.build.outdir}"
-      source="1.7" target="1.7"
+      source="1.8" target="1.8"
       debug="true" includeantruntime="false" nowarn="true">
       <src path="${jack-tests.dir}/src"/>
       <src path="${jack-tests.dir}/tests"/>
-      <exclude name="com/android/jack/annotation/processor/sample2/src/**"/>
-      <exclude name="com/android/jack/annotation/test019/jack/**"/>
+      <exclude name="com/android/jack/annotation/processor/sample2/src/"/>
+      <exclude name="com/android/jack/annotation/processor/sample2/src/"/>
       <exclude name="com/android/jack/classpath/test002/lib1override/**"/>
       <exclude name="com/android/jack/encoding/tests/**"/>
       <exclude name="com/android/jack/enums/test003/link/Other.java"/>
@@ -978,6 +984,9 @@
       <exclude name="com/android/jack/error/test001/jack/A.java"/>
       <exclude name="com/android/jack/error/test002/jack/A.java"/>
       <exclude name="com/android/jack/frontend/test002/jack/PackageName/ClassInConflictingPackage.java"/>
+      <exclude name="com/android/jack/frontend/test005/jack/**"/>
+      <exclude name="com/android/jack/frontend/test006/jack/**"/>
+      <exclude name="com/android/jack/frontend/test007/jackduplicate/"/>
       <exclude name="com/android/jack/frontend/test008/jack/NoOuterContext.java"/>
       <exclude name="com/android/jack/frontend/test010/jack/UnusedLocalVar.java"/>
       <exclude name="com/android/jack/frontend/test013/jack/ExtendingInnerOnly.java"/>
@@ -985,45 +994,25 @@
       <exclude name="com/android/jack/frontend/test015/jack/WithOuterContextButStatic.java"/>
       <exclude name="com/android/jack/frontend/test016/jack/WithDuplicated.java"/>
       <exclude name="com/android/jack/frontend/test017/jack/InvalidQualification.java"/>
-      <exclude name="com/android/jack/frontend/generic/test002/jack/**"/>
-      <exclude name="com/android/jack/frontend/generic/test003/jack/**"/>
-      <exclude name="com/android/jack/nopackage/jack/**"/>
-      <exclude name="com/android/jack/multidex/test004/jack/**"/>
-      <exclude name="com/android/jack/java8/lambda/**"/>
-      <exclude name="com/android/jack/java8/defaultmethod/**"/>
-      <exclude name="com/android/jack/java8/staticmethod/**"/>
-      <exclude name="com/android/jack/java8/methodref/**"/>
-      <exclude name="com/android/jack/java8/inference/**"/>
-      <exclude name="com/android/jack/java8/gwt/**"/>
-      <exclude name="com/android/jack/java8/retrolambda/**"/>
-      <exclude name="com/android/jack/java8/intersectiontype/**"/>
-      <exclude name="com/android/jack/java8/annotation/**"/>
-      <exclude name="com/android/jack/java8/variable/**"/>
-      <exclude name="com/android/jack/java8/bridges/**"/>
-      <exclude name="com/android/jack/jarjar/test003/dontcompile/**"/>
-      <exclude name="com/android/jack/jarjar/test004/dontcompile/**"/>
-      <exclude name="com/android/jack/jarjar/test006/dontcompile/**"/>
-      <exclude name="com/android/jack/lookup/test001/liboverride/**"/>
-      <exclude name="com/android/jack/frontend/test005/jack/**"/>
-      <exclude name="com/android/jack/frontend/test006/jack/**"/>
-      <exclude name="com/android/jack/frontend/test007/**"/>
+      <exclude name="com/android/jack/frontend/test019/jack/TooBig.java"/>
+      <exclude name="com/android/jack/jarjar/test003/dontcompile/"/>
+      <exclude name="com/android/jack/jarjar/test006/dontcompile/"/>
+      <exclude name="com/android/jack/jarjar/test006/dontcompile/"/>
+      <exclude name="com/android/jack/java8/gwt/test019/jack/Java8Test.java"/>
+      <exclude name="com/android/jack/java8/intersectiontype/test004/"/>
+      <exclude name="com/android/jack/java8/intersectiontype/test005/"/>
+      <exclude name="com/android/jack/java8/intersectiontype/test006/"/>
+      <exclude name="com/android/jack/java8/lambda/test019/"/>
+      <exclude name="com/android/jack/java8/methodref/test014/jack/Tests.java"/>
+      <exclude name="com/android/jack/java8/variable/test001/"/>
+      <exclude name="com/android/jack/java8/variable/test003/"/>
       <exclude name="com/android/jack/jill/test001/**"/>
       <exclude name="com/android/jack/jill/test002/**"/>
       <exclude name="com/android/jack/jill/test003/**"/>
       <exclude name="com/android/jack/jill/test004/**"/>
-      <exclude name="com/android/jack/optimizations/lambdas/test001/**"/>
-      <exclude name="com/android/jack/optimizations/lambdas/test002/**"/>
-      <exclude name="com/android/jack/optimizations/lambdas/test003/**"/>
-      <exclude name="com/android/jack/optimizations/lambdas/test004/**"/>
-      <exclude name="com/android/jack/optimizations/lambdas/test005/**"/>
-      <exclude name="com/android/jack/optimizations/lambdas/test006/**"/>
-      <exclude name="com/android/jack/optimizations/lambdas/test007/**"/>
-      <exclude name="com/android/jack/optimizations/lambdas/test008/**"/>
+      <exclude name="com/android/jack/jill/test005/**"/>
+      <exclude name="com/android/jack/lookup/test001/liboverride/"/>
       <exclude name="com/android/jack/sourcepath/test002/jack/Sourcepath002.java"/>
-      <exclude name="com/android/jack/shrob/test062/jack/**"/>
-      <exclude name="com/android/jack/shrob/test066/jack/**"/>
-      <exclude name="com/android/jack/shrob/test067/jack/**"/>
-      <exclude name="com/android/jack/shrob/test068/jack/**"/>
       <classpath>
         <filelist dir="/">
           <file name="${jill-api.dist.dir}/${jill-api.lib.name}" />
@@ -1135,7 +1124,7 @@
     <!-- compile -->
     <javac  encoding="UTF-8" srcdir="${jill.dir}/src"
           destdir="${jill.build.outdir}"
-          source="1.7" target="1.7"
+          source="1.8" target="1.8"
           debug="true" includeantruntime="false">
       <classpath>
         <filelist refid="jill.libs.filelist" />
@@ -1227,7 +1216,7 @@
     <delete dir="${jill-api.lib.build.outdir}"/>
     <mkdir dir="${jill-api.lib.build.outdir}"/>
     <javac  encoding="UTF-8" srcdir="${jill-api.dir}/src" destdir="${jill-api.lib.build.outdir}"
-          source="1.6" target="1.6" debug="true"
+          source="1.8" target="1.8" debug="true"
           includeantruntime="false"  includeDestClasses="false" nowarn="true">
       <classpath>
         <filelist dir="/" files="${jsr305.dist.dir}/${jsr305.libname}" />
@@ -1360,7 +1349,7 @@
 
   <target name="ecj">
     <mkdir dir="${ecj.dist.dir}"/>
-    <copy file="${ecj.dir}/ecj-4.6M4.jar" tofile="${ecj.dist.dir}/${ecj.libname}"/>
+    <copy file="${ecj.dir}/ecj-4.7M3.jar" tofile="${ecj.dist.dir}/${ecj.libname}"/>
   </target>
 
 
@@ -1601,7 +1590,7 @@
       </targets>
     </dependset>
     <javac encoding="UTF-8" srcdir="${sched.dir}/src" destdir="${schedlib.build.outdir}"
-      source="1.7" target="1.7" debug="true" includeantruntime="false"  includeDestClasses="false">
+      source="1.8" target="1.8" debug="true" includeantruntime="false"  includeDestClasses="false">
       <classpath>
         <filelist refid="schedlib.link.libs.fileset"/>
       </classpath>
@@ -1654,7 +1643,7 @@
        encoding="UTF-8"
        srcdir="${sched.dir}/src"
        destdir="${sched-build.build.outdir}"
-       source="1.6" target="1.6"
+       source="1.8" target="1.8"
        debug="true" includeantruntime="false" includeDestClasses="false">
       <compilerarg line="-Xlint:-options"/>
       <classpath>
@@ -1743,7 +1732,7 @@
     <javac encoding="UTF-8"
       srcdir="${sched.dir}/tests"
       destdir="${schedtests.build.outdir}"
-      source="1.7" target="1.7"
+      source="1.8" target="1.8"
       debug="true" includeantruntime="false"  includeDestClasses="false">
       <compilerarg line="-Xlint:-options"/>
       <classpath>
@@ -2078,7 +2067,7 @@
     <delete dir="${dexcomparator.dist.dir}" />
   </target>
 
-  <target name="dexcomparator-compile" depends="jack-lib, dex-lib,jsr305-lib,guava-lib,args4j-lib">
+  <target name="dexcomparator-compile" depends="jack-lib, dex-lib,jsr305-lib,guava-lib,args4j-lib,sched-lib">
     <!-- project layout -->
     <mkdir dir="${dexcomparator.build.outdir}"/>
     <mkdir dir="${dexcomparator.libs.dir}"/>
@@ -2091,6 +2080,7 @@
         <file name="${guava.dist.dir}/${guava.libname}" />
         <file name="${args4j.dist.dir}/${args4j.libname}" />
         <file name="${jack.dist.dir}/${jack.libname}" />
+	<file name="${schedlib.dist.dir}/${schedlib.libname}" />
       </filelist>
     </copy>
     <!-- compile -->
@@ -2109,7 +2099,7 @@
     <javac encoding="UTF-8"
             srcdir="${dexcomparator.dir}/src"
             destdir="${dexcomparator.build.outdir}"
-            source="1.6" target="1.6"
+            source="1.8" target="1.8"
             debug="true" includeantruntime="false"  includeDestClasses="false">
       <compilerarg line="-Xlint:-options"/>
       <classpath>
@@ -2233,59 +2223,6 @@
   </target>
 
   <!-- ******************* -->
-  <!-- gson                -->
-  <!-- ******************* -->
-  <property name="gson.build.dir" value="${gson.dir}/build" />
-  <property name="gson.build.outdir" value="${gson.build.dir}/classes" />
-  <property name="gson.dist.dir" value="${gson.dir}/dist" />
-  <property name="gson.libname" value="gson.jar"/>
-
-  <target name="gson-clean">
-    <delete dir="${gson.build.dir}" />
-    <delete dir="${gson.dist.dir}" />
-  </target>
-
-  <target name="gson-lib">
-    <!-- project layout -->
-    <mkdir dir="${gson.build.outdir}"/>
-    <mkdir dir="${gson.dist.dir}"/>
-    <!-- compile -->
-    <dependset>
-      <sources>
-        <fileset dir="${gson.dir}/gson/src/main/java" />
-      </sources>
-      <targets>
-        <fileset file="${gson.dist.dir}/${gson.libname}"/>
-      </targets>
-    </dependset>
-    <javac encoding="UTF-8" srcdir="${gson.dir}/gson/src/main/java"
-          destdir="${gson.build.outdir}"
-          source="1.5" target="1.5"
-          debug="true" includeantruntime="false"/>
-    <!-- package -->
-    <jar destfile="${gson.dist.dir}/${gson.libname}"
-          basedir="${gson.build.outdir}"
-          includes="**"/>
-  </target>
-
-  <!-- ******************* -->
-  <!-- jacoco              -->
-  <!-- ******************* -->
-  <property name="jacoco.dist.dir" value="${jacoco.dir}/dist" />
-  <property name="jacoco.core.libname" value="org.jacoco.core.jar"/>
-  <property name="jacoco.report.libname" value="org.jacoco.report.jar"/>
-
-  <target name="jacoco-clean">
-    <delete dir="${jacoco.dist.dir}"/>
-  </target>
-
-  <target name="jacoco-libs">
-    <mkdir dir="${jacoco.dist.dir}"/>
-    <copy file="${jacoco.dir}/org.jacoco.core-0.7.5.201505241946.jar" tofile="${jacoco.dist.dir}/${jacoco.core.libname}"/>
-    <copy file="${jacoco.dir}/org.jacoco.report-0.7.5.201505241946.jar" tofile="${jacoco.dist.dir}/${jacoco.report.libname}"/>
-  </target>
-
-  <!-- ******************* -->
   <!-- jack-default-lib    -->
   <!-- ******************* -->
   <property name="jack-default-lib.build.jack" value="${jack.dir}/build/default-lib.jack"/>
@@ -2435,6 +2372,7 @@
 
     <java fork="true" failonerror="true"
       output="${jack-tests.dir}/dump/PreSubmitTests.js"
+      logError="true"
       classname="com.android.jack.test.junit.JackJUnitLauncher">
       <jvmarg value="-Dtests.dump=true" />
       <jvmarg value="-Dtests.config=${tests.config}"/>
@@ -2452,6 +2390,7 @@
 
     <java fork="true" failonerror="true"
       output="${jack-tests.dir}/dump/LongLastingTests.js"
+      logError="true"
       classname="com.android.jack.test.junit.JackJUnitLauncher">
        <jvmarg value="-Dtests.dump=true" />
        <jvmarg value="-Dtests.config=${tests.config}"/>
@@ -2469,6 +2408,7 @@
 
     <java fork="true" failonerror="true"
       output="${jack-tests.dir}/dump/SchedAllTests.js"
+      logError="true"
       classname="com.android.jack.test.junit.JackJUnitLauncher">
       <jvmarg value="-Dtests.dump=true" />
       <jvmarg value="-Dtests.config=${tests.config}"/>
@@ -2694,7 +2634,7 @@
     <delete dir="${jack-jar-tools.build.outdir}"/>
     <mkdir dir="${jack-jar-tools.build.outdir}"/>
     <javac encoding="UTF-8" srcdir="${jack-jar-tools.dir}/src" destdir="${jack-jar-tools.build.outdir}"
-         source="1.6" target="1.6" debug="true"
+         source="1.8" target="1.8" debug="true"
          includeantruntime="false"  includeDestClasses="false" nowarn="true">
       <classpath>
         <filelist refid="jack-jar-tools.static.libs.fileset"/>
@@ -2712,79 +2652,6 @@
 
 
   <!-- ************************* -->
-  <!-- jack-jacoco-reporter   -->
-  <!-- ************************* -->
-  <property name="jack-jacoco-reporter.build.dir" value="${jack-jacoco-reporter.dir}/build" />
-  <property name="jack-jacoco-reporter.dist.dir" value="${jack-jacoco-reporter.dir}/dist" />
-  <property name="jack-jacoco-reporter.libs.dir" value="${jack-jacoco-reporter.dir}/libs" />
-  <property name="jack-jacoco-reporter.build.outdir" value="${jack-jacoco-reporter.build.dir}/classes" />
-  <property name="jack-jacoco-reporter.name" value="jack-jacoco-reporter.jar" />
-
-  <target name="jack-jacoco-reporter-clean">
-    <delete dir="${jack-jacoco-reporter.build.dir}" />
-    <delete dir="${jack-jacoco-reporter.dist.dir}" />
-    <delete dir="${jack-jacoco-reporter.libs.dir}" />
-  </target>
-
-  <target name="jack-jacoco-reporter-copy-libs" depends="jsr305-lib,args4j-lib,asm4-lib,gson-lib,jacoco-libs">
-    <copy todir="${jack-jacoco-reporter.libs.dir}" flatten="true">
-      <filelist dir="/" >
-        <file name="${jsr305.dist.dir}/${jsr305.libname}"/>
-        <file name="${schedlib.dist.dir}/${schedlib.libname}" />
-        <file name="${args4j.dist.dir}/${args4j.libname}"/>
-        <file name="${asm4.dist.dir}/${asm4.libname}"/>
-        <file name="${gson.dist.dir}/${gson.libname}"/>
-        <file name="${jacoco.dist.dir}/${jacoco.core.libname}"/>
-        <file name="${jacoco.dist.dir}/${jacoco.report.libname}"/>
-      </filelist>
-    </copy>
-  </target>
-
-  <target name="jack-jacoco-reporter-check">
-    <union id="jack-jacoco-reporter.uptodate.files">
-      <fileset dir="${jack-jacoco-reporter.dir}/src" />
-      <fileset dir="${jack-jacoco-reporter.dir}/etc" />
-      <filelist id="jack-jacoco-reporter.static.libs.fileset" dir="/">
-        <file name="${jack-jacoco-reporter.libs.dir}/${jsr305.libname}"/>
-        <file name="${jack-jacoco-reporter.libs.dir}/${schedlib.libname}"/>
-        <file name="${jack-jacoco-reporter.libs.dir}/${args4j.libname}"/>
-        <file name="${jack-jacoco-reporter.libs.dir}/${asm4.libname}"/>
-        <file name="${jack-jacoco-reporter.libs.dir}/${gson.libname}"/>
-        <file name="${jack-jacoco-reporter.libs.dir}/${jacoco.core.libname}"/>
-        <file name="${jack-jacoco-reporter.libs.dir}/${jacoco.report.libname}"/>
-      </filelist>
-    </union>
-
-    <uptodate property="jack-jacoco-reporter.uptodate"
-      targetfile="${jack-jacoco-reporter.dist.dir}/${jack-jacoco-reporter.name}">
-      <srcresources refid="jack-jacoco-reporter.uptodate.files" />
-    </uptodate>
-  </target>
-
-  <target name="jack-jacoco-reporter"
-      depends="jack-jacoco-reporter-copy-libs,jack-jacoco-reporter-check"
-      unless="${jack-jacoco-reporter.uptodate}">
-    <delete dir="${jack-jacoco-reporter.build.outdir}"/>
-    <mkdir dir="${jack-jacoco-reporter.build.outdir}"/>
-    <javac encoding="UTF-8" srcdir="${jack-jacoco-reporter.dir}/src" destdir="${jack-jacoco-reporter.build.outdir}"
-         source="1.6" target="1.6" debug="true"
-         includeantruntime="false"  includeDestClasses="false" nowarn="true">
-      <classpath>
-        <filelist refid="jack-jacoco-reporter.static.libs.fileset"/>
-      </classpath>
-    </javac>
-    <unzip dest="${jack-jacoco-reporter.build.outdir}">
-      <filelist refid="jack-jacoco-reporter.static.libs.fileset"/>
-    </unzip>
-    <copy file="${jack-project.dir}/version.properties"
-          tofile="${jack-jacoco-reporter.build.outdir}/jack-jacoco-reporter-version.properties"/>
-    <jar destfile="${jack-jacoco-reporter.dist.dir}/${jack-jacoco-reporter.name}" manifest="${jack-jacoco-reporter.dir}/etc/manifest.txt">
-      <fileset dir="${jack-jacoco-reporter.build.outdir}"/>
-    </jar>
-  </target>
-
-
-  <!-- ************************* -->
   <!--       Checkstyle          -->
   <!-- ************************* -->
     <property name="ivy.install.version" value="2.4.0" />
@@ -2827,11 +2694,10 @@
             classname="com.puppycrawl.tools.checkstyle.Main"
             fork="true"
             failonerror="true">
-        <jvmarg line="-Dconfig_loc=./jack"/>
         <arg value="-f"/>
         <arg value="plain"/>
         <arg value="-c"/>
-        <arg value="./jack/jackstyle.xml"/>
+        <arg value="./jack/config/checkstyle/checkstyle.xml"/>
         <arg value="jack/src"/>
         <arg value="jack-api/src"/>
         <arg value="jack-tests/src"/>
@@ -2843,5 +2709,3 @@
       </java>
     </target>
 </project>
-
-
diff --git a/core-stubs-mini/build.gradle b/core-stubs-mini/build.gradle
new file mode 100644
index 0000000..fa2cdcc
--- /dev/null
+++ b/core-stubs-mini/build.gradle
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+apply plugin: 'java'
+
+sourceCompatibility = 1.6
+targetCompatibility = 1.6
+
+sourceSets {
+  main {
+    java {
+      srcDirs = ['src']
+    }
+  }
+}
+
+configurations {
+  coreStubsMiniJack
+}
+
+dependencies {
+  // jackConfig project(':jack')
+  //compile project(path: ':jack', configuration: 'jackFull')
+}
+
+task compileWithJack (type: Exec, dependsOn: project(path: ':jack', configuration: 'jackFull')) {
+  commandLine 'java', '-jar', project(':jack').configurations.jackFull.singleFile, '--verbose', 'error', '-D', 'jack.classpath.default-libraries=false', '--import', jar.archivePath, '--output-jack', "${project.buildDir}/core-stubs-mini.jack"
+}
+
+/*
+task showDeps << {
+  println configurations.jackConfig.files
+}
+*/
+
+artifacts {
+  coreStubsMiniJack file("${project.buildDir}/core-stubs-mini.jack")
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/ddmlib/build.gradle
similarity index 88%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to ddmlib/build.gradle
index 0b9fd92..68d741d 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/ddmlib/build.gradle
@@ -14,7 +14,8 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+apply plugin: 'java'
 
-public interface Interface {}
-
+jar {
+    from zipTree("ddmlib.jar")
+}
diff --git a/dexcomparator/.classpath b/dexcomparator/.classpath
index 645477c..ec1f6a8 100644
--- a/dexcomparator/.classpath
+++ b/dexcomparator/.classpath
@@ -2,7 +2,7 @@
 <classpath>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="src" path="testing"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry kind="src" path=".apt_generated">
 		<attributes>
 			<attribute name="optional" value="true"/>
@@ -14,5 +14,6 @@
 	<classpathentry kind="lib" path="libs/args4j-lib.jar"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
 	<classpathentry combineaccessrules="false" kind="src" path="/Jack"/>
+	<classpathentry kind="src" path="/Scheduler"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/dexcomparator/.settings/org.eclipse.jdt.core.prefs b/dexcomparator/.settings/org.eclipse.jdt.core.prefs
index 88b949f..0a5bb1e 100644
--- a/dexcomparator/.settings/org.eclipse.jdt.core.prefs
+++ b/dexcomparator/.settings/org.eclipse.jdt.core.prefs
@@ -6,9 +6,9 @@
 org.eclipse.jdt.core.compiler.annotation.nullable=javax.annotation.CheckForNull
 org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.compliance=1.8
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -96,7 +96,7 @@
 org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.source=1.8
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
 org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=1585
 org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field.count_dependent=1585|-1|1585
diff --git a/dexcomparator/Android.mk b/dexcomparator/Android.mk
index e78edb0..f0b81c4 100644
--- a/dexcomparator/Android.mk
+++ b/dexcomparator/Android.mk
@@ -13,6 +13,7 @@
 
 LOCAL_JAVA_LIBRARIES := \
     jack \
+    schedlib \
     dexlib-jack \
     jsr305lib-jack \
     args4j-jack
@@ -30,6 +31,7 @@
 
 LOCAL_STATIC_JAVA_LIBRARIES := \
     jack \
+    schedlib \
     dexlib-jack \
     jsr305lib-jack \
     args4j-jack
diff --git a/dexcomparator/build.gradle b/dexcomparator/build.gradle
new file mode 100644
index 0000000..03bd43b
--- /dev/null
+++ b/dexcomparator/build.gradle
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+apply plugin: 'java'
+
+sourceCompatibility = 1.8
+targetCompatibility = 1.8
+
+apply from: "$rootDir/gradle-script/checkstyle.gradle"
+apply from: "$rootDir/gradle-script/findbugs.gradle"
+
+sourceSets {
+    main {
+        java {
+            srcDirs = ['src']
+        }
+    }
+}
+
+dependencies {
+  compile project(':args4j')
+  compile project(':dexlib')
+  compile project(':jack')
+  compile project(':sched')
+  compileOnly libs.jsr305
+  compile libs.guava
+}
+
+javadoc {
+  failOnError false
+}
diff --git a/dexcomparator/src/com/android/jack/comparator/DexComparator.java b/dexcomparator/src/com/android/jack/comparator/DexComparator.java
index 395e0df..e152d8f 100644
--- a/dexcomparator/src/com/android/jack/comparator/DexComparator.java
+++ b/dexcomparator/src/com/android/jack/comparator/DexComparator.java
@@ -29,6 +29,8 @@
 import com.android.jack.dx.rop.code.AccessFlags;
 import com.android.jack.dx.rop.type.Prototype;
 import com.android.jack.dx.util.ByteInput;
+import com.android.sched.util.file.CannotCloseException;
+import com.android.sched.util.file.CannotReadException;
 
 import org.kohsuke.args4j.CmdLineException;
 import org.kohsuke.args4j.CmdLineParser;
@@ -137,8 +139,8 @@
     enableDebugInfoComparison = compareDebugInfo;
   }
 
-  public void compare(@Nonnull File referenceFile, @Nonnull File candidateFile) throws IOException,
-      DifferenceFoundException {
+  public void compare(@Nonnull File referenceFile, @Nonnull File candidateFile)
+      throws DifferenceFoundException, CannotReadException, CannotCloseException {
 
     if (enableBinaryDebugInfoComparison && !enableDebugInfoComparison) {
       throw new IllegalArgumentException(
@@ -1052,6 +1054,12 @@
     } catch (IOException e) {
       System.err.println(e.getMessage());
       System.exit(PROBLEM);
+    } catch (CannotReadException e) {
+      System.err.println(e.getMessage());
+      System.exit(PROBLEM);
+    } catch (CannotCloseException e) {
+      System.err.println(e.getMessage());
+      System.exit(PROBLEM);
     } catch (DifferenceFoundException e) {
       System.err.println(e.getMessage());
       System.exit(DIFFERENCE);
diff --git a/dexcomparator/testing/com/android/jack/dexcomparator/test/BinaryCodeComparisonTest.java b/dexcomparator/testing/com/android/jack/dexcomparator/test/BinaryCodeComparisonTest.java
index 7c8c40f..e64636c 100644
--- a/dexcomparator/testing/com/android/jack/dexcomparator/test/BinaryCodeComparisonTest.java
+++ b/dexcomparator/testing/com/android/jack/dexcomparator/test/BinaryCodeComparisonTest.java
@@ -18,6 +18,8 @@
 
 import com.android.jack.comparator.DexComparator;
 import com.android.jack.comparator.DifferenceFoundException;
+import com.android.sched.util.file.CannotCloseException;
+import com.android.sched.util.file.CannotReadException;
 
 import org.junit.Assert;
 import org.junit.Test;
@@ -36,7 +38,8 @@
   private static final File testSource2 = new File("testsource2");
 
   @Test
-  public void testDifferentBinaryCodeComparison() throws IOException {
+  public void testDifferentBinaryCodeComparison()
+      throws IOException, CannotReadException, CannotCloseException {
     String sourcePath = "com/android/jack/dexcomparator/test/A.java";
     File a1 = new File(testSource1, sourcePath);
     File a2 = new File(testSource2, sourcePath);
@@ -61,7 +64,8 @@
   }
 
   @Test
-  public void testIdenticalBinaryCodeComparison() throws IOException {
+  public void testIdenticalBinaryCodeComparison()
+      throws IOException, CannotReadException, CannotCloseException {
     String sourcePath = "com/android/jack/dexcomparator/test/A.java";
     File a1 = new File(testSource1, sourcePath);
     File dex1 = File.createTempFile("dex1", ".dex");
diff --git a/dexlib/build.gradle b/dexlib/build.gradle
index 3bb2eaa..96eab44 100644
--- a/dexlib/build.gradle
+++ b/dexlib/build.gradle
@@ -29,7 +29,13 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+apply plugin: 'java'
+
 dependencies {
-    compile 'com.google.code.findbugs:jsr305:1.3.9'
+    compileOnly 'com.google.code.findbugs:jsr305:1.3.9'
     compile 'com.google.guava:guava:13.0.1'
-}
\ No newline at end of file
+}
+
+javadoc {
+  failOnError false
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/dx-ref/build.gradle
similarity index 88%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to dx-ref/build.gradle
index 0b9fd92..996c07e 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/dx-ref/build.gradle
@@ -13,8 +13,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+apply plugin: 'java'
 
-package com.android.jack.coverage.test002;
-
-public interface Interface {}
-
+jar {
+    from zipTree("dx.jar")
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/ecj-tests-lib/build.gradle
similarity index 61%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to ecj-tests-lib/build.gradle
index 0b9fd92..6b5047d 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/ecj-tests-lib/build.gradle
@@ -14,7 +14,13 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+apply plugin: 'java'
 
-public interface Interface {}
-
+jar {
+    from zipTree("ecj-4.6M2.jar")
+    from zipTree("org.eclipse.equinox.common_3.8.0.v20150911-2106.jar")
+    from zipTree("org.eclipse.jdt.core_3.12.0.v20150913-1717.jar")
+    from zipTree("org.eclipse.jdt.core.tests.compiler_3.12.0.v20150913-1717.jar")
+    from zipTree("org.eclipse.test.performance_3.11.0.v20150223-0658.jar")
+    exclude 'META-INF/*'
+}
diff --git a/ecj/Android.mk b/ecj/Android.mk
index 1a01ba7..8d1baa7 100644
--- a/ecj/Android.mk
+++ b/ecj/Android.mk
@@ -19,6 +19,6 @@
 LOCAL_MODULE_TAGS := optional
 
 LOCAL_PREBUILT_JAVA_LIBRARIES := \
-	ecj-jack:ecj-4.6M4$(COMMON_JAVA_PACKAGE_SUFFIX)
+	ecj-jack:ecj-4.7M3$(COMMON_JAVA_PACKAGE_SUFFIX)
 
 include $(BUILD_HOST_PREBUILT)
diff --git a/ecj/README.android b/ecj/README.android
index 1506c9d..c92a7b5 100644
--- a/ecj/README.android
+++ b/ecj/README.android
@@ -1,5 +1,5 @@
-URL: http://download.eclipse.org/eclipse/downloads/drops4/S-4.6M4-201512092300/
-Tag: I20151209-2300, jdt 4.6M4, ecj version 3.12.0
+URL: http://download.eclipse.org/eclipse/downloads/drops4/S-4.7M3-201610270700/
+Tag: I20161027-0700, ecj version 3.13.0 (v20161020-2113)
 License: EPL 1
 Description: An incremental Java compiler.
 Local Modifications: None.
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/ecj/build.gradle
similarity index 88%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to ecj/build.gradle
index 0b9fd92..4cb92d9 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/ecj/build.gradle
@@ -14,7 +14,8 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+apply plugin: 'java'
 
-public interface Interface {}
-
+jar {
+    from zipTree("ecj-4.7M3.jar")
+}
diff --git a/ecj/ecj-4.6M4.jar b/ecj/ecj-4.6M4.jar
deleted file mode 100644
index 56d696c..0000000
--- a/ecj/ecj-4.6M4.jar
+++ /dev/null
Binary files differ
diff --git a/ecj/ecj-4.7M3.jar b/ecj/ecj-4.7M3.jar
new file mode 100644
index 0000000..8b16e12
--- /dev/null
+++ b/ecj/ecj-4.7M3.jar
Binary files differ
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/gradle-script/checkstyle.gradle
similarity index 67%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to gradle-script/checkstyle.gradle
index 0b9fd92..7517c2e 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/gradle-script/checkstyle.gradle
@@ -14,7 +14,19 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+apply plugin: 'checkstyle'
 
-public interface Interface {}
+tasks.withType(Checkstyle) {
+    reports {
+        xml.enabled = false
+        html.enabled = true
+    }
+}
 
+checkstyle {
+    toolVersion = "7.2"
+    ignoreFailures = true
+    configFile = file("${rootDir}/project-settings/jackstyle.xml")
+}
+
+checkstyleTest.enabled false
diff --git a/gradle-script/dependencies.properties b/gradle-script/dependencies.properties
new file mode 100644
index 0000000..3940012
--- /dev/null
+++ b/gradle-script/dependencies.properties
@@ -0,0 +1,27 @@
+# Copyright (C) 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+antlr_runtime = org.antlr:antlr-runtime:3.5.2
+asm_all = org.ow2.asm:asm-debug-all:5.0.4
+freemarker = org.freemarker:freemarker:2.3.25-incubating
+guava = com.google.guava:guava:18.0
+java_allocation_intrumenter = com.google.code.java-allocation-instrumenter:java-allocation-instrumenter:3.0.1
+jsr305 = com.google.code.findbugs:jsr305:3.0.1
+junit = junit:junit:4.12
+maths = io.gatling.uncommons.maths:uncommons-maths:1.2.3
+watchmaker = org.uncommons.watchmaker:watchmaker-framework:0.7.1
+
+gradle_processors_plugin = gradle.plugin.org.inferred:gradle-processors:1.2.5
+jarjar_plugin = org.anarres.jarjar:jarjar-gradle:1.0.0
+shadow_plugin = com.github.jengelman.gradle.plugins:shadow:1.2.4
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/gradle-script/findbugs.gradle
similarity index 64%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to gradle-script/findbugs.gradle
index 0b9fd92..4d18b23 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/gradle-script/findbugs.gradle
@@ -14,7 +14,21 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+apply plugin: 'findbugs'
 
-public interface Interface {}
+tasks.withType(FindBugs) {
+    reports {
+        xml.enabled = false
+        html.enabled = true
+    }
+}
 
+findbugs {
+    toolVersion = "3.0.1"
+    reportLevel = "medium"
+    effort = "max"
+    // omitVisitors = ["edu.umd.cs.findbugs.detect.EmptyZipFileEntry"]
+    ignoreFailures = true
+}
+
+findbugsTest.enabled false
diff --git a/gradle-script/libversions.gradle b/gradle-script/libversions.gradle
new file mode 100644
index 0000000..f0a2962
--- /dev/null
+++ b/gradle-script/libversions.gradle
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Add ext.libs for library versions
+Properties dependencies = new Properties()
+File dependenciesProperties = new File(rootDir, "gradle-script/dependencies.properties")
+dependenciesProperties.withReader { dependencies.load(it) }
+
+def libs = [:].withDefault { key -> throw new IllegalArgumentException('"' + key + '" not a valid dependency.') }
+for (name in dependencies.stringPropertyNames()) {
+    libs[name] = dependencies.getProperty(name)
+}
+rootProject.ext['libs'] = libs
diff --git a/gradle-script/versionfile.gradle b/gradle-script/versionfile.gradle
new file mode 100644
index 0000000..1a932b1
--- /dev/null
+++ b/gradle-script/versionfile.gradle
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+task deleteVersionFile(type: Delete) {
+  delete "${project.buildDir}/${jar.baseName}-version.properties"
+}
+
+task copyVersionPropertiesFile(type: Copy, dependsOn: deleteVersionFile) {
+  String pathToVersionFile
+  if (!System.getProperty("version.file", "").equals("")) {
+    pathToVersionFile = System.getProperty("version.file")
+  } else {
+    pathToVersionFile = "${rootDir}/version.properties"
+  }
+
+  // TODO: currently needs to be an absolute path
+  // add checks, message, and/or add pwd to path
+  from (pathToVersionFile) {
+    rename file(pathToVersionFile).name, "${jar.baseName}-version.properties"
+  }
+  into file("${project.buildDir}/")
+
+}
+
+task createJackVersionFile (dependsOn: copyVersionPropertiesFile) {
+  outputs.file "${project.buildDir}/${jar.baseName}-version.properties"
+  doLast {
+    if (System.getProperty("version.file", "").equals("")) {
+      ant.propertyfile(
+          file: "${project.buildDir}/${jar.baseName}-version.properties") {
+          entry( key: "releaser", value: "${rootProject.emitterId}")
+          entry( key: "version.buildid", value: "${rootProject.uuid}")
+      }
+    }
+  }
+}
+copyVersionPropertiesFile.dependsOn deleteVersionFile
+gradle.taskGraph.whenReady { graph ->
+    if (!graph.hasTask(dist)) {
+      createJackVersionFile.enabled = false
+      deleteVersionFile.enabled = false
+    }
+}
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..e7ee39d
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,15 @@
+# Copyright (C) 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+buildDir=gradle-build
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..3baa851
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..333db47
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Oct 28 10:36:18 CEST 2016
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.1-bin.zip
diff --git a/gradlew b/gradlew
new file mode 100755
index 0000000..27309d9
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+  NONSTOP* )
+    nonstop=true
+    ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000..f6d5974
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off

+@rem ##########################################################################

+@rem

+@rem  Gradle startup script for Windows

+@rem

+@rem ##########################################################################

+

+@rem Set local scope for the variables with windows NT shell

+if "%OS%"=="Windows_NT" setlocal

+

+set DIRNAME=%~dp0

+if "%DIRNAME%" == "" set DIRNAME=.

+set APP_BASE_NAME=%~n0

+set APP_HOME=%DIRNAME%

+

+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.

+set DEFAULT_JVM_OPTS=

+

+@rem Find java.exe

+if defined JAVA_HOME goto findJavaFromJavaHome

+

+set JAVA_EXE=java.exe

+%JAVA_EXE% -version >NUL 2>&1

+if "%ERRORLEVEL%" == "0" goto init

+

+echo.

+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:findJavaFromJavaHome

+set JAVA_HOME=%JAVA_HOME:"=%

+set JAVA_EXE=%JAVA_HOME%/bin/java.exe

+

+if exist "%JAVA_EXE%" goto init

+

+echo.

+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%

+echo.

+echo Please set the JAVA_HOME variable in your environment to match the

+echo location of your Java installation.

+

+goto fail

+

+:init

+@rem Get command-line arguments, handling Windows variants

+

+if not "%OS%" == "Windows_NT" goto win9xME_args

+if "%@eval[2+2]" == "4" goto 4NT_args

+

+:win9xME_args

+@rem Slurp the command line arguments.

+set CMD_LINE_ARGS=

+set _SKIP=2

+

+:win9xME_args_slurp

+if "x%~1" == "x" goto execute

+

+set CMD_LINE_ARGS=%*

+goto execute

+

+:4NT_args

+@rem Get arguments from the 4NT Shell from JP Software

+set CMD_LINE_ARGS=%$

+

+:execute

+@rem Setup the command line

+

+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

+

+@rem Execute Gradle

+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

+

+:end

+@rem End local scope for the variables with windows NT shell

+if "%ERRORLEVEL%"=="0" goto mainEnd

+

+:fail

+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of

+rem the _cmd.exe /c_ return code!

+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1

+exit /b 1

+

+:mainEnd

+if "%OS%"=="Windows_NT" endlocal

+

+:omega

diff --git a/jack-api/.classpath b/jack-api/.classpath
index 09808fb..4c675c8 100644
--- a/jack-api/.classpath
+++ b/jack-api/.classpath
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="src" path="example"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry kind="src" path=".apt_generated">
 		<attributes>
 			<attribute name="optional" value="true"/>
diff --git a/jack-api/.settings/org.eclipse.jdt.core.prefs b/jack-api/.settings/org.eclipse.jdt.core.prefs
index dc66277..73739d4 100644
--- a/jack-api/.settings/org.eclipse.jdt.core.prefs
+++ b/jack-api/.settings/org.eclipse.jdt.core.prefs
@@ -7,9 +7,9 @@
 org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.compliance=1.8
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -113,7 +113,7 @@
 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
 org.eclipse.jdt.core.compiler.processAnnotations=enabled
-org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.source=1.8
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
 org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=1585
 org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field.count_dependent=1585|-1|1585
diff --git a/jack-api/build.gradle b/jack-api/build.gradle
new file mode 100644
index 0000000..77386d5
--- /dev/null
+++ b/jack-api/build.gradle
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+apply plugin: 'java'
+apply plugin: 'com.github.johnrengelman.shadow'
+
+sourceCompatibility = 1.8
+targetCompatibility = 1.8
+
+apply from: "$rootDir/gradle-script/checkstyle.gradle"
+apply from: "$rootDir/gradle-script/findbugs.gradle"
+
+sourceSets {
+    main {
+        java {
+            srcDirs = ['src']
+        }
+    }
+}
+
+dependencies {
+  compileOnly libs.jsr305
+}
+
+javadoc {
+  failOnError false
+  destinationDir = file("${rootDir}/gradle-dist/doc/jack/jack-external/jack")
+}
+
+apply from: "$rootDir/gradle-script/versionfile.gradle"
+
+jar {
+  classifier 'lib'
+}
+
+shadowJar {
+  dependsOn createJackVersionFile
+  classifier ''
+  from ("${project.buildDir}") {
+    include "jack-api-version.properties"
+  }
+}
+
+task dist (type: Copy, dependsOn: shadowJar) {
+  from shadowJar.archivePath
+  into file("${rootDir}/gradle-dist/")
+}
+
+task zipSources(type: Zip){
+  classifier 'src'
+  doFirst {
+    file("$rootDir/gradle-dist").mkdirs()
+  }
+  from 'src'
+  destinationDir file("${rootDir}/gradle-dist")
+}
+
+dist.dependsOn zipSources
+
+project(':jack-api:sample') {
+
+  apply plugin: 'application'
+
+  mainClassName = "com.android.jack.api.example.WithServiceLoader"
+
+  sourceSets {
+      main {
+          java {
+              srcDirs = ['../example']
+          }
+      }
+  }
+
+  dependencies {
+    compile project(':jack-api')
+  }
+}
diff --git a/jack-api/src/com/android/jack/api/example/WithServiceLoader.java b/jack-api/example/com/android/jack/api/example/WithServiceLoader.java
similarity index 98%
rename from jack-api/src/com/android/jack/api/example/WithServiceLoader.java
rename to jack-api/example/com/android/jack/api/example/WithServiceLoader.java
index e776559..a5df92e 100644
--- a/jack-api/src/com/android/jack/api/example/WithServiceLoader.java
+++ b/jack-api/example/com/android/jack/api/example/WithServiceLoader.java
@@ -42,6 +42,11 @@
    * @throws SecurityException indicate a security violation.
    */
   public static void main(String[] args) throws SecurityException {
+
+    for (String a : args) {
+      System.out.println(a);
+    }
+
     if (args.length != 3) {
       System.out.println(
           "Usage: <jack-core-library> <source-files-directory> <output-dex-files-directory>");
diff --git a/jack-coverage/Android.mk b/jack-coverage/Android.mk
index b23622d..b798d87 100644
--- a/jack-coverage/Android.mk
+++ b/jack-coverage/Android.mk
@@ -1,4 +1,4 @@
-# Copyright (C) 2016 The Android Open Source Project
+# Copyright (C) 2017 The Android Open Source Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -12,24 +12,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := jack-coverage-plugin
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_RESOURCE_DIRS  := rsc
-LOCAL_JAVACFLAGS := -processor com.android.sched.build.SchedAnnotationProcessor
-LOCAL_JAVA_LANGUAGE_VERSION := 1.7
-
-LOCAL_JAVA_LIBRARIES := \
-  jsr305lib-jack \
-  schedlib \
-  jack \
-  sched-build
-
-include $(BUILD_HOST_JAVA_LIBRARY)
+include $(call all-subdir-makefiles)
diff --git a/jack-coverage/README-jack-coverage.md b/jack-coverage/README-jack-coverage.md
new file mode 100644
index 0000000..d8dfe46
--- /dev/null
+++ b/jack-coverage/README-jack-coverage.md
@@ -0,0 +1,94 @@
+# Code coverage with Jack
+
+Jack supports code coverage with `JaCoCo` (http://eclemma.org/jacoco). During the compilation,
+it will instrument code using JaCoCo API. Therefore, it requires a dependency to a jacoco-agent.jar
+that can be imported in the DEX output. Jack supports Jacoco v0.7.5 (see directory external/jacoco
+in the Android source tree).
+
+Besides, Jack will also produce a coverage metadata file (or description file) in a JSON format.
+It will be used to generate the report so we can match coverage execution file with source code.
+
+Starting with the Jack Douarn release (4.x), the code coverage is provided with the Jack plugin
+`jack-coverage-plugin.jar`.
+
+## Enabling code coverage with Jack
+
+To enable code coverage with Jack command-line, pass the following command-line options:
+
+```
+--pluginpath <code_coverage_plugin_jar>
+--plugin com.android.jack.coverage.CodeCoverage
+-D jack.coverage=true
+-D jack.coverage.metadata.file=<coverage_metadata_file_path>
+-D jack.coverage.jacoco.package=<jacoco_internal_package_name>
+```
+
+where
+* `<code_coverage_plugin_jar>` is the path to the plugin jar file. In the Android tree, it is
+  located in the `prebuilts/sdk/tools` directory.
+* `<coverage_metadata_file_path>` is a *mandatory* property that indicates the path of the file that
+  will contain coverage information. This file must be passed to reporting tool to generate the
+  report (see section Generating the report below)
+* `<jacoco_internal_package_name>` is an *optional* property that indicates the fully qualified name
+  of the internal package name containing the class 'Offline' in the associated jacoco-agent.jar
+  file. This package name is different for each release of JaCoCo library. If this property is not
+  provided, Jack will automatically look for a Jacoco package which starts with
+  `org.jacoco.agent.rt.internal`.
+
+Note: because Jack's code coverage support is based on Jacoco, it is mandatory that Jacoco classes
+are available at compilation time. They can be either on the classpath (--classpath) or imported
+as a static library in the output (--import).
+
+Jack also supports optional include and exclude class filtering based on class name:
+
+```
+-D jack.coverage.jacoco.include=<includes>
+-D jack.coverage.jacoco.exclude=<excludes>
+```
+
+where
+* `<includes>` is a comma-separated list of fully-qualified class names to include
+* `<excludes>` is a comma-separated list of fully-qualified class names to exclude
+
+Wildcards characters '?' and '*' are accepted to replace respectively one character or multiple
+characters.
+
+You can find the full command-line usage with
+
+    java -jar <jack_jar> --help
+
+You can also find the description of all properties (including those for code coverage) with
+
+    java -jar <jack_jar> --pluginpath <code_coverage_plugin_jar> --plugin com.android.jack.coverage.CodeCoverage --help-properties
+
+## Collecting code coverage
+
+To produce coverage execution data, instrumented classes must be executed and coverage data be
+dumped in a coverage execution file. For Android instrumentation tests, the frameworks can do
+so automatically:
+
+    adb shell am instrument -w -e coverage true <package_name>/<instrumentation_class_name>
+
+Once the tests are finished, the location of the coverage execution file should be printed in the
+console.
+
+## Generating the report
+
+A coverage report can be generated using the `jack-jacoco-reporter.jar` file. This is a command-line
+tool taking at least three inputs:
+
+* the coverage metadata file(s) produced by Jack
+* the coverage execution file(s) produced during execution
+* an existing directory where the report is generated
+
+It is also recommended to indicate the directories containing the source code of classes being
+analyzed to link coverage information with the source code.
+
+The command then looks like:
+
+    java -jar jack-jacoco-reporter.jar --metadata-file <metadata_file> --coverage-file <execution_file> --report-dir <report_directory> --source-dir <source_dir_1> ... --source-dir <source_dir_N>
+
+You can find the full command-line usage with
+
+    java -jar jack-jacoco-reporter.jar --help
+
diff --git a/jack-coverage/build.xml b/jack-coverage/build.xml
index e52f3bb..27e9134 100644
--- a/jack-coverage/build.xml
+++ b/jack-coverage/build.xml
@@ -17,49 +17,66 @@
 
 <project name="jack-coverage" default="all">
 
-  <dirname property="jack-project.dir" file="${ant.file.jack-coverage}" />
-  <property name="jack-coverage-libs.dir" value="${jack-project.dir}/libs" />
-  <property name="jack-coverage-tools.dir" value="${jack-project.dir}/tools" />
-  <property name="jack-coverage-rsc.dir" value="${jack-project.dir}/rsc" />
-  <property name="jack-coverage-build.dir" value="${jack-project.dir}/build" />
-  <property name="jack-coverage-build-classes.dir" value="${jack-coverage-build.dir}/classes" />
-  <property name="jack-coverage-build-test-classes.dir"
-            value="${jack-coverage-build.dir}/testClasses" />
-  <property name="jack-coverage-dist.dir" value="${jack-project.dir}/dist" />
-  <property name="jack-coverage.execname" value="jack-coverage-plugin.jar" />
-  <property name="jack-coverage-tests.execname" value="jack-coverage-tests.jar" />
-  <property name="jack-coverage-tests.output.dir" value="${jack-project.dir}/testResults" />
+  <dirname property="jack-coverage-project.dir" file="${ant.file.jack-coverage}" />
+  <property name="jack-coverage-dist.dir" value="${jack-coverage-project.dir}/dist" />
+  <property name="jack-coverage-rsc.dir" value="${jack-coverage-project.dir}/rsc" />
+  <property name="jack-coverage-doc.dir" value="${jack-coverage-dist.dir}/doc" />
+  <property name="jack-coverage-tests.output.dir"
+            value="${jack-coverage-project.dir}/testResults" />
   <property name="jack-coverage-tests.dump.dir" value="${jack-coverage-dist.dir}/dump" />
   <property name="jack-coverage-tests.suite.name"
             value="com.android.jack.coverage.AllCoverageTests" />
 
   <target name="all"
           description="Build plugin and tests"
-          depends="jack-coverage-plugin,jack-coverage-tests" />
+          depends="jack-coverage-plugin,jack-coverage-tests,jack-jacoco-reporter" />
 
-  <target name="clean" description="deletes files produced by all targets">
-    <delete dir="${jack-coverage-build.dir}" />
+  <target name="clean"
+          description="deletes files produced by all targets"
+          depends="plugin-clean,reporter-clean,gson-clean">
     <delete dir="${jack-coverage-dist.dir}" />
-    <delete dir="${jack-coverage-libs.dir}" />
-    <delete dir="${jack-coverage-tools.dir}" />
     <delete dir="${jack-coverage-tests.output.dir}" />
   </target>
 
+  <!-- *************** -->
+  <!-- Coverage plugin -->
+  <!-- *************** -->
+  <property name="plugin.dir" value="${jack-coverage-project.dir}/plugin"/>
+  <property name="plugin.libs.dir" value="${plugin.dir}/libs" />
+  <property name="plugin.tools.dir" value="${plugin.dir}/tools" />
+  <property name="plugin.rsc.dir" value="${plugin.dir}/rsc" />
+  <property name="plugin.build.dir" value="${plugin.dir}/build" />
+  <property name="plugin.build.src.classes.dir" value="${plugin.build.dir}/classes" />
+  <property name="plugin.build.test.classes.dir" value="${plugin.build.dir}/testClasses" />
+  <property name="plugin.execname" value="jack-coverage-plugin.jar" />
+  <property name="plugin.tests.execname" value="jack-coverage-tests.jar" />
+
+  <target name="plugin-clean" description="deletes files produced by all targets">
+    <delete dir="${plugin.build.dir}" />
+    <delete dir="${plugin.libs.dir}" />
+    <delete dir="${plugin.tools.dir}" />
+  </target>
+
   <target name="copy-jack-libs-and-tools"
-          description="update the project libraries (must be used at least once to install them)">
-    <mkdir dir="${jack-coverage-libs.dir}" />
-    <mkdir dir="${jack-coverage-tools.dir}" />
+          description="update the project libraries (must be used at least once to install them)"
+          depends="gson-lib">
+    <mkdir dir="${plugin.libs.dir}" />
+    <mkdir dir="${plugin.tools.dir}" />
 
     <!-- Copy required libraries -->
-    <copy file="../jack/dist/jack-lib.jar" todir="${jack-coverage-libs.dir}" />
-    <copy file="../jack-tests/dist/jack-tests.jar" todir="${jack-coverage-libs.dir}" />
-    <copy file="../gson/dist/gson.jar" todir="${jack-coverage-libs.dir}" />
-    <copy file="../sched/dist/sched-lib.jar" todir="${jack-coverage-libs.dir}" />
-    <copy file="../junit4/dist/junit4.jar" todir="${jack-coverage-libs.dir}" />
-    <copy file="../jsr305/dist/jsr305-lib.jar" todir="${jack-coverage-libs.dir}" />
+    <copy todir="${plugin.libs.dir}" flatten="true">
+      <filelist dir="${jack-coverage-project.dir}/../" >
+        <file name="jack/dist/jack-lib.jar"/>
+        <file name="jack-tests/dist/jack-tests.jar" />
+        <file name="sched/dist/sched-lib.jar"/>
+        <file name="junit4/dist/junit4.jar"/>
+        <file name="jsr305/dist/jsr305-lib.jar"/>
+      </filelist>
+    </copy>
+    <copy file="${gson.dist.dir}/${gson.libname}" todir="${plugin.libs.dir}" />
 
     <!-- Copy required tools for packaging -->
-    <copy file="../sched/dist/sched-build.jar" todir="${jack-coverage-tools.dir}" />
+    <copy file="../sched/dist/sched-build.jar" todir="${plugin.tools.dir}" />
 
   </target>
 
@@ -67,9 +84,9 @@
           description="build Jack code coverage support"
           depends="copy-jack-libs-and-tools">
 
-    <mkdir dir="${jack-coverage-build-classes.dir}" />
-    <javac srcdir="src"
-           destdir="${jack-coverage-build-classes.dir}"
+    <mkdir dir="${plugin.build.src.classes.dir}" />
+    <javac srcdir="${plugin.dir}/src"
+           destdir="${plugin.build.src.classes.dir}"
            source="1.7"
            target="1.7"
            encoding="UTF-8"
@@ -77,24 +94,28 @@
            includeantruntime="false"
            includeDestClasses="false">
       <classpath>
-        <filelist dir="${jack-coverage-libs.dir}">
+        <filelist dir="${plugin.libs.dir}">
           <file name="jsr305-lib.jar" />
           <file name="sched-lib.jar" />
           <file name="jack-lib.jar" />
         </filelist>
       </classpath>
-      <compilerarg line="-processorpath ${jack-coverage-tools.dir}/sched-build.jar" />
+      <compilerarg line="-processorpath ${plugin.tools.dir}/sched-build.jar" />
       <compilerarg line="-processor com.android.sched.build.SchedAnnotationProcessor" />
     </javac>
 
     <!-- copy resource files -->
-    <copy todir="${jack-coverage-build-classes.dir}">
-      <fileset dir="${jack-coverage-rsc.dir}" />
+    <copy todir="${plugin.build.src.classes.dir}">
+      <fileset dir="${plugin.rsc.dir}" />
     </copy>
 
+    <!-- Copy the version.properties -->
+    <copy file="${jack-coverage-rsc.dir}/jack-coverage-plugin-version.properties"
+          todir="${plugin.build.src.classes.dir}"/>
+
     <mkdir dir="${jack-coverage-dist.dir}" />
-    <jar basedir="${jack-coverage-build-classes.dir}"
-         destfile="${jack-coverage-dist.dir}/${jack-coverage.execname}" />
+    <jar basedir="${plugin.build.src.classes.dir}"
+         destfile="${jack-coverage-dist.dir}/${plugin.execname}" />
 
   </target>
 
@@ -102,38 +123,38 @@
           description="build coverage tests"
           depends="jack-coverage-plugin">
 
-    <mkdir dir="${jack-coverage-build-test-classes.dir}" />
-    <javac srcdir="tests"
-           destdir="${jack-coverage-build-test-classes.dir}"
+    <mkdir dir="${plugin.build.test.classes.dir}" />
+    <javac srcdir="${plugin.dir}/tests"
+           destdir="${plugin.build.test.classes.dir}"
            source="1.7"
            target="1.7"
            encoding="UTF-8"
            debug="true"
            includeantruntime="false"
            includeDestClasses="false">
-      <exclude name="com/android/jack/coverage/test*/**" />
+      <exclude name="com/android/jack/coverage/**/test*/**" />
       <classpath>
-        <filelist dir="${jack-coverage-libs.dir}">
+        <filelist dir="${plugin.libs.dir}">
           <file name="jsr305-lib.jar" />
           <file name="sched-lib.jar" />
           <file name="jack-tests.jar" />
-          <file name="gson.jar" />
+          <file name="${gson.libname}" />
         </filelist>
-        <file name="${jack-coverage-dist.dir}/${jack-coverage.execname}" />
+        <file name="${jack-coverage-dist.dir}/${plugin.execname}" />
       </classpath>
     </javac>
 
     <!-- Extract jack-tests classes to embed them in the final jar -->
-    <unzip dest="${jack-coverage-build-test-classes.dir}">
-      <filelist dir="${jack-coverage-libs.dir}">
+    <unzip dest="${plugin.build.test.classes.dir}">
+      <filelist dir="${plugin.libs.dir}">
         <file name="jack-tests.jar" />
-        <file name="gson.jar" />
+        <file name="${gson.libname}" />
       </filelist>
     </unzip>
 
     <!-- TODO can we strip out Jack tests to only keep infrastrcture ? -->
-    <jar basedir="${jack-coverage-build-test-classes.dir}"
-         destfile="${jack-coverage-dist.dir}/${jack-coverage-tests.execname}"
+    <jar basedir="${plugin.build.test.classes.dir}"
+         destfile="${jack-coverage-dist.dir}/${plugin.tests.execname}"
          manifest="etc/manifest.txt" />
   </target>
 
@@ -143,7 +164,7 @@
 
 
   <filelist id="jack.junit.tests.classpath" dir="${jack-coverage-dist.dir}">
-    <file name="${jack-coverage-tests.execname}" />
+    <file name="${plugin.tests.execname}" />
   </filelist>
 
   <condition property="jack.tests.assertions" value="-da" else="-ea">
@@ -203,6 +224,7 @@
     <java fork="true"
           failonerror="true"
           output="${jack-coverage-tests.dump.dir}/AllCoverageTests.js"
+          logError="true"
           classname="com.android.jack.test.junit.JackJUnitLauncher">
       <jvmarg value="-Dtests.dump=true" />
       <jvmarg value="-Dtests.config=${tests.config}" />
@@ -215,8 +237,153 @@
 
   </target>
 
+  <!-- ***************** -->
+  <!-- Coverage reporter -->
+  <!-- ***************** -->
+  <property name="reporter.dir" value="${jack-coverage-project.dir}/reporter"/>
+  <property name="reporter.build.dir" value="${reporter.dir}/build" />
+  <property name="reporter.libs.dir" value="${reporter.dir}/libs" />
+  <property name="reporter.build.src.classes.dir" value="${reporter.build.dir}/classes" />
+  <property name="reporter.execname" value="jack-jacoco-reporter.jar" />
+
+  <target name="reporter-clean">
+    <delete dir="${reporter.build.dir}" />
+    <delete dir="${reporter.libs.dir}" />
+  </target>
+
+  <target name="jack-jacoco-reporter-copy-libs" depends="gson-lib">
+    <copy todir="${reporter.libs.dir}" flatten="true">
+      <filelist dir="${jack-coverage-project.dir}/.." >
+        <file name="jsr305/dist/jsr305-lib.jar"/>
+        <file name="sched/dist/sched-lib.jar" />
+        <file name="args4j/dist/args4j-lib.jar"/>
+        <file name="asm4/dist/asm4-lib.jar"/>
+        <file name="junit4/dist/junit4.jar"/>
+      </filelist>
+    </copy>
+
+    <copy file="${gson.dist.dir}/${gson.libname}" todir="${reporter.libs.dir}" />
+    <copy file="../jacoco/org.jacoco.core-0.7.5.201505241946.jar"
+          tofile="${reporter.libs.dir}/org.jacoco.core.jar"/>
+    <copy file="../jacoco/org.jacoco.report-0.7.5.201505241946.jar"
+          tofile="${reporter.libs.dir}/org.jacoco.report.jar"/>
+  </target>
+
+  <target name="jack-jacoco-reporter-check">
+    <union id="jack-jacoco-reporter.uptodate.files">
+      <fileset dir="${reporter.dir}/src" />
+      <fileset dir="${reporter.dir}/etc" />
+      <filelist id="jack-jacoco-reporter.static.libs.fileset" dir="/">
+        <file name="${reporter.libs.dir}/jsr305-lib.jar"/>
+        <file name="${reporter.libs.dir}/sched-lib.jar"/>
+        <file name="${reporter.libs.dir}/args4j-lib.jar"/>
+        <file name="${reporter.libs.dir}/asm4-lib.jar"/>
+        <file name="${reporter.libs.dir}/${gson.libname}"/>
+        <file name="${reporter.libs.dir}/org.jacoco.core.jar"/>
+        <file name="${reporter.libs.dir}/org.jacoco.report.jar"/>
+      </filelist>
+    </union>
+
+    <uptodate property="jack-jacoco-reporter.uptodate"
+      targetfile="${jack-coverage-dist.dir}/${reporter.execname}">
+      <srcresources refid="jack-jacoco-reporter.uptodate.files" />
+    </uptodate>
+  </target>
+
+  <target name="jack-jacoco-reporter"
+          depends="jack-jacoco-reporter-copy-libs,jack-jacoco-reporter-check"
+          unless="${jack-jacoco-reporter.uptodate}">
+    <delete dir="${reporter.build.src.classes.dir}"/>
+    <mkdir dir="${reporter.build.src.classes.dir}"/>
+    <javac encoding="UTF-8" srcdir="${reporter.dir}/src"
+           destdir="${reporter.build.src.classes.dir}"
+           source="1.6" target="1.6" debug="true"
+           includeantruntime="false"  includeDestClasses="false" nowarn="true">
+      <classpath>
+        <filelist refid="jack-jacoco-reporter.static.libs.fileset"/>
+      </classpath>
+    </javac>
+    <unzip dest="${reporter.build.src.classes.dir}">
+      <filelist refid="jack-jacoco-reporter.static.libs.fileset"/>
+    </unzip>
+
+    <!-- Reuse the same version.properties than the plugin. -->
+    <copy file="${jack-coverage-rsc.dir}/jack-coverage-plugin-version.properties"
+          tofile="${reporter.build.src.classes.dir}/jack-jacoco-reporter-version.properties"/>
+
+    <jar destfile="${jack-coverage-dist.dir}/${reporter.execname}"
+         manifest="${reporter.dir}/etc/manifest.txt">
+      <fileset dir="${reporter.build.src.classes.dir}"/>
+    </jar>
+  </target>
+
   <target name="dist" description="distribution of the code coverage plugin" depends="all">
     <!-- Placeholder for future release process -->
   </target>
 
+  <target name="dist-doc" description="documentation of the code coverage support" depends="dist">
+      <union id="dist-doc.classpath.files">
+        <fileset dir="${plugin.dir}/libs" />
+        <fileset file="${jack-coverage-dist.dir}/${plugin.execname}" />
+      </union>
+      <pathconvert property="dist-doc.classpath.path" refid="dist-doc.classpath.files" />
+    <mkdir dir="${jack-coverage-doc.dir}" />
+      <!-- Plugin javadoc -->
+      <javadoc destdir="${jack-coverage-doc.dir}/javadoc/plugin"
+        author="true"
+        version="true"
+        use="true"
+        windowtitle="Jack's code coverage plugin"
+        classpath="${dist-doc.classpath.path}"
+        nodeprecated="true">
+          <fileset dir="${plugin.dir}/src" includes="**/*.java" />
+      </javadoc>
+      <!-- README.md -->
+      <copy file="${jack-coverage-project.dir}/README-jack-coverage.md"
+            todir="${jack-coverage-doc.dir}" />
+      <exec executable="pandoc" failifexecutionfails="false">
+        <arg line="--from=markdown" />
+        <arg line="--to=plain" />
+        <arg line="--output=${jack-coverage-doc.dir}/README-jack-coverage.txt" />
+        <arg line="${jack-coverage-doc.dir}/README-jack-coverage.md"/>
+      </exec>
+  </target>
+
+  <!-- ******************* -->
+  <!-- gson                -->
+  <!-- ******************* -->
+  <property name="gson.dir" value="${jack-coverage-project.dir}/../gson"/>
+  <property name="gson.build.dir" value="${gson.dir}/build" />
+  <property name="gson.build.outdir" value="${gson.build.dir}/classes" />
+  <property name="gson.dist.dir" value="${gson.dir}/dist" />
+  <property name="gson.libname" value="gson.jar"/>
+
+  <target name="gson-clean">
+    <delete dir="${gson.build.dir}" />
+    <delete dir="${gson.dist.dir}" />
+  </target>
+
+  <target name="gson-lib">
+    <!-- project layout -->
+    <mkdir dir="${gson.build.outdir}"/>
+    <mkdir dir="${gson.dist.dir}"/>
+    <!-- compile -->
+    <dependset>
+      <sources>
+        <fileset dir="${gson.dir}/gson/src/main/java" />
+      </sources>
+      <targets>
+        <fileset file="${gson.dist.dir}/${gson.libname}"/>
+      </targets>
+    </dependset>
+    <javac encoding="UTF-8" srcdir="${gson.dir}/gson/src/main/java"
+          destdir="${gson.build.outdir}"
+          source="1.5" target="1.5"
+          debug="true" includeantruntime="false"/>
+    <!-- package -->
+    <jar destfile="${gson.dist.dir}/${gson.libname}"
+          basedir="${gson.build.outdir}"
+          includes="**"/>
+  </target>
+
 </project>
diff --git a/jack-coverage/.classpath b/jack-coverage/plugin/.classpath
similarity index 91%
rename from jack-coverage/.classpath
rename to jack-coverage/plugin/.classpath
index d06fd1a..989b865 100644
--- a/jack-coverage/.classpath
+++ b/jack-coverage/plugin/.classpath
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" path="src"/>
-	<classpathentry excluding="com/android/jack/coverage/test001/|com/android/jack/coverage/test002/|com/android/jack/coverage/test003/foo/|com/android/jack/coverage/test004/|com/android/jack/coverage/test005/|com/android/jack/coverage/test006_v1/jack/|com/android/jack/coverage/test006_v2/jack/" kind="src" path="tests"/>
+	<classpathentry excluding="com/android/jack/coverage/test001/|com/android/jack/coverage/test002/|com/android/jack/coverage/test003/foo/|com/android/jack/coverage/test004/|com/android/jack/coverage/test005/|com/android/jack/coverage/test006_v1/jack/|com/android/jack/coverage/test006_v2/jack/|com/android/jack/coverage/java8/" kind="src" path="tests"/>
 	<classpathentry kind="src" path="rsc"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
 	<classpathentry kind="lib" path="libs/jsr305-lib.jar"/>
diff --git a/jack-coverage/.factorypath b/jack-coverage/plugin/.factorypath
similarity index 100%
rename from jack-coverage/.factorypath
rename to jack-coverage/plugin/.factorypath
diff --git a/jack-coverage/.project b/jack-coverage/plugin/.project
similarity index 100%
rename from jack-coverage/.project
rename to jack-coverage/plugin/.project
diff --git a/jack-coverage/.settings/edu.umd.cs.findbugs.core.prefs b/jack-coverage/plugin/.settings/edu.umd.cs.findbugs.core.prefs
similarity index 100%
rename from jack-coverage/.settings/edu.umd.cs.findbugs.core.prefs
rename to jack-coverage/plugin/.settings/edu.umd.cs.findbugs.core.prefs
diff --git a/jack-coverage/.settings/org.eclipse.core.resources.prefs b/jack-coverage/plugin/.settings/org.eclipse.core.resources.prefs
similarity index 100%
rename from jack-coverage/.settings/org.eclipse.core.resources.prefs
rename to jack-coverage/plugin/.settings/org.eclipse.core.resources.prefs
diff --git a/jack-coverage/.settings/org.eclipse.jdt.core.prefs b/jack-coverage/plugin/.settings/org.eclipse.jdt.core.prefs
similarity index 100%
rename from jack-coverage/.settings/org.eclipse.jdt.core.prefs
rename to jack-coverage/plugin/.settings/org.eclipse.jdt.core.prefs
diff --git a/jack-coverage/.settings/org.eclipse.jdt.ui.prefs b/jack-coverage/plugin/.settings/org.eclipse.jdt.ui.prefs
similarity index 100%
rename from jack-coverage/.settings/org.eclipse.jdt.ui.prefs
rename to jack-coverage/plugin/.settings/org.eclipse.jdt.ui.prefs
diff --git a/jack-coverage/.settings/org.eclipse.ltk.core.refactoring.prefs b/jack-coverage/plugin/.settings/org.eclipse.ltk.core.refactoring.prefs
similarity index 100%
rename from jack-coverage/.settings/org.eclipse.ltk.core.refactoring.prefs
rename to jack-coverage/plugin/.settings/org.eclipse.ltk.core.refactoring.prefs
diff --git a/jack-coverage/plugin/Android.mk b/jack-coverage/plugin/Android.mk
new file mode 100644
index 0000000..1eb21e7
--- /dev/null
+++ b/jack-coverage/plugin/Android.mk
@@ -0,0 +1,35 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := jack-coverage-plugin
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_JAVA_RESOURCE_DIRS := rsc ../rsc
+LOCAL_JAVACFLAGS := -processor com.android.sched.build.SchedAnnotationProcessor
+LOCAL_JAVA_LANGUAGE_VERSION := 1.7
+
+LOCAL_JAVA_LIBRARIES := \
+  jsr305lib-jack \
+  schedlib \
+  jack \
+  sched-build
+
+include $(BUILD_HOST_JAVA_LIBRARY)
diff --git a/jack-coverage/rsc/META-INF/services/com.android.jack.plugin.v01.Plugin b/jack-coverage/plugin/rsc/META-INF/services/com.android.jack.plugin.v01.Plugin
similarity index 100%
rename from jack-coverage/rsc/META-INF/services/com.android.jack.plugin.v01.Plugin
rename to jack-coverage/plugin/rsc/META-INF/services/com.android.jack.plugin.v01.Plugin
diff --git a/jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageAnalyzer.java b/jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageAnalyzer.java
new file mode 100644
index 0000000..dd19697
--- /dev/null
+++ b/jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageAnalyzer.java
@@ -0,0 +1,242 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.coverage;
+
+import com.android.jack.cfg.BasicBlock;
+import com.android.jack.cfg.ConditionalBasicBlock;
+import com.android.jack.cfg.ControlFlowGraph;
+import com.android.jack.cfg.SwitchBasicBlock;
+import com.android.jack.ir.ast.JDefinedClassOrInterface;
+import com.android.jack.ir.ast.JExpression;
+import com.android.jack.ir.ast.JIfStatement;
+import com.android.jack.ir.ast.JMethod;
+import com.android.jack.ir.ast.JStatement;
+import com.android.jack.ir.ast.JSwitchStatement;
+import com.android.jack.ir.ast.JVisitor;
+import com.android.jack.ir.sourceinfo.SourceInfo;
+import com.android.jack.scheduling.filter.TypeWithoutPrebuiltFilter;
+import com.android.jack.transformations.EmptyClinit;
+import com.android.sched.item.Description;
+import com.android.sched.schedulable.Constraint;
+import com.android.sched.schedulable.Filter;
+import com.android.sched.schedulable.RunnableSchedulable;
+import com.android.sched.schedulable.Support;
+import com.android.sched.schedulable.Transform;
+
+import java.util.ArrayDeque;
+import java.util.Deque;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.annotation.Nonnull;
+
+/**
+ * Analyzes control flow graph of a method to determine the coverage probes required to instrument
+ * the method.
+ */
+@Description("Code coverage analyzer")
+@Support(CodeCoverageFeature.class)
+@Constraint(need = {CodeCoverageMarker.Initialized.class, ControlFlowGraph.class},
+    no = EmptyClinit.class)
+@Transform(
+    add = {CodeCoverageMarker.Analyzed.class, ProbeMarker.class}, modify = CodeCoverageMarker.class)
+@Filter(TypeWithoutPrebuiltFilter.class)
+public class CodeCoverageAnalyzer implements RunnableSchedulable<JMethod> {
+  @Override
+  public void run(@Nonnull JMethod m) {
+    if (m.isNative() || m.isAbstract()) {
+      // This method has no code so cannot be instrumented.
+      return;
+    }
+
+    JDefinedClassOrInterface declaringClass = m.getEnclosingType();
+    CodeCoverageMarker coverageMarker = declaringClass.getMarker(CodeCoverageMarker.class);
+    if (coverageMarker == null) {
+      // The declaring class is not selected for code coverage.
+      return;
+    }
+
+    ControlFlowGraph controlFlowGraph = m.getMarker(ControlFlowGraph.class);
+    assert controlFlowGraph != null;
+
+    analyzeCFG(m, controlFlowGraph, coverageMarker);
+  }
+
+  /**
+   * Analyzes the control flow graph to identify all required probes. This does not modify the IR,
+   * only adding {@link ProbeMarker} on {@link BasicBlock}.
+   * @param method the method being analyzed
+   * @param controlFlowGraph
+   * @param coverageMarker
+   */
+  private static void analyzeCFG(@Nonnull JMethod method,
+      @Nonnull ControlFlowGraph controlFlowGraph, @Nonnull CodeCoverageMarker coverageMarker) {
+    // We use a LIFO work queue to follow a depth-first traversal of the CFG.
+    final Deque<BasicBlock> workQueue = new ArrayDeque<BasicBlock>();
+
+    // Remember which blocks has been visited.
+    final Set<BasicBlock> visitedBlocks = new HashSet<BasicBlock>();
+
+    final BasicBlock entryBlock = controlFlowGraph.getEntryNode();
+    final BasicBlock exitBlock = controlFlowGraph.getExitNode();
+
+    // We process each node using a depth-first traversal and stop when all nodes have been
+    // visited. We push the successors of the entry block because we do not need to process it.
+    workQueue.addAll(entryBlock.getSuccessors());
+
+    // The current probe. When it is null, it means that a new probe must be created for the next
+    // visited block.
+    assert !workQueue.isEmpty();
+    ProbeDescription currentProbe = coverageMarker.createProbe(method);
+
+    while (!workQueue.isEmpty()) {
+      final BasicBlock bb = workQueue.removeFirst();
+      assert bb != entryBlock;
+      assert bb != exitBlock;
+      assert !visitedBlocks.contains(bb);
+      assert !bb.containsMarker(ProbeMarker.class);
+      assert currentProbe != null;
+
+      // Remember that this block has been visited.
+      visitedBlocks.add(bb);
+
+      // Add successors to the queue.
+      for (BasicBlock succ : bb.getSuccessors()) {
+        if (succ == exitBlock) {
+          // We don't want to process the exit block.
+          continue;
+        }
+        if (visitedBlocks.contains(succ)) {
+          // This successor has been visited already.
+          continue;
+        }
+        if (workQueue.contains(succ)) {
+          // This successor is already in the work queue.
+          continue;
+        }
+        // Add it to the head of the queue to visit in depth-first mode.
+        workQueue.addFirst(succ);
+      }
+
+      // Update probe with source information of each statement it covers.
+      for (JStatement st : bb.getStatements()) {
+        ProbeUpdater visitor = new ProbeUpdater(currentProbe);
+        visitor.accept(st);
+      }
+
+      // Mark branch lines when coming from an 'if' (including conditional) or 'switch' statement.
+      // This is required to generate the coverage report.
+      for (BasicBlock pred : bb.getPredecessors()) {
+        if (pred instanceof ConditionalBasicBlock || pred instanceof SwitchBasicBlock) {
+          // Get last statement of predecessor.
+          List<JStatement> predStatements = pred.getStatements();
+          JStatement branchStatement = predStatements.get(predStatements.size() - 1);
+          assert branchStatement instanceof JIfStatement ||
+            branchStatement instanceof JSwitchStatement;
+          SourceInfo branchSourceInfo = branchStatement.getSourceInfo();
+          currentProbe.incrementLine(branchSourceInfo.getStartLine(), 1, true);
+        }
+      }
+
+      // Is the block terminating a probe?
+      if (isLastBlockForProbe(bb, exitBlock)) {
+        // This basic blocks ends the current probe. The instrumentation will add extra statements
+        // at its end to enable the probe at runtime.
+        bb.addMarker(new ProbeMarker(currentProbe));
+
+        // We need to start a new probe for the next block being visited, if there is at least one.
+        if (!workQueue.isEmpty()) {
+          currentProbe = coverageMarker.createProbe(method);
+        }
+      }
+    }
+
+    // We must have visited all the nodes of the cfg.
+    assert visitedBlocks.size() == controlFlowGraph.getNodes().size();
+  }
+
+  // TODO(shertz) Jacoco does not seem to split probe on throwing instructions. If we want
+  // to do the same thing, we could test whether the predecessor is a Pei block, in which
+  // case we continue with the same probe instead of creating a new one.
+  private static boolean isLastBlockForProbe(@Nonnull BasicBlock bb,
+      @Nonnull BasicBlock exitBlock) {
+    assert bb != exitBlock;
+    List<BasicBlock> successors = bb.getSuccessors();
+    int successorsCount = successors.size();
+    if (successorsCount > 1) {
+      // There are multiple paths from this block so the probe ends.
+      return true;
+    } else {
+      assert successorsCount == 1;
+      BasicBlock succ = successors.get(0);
+      if (succ.getPredecessors().size() > 1) {
+        // There are multiple paths to the successor so the probe ends.
+        return true;
+      } else if (succ == exitBlock) {
+        // The block exits the method (return or throw) so the probe ends
+        return true;
+      }
+    }
+    return false;
+  }
+
+  /**
+   * Updates probes with source information.
+   */
+  private static class ProbeUpdater extends JVisitor {
+    @Nonnull
+    private final ProbeDescription probe;
+
+    public ProbeUpdater(@Nonnull ProbeDescription probe) {
+      this.probe = probe;
+    }
+
+    @Override
+    public void endVisit(@Nonnull JExpression x) {
+      updateProbe(x.getSourceInfo());
+    }
+
+    @Override
+    public boolean visit(@Nonnull JIfStatement x) {
+      // Do not visit 'then' and 'else' statements: they will be assigned to different probes
+      // so we do not want to update the current probe with their source information.
+      accept(x.getIfExpr());
+      return false;
+    }
+
+    @Override
+    public boolean visit(@Nonnull JSwitchStatement x) {
+      // Do not visit 'case' and 'default' statements: they will be assigned to different probes
+      // so we do not want to update the current probe with their source information.
+      accept(x.getExpr());
+      return false;
+    }
+
+    @Override
+    public boolean visit(@Nonnull JStatement x) {
+      updateProbe(x.getSourceInfo());
+      return false;
+    }
+
+    private void updateProbe(@Nonnull SourceInfo sourceInfo) {
+      // Without debug info, JaCoCo considers instruction's line to be -1.
+      int line = (sourceInfo != SourceInfo.UNKNOWN) ? sourceInfo.getStartLine() : -1;
+      probe.incrementLine(line, 1, false);
+    }
+  }
+}
diff --git a/jack-coverage/src/com/android/jack/coverage/CodeCoverageFeature.java b/jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageFeature.java
similarity index 89%
rename from jack-coverage/src/com/android/jack/coverage/CodeCoverageFeature.java
rename to jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageFeature.java
index 1fed31a..dc35703 100644
--- a/jack-coverage/src/com/android/jack/coverage/CodeCoverageFeature.java
+++ b/jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageFeature.java
@@ -23,6 +23,7 @@
 import com.android.sched.util.codec.WriterFileCodec;
 import com.android.sched.util.config.HasKeyId;
 import com.android.sched.util.config.id.BooleanPropertyId;
+import com.android.sched.util.config.id.EnumPropertyId;
 import com.android.sched.util.config.id.PropertyId;
 import com.android.sched.util.config.id.WriterFilePropertyId;
 import com.android.sched.util.file.FileOrDirectory.Existence;
@@ -85,5 +86,12 @@
           .requiredIf(CODE_COVERAGE.getValue().isTrue())
           .addCategory(DumpInLibrary.class)
           .addCategory(PrebuiltCompatibility.class);
-}
 
+  @Nonnull
+  public static final EnumPropertyId<CoverageScope> COVERAGE_SCOPE = EnumPropertyId
+      .create("jack.coverage.jacoco.scope", "Scope of code coverage", CoverageScope.class)
+      .addDefaultValue(CoverageScope.ALL)
+      .requiredIf(CODE_COVERAGE.getValue().isTrue())
+      .addCategory(DumpInLibrary.class)
+      .addCategory(PrebuiltCompatibility.class);
+}
diff --git a/jack-coverage/src/com/android/jack/coverage/CodeCoverageLookupException.java b/jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageLookupException.java
similarity index 100%
rename from jack-coverage/src/com/android/jack/coverage/CodeCoverageLookupException.java
rename to jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageLookupException.java
diff --git a/jack-coverage/src/com/android/jack/coverage/CodeCoverageMarker.java b/jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageMarker.java
similarity index 100%
rename from jack-coverage/src/com/android/jack/coverage/CodeCoverageMarker.java
rename to jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageMarker.java
diff --git a/jack-coverage/src/com/android/jack/coverage/CodeCoverageMetadataFile.java b/jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageMetadataFile.java
similarity index 100%
rename from jack-coverage/src/com/android/jack/coverage/CodeCoverageMetadataFile.java
rename to jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageMetadataFile.java
diff --git a/jack-coverage/src/com/android/jack/coverage/CodeCoverageMetadataFileWriter.java b/jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageMetadataFileWriter.java
similarity index 99%
rename from jack-coverage/src/com/android/jack/coverage/CodeCoverageMetadataFileWriter.java
rename to jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageMetadataFileWriter.java
index 27995a1..c35469d 100644
--- a/jack-coverage/src/com/android/jack/coverage/CodeCoverageMetadataFileWriter.java
+++ b/jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageMetadataFileWriter.java
@@ -280,7 +280,7 @@
     while (list.hasNext()) {
       JDefinedClassOrInterface c = list.next();
       CodeCoverageMarker marker = c.removeMarker(CodeCoverageMarker.class);
-      if (marker == null) {
+      if (marker == null || marker.getProbes().isEmpty()) {
         // No code coverage for this class.
         continue;
       }
diff --git a/jack-coverage/src/com/android/jack/coverage/CodeCoveragePlugin.java b/jack-coverage/plugin/src/com/android/jack/coverage/CodeCoveragePlugin.java
similarity index 98%
rename from jack-coverage/src/com/android/jack/coverage/CodeCoveragePlugin.java
rename to jack-coverage/plugin/src/com/android/jack/coverage/CodeCoveragePlugin.java
index f93003f..7880e31 100644
--- a/jack-coverage/src/com/android/jack/coverage/CodeCoveragePlugin.java
+++ b/jack-coverage/plugin/src/com/android/jack/coverage/CodeCoveragePlugin.java
@@ -106,9 +106,9 @@
     return set;
   }
 
-  // Plugin is compatible starting from 1.3-b4.
+  // Plugin is compatible starting from 1.3-b16.
   private static final int JACK_COMPATIBLE_VERSION_RELEASE_CODE = 4;
-  private static final int JACK_COMPATIBLE_VERSION_SUBRELEASE_CODE = 9;
+  private static final int JACK_COMPATIBLE_VERSION_SUBRELEASE_CODE = 21;
 
   @Override
   public boolean isCompatibileWithJack(@Nonnull Version jackVersion) {
diff --git a/jack-coverage/src/com/android/jack/coverage/CodeCoverageSelector.java b/jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageSelector.java
similarity index 78%
rename from jack-coverage/src/com/android/jack/coverage/CodeCoverageSelector.java
rename to jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageSelector.java
index 831deb9..742d834 100644
--- a/jack-coverage/src/com/android/jack/coverage/CodeCoverageSelector.java
+++ b/jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageSelector.java
@@ -17,8 +17,8 @@
 package com.android.jack.coverage;
 
 import com.android.jack.ir.ast.JDefinedClassOrInterface;
-import com.android.jack.ir.ast.JDefinedInterface;
 import com.android.jack.ir.formatter.SourceFormatter;
+import com.android.jack.library.TypeInInputLibraryLocation;
 import com.android.jack.shrob.obfuscation.OriginalNames;
 import com.android.sched.item.Description;
 import com.android.sched.schedulable.Constraint;
@@ -53,6 +53,9 @@
           ThreadConfig.get(CodeCoverageFeature.COVERAGE_JACOCO_INCLUDES),
           ThreadConfig.get(CodeCoverageFeature.COVERAGE_JACOCO_EXCLUDES));
 
+  @Nonnull
+  private final CoverageScope scope = ThreadConfig.get(CodeCoverageFeature.COVERAGE_SCOPE);
+
   @Override
   public void run(@Nonnull JDefinedClassOrInterface t) {
     if (needsCoverage(t)) {
@@ -65,12 +68,29 @@
       // Do not instrument classes that will no be part of the output.
       return false;
     }
-    if (declaredType instanceof JDefinedInterface) {
-      // Interface are not covered.
+    if (!isInScope(declaredType)) {
+      // Type is not in the scope.
       return false;
     }
     // Manage class filtering.
     String typeName = formatter.getName(declaredType);
     return filter.matches(typeName);
   }
+
+  private boolean isInScope(@Nonnull JDefinedClassOrInterface declaredType) {
+    switch (scope) {
+      case SOURCE:
+        return isSourceType(declaredType);
+      case IMPORTS:
+        return !isSourceType(declaredType);
+      case ALL:
+        return true;
+      default:
+        throw new AssertionError();
+    }
+  }
+
+  private static boolean isSourceType(@Nonnull JDefinedClassOrInterface declaredType) {
+    return !(declaredType.getLocation() instanceof TypeInInputLibraryLocation);
+  }
 }
diff --git a/jack-coverage/src/com/android/jack/coverage/CodeCoverageTransformer.java b/jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageTransformer.java
similarity index 91%
rename from jack-coverage/src/com/android/jack/coverage/CodeCoverageTransformer.java
rename to jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageTransformer.java
index d2f339a..d8d2a6f 100644
--- a/jack-coverage/src/com/android/jack/coverage/CodeCoverageTransformer.java
+++ b/jack-coverage/plugin/src/com/android/jack/coverage/CodeCoverageTransformer.java
@@ -39,6 +39,7 @@
 import com.android.jack.ir.ast.JGoto;
 import com.android.jack.ir.ast.JIfStatement;
 import com.android.jack.ir.ast.JIntLiteral;
+import com.android.jack.ir.ast.JInterface;
 import com.android.jack.ir.ast.JLocal;
 import com.android.jack.ir.ast.JLocalRef;
 import com.android.jack.ir.ast.JLongLiteral;
@@ -120,10 +121,18 @@
       NamingTools.getNonSourceConflictingName("jacocoData");
 
   /**
-   * The modifiers of the added field.
+   * The modifiers of the added field for a class.
    */
-  private static final int COVERAGE_DATA_FIELD_MODIFIERS =
-      JModifier.PRIVATE | JModifier.STATIC | JModifier.FINAL | JModifier.TRANSIENT;
+  private static final int CLASS_COVERAGE_DATA_FIELD_MODIFIERS = JModifier.PRIVATE
+      | JModifier.STATIC | JModifier.FINAL | JModifier.TRANSIENT | JModifier.SYNTHETIC;
+
+  /**
+   * The modifiers of the added field for an interface.
+   *
+   * Note: the ART runtime rejects the {@code transient} modifier for interfaces.
+   */
+  private static final int INTERFACE_COVERAGE_DATA_FIELD_MODIFIERS =
+      JModifier.PUBLIC | JModifier.STATIC | JModifier.FINAL | JModifier.SYNTHETIC;
 
   /**
    * The name of the method that registers (once) and returns the array of coverage probes.
@@ -135,7 +144,7 @@
    * The modifiers of the added method.
    */
   private static final int COVERAGE_DATA_INIT_METHOD_MODIFIERS =
-      JModifier.PRIVATE | JModifier.STATIC;
+      JModifier.PRIVATE | JModifier.STATIC | JModifier.SYNTHETIC;
 
   private static final String LOCAL_VAR_NAME_PREFIX = "cov";
 
@@ -287,8 +296,8 @@
   @Override
   public void run(@Nonnull JDefinedClassOrInterface declaredType) {
     CodeCoverageMarker marker = declaredType.getMarker(CodeCoverageMarker.class);
-    if (marker == null) {
-      // This class is excluded from code coverage.
+    if (marker == null || marker.getProbes().isEmpty()) {
+      // No code coverage for this class.
       return;
     }
 
@@ -319,9 +328,11 @@
   @Nonnull
   private JField createProbesArrayField(@Nonnull JDefinedClassOrInterface declaredType) {
     JType booleanArrayType = getCoverageDataType();
-    SourceInfo sourceInfo = declaredType.getSourceInfo();
-    return new JField(sourceInfo, COVERAGE_DATA_FIELD_NAME, declaredType, booleanArrayType,
-        COVERAGE_DATA_FIELD_MODIFIERS);
+    int modifiers = (declaredType instanceof JInterface)
+        ? INTERFACE_COVERAGE_DATA_FIELD_MODIFIERS
+        : CLASS_COVERAGE_DATA_FIELD_MODIFIERS;
+    return new JField(SourceInfo.UNKNOWN, COVERAGE_DATA_FIELD_NAME, declaredType, booleanArrayType,
+        modifiers);
   }
 
   /**
@@ -395,35 +406,23 @@
       // Iterates over every basic block to insert code for probe and removes the ProbeMarker.
       ControlFlowGraph controlFlowGraph = m.getMarker(ControlFlowGraph.class);
       assert controlFlowGraph != null;
-      final BasicBlock entryBlock = controlFlowGraph.getEntryNode();
-      final BasicBlock exitBlock = controlFlowGraph.getExitNode();
       for (BasicBlock bb : controlFlowGraph.getNodes()) {
         ProbeMarker probeMarker = bb.removeMarker(ProbeMarker.class);
         if (probeMarker == null) {
-          // The basic block may not have been marked.
-          assert (bb == entryBlock || bb == exitBlock);
           continue;
         }
-        if (bb == entryBlock || bb == exitBlock) {
-          continue;
+        // We must set the probe at the end of this basic block.
+        assert !bb.getStatements().isEmpty();
+        JStatement insertionPoint = bb.getLastInstruction();
+        ProbeDescription probe = probeMarker.getProbe();
+        TransformationStep transformationStep;
+        JStatement probeStatement = createProbeStatement(insertionPoint.getSourceInfo(), probe);
+        if (canInsertProbeBeforeLastStatement(bb)) {
+          transformationStep = new AppendBefore(insertionPoint, probeStatement);
+        } else {
+          transformationStep = new PrependAfter(insertionPoint, probeStatement);
         }
-        BasicBlock insertionBlock = probeMarker.getInsertionBlock();
-        assert insertionBlock != null;
-        if (bb == insertionBlock) {
-          // We must set the probe at the end of this basic block.
-          assert !bb.getStatements().isEmpty() : bb;
-          JStatement insertionPoint = bb.getLastInstruction();
-          ProbeDescription probe = probeMarker.getProbe();
-          TransformationStep transformationStep;
-          JStatement probeStatement = createProbeStatement(insertionPoint.getSourceInfo(), probe);
-          boolean insertBeforeLastStatement = canInsertProbeBeforeLastStatement(bb);
-          if (insertBeforeLastStatement) {
-            transformationStep = new AppendBefore(insertionPoint, probeStatement);
-          } else {
-            transformationStep = new PrependAfter(insertionPoint, probeStatement);
-          }
-          transformationRequest.append(transformationStep);
-        }
+        transformationRequest.append(transformationStep);
       }
       return false;
     }
@@ -438,7 +437,7 @@
       // Insert initialization statement as the first statement.
       JLocalRef localRef = local.makeRef(sourceInfo);
       JExpression expr = new JMethodCall(sourceInfo, null, coverageMethod.getEnclosingType(),
-          coverageMethod.getMethodIdWide(), booleanArrayType, false);
+          coverageMethod.getMethodId(), false);
       JAsgOperation assign = new JAsgOperation(sourceInfo, localRef, expr);
       transformationRequest.append(
           new PrependStatement(x.getBlock(), new JExpressionStatement(sourceInfo, assign)));
@@ -468,19 +467,18 @@
   private JMethod createProbesArrayInitMethod(@Nonnull JDefinedClassOrInterface declaredType,
       @Nonnegative int probeCount, @Nonnull TransformationRequest transformationRequest,
       @Nonnull JField coverageDataField, long classId) {
-    SourceInfo sourceInfo = declaredType.getSourceInfo();
     JType returnType = getCoverageDataType();
     JMethodId methodId = new JMethodId(
         new JMethodIdWide(COVERAGE_DATA_INIT_METHOD_NAME, MethodKind.STATIC),
         returnType);
     JMethod coverageInitMethod = new JMethod(
-        sourceInfo, methodId, declaredType, COVERAGE_DATA_INIT_METHOD_MODIFIERS);
+        SourceInfo.UNKNOWN, methodId, declaredType, COVERAGE_DATA_INIT_METHOD_MODIFIERS);
     fillCoverageInitMethodBody(coverageInitMethod, declaredType, probeCount, transformationRequest,
         coverageDataField, classId);
     return coverageInitMethod;
   }
 
-  /** Generates body of JaCoCo initialization method in three-adress-code form.
+  /** Generates body of JaCoCo initialization method in three-address-code form.
    *
    * @param coverageInitMethod
    * @param coverageDataField
@@ -553,8 +551,8 @@
       transformationRequest.append(new AppendStatement(ifBlock, probeCountInit));
 
       // Add '<local> = org.jacoco...Offline.getProbes(<classId>, <className>, <probeCount>)'
-      JMethodCall methodCall = new JMethodCall(ifBlock.getSourceInfo(), null, jacocoClass,
-          jacocoMethodId.getMethodIdWide(), JPrimitiveTypeEnum.BOOLEAN.getType().getArray(), false);
+      JMethodCall methodCall =
+          new JMethodCall(ifBlock.getSourceInfo(), null, jacocoClass, jacocoMethodId, false);
       methodCall.addArg(classIdLocal.makeRef(ifBlock.getSourceInfo()));
       methodCall.addArg(classNameLocal.makeRef(ifBlock.getSourceInfo()));
       methodCall.addArg(probeCountLocal.makeRef(ifBlock.getSourceInfo()));
diff --git a/jack-coverage/src/com/android/jack/coverage/CoverageFilter.java b/jack-coverage/plugin/src/com/android/jack/coverage/CoverageFilter.java
similarity index 100%
rename from jack-coverage/src/com/android/jack/coverage/CoverageFilter.java
rename to jack-coverage/plugin/src/com/android/jack/coverage/CoverageFilter.java
diff --git a/jack-coverage/src/com/android/jack/coverage/CoverageFilterSet.java b/jack-coverage/plugin/src/com/android/jack/coverage/CoverageFilterSet.java
similarity index 100%
rename from jack-coverage/src/com/android/jack/coverage/CoverageFilterSet.java
rename to jack-coverage/plugin/src/com/android/jack/coverage/CoverageFilterSet.java
diff --git a/jack-coverage/src/com/android/jack/coverage/CoverageFilterSetCodec.java b/jack-coverage/plugin/src/com/android/jack/coverage/CoverageFilterSetCodec.java
similarity index 100%
rename from jack-coverage/src/com/android/jack/coverage/CoverageFilterSetCodec.java
rename to jack-coverage/plugin/src/com/android/jack/coverage/CoverageFilterSetCodec.java
diff --git a/jack-coverage/src/com/android/jack/coverage/CoveragePattern.java b/jack-coverage/plugin/src/com/android/jack/coverage/CoveragePattern.java
similarity index 100%
rename from jack-coverage/src/com/android/jack/coverage/CoveragePattern.java
rename to jack-coverage/plugin/src/com/android/jack/coverage/CoveragePattern.java
diff --git a/jack-coverage/src/com/android/jack/coverage/CoveragePatternCodec.java b/jack-coverage/plugin/src/com/android/jack/coverage/CoveragePatternCodec.java
similarity index 100%
rename from jack-coverage/src/com/android/jack/coverage/CoveragePatternCodec.java
rename to jack-coverage/plugin/src/com/android/jack/coverage/CoveragePatternCodec.java
diff --git a/jack-coverage/plugin/src/com/android/jack/coverage/CoverageScope.java b/jack-coverage/plugin/src/com/android/jack/coverage/CoverageScope.java
new file mode 100644
index 0000000..4123eb6
--- /dev/null
+++ b/jack-coverage/plugin/src/com/android/jack/coverage/CoverageScope.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.coverage;
+
+import com.android.sched.util.codec.EnumName;
+import com.android.sched.util.codec.VariableName;
+
+/**
+ * Represents the scope of the coverage instrumentation.
+ */
+@VariableName("scope")
+public enum CoverageScope {
+  /**
+   * A scope that contains only classes from source files.
+   */
+  @EnumName(name = "source", description = "instrument only types from source files")
+  SOURCE,
+  /**
+   * A scope that contains only classes from imported libraries.
+   */
+  @EnumName(name = "imports", description = "instrument only types from imported libraries")
+  IMPORTS,
+  /**
+   * A scope that contains classes coming from source files and imported libraries.
+   */
+  @EnumName(name = "all", description = "instrument all types")
+  ALL;
+}
\ No newline at end of file
diff --git a/jack-coverage/src/com/android/jack/coverage/JacocoPackage.java b/jack-coverage/plugin/src/com/android/jack/coverage/JacocoPackage.java
similarity index 100%
rename from jack-coverage/src/com/android/jack/coverage/JacocoPackage.java
rename to jack-coverage/plugin/src/com/android/jack/coverage/JacocoPackage.java
diff --git a/jack-coverage/src/com/android/jack/coverage/ProbeDescription.java b/jack-coverage/plugin/src/com/android/jack/coverage/ProbeDescription.java
similarity index 100%
rename from jack-coverage/src/com/android/jack/coverage/ProbeDescription.java
rename to jack-coverage/plugin/src/com/android/jack/coverage/ProbeDescription.java
diff --git a/jack-coverage/src/com/android/jack/coverage/ProbeMarker.java b/jack-coverage/plugin/src/com/android/jack/coverage/ProbeMarker.java
similarity index 70%
rename from jack-coverage/src/com/android/jack/coverage/ProbeMarker.java
rename to jack-coverage/plugin/src/com/android/jack/coverage/ProbeMarker.java
index 7e63b16..49b7564 100644
--- a/jack-coverage/src/com/android/jack/coverage/ProbeMarker.java
+++ b/jack-coverage/plugin/src/com/android/jack/coverage/ProbeMarker.java
@@ -21,26 +21,19 @@
 import com.android.sched.marker.Marker;
 import com.android.sched.marker.ValidOn;
 
-import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 
 /**
- * A marker representing a unique code coverage probe on a {@link BasicBlock}.
+ * A marker representing a unique code coverage probe on a {@link BasicBlock} that must be
+ * instrumented to activate this probe at execution time.
  */
-@Description("A probe assigned to a basic block.")
+@Description("A code coverage probe assigned to a basic block that must be instrumented.")
 @ValidOn(BasicBlock.class)
 public class ProbeMarker implements Marker {
 
   @Nonnull
   private final ProbeDescription probe;
 
-  /**
-   * Indicates whether the corresponding {@link BasicBlock} contains instrumentation code for
-   * this probe.
-   */
-  @CheckForNull
-  private BasicBlock insertionBlock = null;
-
   public ProbeMarker(@Nonnull ProbeDescription probe) {
     this.probe = probe;
   }
@@ -50,16 +43,6 @@
     return probe;
   }
 
-  @CheckForNull
-  public BasicBlock getInsertionBlock() {
-    return insertionBlock;
-  }
-
-  public void setInsertionBlock(@Nonnull BasicBlock insertionBlock) {
-    assert this.insertionBlock == null;
-    this.insertionBlock = insertionBlock;
-  }
-
   @Override
   public Marker cloneIfNeeded() {
     return this;
diff --git a/jack-coverage/tests/com/android/jack/coverage/AllCoverageTests.java b/jack-coverage/plugin/tests/com/android/jack/coverage/AllCoverageTests.java
similarity index 88%
rename from jack-coverage/tests/com/android/jack/coverage/AllCoverageTests.java
rename to jack-coverage/plugin/tests/com/android/jack/coverage/AllCoverageTests.java
index 2f7525b..4600119 100644
--- a/jack-coverage/tests/com/android/jack/coverage/AllCoverageTests.java
+++ b/jack-coverage/plugin/tests/com/android/jack/coverage/AllCoverageTests.java
@@ -22,6 +22,10 @@
 import org.junit.runners.Suite.SuiteClasses;
 
 @RunWith(JackTestRunner.class)
-@SuiteClasses(value = {CoverageTests.class})
+@SuiteClasses(value = {
+    CoverageJava8Tests.class,
+    CoverageShrobTests.class,
+    CoverageTests.class
+})
 public class AllCoverageTests {
 }
diff --git a/jack-coverage/tests/com/android/jack/coverage/AllUnitTests.java b/jack-coverage/plugin/tests/com/android/jack/coverage/AllUnitTests.java
similarity index 100%
rename from jack-coverage/tests/com/android/jack/coverage/AllUnitTests.java
rename to jack-coverage/plugin/tests/com/android/jack/coverage/AllUnitTests.java
diff --git a/jack-coverage/tests/com/android/jack/coverage/CoverageFilterSetCodecTest.java b/jack-coverage/plugin/tests/com/android/jack/coverage/CoverageFilterSetCodecTest.java
similarity index 100%
rename from jack-coverage/tests/com/android/jack/coverage/CoverageFilterSetCodecTest.java
rename to jack-coverage/plugin/tests/com/android/jack/coverage/CoverageFilterSetCodecTest.java
diff --git a/jack-coverage/tests/com/android/jack/coverage/CoverageFilterSetTest.java b/jack-coverage/plugin/tests/com/android/jack/coverage/CoverageFilterSetTest.java
similarity index 100%
rename from jack-coverage/tests/com/android/jack/coverage/CoverageFilterSetTest.java
rename to jack-coverage/plugin/tests/com/android/jack/coverage/CoverageFilterSetTest.java
diff --git a/jack-coverage/tests/com/android/jack/coverage/CoverageFilterTest.java b/jack-coverage/plugin/tests/com/android/jack/coverage/CoverageFilterTest.java
similarity index 100%
rename from jack-coverage/tests/com/android/jack/coverage/CoverageFilterTest.java
rename to jack-coverage/plugin/tests/com/android/jack/coverage/CoverageFilterTest.java
diff --git a/jack-coverage/plugin/tests/com/android/jack/coverage/CoverageJava8Tests.java b/jack-coverage/plugin/tests/com/android/jack/coverage/CoverageJava8Tests.java
new file mode 100644
index 0000000..726bb93
--- /dev/null
+++ b/jack-coverage/plugin/tests/com/android/jack/coverage/CoverageJava8Tests.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.coverage;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+
+import com.android.jack.test.toolchain.AbstractTestTools;
+import com.android.jack.test.toolchain.JackBasedToolchain;
+import com.android.jack.test.toolchain.Toolchain.SourceLevel;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import java.io.File;
+
+public class CoverageJava8Tests extends CoverageTest {
+  /**
+   * Tests that lambda anonymous classes are not instrumented.
+   */
+  @Test
+  public void test001() throws Exception {
+    String testPackageName = getTestPackageName("java8.test001");
+    File srcDir = CoverageTest.getTestRootDir(testPackageName);
+
+    JackBasedToolchain toolchain = createJackToolchain();
+    toolchain.setSourceLevel(SourceLevel.JAVA_8);
+    File coverageMetadataFile = CoverageToolchainBuilder.create(toolchain).build();
+
+    File outDexFolder = AbstractTestTools.createTempDir();
+    toolchain.srcToExe(outDexFolder, false, srcDir);
+
+    JsonArray classes = loadJsonCoverageClasses(coverageMetadataFile);
+    Assert.assertEquals(1, classes.size());  // Foo class only
+
+    JsonObject jsonClass = getJsonClass(classes, getClassNameForJson(testPackageName + ".Foo"));
+    Assert.assertNotNull(jsonClass);
+
+    JsonArray jsonClassMethods = jsonClass.get("methods").getAsJsonArray();
+    Assert.assertEquals(4, jsonClassMethods.size());  // constructor + 2 methods + lambda
+  }
+
+  /**
+   * Tests that static and default methods from interfaces are instrumented.
+   */
+  @Test
+  public void test002() throws Exception {
+    String testPackageName = getTestPackageName("java8.test002");
+    File srcDir = CoverageTest.getTestRootDir(testPackageName);
+
+    JackBasedToolchain toolchain = createJackToolchain();
+    toolchain.setSourceLevel(SourceLevel.JAVA_8);
+    // Static and default methods in interfaces are only allowed since API level 24.
+    toolchain.addProperty("jack.android.min-api-level", "24");
+    File coverageMetadataFile = CoverageToolchainBuilder.create(toolchain).build();
+
+    File outDexFolder = AbstractTestTools.createTempDir();
+    toolchain.srcToExe(outDexFolder, false, srcDir);
+
+    JsonArray classes = loadJsonCoverageClasses(coverageMetadataFile);
+    Assert.assertEquals(2, classes.size());  // Foo + SAM classes
+    Assert.assertNotNull(getJsonClass(classes, getClassNameForJson(testPackageName + ".Foo")));
+    Assert.assertNotNull(getJsonClass(classes, getClassNameForJson(testPackageName + ".SAM")));
+  }
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/CoveragePatternCodecTest.java b/jack-coverage/plugin/tests/com/android/jack/coverage/CoveragePatternCodecTest.java
similarity index 100%
rename from jack-coverage/tests/com/android/jack/coverage/CoveragePatternCodecTest.java
rename to jack-coverage/plugin/tests/com/android/jack/coverage/CoveragePatternCodecTest.java
diff --git a/jack-coverage/tests/com/android/jack/coverage/CoveragePatternTest.java b/jack-coverage/plugin/tests/com/android/jack/coverage/CoveragePatternTest.java
similarity index 100%
rename from jack-coverage/tests/com/android/jack/coverage/CoveragePatternTest.java
rename to jack-coverage/plugin/tests/com/android/jack/coverage/CoveragePatternTest.java
diff --git a/jack-coverage/plugin/tests/com/android/jack/coverage/CoverageShrobTests.java b/jack-coverage/plugin/tests/com/android/jack/coverage/CoverageShrobTests.java
new file mode 100644
index 0000000..9b43736
--- /dev/null
+++ b/jack-coverage/plugin/tests/com/android/jack/coverage/CoverageShrobTests.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.coverage;
+
+import com.google.gson.JsonArray;
+
+import com.android.jack.test.toolchain.AbstractTestTools;
+import com.android.jack.test.toolchain.JackBasedToolchain;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.annotation.Nonnull;
+
+public class CoverageShrobTests extends CoverageTest {
+
+  /**
+   * Tests that shrunk classes are not in the coverage metadata file.
+   */
+  @Test
+  public void testShrob001() throws Exception {
+    String testPackageName = getTestPackageName("shrob.test001");
+    File testRootDir = getTestRootDir(testPackageName);
+    File srcDir = getTestRootDir(testPackageName);
+
+    JackBasedToolchain toolchain = createJackToolchain();
+    toolchain.addProguardFlags(new File(testRootDir, "proguard.flags"));
+    File coverageMetadataFile = CoverageToolchainBuilder.create(toolchain).build();
+
+    File outDexFolder = AbstractTestTools.createTempDir();
+    toolchain.srcToExe(outDexFolder, false, srcDir);
+
+    JsonArray classes = loadJsonCoverageClasses(coverageMetadataFile);
+    Assert.assertEquals(1, classes.size());
+    Assert.assertNotNull(getJsonClass(classes, getClassNameForJson(testPackageName + ".Foo")));
+  }
+
+  /**
+   * Tests that coverage is applied on obfuscated classes.
+   *
+   * Note: deobfuscation of classes is the job of the code coverage reporter tool.
+   */
+  @Test
+  public void testShrob002() throws Exception {
+    String testPackageName = getTestPackageName("shrob.test002");
+    File testRootDir = getTestRootDir(testPackageName);
+    File srcDir = getTestRootDir(testPackageName);
+
+    JackBasedToolchain toolchain = createJackToolchain();
+    toolchain.addProguardFlags(new File(testRootDir, "proguard.flags"));
+    // Dump the mapping file to know obfuscated classes' names.
+    File mappingFile = AbstractTestTools.createTempFile("coverage-mapping", ".txt");
+    toolchain.addProperty("jack.obfuscation.mapping.dump", Boolean.toString(true));
+    toolchain.addProperty("jack.obfuscation.mapping.dump.file", mappingFile.getAbsolutePath());
+    File coverageMetadataFile = CoverageToolchainBuilder.create(toolchain).build();
+
+    File outDexFolder = AbstractTestTools.createTempDir();
+    toolchain.srcToExe(outDexFolder, false, srcDir);
+
+    JsonArray classes = loadJsonCoverageClasses(coverageMetadataFile);
+    Assert.assertEquals(2, classes.size());
+
+    // Extract class names from mapping file and check that they are in the coverage metadata file.
+    List<String> obfuscatedNames = extractObfuscatedClassNames(mappingFile);
+    for (String className : obfuscatedNames) {
+      Assert.assertNotNull(getJsonClass(classes, getClassNameForJson(className)));
+    }
+  }
+
+  @Nonnull
+  private List<String> extractObfuscatedClassNames(@Nonnull File mappingFile)
+      throws FileNotFoundException, IOException {
+    List<String> names = new ArrayList<String>();
+    try (BufferedReader reader = new BufferedReader(new FileReader(mappingFile))) {
+      String line;
+      while (true) {
+        line = reader.readLine();
+        if (line == null) {
+          break;
+        }
+        // Remove leading and trailing spaces.
+        line = line.trim();
+        final int lastPos = line.length() - 1;
+        if (line.charAt(lastPos) != ':') {
+          // Not a class line
+          continue;
+        }
+        final int separatorPos = line.indexOf(MAPPING_FILE_SEPARATOR);
+        if (separatorPos < 0) {
+          throw new AssertionError();
+        }
+        // Extract obfuscated class name.
+        String className =
+            line.substring(separatorPos + MAPPING_FILE_SEPARATOR.length(), lastPos).trim();
+        names.add(className);
+      }
+    }
+    return names;
+  }
+
+  private static final String MAPPING_FILE_SEPARATOR = "->";
+}
diff --git a/jack-coverage/plugin/tests/com/android/jack/coverage/CoverageTest.java b/jack-coverage/plugin/tests/com/android/jack/coverage/CoverageTest.java
new file mode 100644
index 0000000..08ed6be
--- /dev/null
+++ b/jack-coverage/plugin/tests/com/android/jack/coverage/CoverageTest.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.coverage;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+
+import com.android.jack.test.TestsProperties;
+import com.android.jack.test.toolchain.AbstractTestTools;
+import com.android.jack.test.toolchain.JackBasedToolchain;
+import com.android.jack.util.NamingTools;
+
+import junit.framework.Assert;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnegative;
+import javax.annotation.Nonnull;
+
+public abstract class CoverageTest {
+
+  @Nonnull
+  private static final String COVERAGE_TEST_PACKAGE = "com.android.jack.coverage";
+
+  @Nonnull
+  protected static String getTestPackageName(@Nonnull String testName) {
+    return COVERAGE_TEST_PACKAGE + "." + testName;
+  }
+
+  /**
+   * Workaround AbstractTestTools.getTestRootDir hardcoded for Jack tests only.
+   */
+  @Nonnull
+  protected static final File getTestRootDir(@Nonnull String testPackageName) {
+    File rootDir = TestsProperties.getJackRootDir();
+    rootDir = new File(rootDir, "jack-coverage");
+    rootDir = new File(rootDir, "plugin");
+    rootDir = new File(rootDir, "tests");
+    return new File(rootDir, testPackageName.replace('.', File.separatorChar));
+  }
+
+  @Nonnull
+  protected static JackBasedToolchain createJackToolchain() {
+    JackBasedToolchain toolchain =
+        AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class);
+    toolchain.addToClasspath(toolchain.getDefaultBootClasspath());
+    return toolchain;
+  }
+
+
+  protected static void assertNotEquals(@Nonnull String msg, long expected, long actual) {
+    if (expected == actual) {
+      StringBuilder stringBuilder = new StringBuilder(msg);
+      stringBuilder.append(": expected=");
+      stringBuilder.append(Long.toHexString(expected));
+      stringBuilder.append(", actual=");
+      stringBuilder.append(Long.toHexString(actual));
+      Assert.fail(stringBuilder.toString());
+    }
+  }
+
+  protected static long getClassIdOf(@Nonnull File coverageFile, @Nonnull String className)
+      throws IOException {
+    JsonArray classesArray = loadJsonCoverageClasses(coverageFile);
+    JsonObject classObject = getJsonClass(classesArray, className);
+    return classObject.get("id").getAsLong();
+  }
+
+  @CheckForNull
+  protected static JsonObject getJsonClass(@Nonnull JsonArray jsonClasses,
+      @Nonnull String className) {
+    for (JsonElement jsonElement : jsonClasses) {
+      JsonObject jsonClass = jsonElement.getAsJsonObject();
+      if (jsonClass.get("name").getAsString().equals(className)) {
+        return jsonClass;
+      }
+    }
+    return null;
+  }
+
+  @Nonnull
+  protected static String getClassNameForJson(@Nonnull String className) {
+    return NamingTools.getBinaryName(className);
+  }
+
+  @Nonnull
+  protected static String getClassName(@Nonnull JsonArray classArray, @Nonnegative int index) {
+    return getClassName(classArray.get(index).getAsJsonObject());
+  }
+
+  @Nonnull
+  protected static String getClassName(@Nonnull JsonObject classObject) {
+    return classObject.get("name").getAsString();
+  }
+
+  @Nonnull
+  protected Collection<? extends String> collectClassNames(@Nonnull JsonArray classes) {
+    Set<String> classNames = new HashSet<String>();
+    for (JsonElement arrayElt : classes) {
+      classNames.add(getClassName(arrayElt.getAsJsonObject()));
+    }
+    return classNames;
+  }
+
+  @Nonnull
+  protected static JsonArray loadJsonCoverageClasses(@Nonnull File coverageMetadataFile)
+      throws IOException {
+    Assert.assertTrue(coverageMetadataFile.length() > 0);
+
+    JsonObject root = loadJson(coverageMetadataFile).getAsJsonObject();
+    Assert.assertNotNull(root);
+
+    String version = root.get("version").getAsString();
+    Assert.assertNotNull(version);
+    Assert.assertEquals("1.0", version);
+
+    JsonArray classes = root.get("data").getAsJsonArray();
+    Assert.assertNotNull(classes);
+    return classes;
+  }
+
+  @Nonnull
+  protected static JsonElement loadJson(@Nonnull File jsonFile) throws IOException {
+    JsonParser parser = new JsonParser();
+    try (FileReader reader = new FileReader(jsonFile)) {
+      return parser.parse(reader);
+    }
+  }
+}
diff --git a/jack-coverage/plugin/tests/com/android/jack/coverage/CoverageTests.java b/jack-coverage/plugin/tests/com/android/jack/coverage/CoverageTests.java
new file mode 100644
index 0000000..4063636
--- /dev/null
+++ b/jack-coverage/plugin/tests/com/android/jack/coverage/CoverageTests.java
@@ -0,0 +1,489 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.coverage;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import com.google.common.collect.Sets;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+
+import com.android.jack.test.junit.KnownIssue;
+import com.android.jack.test.toolchain.AbstractTestTools;
+import com.android.jack.test.toolchain.JackBasedToolchain;
+import com.android.jack.test.toolchain.JillBasedToolchain;
+import com.android.jack.util.NamingTools;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.annotation.Nonnull;
+
+public class CoverageTests extends CoverageTest {
+
+  @Test
+  public void testSingleClass() throws Exception {
+    final String testPackageName = getTestPackageName("test001");
+    JackBasedToolchain toolchain = createJackToolchain();
+    File coverageMetadataFile = CoverageToolchainBuilder.create(toolchain).build();
+
+    toolchain.srcToExe(AbstractTestTools.createTempDir(), false,
+        getTestRootDir(testPackageName));
+    JsonArray classes = loadJsonCoverageClasses(coverageMetadataFile);
+
+    // We expect only one class
+    Assert.assertNotNull(classes);
+    Assert.assertEquals(1, classes.size());
+    JsonObject testClass = classes.get(0).getAsJsonObject();
+    Assert.assertNotNull(testClass);
+    Assert.assertEquals(getClassNameForJson(testPackageName + ".AbstractClass"),
+        getClassName(testClass));
+
+    // Check its methods.
+    JsonArray methods = testClass.get("methods").getAsJsonArray();
+    Assert.assertEquals(3, methods.size()); // abstract and native methods are excluded.
+    Set<NameAndDesc> expectedMethods = new HashSet<NameAndDesc>();
+    expectedMethods.add(new NameAndDesc(NamingTools.INIT_NAME, "()V"));
+    expectedMethods.add(new NameAndDesc("staticMethod", "()V"));
+    expectedMethods.add(new NameAndDesc("instanceMethod", "()V"));
+    for (JsonElement methodElt : methods) {
+      String name = methodElt.getAsJsonObject().get("name").getAsString();
+      String desc = methodElt.getAsJsonObject().get("desc").getAsString();
+      Assert.assertTrue(expectedMethods.contains(new NameAndDesc(name, desc)));
+    }
+  }
+
+  @Test
+  public void testInterface() throws Exception {
+    String testPackageName = getTestPackageName("test002");
+    JackBasedToolchain toolchain = createJackToolchain();
+    File coverageMetadataFile = CoverageToolchainBuilder.create(toolchain).build();
+    toolchain.srcToExe(AbstractTestTools.createTempDir(), false, getTestRootDir(testPackageName));
+    JsonArray classes = loadJsonCoverageClasses(coverageMetadataFile);
+
+    // Interface without code must not be instrumented
+    assertNull(getJsonClass(classes, getClassNameForJson(testPackageName + ".EmptyInterface")));
+
+    // Interface with a static initializer must be instrumented
+    assertNotNull(
+        getJsonClass(classes, getClassNameForJson(testPackageName + ".InterfaceWithInit")));
+  }
+
+  @Test
+  public void testIncludeAll() throws Exception {
+    String testPackageName = getTestPackageName("test003");
+    JackBasedToolchain toolchain = createJackToolchain();
+    File coverageMetadataFile = CoverageToolchainBuilder.create(toolchain)
+        .setIncludeFilter("*")
+        .build();
+
+    toolchain.srcToExe(AbstractTestTools.createTempDir(), false,
+        getTestRootDir(testPackageName));
+    JsonArray classes = loadJsonCoverageClasses(coverageMetadataFile);
+
+    // Full coverage: Foo and Bar classes.
+    Assert.assertEquals(2, classes.size());
+    Collection<? extends String> actualClassNames = collectClassNames(classes);
+    Set<String> expectedClassNames =
+        Sets.newHashSet(getClassNameForJson(testPackageName + ".foo.Foo"),
+            getClassNameForJson(testPackageName + ".foo.bar.Bar"));
+    Assert.assertTrue(actualClassNames.containsAll(expectedClassNames));
+  }
+
+  @Test
+  public void testIncludeSingle() throws Exception {
+    String testPackageName = getTestPackageName("test003");
+    JackBasedToolchain toolchain = createJackToolchain();
+    File coverageMetadataFile = CoverageToolchainBuilder.create(toolchain)
+        .setIncludeFilter(testPackageName + ".foo.bar.Bar")
+        .build();
+
+    toolchain.srcToExe(AbstractTestTools.createTempDir(), false,
+        getTestRootDir(testPackageName));
+    JsonArray classes = loadJsonCoverageClasses(coverageMetadataFile);
+
+    // Partial coverage: only Bar class.
+    Assert.assertEquals(1, classes.size());
+    Collection<? extends String> actualClassNames = collectClassNames(classes);
+    Set<String> expectedClassNames =
+        Sets.newHashSet(getClassNameForJson(testPackageName + ".foo.bar.Bar"));
+    Assert.assertTrue(actualClassNames.containsAll(expectedClassNames));
+  }
+
+  @Test
+  public void testIncludeWildcard() throws Exception {
+    String testPackageName = getTestPackageName("test003");
+    JackBasedToolchain toolchain = createJackToolchain();
+    File coverageMetadataFile = CoverageToolchainBuilder.create(toolchain)
+        .setIncludeFilter(testPackageName + ".foo.bar.*")
+        .build();
+
+    toolchain.srcToExe(AbstractTestTools.createTempDir(), false,
+        getTestRootDir(testPackageName));
+    JsonArray classes = loadJsonCoverageClasses(coverageMetadataFile);
+
+    // Partial coverage: only Bar class.
+    Assert.assertEquals(1, classes.size());
+    Collection<? extends String> actualClassNames = collectClassNames(classes);
+    Set<String> expectedClassNames =
+        Sets.newHashSet(getClassNameForJson(testPackageName + ".foo.bar.Bar"));
+    Assert.assertTrue(actualClassNames.containsAll(expectedClassNames));
+  }
+
+  @Test
+  public void testExcludeAll() throws Exception {
+    JackBasedToolchain toolchain = createJackToolchain();
+    File coverageMetadataFile = CoverageToolchainBuilder.create(toolchain)
+        .setExcludeFilter("*")
+        .build();
+
+    toolchain.srcToExe(AbstractTestTools.createTempDir(), false,
+        getTestRootDir(getTestPackageName("test003")));
+    JsonArray classes = loadJsonCoverageClasses(coverageMetadataFile);
+
+    // No coverage at all
+    Assert.assertEquals(0, classes.size());
+  }
+
+  @Test
+  public void testExcludeSingle() throws Exception {
+    String testPackageName = getTestPackageName("test003");
+    JackBasedToolchain toolchain = createJackToolchain();
+    File coverageMetadataFile = CoverageToolchainBuilder.create(toolchain)
+        .setExcludeFilter(testPackageName + ".foo.bar.Bar")
+        .build();
+
+    toolchain.srcToExe(AbstractTestTools.createTempDir(), false,
+        getTestRootDir(testPackageName));
+    JsonArray classes = loadJsonCoverageClasses(coverageMetadataFile);
+
+    // Partial coverage: only Foo class.
+    Assert.assertEquals(1, classes.size());
+    Collection<? extends String> actualClassNames = collectClassNames(classes);
+    Set<String> expectedClassNames =
+        Sets.newHashSet(getClassNameForJson(testPackageName + ".foo.Foo"));
+    Assert.assertTrue(actualClassNames.containsAll(expectedClassNames));
+  }
+
+  @Test
+  public void testExcludeWildcard() throws Exception {
+    String testPackageName = getTestPackageName("test003");
+    JackBasedToolchain toolchain = createJackToolchain();
+    File coverageMetadataFile = CoverageToolchainBuilder.create(toolchain)
+        .setExcludeFilter(testPackageName + ".foo.bar.*")
+        .build();
+
+    toolchain.srcToExe(AbstractTestTools.createTempDir(), false,
+        getTestRootDir(testPackageName));
+    JsonArray classes = loadJsonCoverageClasses(coverageMetadataFile);
+
+    // Partial coverage: only Foo class.
+    Assert.assertEquals(1, classes.size());
+    Collection<? extends String> actualClassNames = collectClassNames(classes);
+    Set<String> expectedClassNames =
+        Sets.newHashSet(getClassNameForJson(testPackageName + ".foo.Foo"));
+    Assert.assertTrue(actualClassNames.containsAll(expectedClassNames));
+  }
+
+  @Test
+  public void testIncludeExclude() throws Exception {
+    String testPackageName = getTestPackageName("test003");
+    JackBasedToolchain toolchain = createJackToolchain();
+    File coverageMetadataFile = CoverageToolchainBuilder.create(toolchain)
+        .setIncludeFilter(testPackageName + ".foo.bar.*")
+        .setExcludeFilter(testPackageName + ".foo.*")
+        .build();
+
+    toolchain.srcToExe(AbstractTestTools.createTempDir(), false,
+        getTestRootDir(testPackageName));
+    JsonArray classes = loadJsonCoverageClasses(coverageMetadataFile);
+
+    // No coverage at all
+    Assert.assertEquals(0, classes.size());
+  }
+
+  @Test
+  @KnownIssue(candidate = JillBasedToolchain.class)
+  public void testScope_SourceOnly() throws Exception {
+    String testPackageName = getTestPackageName("test004");
+    JsonArray classes = runTestScope("source", testPackageName);
+
+    Assert.assertEquals(1, classes.size());
+    JsonObject srcClass = getJsonClass(classes,
+        getClassNameForJson(testPackageName + ".src.SrcClass"));
+    Assert.assertNotNull(srcClass);
+    Assert.assertNotNull(srcClass.get("probes").getAsJsonArray());
+  }
+
+  @Test
+  @KnownIssue(candidate = JillBasedToolchain.class)
+  public void testScope_ImportsOnly() throws Exception {
+    String testPackageName = getTestPackageName("test004");
+    JsonArray classes = runTestScope("imports", testPackageName);
+
+    Assert.assertEquals(1, classes.size());
+    JsonObject libClass = getJsonClass(classes,
+        getClassNameForJson(testPackageName + ".lib.LibClass"));
+    Assert.assertNotNull(libClass);
+    Assert.assertNotNull(libClass.get("probes").getAsJsonArray());
+  }
+
+  @Test
+  public void testScope_All() throws Exception {
+    String testPackageName = getTestPackageName("test004");
+    JsonArray classes = runTestScope("all", testPackageName);
+
+    Assert.assertEquals(2, classes.size());
+    JsonObject srcClass = getJsonClass(classes,
+        getClassNameForJson(testPackageName + ".src.SrcClass"));
+    Assert.assertNotNull(srcClass);
+    Assert.assertNotNull(srcClass.get("probes").getAsJsonArray());
+    JsonObject libClass = getJsonClass(classes,
+        getClassNameForJson(testPackageName + ".lib.LibClass"));
+    Assert.assertNotNull(libClass);
+    Assert.assertNotNull(libClass.get("probes").getAsJsonArray());
+  }
+
+  private JsonArray runTestScope(@Nonnull String scope, @Nonnull String testPackageName)
+      throws Exception {
+    // Create a lib.
+    JackBasedToolchain toolchain = createJackToolchain();
+    File libDir = AbstractTestTools.createTempDir();
+    File libSrcFiles = new File(getTestRootDir(testPackageName), "lib");
+    toolchain.srcToLib(libDir, false, libSrcFiles);
+
+    // Compile sources and the lib with coverage.
+    toolchain = createJackToolchain();
+    toolchain.addStaticLibs(libDir);
+    File coverageMetadataFile = CoverageToolchainBuilder.create(toolchain)
+        .setScope(scope)
+        .build();
+    File srcFiles = new File(getTestRootDir(testPackageName), "src");
+    File outDexFolder = AbstractTestTools.createTempDir();
+    toolchain.srcToExe(outDexFolder, false, srcFiles);
+
+    return loadJsonCoverageClasses(coverageMetadataFile);
+  }
+
+  @Test
+  public void testImportLibrary_NoPredexing() throws Exception {
+    runTestImportLibrary(false);
+  }
+
+  @Test
+  public void testImportLibrary_WithPredexing() throws Exception {
+    runTestImportLibrary(true);
+  }
+
+  private void runTestImportLibrary(boolean withPredexing) throws Exception {
+    String testPackageName = getTestPackageName("test004");
+
+    // 1 - Create a lib (with or without predexing)
+    JackBasedToolchain toolchain = createJackToolchain();
+    toolchain.addProperty("jack.library.dex", Boolean.toString(withPredexing));
+    File libDir = AbstractTestTools.createTempFile("lib", toolchain.getLibraryExtension());
+    File libSrcFiles = new File(getTestRootDir(testPackageName), "lib");
+    toolchain.srcToLib(libDir, true, libSrcFiles);
+
+    // 2 - Compile the lib with coverage.
+    toolchain = createJackToolchain();
+    toolchain.addStaticLibs(libDir);
+    File coverageMetadataFile = CoverageToolchainBuilder.create(toolchain).build();
+    File srcFiles = new File(getTestRootDir(testPackageName), "src");
+    File outDexFolder = AbstractTestTools.createTempDir();
+    toolchain.srcToExe(outDexFolder, false, srcFiles);
+
+    // 3 - Check types from the lib are instrumented.
+    JsonArray classes = loadJsonCoverageClasses(coverageMetadataFile);
+    Assert.assertEquals(2, classes.size());
+    checkClassIsInstrumented(testPackageName + ".src.SrcClass", classes);
+    checkClassIsInstrumented(testPackageName + ".lib.LibClass", classes);
+  }
+
+  private void checkClassIsInstrumented(@Nonnull String classFqName, @Nonnull JsonArray classes) {
+    JsonObject testClass = getJsonClass(classes, getClassNameForJson(classFqName));
+    Assert.assertNotNull(testClass);
+    JsonArray probesArray = testClass.get("probes").getAsJsonArray();
+    Assert.assertNotNull(probesArray);
+    Assert.assertTrue(probesArray.size() > 0);
+
+  }
+
+  @Test
+  @KnownIssue  // flaky due to non-determinism
+  public void testClassId_005() throws Exception {
+    String testPackageName = getTestPackageName("test005");
+    File testRootDir = getTestRootDir(testPackageName);
+    final String className = getClassNameForJson(testPackageName + ".jack.LibClass");
+
+    long classIdOne;
+    long classIdTwo;
+    long classIdThree;
+    JackBasedToolchain toolchain;
+
+    // Compile with coverage only
+    {
+      toolchain = createJackToolchain();
+      File coverageFileOne = CoverageToolchainBuilder.create(toolchain).build();
+      File outDexFolderOne = AbstractTestTools.createTempDir();
+      toolchain.srcToExe(outDexFolderOne, false, testRootDir);
+      classIdOne = getClassIdOf(coverageFileOne, className);
+    }
+
+    // Compile with coverage only again into a different coverage file.
+    {
+      toolchain = createJackToolchain();
+      File coverageFileTwo = CoverageToolchainBuilder.create(toolchain).build();
+      File outDexFolderTwo = AbstractTestTools.createTempDir();
+      toolchain.srcToExe(outDexFolderTwo, false, testRootDir);
+      classIdTwo = getClassIdOf(coverageFileTwo, className);
+    }
+
+    // Compile with coverage *and* proguard to shrink LibClass so it loses its unusedMethod.
+    {
+      toolchain = createJackToolchain();
+      File coverageFileThree = CoverageToolchainBuilder.create(toolchain).build();
+      File proguardFile = new File(testRootDir, "proguard.flags");
+      toolchain.addProguardFlags(proguardFile);
+      File outDexFolderThree = AbstractTestTools.createTempDir();
+      toolchain.srcToExe(outDexFolderThree, false, testRootDir);
+      classIdThree = getClassIdOf(coverageFileThree, className);
+    }
+
+    // We should generate the same class ID for the same class.
+    Assert.assertEquals("Expected same class IDs", classIdOne, classIdTwo);
+
+    // We should generate different class IDs when they are different (after shrinking here).
+    assertNotEquals("Expected different class IDs", classIdOne, classIdThree);
+  }
+
+  @Test
+  public void testClassId_006() throws Exception {
+    String testPackageNameV1 = getTestPackageName("test006_v1");
+    File testRootDirV1 = getTestRootDir(testPackageNameV1);
+
+    String testPackageNameV2 = getTestPackageName("test006_v2");
+    File testRootDirV2 = getTestRootDir(testPackageNameV2);
+
+    final String className = getClassNameForJson("jack.SrcClass");
+    long classIdV1;
+    long classIdV2;
+    long classIdV2_2;
+    JackBasedToolchain toolchain;
+
+    // Compile with coverage the version v1
+    {
+      toolchain = createJackToolchain();
+      File coverageFileOne = CoverageToolchainBuilder.create(toolchain).build();
+      File outDexFolderOne = AbstractTestTools.createTempDir();
+      toolchain.srcToExe(outDexFolderOne, false, testRootDirV1);
+      classIdV1 = getClassIdOf(coverageFileOne, className);
+    }
+
+    // Compile with coverage the version v2
+    {
+      toolchain = createJackToolchain();
+      File coverageFileTwo = CoverageToolchainBuilder.create(toolchain).build();
+      File outDexFolderTwo = AbstractTestTools.createTempDir();
+      toolchain.srcToExe(outDexFolderTwo, false, testRootDirV2);
+      classIdV2 = getClassIdOf(coverageFileTwo, className);
+    }
+
+    // Compile with coverage the version v2 again
+    {
+      toolchain = createJackToolchain();
+      File coverageFileThree = CoverageToolchainBuilder.create(toolchain).build();
+      File outDexFolderThree = AbstractTestTools.createTempDir();
+      toolchain.srcToExe(outDexFolderThree, false, testRootDirV2);
+      classIdV2_2 = getClassIdOf(coverageFileThree, className);
+    }
+
+    // We should generate different class IDs when they are different (after shrinking here).
+    assertNotEquals("Expected different class IDs", classIdV1, classIdV2);
+
+    assertEquals("Expected different class IDs", classIdV2, classIdV2_2);
+  }
+
+  @Test
+  public void testThrowClass_007() throws Exception {
+    final String testPackageName = getTestPackageName("test007");
+    JackBasedToolchain toolchain = createJackToolchain();
+    File coverageMetadataFile = CoverageToolchainBuilder.create(toolchain).build();
+
+    toolchain.srcToExe(AbstractTestTools.createTempDir(), false, getTestRootDir(testPackageName));
+    JsonArray classes = loadJsonCoverageClasses(coverageMetadataFile);
+
+    // We expect only one class
+    Assert.assertNotNull(classes);
+    Assert.assertEquals(1, classes.size());
+    JsonObject testClass = classes.get(0).getAsJsonObject();
+    Assert.assertNotNull(testClass);
+    Assert.assertEquals(
+        getClassNameForJson(testPackageName + ".ThrowClass"),
+        getClassName(testClass));
+
+    // Check its methods.
+    JsonArray methods = testClass.get("methods").getAsJsonArray();
+    Assert.assertEquals(4, methods.size());
+
+    Set<NameAndDesc> expectedMethods = new HashSet<NameAndDesc>();
+    expectedMethods.add(new NameAndDesc(NamingTools.INIT_NAME, "()V"));
+    expectedMethods.add(new NameAndDesc("throwNPE", "(Z)V"));
+    expectedMethods.add(new NameAndDesc("tryCatchNPE", "()V"));
+    expectedMethods.add(new NameAndDesc("emptyMethod", "()V"));
+    for (JsonElement methodElt : methods) {
+      String name = methodElt.getAsJsonObject().get("name").getAsString();
+      String desc = methodElt.getAsJsonObject().get("desc").getAsString();
+      Assert.assertTrue(expectedMethods.contains(new NameAndDesc(name, desc)));
+    }
+  }
+
+  static class NameAndDesc {
+    @Nonnull public final String name;
+    @Nonnull public final String desc;
+
+    public NameAndDesc(@Nonnull String name, @Nonnull String desc) {
+      this.name = name;
+      this.desc = desc;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+      if (obj instanceof NameAndDesc) {
+        NameAndDesc other = (NameAndDesc) obj;
+        return name.equals(other.name) && desc.equals(other.desc);
+      } else {
+        return false;
+      }
+    }
+
+    @Override
+    public int hashCode() {
+      String concat = name + desc;
+      return concat.hashCode();
+    }
+  }
+}
diff --git a/jack-coverage/plugin/tests/com/android/jack/coverage/CoverageToolchainBuilder.java b/jack-coverage/plugin/tests/com/android/jack/coverage/CoverageToolchainBuilder.java
new file mode 100644
index 0000000..5d8efbf
--- /dev/null
+++ b/jack-coverage/plugin/tests/com/android/jack/coverage/CoverageToolchainBuilder.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.coverage;
+
+import com.android.jack.test.TestsProperties;
+import com.android.jack.test.toolchain.AbstractTestTools;
+import com.android.jack.test.toolchain.JackApiV03Toolchain;
+import com.android.jack.test.toolchain.JackApiV04Toolchain;
+import com.android.jack.test.toolchain.JackBasedToolchain;
+import com.android.jack.test.toolchain.JackCliToolchain;
+import com.android.sched.util.file.CannotChangePermissionException;
+import com.android.sched.util.file.CannotCreateFileException;
+
+import java.io.File;
+import java.util.Collections;
+import java.util.List;
+
+import javax.annotation.Nonnull;
+
+/**
+ * A class to set up a {@link JackBasedToolchain} with code coverage.
+ */
+public class CoverageToolchainBuilder<T extends JackBasedToolchain> {
+  @Nonnull
+  private static final String COVERAGE_PLUGIN_NAME = "com.android.jack.coverage.CodeCoverage";
+
+  @Nonnull
+  private static final String JACOCO_RUNTIME_PACKAGE = "org.jacoco.agent.rt.internal_04864a1";
+
+  @Nonnull
+  private final T toolchain;
+
+  private CoverageToolchainBuilder(@Nonnull T toolchain) {
+    this.toolchain = toolchain;
+  }
+
+  /**
+   * Creates a {@link CoverageToolchainBuilder} for the given {@code toolchain}.
+   *
+   * @param toolchain the toolchain to configure for code coverage.
+   * @return a new builder instance
+   */
+  public static <T extends JackBasedToolchain> CoverageToolchainBuilder<T> create(
+      @Nonnull T toolchain) {
+    return new CoverageToolchainBuilder<T>(toolchain);
+  }
+
+  /**
+   * Sets coverage include filter.
+   *
+   * @param includeFilter a non-null include filter string
+   * @return this instance
+   */
+  @Nonnull
+  public CoverageToolchainBuilder<T> setIncludeFilter(@Nonnull String includeFilter) {
+    toolchain.addProperty("jack.coverage.jacoco.include", includeFilter);
+    return this;
+  }
+
+  /**
+   * Sets coverage exclude filter.
+   *
+   * @param excludeFilter a non-null exclude filter string
+   * @return this instance
+   */
+  @Nonnull
+  public CoverageToolchainBuilder<T> setExcludeFilter(@Nonnull String excludeFilter) {
+    toolchain.addProperty("jack.coverage.jacoco.exclude", excludeFilter);
+    return this;
+  }
+
+  /**
+   * Sets coverage scope.
+   *
+   * @param scope the scope of coverage instrumentation (passed through property).
+   * @return this instance
+   */
+  @Nonnull
+  public CoverageToolchainBuilder<T> setScope(@Nonnull String scope) {
+    toolchain.addProperty("jack.coverage.jacoco.scope", scope);
+    return this;
+  }
+
+  /**
+   * Applies code coverage configuration to the toolchain. It returns the coverage metadata file
+   * that will be produced by the compilation.
+   *
+   * This file is a temporary file that will be automatically deleted after the test.
+   *
+   * @return the coverage metadata file
+   */
+  @Nonnull
+  public File build() throws Exception {
+    // Enable code coverage
+    toolchain.addProperty("jack.coverage", "true");
+
+    // Set output metadata file
+    File coverageMetadataFile = createTempCoverageMetadataFile();
+    toolchain.addProperty("jack.coverage.metadata.file", coverageMetadataFile.getAbsolutePath());
+
+    // Set up jacoco library
+    toolchain.addProperty("jack.coverage.jacoco.package", JACOCO_RUNTIME_PACKAGE);
+    toolchain.addToClasspath(getJacocoAgentLib());
+
+    // Enable coverage plugin
+    File pluginFile = getCodeCoveragePluginFile();
+    List<File> pluginPath = Collections.singletonList(pluginFile);
+    List<String> pluginNames = Collections.singletonList(COVERAGE_PLUGIN_NAME);
+    if (toolchain instanceof JackCliToolchain) {
+      JackCliToolchain cliToolchain = (JackCliToolchain) toolchain;
+      cliToolchain.setPluginPath(pluginPath);
+      cliToolchain.setPluginNames(pluginNames);
+    } else {
+      // TODO: need to rework API toolchain hierarchy in test framework to avoid these if/else.
+      if (toolchain instanceof JackApiV03Toolchain) {
+        JackApiV03Toolchain jackApiV03 = (JackApiV03Toolchain) toolchain;
+        jackApiV03.setPluginPath(pluginPath);
+        jackApiV03.setPluginNames(pluginNames);
+      } else if (toolchain instanceof JackApiV04Toolchain) {
+        JackApiV04Toolchain jackApiV04 = (JackApiV04Toolchain) toolchain;
+        jackApiV04.setPluginPath(pluginPath);
+        jackApiV04.setPluginNames(pluginNames);
+      } else {
+        throw new AssertionError("Unsupported toolchain: " + toolchain.getClass().getName());
+      }
+    }
+    return coverageMetadataFile;
+  }
+
+  @Nonnull
+  private static File createTempCoverageMetadataFile()
+      throws CannotCreateFileException, CannotChangePermissionException {
+    return AbstractTestTools.createTempFile("coverage", ".metadata");
+  }
+
+  @Nonnull
+  private static File getJacocoAgentLib() {
+    return new File(TestsProperties.getJackRootDir(),
+        "jacoco/org.jacoco.agent.rt-0.7.5.201505241946-all.jar");
+  }
+
+  @Nonnull
+  private static File getCodeCoveragePluginFile() {
+    return new File(TestsProperties.getJackRootDir(),
+        "jack-coverage/dist/jack-coverage-plugin.jar");
+  }
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-coverage/plugin/tests/com/android/jack/coverage/java8/test001/Foo.java
similarity index 70%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-coverage/plugin/tests/com/android/jack/coverage/java8/test001/Foo.java
index 0b9fd92..8293d32 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-coverage/plugin/tests/com/android/jack/coverage/java8/test001/Foo.java
@@ -14,7 +14,17 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.coverage.java8.test001;
 
-public interface Interface {}
+public class Foo {
+  public static int getInt(SAM s) {
+    return s.getInt();
+  }
 
+  public static void printInt() {
+    int i = getInt(() -> {
+      return 5;
+    });
+    System.out.println(i);
+  }
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-coverage/plugin/tests/com/android/jack/coverage/java8/test001/SAM.java
similarity index 85%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-coverage/plugin/tests/com/android/jack/coverage/java8/test001/SAM.java
index 0b9fd92..a57a962 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-coverage/plugin/tests/com/android/jack/coverage/java8/test001/SAM.java
@@ -14,7 +14,8 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.coverage.java8.test001;
 
-public interface Interface {}
-
+public interface SAM {
+  public int getInt();
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-coverage/plugin/tests/com/android/jack/coverage/java8/test002/Foo.java
similarity index 78%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-coverage/plugin/tests/com/android/jack/coverage/java8/test002/Foo.java
index 0b9fd92..963205d 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-coverage/plugin/tests/com/android/jack/coverage/java8/test002/Foo.java
@@ -14,7 +14,11 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.coverage.java8.test002;
 
-public interface Interface {}
-
+public class Foo implements SAM {
+  @Override
+  public int defaultMethod() {
+    return Integer.MAX_VALUE;
+  }
+}
\ No newline at end of file
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-coverage/plugin/tests/com/android/jack/coverage/java8/test002/SAM.java
similarity index 73%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-coverage/plugin/tests/com/android/jack/coverage/java8/test002/SAM.java
index 0b9fd92..49ffdb6 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-coverage/plugin/tests/com/android/jack/coverage/java8/test002/SAM.java
@@ -14,7 +14,14 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.coverage.java8.test002;
 
-public interface Interface {}
+public interface SAM {
+  public static int staticMethod() {
+    return Integer.MIN_VALUE;
+  }
 
+  default public int defaultMethod() {
+    return staticMethod();
+  }
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-coverage/plugin/tests/com/android/jack/coverage/shrob/test001/Bar.java
similarity index 88%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-coverage/plugin/tests/com/android/jack/coverage/shrob/test001/Bar.java
index 0b9fd92..e4edcaa 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-coverage/plugin/tests/com/android/jack/coverage/shrob/test001/Bar.java
@@ -14,7 +14,8 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.coverage.shrob.test001;
 
-public interface Interface {}
+public class Bar {
 
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-coverage/plugin/tests/com/android/jack/coverage/shrob/test001/Foo.java
similarity index 88%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-coverage/plugin/tests/com/android/jack/coverage/shrob/test001/Foo.java
index 0b9fd92..75f8de2 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-coverage/plugin/tests/com/android/jack/coverage/shrob/test001/Foo.java
@@ -14,7 +14,8 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.coverage.shrob.test001;
 
-public interface Interface {}
+public class Foo {
 
+}
diff --git a/jack-coverage/plugin/tests/com/android/jack/coverage/shrob/test001/proguard.flags b/jack-coverage/plugin/tests/com/android/jack/coverage/shrob/test001/proguard.flags
new file mode 100644
index 0000000..c370eb5
--- /dev/null
+++ b/jack-coverage/plugin/tests/com/android/jack/coverage/shrob/test001/proguard.flags
@@ -0,0 +1,2 @@
+-keep public class com.android.jack.coverage.shrob.test001.Foo
+-dontobfuscate
\ No newline at end of file
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-coverage/plugin/tests/com/android/jack/coverage/shrob/test002/Foo.java
similarity index 88%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-coverage/plugin/tests/com/android/jack/coverage/shrob/test002/Foo.java
index 0b9fd92..c5dd549 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-coverage/plugin/tests/com/android/jack/coverage/shrob/test002/Foo.java
@@ -14,7 +14,8 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.coverage.shrob.test002;
 
-public interface Interface {}
+public class Foo {
 
+}
diff --git a/jack-coverage/plugin/tests/com/android/jack/coverage/shrob/test002/proguard.flags b/jack-coverage/plugin/tests/com/android/jack/coverage/shrob/test002/proguard.flags
new file mode 100644
index 0000000..e02614c
--- /dev/null
+++ b/jack-coverage/plugin/tests/com/android/jack/coverage/shrob/test002/proguard.flags
@@ -0,0 +1 @@
+-dontshrink
\ No newline at end of file
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-coverage/plugin/tests/com/android/jack/coverage/shrob/test002/sub/Bar.java
similarity index 88%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-coverage/plugin/tests/com/android/jack/coverage/shrob/test002/sub/Bar.java
index 0b9fd92..590f8d3 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-coverage/plugin/tests/com/android/jack/coverage/shrob/test002/sub/Bar.java
@@ -14,7 +14,8 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.coverage.shrob.test002.sub;
 
-public interface Interface {}
+public class Bar {
 
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test001/AbstractClass.java b/jack-coverage/plugin/tests/com/android/jack/coverage/test001/AbstractClass.java
similarity index 100%
rename from jack-coverage/tests/com/android/jack/coverage/test001/AbstractClass.java
rename to jack-coverage/plugin/tests/com/android/jack/coverage/test001/AbstractClass.java
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-coverage/plugin/tests/com/android/jack/coverage/test002/EmptyInterface.java
similarity index 94%
rename from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
rename to jack-coverage/plugin/tests/com/android/jack/coverage/test002/EmptyInterface.java
index 0b9fd92..9109434 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-coverage/plugin/tests/com/android/jack/coverage/test002/EmptyInterface.java
@@ -16,5 +16,5 @@
 
 package com.android.jack.coverage.test002;
 
-public interface Interface {}
+public interface EmptyInterface {}
 
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-coverage/plugin/tests/com/android/jack/coverage/test002/InterfaceWithInit.java
similarity index 87%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-coverage/plugin/tests/com/android/jack/coverage/test002/InterfaceWithInit.java
index 0b9fd92..2c19764 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-coverage/plugin/tests/com/android/jack/coverage/test002/InterfaceWithInit.java
@@ -16,5 +16,7 @@
 
 package com.android.jack.coverage.test002;
 
-public interface Interface {}
+public interface InterfaceWithInit {
+  public static final Object obj = new Object();
+}
 
diff --git a/jack-coverage/tests/com/android/jack/coverage/test003/foo/Foo.java b/jack-coverage/plugin/tests/com/android/jack/coverage/test003/foo/Foo.java
similarity index 100%
rename from jack-coverage/tests/com/android/jack/coverage/test003/foo/Foo.java
rename to jack-coverage/plugin/tests/com/android/jack/coverage/test003/foo/Foo.java
diff --git a/jack-coverage/tests/com/android/jack/coverage/test003/foo/bar/Bar.java b/jack-coverage/plugin/tests/com/android/jack/coverage/test003/foo/bar/Bar.java
similarity index 100%
rename from jack-coverage/tests/com/android/jack/coverage/test003/foo/bar/Bar.java
rename to jack-coverage/plugin/tests/com/android/jack/coverage/test003/foo/bar/Bar.java
diff --git a/jack-coverage/tests/com/android/jack/coverage/test004/lib/LibClass.java b/jack-coverage/plugin/tests/com/android/jack/coverage/test004/lib/LibClass.java
similarity index 100%
rename from jack-coverage/tests/com/android/jack/coverage/test004/lib/LibClass.java
rename to jack-coverage/plugin/tests/com/android/jack/coverage/test004/lib/LibClass.java
diff --git a/jack-coverage/tests/com/android/jack/coverage/test004/src/SrcClass.java b/jack-coverage/plugin/tests/com/android/jack/coverage/test004/src/SrcClass.java
similarity index 100%
rename from jack-coverage/tests/com/android/jack/coverage/test004/src/SrcClass.java
rename to jack-coverage/plugin/tests/com/android/jack/coverage/test004/src/SrcClass.java
diff --git a/jack-coverage/tests/com/android/jack/coverage/test005/jack/LibClass.java b/jack-coverage/plugin/tests/com/android/jack/coverage/test005/jack/LibClass.java
similarity index 100%
rename from jack-coverage/tests/com/android/jack/coverage/test005/jack/LibClass.java
rename to jack-coverage/plugin/tests/com/android/jack/coverage/test005/jack/LibClass.java
diff --git a/jack-coverage/tests/com/android/jack/coverage/test005/jack/SrcClass.java b/jack-coverage/plugin/tests/com/android/jack/coverage/test005/jack/SrcClass.java
similarity index 100%
rename from jack-coverage/tests/com/android/jack/coverage/test005/jack/SrcClass.java
rename to jack-coverage/plugin/tests/com/android/jack/coverage/test005/jack/SrcClass.java
diff --git a/jack-coverage/tests/com/android/jack/coverage/test005/proguard.flags b/jack-coverage/plugin/tests/com/android/jack/coverage/test005/proguard.flags
similarity index 100%
rename from jack-coverage/tests/com/android/jack/coverage/test005/proguard.flags
rename to jack-coverage/plugin/tests/com/android/jack/coverage/test005/proguard.flags
diff --git a/jack-coverage/tests/com/android/jack/coverage/test006_v1/jack/SrcClass.java b/jack-coverage/plugin/tests/com/android/jack/coverage/test006_v1/jack/SrcClass.java
similarity index 100%
rename from jack-coverage/tests/com/android/jack/coverage/test006_v1/jack/SrcClass.java
rename to jack-coverage/plugin/tests/com/android/jack/coverage/test006_v1/jack/SrcClass.java
diff --git a/jack-coverage/tests/com/android/jack/coverage/test006_v2/jack/SrcClass.java b/jack-coverage/plugin/tests/com/android/jack/coverage/test006_v2/jack/SrcClass.java
similarity index 100%
rename from jack-coverage/tests/com/android/jack/coverage/test006_v2/jack/SrcClass.java
rename to jack-coverage/plugin/tests/com/android/jack/coverage/test006_v2/jack/SrcClass.java
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-coverage/plugin/tests/com/android/jack/coverage/test007/ThrowClass.java
similarity index 62%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-coverage/plugin/tests/com/android/jack/coverage/test007/ThrowClass.java
index 0b9fd92..0fb8152 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-coverage/plugin/tests/com/android/jack/coverage/test007/ThrowClass.java
@@ -14,7 +14,24 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.coverage.test007;
 
-public interface Interface {}
+public class ThrowClass {
+  public static void throwNPE(boolean condition) {
+    if (condition) {
+      throw new NullPointerException();
+    }
+  }
+
+  public static void tryCatchNPE() {
+    try {
+      throwNPE(true);
+    } catch (NullPointerException e) {
+      emptyMethod();
+    }
+  }
+
+  public static void emptyMethod() {
+  }
+}
 
diff --git a/jack-jacoco-reporter/.checkstyle b/jack-coverage/reporter/.checkstyle
similarity index 100%
rename from jack-jacoco-reporter/.checkstyle
rename to jack-coverage/reporter/.checkstyle
diff --git a/jack-jacoco-reporter/.classpath b/jack-coverage/reporter/.classpath
similarity index 74%
rename from jack-jacoco-reporter/.classpath
rename to jack-coverage/reporter/.classpath
index 8554fba..73c2dbb 100644
--- a/jack-jacoco-reporter/.classpath
+++ b/jack-coverage/reporter/.classpath
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="tests"/>
 	<classpathentry kind="lib" path="libs/args4j-lib.jar"/>
 	<classpathentry kind="lib" path="libs/jsr305-lib.jar"/>
 	<classpathentry kind="lib" path="libs/gson.jar"/>
@@ -9,5 +10,11 @@
 	<classpathentry kind="lib" path="libs/asm4-lib.jar"/>
 	<classpathentry kind="lib" path="libs/sched-lib.jar"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+	<classpathentry kind="src" path=".apt_generated">
+		<attributes>
+			<attribute name="optional" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="lib" path="libs/junit4.jar"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/jack-jacoco-reporter/.project b/jack-coverage/reporter/.project
similarity index 100%
rename from jack-jacoco-reporter/.project
rename to jack-coverage/reporter/.project
diff --git a/jack-coverage/.settings/edu.umd.cs.findbugs.core.prefs b/jack-coverage/reporter/.settings/edu.umd.cs.findbugs.core.prefs
similarity index 100%
copy from jack-coverage/.settings/edu.umd.cs.findbugs.core.prefs
copy to jack-coverage/reporter/.settings/edu.umd.cs.findbugs.core.prefs
diff --git a/jack-coverage/.settings/org.eclipse.core.resources.prefs b/jack-coverage/reporter/.settings/org.eclipse.core.resources.prefs
similarity index 100%
copy from jack-coverage/.settings/org.eclipse.core.resources.prefs
copy to jack-coverage/reporter/.settings/org.eclipse.core.resources.prefs
diff --git a/jack-coverage/reporter/.settings/org.eclipse.jdt.core.prefs b/jack-coverage/reporter/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..8e20aec
--- /dev/null
+++ b/jack-coverage/reporter/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,431 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=javax.annotation.Nonnull
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nullable=javax.annotation.CheckForNull
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=ignore
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=warning
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=error
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=error
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=ignore
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.processAnnotations=enabled
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=1585
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field.count_dependent=1585|-1|1585
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable=1585
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable.count_dependent=1585|-1|1585
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method=1585
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method.count_dependent=1585|-1|1585
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package=1585
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package.count_dependent=1585|-1|1585
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter=1040
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter.count_dependent=1040|-1|1040
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type=1585
+org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type.count_dependent=1585|-1|1585
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression.count_dependent=16|5|80
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation.count_dependent=16|-1|16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant.count_dependent=16|-1|16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call.count_dependent=16|5|80
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation.count_dependent=16|5|80
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression.count_dependent=16|4|80
+org.eclipse.jdt.core.formatter.alignment_for_assignment=16
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression.count_dependent=16|-1|16
+org.eclipse.jdt.core.formatter.alignment_for_cascading_method_invocation_with_arguments=16
+org.eclipse.jdt.core.formatter.alignment_for_cascading_method_invocation_with_arguments.count_dependent=16|-1|16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants.count_dependent=16|5|48
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer.count_dependent=16|5|80
+org.eclipse.jdt.core.formatter.alignment_for_field_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_for_statement=16
+org.eclipse.jdt.core.formatter.alignment_for_generic_type_arguments=16
+org.eclipse.jdt.core.formatter.alignment_for_generic_type_arguments.count_dependent=16|-1|16
+org.eclipse.jdt.core.formatter.alignment_for_local_variable_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields.count_dependent=16|-1|16
+org.eclipse.jdt.core.formatter.alignment_for_new_anonymous_class=20
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration.count_dependent=16|5|80
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration.count_dependent=16|5|80
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation.count_dependent=16|4|48
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration.count_dependent=16|4|49
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration.count_dependent=16|4|48
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration.count_dependent=16|4|48
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration.count_dependent=16|4|48
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=0
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=0
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=2
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=100
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.comment_new_line_at_start_of_html_paragraph=true
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.force_if_else_statement_brace=true
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comment_prefix=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=100
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=3
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
+org.eclipse.jdt.core.formatter.tabulation.char=space
+org.eclipse.jdt.core.formatter.tabulation.size=2
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_comment_inline_tags=false
+org.eclipse.jdt.core.formatter.wrap_non_simple_local_variable_annotation=true
+org.eclipse.jdt.core.formatter.wrap_non_simple_member_annotation=true
+org.eclipse.jdt.core.formatter.wrap_non_simple_package_annotation=true
+org.eclipse.jdt.core.formatter.wrap_non_simple_parameter_annotation=false
+org.eclipse.jdt.core.formatter.wrap_non_simple_type_annotation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.formatter.wrap_prefer_two_fragments=false
diff --git a/jack-coverage/reporter/.settings/org.eclipse.jdt.ui.prefs b/jack-coverage/reporter/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..7ecabe3
--- /dev/null
+++ b/jack-coverage/reporter/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,64 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=false
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=true
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_type_arguments=false
+cleanup_profile=_Reporter
+cleanup_settings_version=2
+eclipse.preferences.version=1
+formatter_profile=_Reporter format 100
+formatter_settings_version=12
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*\n * Copyright (C) ${year} The Android Open Source Project\n *\n * Licensed under the Apache License, Version 2.0 (the "License");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http\://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an "AS IS" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment"/><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/jack-jacoco-reporter/etc/manifest.txt b/jack-coverage/reporter/etc/manifest.txt
similarity index 100%
rename from jack-jacoco-reporter/etc/manifest.txt
rename to jack-coverage/reporter/etc/manifest.txt
diff --git a/jack-jacoco-reporter/jackstyle.xml b/jack-coverage/reporter/jackstyle.xml
similarity index 100%
rename from jack-jacoco-reporter/jackstyle.xml
rename to jack-coverage/reporter/jackstyle.xml
diff --git a/jack-coverage/reporter/src/com/android/jack/tools/jacoco/Constants.java b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/Constants.java
new file mode 100644
index 0000000..5bc91cf
--- /dev/null
+++ b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/Constants.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.tools.jacoco;
+
+import javax.annotation.Nonnegative;
+import javax.annotation.Nonnull;
+
+/**
+ * Defines constants for the reporter.
+ */
+public interface Constants {
+  /**
+   * The default report name.
+   */
+  @Nonnull
+  public static final String DEFAULT_REPORT_NAME = "Report";
+
+  /**
+   * The default report type.
+   */
+  @Nonnull
+  public static final ReportType DEFAULT_REPORT_TYPE = ReportType.HTML;
+
+  /**
+   * The default output encoding.
+   */
+  @Nonnull
+  public static final String DEFAULT_OUTPUT_ENCODING = "UTF-8";
+
+  /**
+   * The default input encoding of source files.
+   */
+  @Nonnull
+  public static final String DEFAULT_INPUT_ENCODING = "UTF-8";
+
+  /**
+   * The default tab width.
+   */
+  @Nonnegative
+  public static final int DEFAULT_TAB_WIDTH = 4;
+}
diff --git a/jack-coverage/reporter/src/com/android/jack/tools/jacoco/ExitStatus.java b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/ExitStatus.java
new file mode 100644
index 0000000..977202d
--- /dev/null
+++ b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/ExitStatus.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.tools.jacoco;
+
+import javax.annotation.Nonnegative;
+
+/**
+ * An enumeration of possible exit status returned by the reporter.
+ */
+public enum ExitStatus {
+  /**
+   * Successful execution without any error.
+   */
+  SUCCESS(0),
+
+  /**
+   * Usage error from the user (incorrect argument, missing file, ...).
+   */
+  USAGE_ERROR(1),
+
+  /**
+   * Internal error.
+   */
+  INTERNAL_ERROR(2);
+
+  @Nonnegative
+  private final int exitStatusCode;
+
+  private ExitStatus(@Nonnegative int exitStatusCode) {
+    assert exitStatusCode > 0;
+    this.exitStatusCode = exitStatusCode;
+  }
+
+  /**
+   * Returns the exit status code used in {@link System#exit(int)}.
+   *
+   * @return the exit status code.
+   */
+  @Nonnegative
+  public int getExitStatus() {
+    return exitStatusCode;
+  }
+}
+
diff --git a/jack-coverage/reporter/src/com/android/jack/tools/jacoco/JackCoverageAnalyzer.java b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/JackCoverageAnalyzer.java
new file mode 100644
index 0000000..f18377b
--- /dev/null
+++ b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/JackCoverageAnalyzer.java
@@ -0,0 +1,425 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.tools.jacoco;
+
+import com.google.gson.JsonParseException;
+import com.google.gson.stream.JsonReader;
+
+import org.jacoco.core.analysis.IClassCoverage;
+import org.jacoco.core.analysis.ICounter;
+import org.jacoco.core.analysis.ICoverageVisitor;
+import org.jacoco.core.analysis.IMethodCoverage;
+import org.jacoco.core.data.ExecutionData;
+import org.jacoco.core.data.ExecutionDataStore;
+import org.jacoco.core.internal.analysis.ClassCoverageImpl;
+import org.jacoco.core.internal.analysis.CounterImpl;
+import org.jacoco.core.internal.analysis.MethodCoverageImpl;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Pattern;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnegative;
+import javax.annotation.Nonnull;
+
+/**
+ * Code coverage report analyzer.
+ */
+public class JackCoverageAnalyzer {
+  @Nonnull
+  public static final String CURRENT_VERSION = "1.0";
+
+  @Nonnull
+  public static final String JSON_VERSION_ATTRIBUTE = "version";
+
+  @Nonnull
+  public static final String JSON_DATA_ATTRIBUTE = "data";
+
+  @Nonnull
+  private final ExecutionDataStore executionDataStore;
+
+  @Nonnull
+  private final ICoverageVisitor coverageVisitor;
+
+  @CheckForNull
+  private final MappingFileLoader mappingFileLoader;
+
+  @CheckForNull
+  private MappingFileLoader.ClassMapping currentClassMapping = null;
+
+  /**
+   * Count the real number of probes in the code, taking shrinking into account.
+   */
+  @Nonnegative
+  private int currentClassProbesCount;
+
+  /**
+   * Constructs a {@link JackCoverageAnalyzer}.
+   *
+   * @param executionDataStore a {@link ExecutionDataStore} containing runtime coverage information.
+   * @param coverageVisitor a {@link ICoverageVisitor} notified of each coverage element created
+   *        during the analysis.
+   */
+  public JackCoverageAnalyzer(@Nonnull ExecutionDataStore executionDataStore,
+      @Nonnull ICoverageVisitor coverageVisitor,
+      @CheckForNull MappingFileLoader mappingFileLoader) {
+    this.executionDataStore = executionDataStore;
+    this.coverageVisitor = coverageVisitor;
+    this.mappingFileLoader = mappingFileLoader;
+  }
+
+  /**
+   * Analyzes a coverage description file.
+   *
+   * @param coverageDescriptionFile a coverage description file to be analyzed
+   * @throws IOException in case of file error
+   */
+  public void analyze(@Nonnull File coverageDescriptionFile) throws IOException {
+    InputStream inputStream = new FileInputStream(coverageDescriptionFile);
+    try {
+      analyze(inputStream);
+    } finally {
+      inputStream.close();
+    }
+  }
+
+  /**
+   * Analyzes a coverage description input stream.
+   *
+   * @param inputStream a coverage description input stream
+   * @throws IOException in case of read error
+   */
+  public void analyze(@Nonnull InputStream inputStream) throws IOException {
+    JsonReader jsonReader = new JsonReader(new InputStreamReader(inputStream));
+    readMetadata(jsonReader);
+  }
+
+  private void checkVersion(@CheckForNull String version) {
+    if (version == null) {
+      throw new JsonParseException("Missing 'version' attribute before coverage metadadata");
+    }
+    String[] parts = version.split(Pattern.quote("."));
+    if (parts.length != 2) {
+      throw new JsonParseException("Version number format must be x.y");
+    }
+    if (!version.equals(CURRENT_VERSION)) {
+      throw new JsonParseException("Unknown version " + version);
+    }
+  }
+
+  private void readMetadata(@Nonnull JsonReader jsonReader) throws IOException {
+    jsonReader.beginObject();
+
+    String version = null;
+    while (jsonReader.hasNext()) {
+      String attributeName = jsonReader.nextName();
+      if (attributeName.equals(JSON_VERSION_ATTRIBUTE)) {
+        // Reads the version so we can parse the JSON accordingly.
+        version = jsonReader.nextString();
+      } else if (attributeName.equals(JSON_DATA_ATTRIBUTE)) {
+        checkVersion(version);
+        readClasses(jsonReader);
+      } else {
+        jsonReader.skipValue();
+      }
+    }
+
+    jsonReader.endObject();
+  }
+
+  private void readClasses(@Nonnull JsonReader jsonReader) throws IOException {
+    jsonReader.beginArray();
+    while (jsonReader.hasNext()) {
+      IClassCoverage classCoverage = readClass(jsonReader);
+      if (classCoverage != null) {
+        coverageVisitor.visitCoverage(classCoverage);
+      }
+    }
+    jsonReader.endArray();
+  }
+
+  /**
+   * Returns {@link IClassCoverage} object parsed from class information, or null if the class
+   * was shrunk (according to the mapping file).
+   *
+   * @param jsonReader a reader
+   * @return {@link IClassCoverage} instance or null
+   * @throws IOException if an error occurred during file parsing
+   */
+  @CheckForNull
+  private IClassCoverage readClass(@Nonnull JsonReader jsonReader) throws IOException {
+    long id = 0;
+    String className = null;
+    String sourceFile = null;
+    String superClassName = null;
+    List<IMethodCoverage> methods = new ArrayList<IMethodCoverage>();
+    List<ProbeDescription> probes = new ArrayList<ProbeDescription>();
+    List<String> interfaces = new ArrayList<String>();
+
+    currentClassProbesCount = 0;
+
+    jsonReader.beginObject();
+    while (jsonReader.hasNext()) {
+      String attributeName = jsonReader.nextName();
+      if ("id".equals(attributeName)) {
+        id = jsonReader.nextLong();
+      } else if ("name".equals(attributeName)) {
+        className = jsonReader.nextString();
+        if (mappingFileLoader != null) {
+          currentClassMapping = mappingFileLoader.getClassMapping(className);
+        }
+      } else if ("sourceFile".equals(attributeName)) {
+        sourceFile = jsonReader.nextString();
+      } else if ("superClassName".equals(attributeName)) {
+        superClassName = jsonReader.nextString();
+      } else if ("interfaces".equals(attributeName)) {
+        readInterfaces(jsonReader, interfaces);
+      } else if ("methods".equals(attributeName)) {
+        readMethods(jsonReader, methods);
+      } else if ("probes".equals(attributeName)) {
+        readProbes(jsonReader, probes, methods);
+      } else {
+        throw new JsonParseException("Unknown attribute \"" + attributeName + "\"");
+      }
+    }
+    jsonReader.endObject();
+
+    // Check mandatory attributes.
+    if (id == 0) {
+      throw new JsonParseException("Missing 'id' attribute");
+    }
+    if (className == null) {
+      throw new JsonParseException("Missing 'name' attribute");
+    }
+    if (superClassName == null) {
+      throw new JsonParseException("Missing 'superClassName' attribute");
+    }
+
+    final ExecutionData executionData = executionDataStore.get(id);
+    boolean noMatch;
+    if (executionData != null) {
+      noMatch = false;
+      // Check there is no id collision.
+      executionData.assertCompatibility(id, className, currentClassProbesCount);
+    } else {
+      noMatch = executionDataStore.contains(className);
+    }
+
+    // Support shrinking and obfuscation.
+    if (currentClassMapping != null) {
+      className = currentClassMapping.getOriginalClassName();
+      assert className != null;
+    } else if (mappingFileLoader != null) {
+      // We did not find the class in the mapping file: it must have been shrunk so ignore it.
+      return null;
+    }
+
+    // Build the class coverage.
+    String[] interfacesArray = interfaces.toArray(new String[0]);
+    ClassCoverageImpl c = new ClassCoverageImpl(className, id, noMatch,
+        NamingUtils.binaryNameToSignature(className), superClassName, interfacesArray);
+    c.setSourceFileName(sourceFile);
+
+    // Update methods with probes.
+    final boolean[] executionProbes = executionData != null ? executionData.getProbes() : null;
+    for (ProbeDescription probe : probes) {
+      final int probeIndex = probe.id;
+      final boolean active = (executionProbes != null && executionProbes[probeIndex]);
+      final MethodCoverageImpl methodCoverage = probe.method;
+      for (ProbeDescription.Line line : probe.lines) {
+        ICounter instructionCounter;
+        ICounter branchCounter;
+        if (active) {
+          instructionCounter = CounterImpl.getInstance(0, line.instructionsCount);
+          branchCounter = CounterImpl.getInstance(0, line.branchesCount);
+        } else {
+          instructionCounter = CounterImpl.getInstance(line.instructionsCount, 0);
+          branchCounter = CounterImpl.getInstance(line.branchesCount, 0);
+        }
+        methodCoverage.increment(instructionCounter, branchCounter, line.line);
+      }
+    }
+
+    // Now methods have been updated with probes, add them to the class coverage.
+    for (IMethodCoverage method : methods) {
+      c.addMethod(method);
+    }
+
+    return c;
+  }
+
+  private void readInterfaces(@Nonnull JsonReader jsonReader, @Nonnull List<String> interfaces)
+      throws IOException {
+    jsonReader.beginArray();
+    while (jsonReader.hasNext()) {
+      interfaces.add(jsonReader.nextString());
+    }
+    jsonReader.endArray();
+  }
+
+  private void readProbes(@Nonnull JsonReader jsonReader,
+      @Nonnull List<ProbeDescription> probes, @Nonnull List<? extends IMethodCoverage> methods)
+      throws IOException {
+    jsonReader.beginArray();
+    while (jsonReader.hasNext()) {
+      ProbeDescription probe = readProbe(jsonReader, methods);
+      if (probe != null) {
+        probes.add(probe);
+      }
+    }
+    jsonReader.endArray();
+  }
+
+  /**
+   * Returns a {@link ProbeDescription} object representing the probe being parsed, or null if the
+   * method associated with the probe was shrunk.
+   *
+   * @param jsonReader a reader
+   * @param methods the list of methods in the current class
+   * @return a {@link ProbeDescription} instance or null
+   * @throws IOException if an error occurred during file parsing
+   */
+  @CheckForNull
+  private ProbeDescription readProbe(@Nonnull JsonReader jsonReader,
+      @Nonnull List<? extends IMethodCoverage> methods) throws IOException {
+    ++currentClassProbesCount;
+    ProbeDescription probe = new ProbeDescription();
+    jsonReader.beginObject();
+    while (jsonReader.hasNext()) {
+      String attributeName = jsonReader.nextName();
+      if ("id".equals(attributeName)) {
+        probe.setId(jsonReader.nextInt());
+      } else if ("method".equals(attributeName)) {
+        int methodId = jsonReader.nextInt();
+        for (IMethodCoverage mc : methods) {
+          if (((JackMethodCoverage) mc).getId() == methodId) {
+            probe.setMethod((MethodCoverageImpl) mc);
+            break;
+          }
+        }
+      } else if ("lines".equals(attributeName)) {
+        readLines(jsonReader, probe);
+      } else {
+        throw new JsonParseException("Unknown attribute \"" + attributeName + "\"");
+      }
+    }
+    jsonReader.endObject();
+
+    if (probe.method != null) {
+      return probe;
+    } else {
+      // Ignore shrob if there is no matching method (due to shrinking)
+      return null;
+    }
+  }
+
+  private static void readLines(@Nonnull JsonReader jsonReader, @Nonnull ProbeDescription probe)
+      throws IOException {
+    jsonReader.beginArray();
+    while (jsonReader.hasNext()) {
+      jsonReader.beginObject();
+      int line = -1;
+      int instructionsCount = -1;
+      int branchesCount = -1;
+      while (jsonReader.hasNext()) {
+        String attributeName = jsonReader.nextName();
+        if ("line".equals(attributeName)) {
+          line = jsonReader.nextInt();
+        } else if ("insnCount".equals(attributeName)) {
+          instructionsCount = jsonReader.nextInt();
+        } else if ("branchCount".equals(attributeName)) {
+          branchesCount = jsonReader.nextInt();
+        } else {
+          throw new JsonParseException("Unknown attribute \"" + attributeName + "\"");
+        }
+      }
+      probe.addLine(line, instructionsCount, branchesCount);
+      jsonReader.endObject();
+    }
+    jsonReader.endArray();
+  }
+
+  private void readMethods(@Nonnull JsonReader jsonReader,
+      @Nonnull List<IMethodCoverage> methods) throws IOException {
+    jsonReader.beginArray();
+    while (jsonReader.hasNext()) {
+      IMethodCoverage methodCoverage = readMethod(jsonReader);
+      if (methodCoverage != null) {
+        methods.add(methodCoverage);
+      }
+    }
+    jsonReader.endArray();
+  }
+
+  /**
+   * Returns a {@link IMethodCoverage} object representing the method being parsed, or null if this
+   * method was shrunk.
+   *
+   * @param jsonReader a reader
+   * @return a {@link IMethodCoverage} instance or null
+   * @throws IOException if an error occurred during file parsing
+   */
+  @CheckForNull
+  private IMethodCoverage readMethod(@Nonnull JsonReader jsonReader) throws IOException {
+    int id = -1;
+    String name = null;
+    String desc = null;
+    String signature = null;
+
+    jsonReader.beginObject();
+    while (jsonReader.hasNext()) {
+      String attributeName = jsonReader.nextName();
+      if ("id".equals(attributeName)) {
+        id = jsonReader.nextInt();
+      } else if ("name".equals(attributeName)) {
+        name = jsonReader.nextString();
+      } else if ("desc".equals(attributeName)) {
+        desc = jsonReader.nextString();
+      } else if ("signature".equals(attributeName)) {
+        signature = jsonReader.nextString();
+      } else {
+        throw new JsonParseException("Unknown attribute \"" + attributeName + "\"");
+      }
+    }
+    jsonReader.endObject();
+
+    if (currentClassMapping != null) {
+      assert mappingFileLoader != null;
+      // We have a mapping file and the class has not been shrunk. Let's see if this method was
+      // shrunk or obfuscated.
+      String methodSignature = name + desc;
+      String oldMethodSignature = currentClassMapping.getOriginalMethodSignature(methodSignature);
+      if (oldMethodSignature == null) {
+        // No corresponding method: method was shrunk
+        return null;
+      } else {
+        // Method may have been obfuscated.
+        int methodNameEndPos = oldMethodSignature.indexOf('(');
+        assert methodNameEndPos > 0;
+        name = oldMethodSignature.substring(0, methodNameEndPos);
+        desc = oldMethodSignature.substring(methodNameEndPos);
+      }
+    }
+    return new JackMethodCoverage(id, name, desc, signature);
+  }
+}
diff --git a/jack-jacoco-reporter/src/com/android/jack/tools/jacoco/JackMethodCoverage.java b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/JackMethodCoverage.java
similarity index 98%
rename from jack-jacoco-reporter/src/com/android/jack/tools/jacoco/JackMethodCoverage.java
rename to jack-coverage/reporter/src/com/android/jack/tools/jacoco/JackMethodCoverage.java
index b716db9..f13f5e5 100644
--- a/jack-jacoco-reporter/src/com/android/jack/tools/jacoco/JackMethodCoverage.java
+++ b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/JackMethodCoverage.java
@@ -25,6 +25,7 @@
  * Jack specialization of method coverage.
  */
 public class JackMethodCoverage extends MethodCoverageImpl {
+  @Nonnegative
   private final int id;
 
   public JackMethodCoverage(
diff --git a/jack-coverage/reporter/src/com/android/jack/tools/jacoco/Main.java b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/Main.java
new file mode 100644
index 0000000..b61a485
--- /dev/null
+++ b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/Main.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.tools.jacoco;
+
+import com.android.sched.util.Version;
+
+import org.kohsuke.args4j.CmdLineException;
+import org.kohsuke.args4j.CmdLineParser;
+import org.kohsuke.args4j.ParserProperties;
+import org.kohsuke.args4j.spi.OptionHandler;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.Arrays;
+import javax.annotation.Nonnull;
+
+/**
+ * Main class for command-line usage.
+ */
+public class Main {
+  /**
+   * Generates a report from command-line.
+   *
+   * @param args the command-line arguments.
+   */
+  public static void main(@Nonnull String[] args) {
+    try {
+      Options options = Options.parseCommandLine(Arrays.asList(args));
+      if (options.askForHelp()) {
+        printUsage(System.out);
+      } else if (options.askForVersion()) {
+        printVersion(System.out);
+      } else {
+        Reporter reporter = createReporter(options);
+        reporter.createReport();
+      }
+    } catch (CmdLineException e) {
+      System.err.println(e.getMessage());
+      CmdLineParser parser = e.getParser();
+      if (parser != null) {
+        printUsage(System.err);
+      } else {
+        System.err.println("Try --help for help.");
+      }
+    } catch (ReporterException e) {
+      e.printStackTrace(System.err);
+      printErrorAndExit(ExitStatus.USAGE_ERROR, e.getMessage());
+    } catch (IOException e) {
+      e.printStackTrace(System.err);
+      printErrorAndExit(ExitStatus.INTERNAL_ERROR, e.getMessage());
+    }
+  }
+
+  private static void printVersion(@Nonnull PrintStream out) {
+    try {
+      Version version = new Version("jack-jacoco-reporter", Main.class.getClassLoader());
+      out.println("Jack Jacoco reporter: " + version.getVerboseVersion());
+    } catch (IOException e) {
+      throw new AssertionError("Failed to find reporter version", e);
+    }
+  }
+
+  @Nonnull
+  private static Reporter createReporter(@Nonnull Options options) throws ReporterException {
+    Reporter reporter = new Reporter();
+    reporter.setCoverageExecutionDataFiles(options.getCoverageExecutionFiles());
+    reporter.setCoverageDescriptionFiles(options.getCoverageDescriptionFiles());
+    reporter.setReportOutputDirectory(options.getReportOutputDirectory());
+    reporter.setSourceFilesDirectories(options.getSourceFilesDirectories());
+    reporter.setReportName(options.getReportName());
+    reporter.setReportType(options.getReportType());
+    reporter.setOutputEncoding(options.getOutputReportEncoding());
+    reporter.setSourceFilesEncoding(options.getInputSourceFilesEncoding());
+    reporter.setTabWidth(options.getTabWidth());
+    File mappingFile = options.getMappingFile();
+    if (mappingFile != null) {
+      reporter.setMappingFile(mappingFile);
+    }
+    return reporter;
+  }
+
+  private static void printUsage(@Nonnull PrintStream printStream) {
+    CmdLineParser parser =
+        new CmdLineParser(new Options(), ParserProperties.defaults().withUsageWidth(100));
+
+    // Prints one line with all required options.
+    StringBuilder oneLineUsage = new StringBuilder("Usage:");
+    for (OptionHandler<?> optionHandler : parser.getOptions()) {
+      if (optionHandler.option.required()) {
+        oneLineUsage.append(' ');
+        oneLineUsage.append(optionHandler.option.toString());
+        oneLineUsage.append(' ');
+        oneLineUsage.append(optionHandler.option.metaVar());
+        if (optionHandler.option.isMultiValued()) {
+          oneLineUsage.append(" ...");
+        }
+      }
+    }
+    oneLineUsage.append(" [<options>]");
+    printStream.println(oneLineUsage.toString());
+
+    // Print all options with their usage.
+    printStream.println();
+    printStream.println("Options:");
+    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+    parser.printUsage(outputStream);
+    printStream.append(outputStream.toString());
+  }
+
+  private static void printErrorAndExit(@Nonnull ExitStatus error, @Nonnull String msg) {
+    System.err.println(msg);
+    System.exit(error.getExitStatus());
+  }
+}
diff --git a/jack-coverage/reporter/src/com/android/jack/tools/jacoco/MappingFileLoader.java b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/MappingFileLoader.java
new file mode 100644
index 0000000..f76e5b5
--- /dev/null
+++ b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/MappingFileLoader.java
@@ -0,0 +1,334 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.tools.jacoco;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnegative;
+import javax.annotation.Nonnull;
+
+/**
+ * A mapping file loader that loads only class and method mappings.
+ */
+public class MappingFileLoader {
+
+  @Nonnull
+  private static final char[] EMPTY_STOP_CHARS = new char[] {};
+
+  @Nonnull
+  private static final char[] CLASSINFO_STOP_CHARS = new char[] {':'};
+
+  @Nonnull
+  private final Map<String, ClassMapping> oldToNewClassMapping =
+      new HashMap<String, ClassMapping>();
+
+  @Nonnull
+  private final Map<String, ClassMapping> newToOldClassMapping =
+      new HashMap<String, ClassMapping>();
+
+  @CheckForNull
+  public ClassMapping getClassMapping(@Nonnull String classBinaryName) {
+    // It must be a class descriptor (like 'com/sub/Foo')
+    assert classBinaryName.indexOf('.') < 0;
+    assert classBinaryName.indexOf('/') > 0;
+    return newToOldClassMapping.get(classBinaryName);
+  }
+
+  public void load(@Nonnull InputStream input) throws IOException {
+    BufferedReader reader = new BufferedReader(new InputStreamReader(input));
+    ClassMapping currentClassDesc = null;
+    String line;
+    while ((line = reader.readLine()) != null) {
+      // Remove leading and trailing whitespaces.
+      line = line.trim();
+      if (line.charAt(line.length() - 1) == ':') {
+        // Class mapping line
+        currentClassDesc = readClassInfo(line);
+        ClassMapping previous =
+            newToOldClassMapping.put(currentClassDesc.getClassName(), currentClassDesc);
+        assert previous == null;
+        previous =
+            oldToNewClassMapping.put(currentClassDesc.getOriginalClassName(), currentClassDesc);
+        assert previous == null;
+      } else if (line.indexOf('(') > 0) {
+        // Method mapping line
+        readMethodInfo(line, currentClassDesc);
+      } else {
+        // Ignore other lines (like field info)
+      }
+    }
+
+    // Now that we know how types may have been renamed by obfuscation, we need to update method
+    // signatures accordingly.
+    updateMethodMappings();
+  }
+
+  private void updateMethodMappings() {
+    assert oldToNewClassMapping.size() == newToOldClassMapping.size();
+    for (ClassMapping cd : newToOldClassMapping.values()) {
+      cd.updateMethodMapping(this);
+    }
+  }
+
+  @Nonnull
+  private ClassMapping readClassInfo(@Nonnull String line) {
+    // qualifiedOldClassName -> newClassName:
+    try {
+      int startIndex = readWhiteSpaces(line, 0);
+      int endIndex = readNameUntilSeparatorOrWhitespace(line, startIndex);
+      String qualifiedOldClassName = line.substring(startIndex, endIndex);
+      startIndex = readWhiteSpaces(line, endIndex);
+      startIndex = readSeparator(line, startIndex);
+      startIndex = readWhiteSpaces(line, startIndex);
+      endIndex = readName(line, startIndex, CLASSINFO_STOP_CHARS);
+      String newClassName = line.substring(startIndex, endIndex);
+      return new ClassMapping(NamingUtils.fqNameToBinaryName(newClassName),
+          NamingUtils.fqNameToBinaryName(qualifiedOldClassName));
+    } catch (ArrayIndexOutOfBoundsException e) {
+      throw new AssertionError("Invalid line '" + line + "'");
+    }
+  }
+
+  private void readMethodInfo(@Nonnull String line, @Nonnull ClassMapping currentClassDesc) {
+    // (startLineInfo:endLineInfo:)? type oldMethodName\((type(, type)*)?\) -> newMethodName
+    int startIndex = readWhiteSpaces(line, 0);
+    startIndex = readLineInfo(line, startIndex);
+    startIndex = readWhiteSpaces(line, startIndex);
+    int endIndex = line.indexOf(')', startIndex);
+    assert endIndex > 0;
+    String oldMethodDeclaration = line.substring(startIndex, endIndex + 1);
+    startIndex = endIndex + 1;
+    startIndex = readWhiteSpaces(line, startIndex);
+    startIndex = readSeparator(line, startIndex);
+    startIndex = readWhiteSpaces(line, startIndex);
+    endIndex = readName(line, startIndex, EMPTY_STOP_CHARS);
+    String newMethodName = line.substring(startIndex, endIndex);
+
+    // Add method info to current class.
+    currentClassDesc.addMethod(oldMethodDeclaration, newMethodName);
+  }
+
+  @Nonnegative
+  private int readNameUntilSeparatorOrWhitespace(@Nonnull String line, @Nonnegative int index) {
+    int length = line.length();
+    char c = line.charAt(index);
+    while (!Character.isWhitespace(c)) {
+      if (c == '-' && line.charAt(index + 1) == '>') {
+        // We check the second char to avoid bad parsing of names containing '-'
+        break;
+      }
+      if (++index < length) {
+        c = line.charAt(index);
+      } else {
+        break;
+      }
+    }
+    return index;
+  }
+
+  private static int readSeparator(@Nonnull String line, int index) {
+    if (line.charAt(index) != '-' || line.charAt(index + 1) != '>') {
+      throw new AssertionError();
+    }
+    return index + 2;
+  }
+
+  private static int readName(@Nonnull String line, @Nonnegative int index,
+      @Nonnull char[] stopChars) {
+    int length = line.length();
+    char c = line.charAt(index);
+    while (!Character.isWhitespace(c) && !charInArray(c, stopChars)) {
+      if (++index < length) {
+        c = line.charAt(index);
+      } else {
+        break;
+      }
+    }
+    return index;
+  }
+
+  private static boolean charInArray(char c, @Nonnull char[] array) {
+    for (char c2 : array) {
+      if (c == c2) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  private static int readWhiteSpaces(@Nonnull String line, @Nonnegative int index) {
+    while (Character.isWhitespace(line.charAt(index))) {
+      ++index;
+    }
+    return index;
+  }
+
+  private static int readLineInfo(@Nonnull String line, @Nonnegative int index) {
+    char c = line.charAt(index);
+    while (Character.isDigit(c) || c == ':') {
+      index++;
+      c = line.charAt(index);
+    }
+    return index;
+  }
+
+
+  /**
+   * A description of the class in the mapping file
+   */
+  public static class ClassMapping {
+    @Nonnull
+    private final String className;
+    @Nonnull
+    private final String originalClassName;
+
+    /**
+     * Temporary map associating original method declarations to their new method name (without
+     * parameter signatures). This map is set to null once the final mapping is computed.
+     */
+    @CheckForNull
+    private Map<String, String> oldToNewMethodMap = new HashMap<String, String>();
+
+    /**
+     * Maps method signatures to their original one.
+     */
+    @CheckForNull
+    private Map<String, String> newToOldMethodMap = null;
+
+    public ClassMapping(@Nonnull String className, @Nonnull String originalName) {
+      this.className = className;
+      this.originalClassName = originalName;
+    }
+
+    @Nonnull
+    public String getClassName() {
+      return className;
+    }
+
+    @Nonnull
+    public String getOriginalClassName() {
+      return originalClassName;
+    }
+
+    public void updateMethodMapping(@Nonnull MappingFileLoader loader) {
+      assert newToOldMethodMap == null;
+      assert oldToNewMethodMap != null;
+
+      newToOldMethodMap = new HashMap<String, String>(oldToNewMethodMap.size());
+      for (Entry<String, String> e : oldToNewMethodMap.entrySet()) {
+        String oldMethodDeclaration = e.getKey();
+        String newMethodName = e.getValue();
+
+        // The old method declaration is '<returnType> <oldName>(<paramType>[,<paramType>]*)'
+
+        // Extract return type.
+        int returnTypeEndPos = oldMethodDeclaration.indexOf(' ');
+        String returnType = oldMethodDeclaration.substring(0, returnTypeEndPos);
+
+        // Extract methodName
+        int oldMethodNameStartPos = readWhiteSpaces(oldMethodDeclaration, returnTypeEndPos);
+        int oldMethodNameEndPos = oldMethodDeclaration.indexOf('(', oldMethodNameStartPos);
+        String oldMethodName =
+            oldMethodDeclaration.substring(oldMethodNameStartPos, oldMethodNameEndPos);
+
+        // Extract parameters
+        int parameterListStartPos = oldMethodNameEndPos + 1;
+        int parameterListEndPos = oldMethodDeclaration.indexOf(')', parameterListStartPos);
+        String parameterList =
+            oldMethodDeclaration.substring(parameterListStartPos, parameterListEndPos);
+        String[] paramTypes = parameterList.isEmpty() ? new String[0] : parameterList.split(",");
+
+        // Create old and new signatures.
+        StringBuilder oldMethodSig = new StringBuilder(oldMethodName);
+        StringBuilder newMethodSig = new StringBuilder(newMethodName);
+        oldMethodSig.append('(');
+        newMethodSig.append('(');
+
+        // Convert parameters.
+        for (String parameterType : paramTypes) {
+          // Remove leading/trailing whitespaces.
+          parameterType = parameterType.trim();
+          String oldParameterTypeSig = NamingUtils.fqNameToSignature(parameterType);
+          String newParameterTypeSig = oldToNewClassName(loader, oldParameterTypeSig);
+          oldMethodSig.append(oldParameterTypeSig);
+          newMethodSig.append(newParameterTypeSig);
+        }
+
+        oldMethodSig.append(')');
+        newMethodSig.append(')');
+
+        // Append return type
+        String oldReturnTypeSig = NamingUtils.fqNameToSignature(returnType);
+        String newReturnTypeSig = oldToNewClassName(loader, oldReturnTypeSig);
+        oldMethodSig.append(oldReturnTypeSig);
+        newMethodSig.append(newReturnTypeSig);
+
+        newToOldMethodMap.put(newMethodSig.toString(), oldMethodSig.toString());
+      }
+
+      // Reset the map with finalized entries.
+      oldToNewMethodMap = null;
+    }
+
+    @Nonnull
+    private static String oldToNewClassName(@Nonnull MappingFileLoader loader,
+        @Nonnull String oldClassName) {
+      int lastCharPos = oldClassName.length() - 1;
+      if (oldClassName.charAt(lastCharPos) != ';') {
+        // THis is not a reference type: nothing to convert
+        return oldClassName;
+      }
+      if (oldClassName.charAt(0) == '[') {
+        return '[' + oldToNewClassName(loader, oldClassName.substring(1));
+      }
+      assert oldClassName.charAt(0) == 'L';
+      String binaryName = NamingUtils.signatureToBinaryName(oldClassName);
+      ClassMapping cm = loader.oldToNewClassMapping.get(binaryName);
+      if (cm != null) {
+        // Convert old to new.
+        return NamingUtils.binaryNameToSignature(cm.getClassName());
+      } else {
+        // No mapping so nothing to convert.
+        return oldClassName;
+      }
+    }
+
+    /**
+     * Return the original method signature for the given signature or null if it is not part of
+     * the mapping.
+     */
+    @CheckForNull
+    public String getOriginalMethodSignature(@Nonnull String methodSignature) {
+      assert newToOldMethodMap != null;
+      assert oldToNewMethodMap == null;
+      return newToOldMethodMap.get(methodSignature);
+    }
+
+    public void addMethod(@Nonnull String oldMethodDeclaration, @Nonnull String newMethodName) {
+      assert oldToNewMethodMap != null;
+      assert newToOldMethodMap == null;
+      oldToNewMethodMap.put(oldMethodDeclaration, newMethodName);
+    }
+
+  }
+}
diff --git a/jack-coverage/reporter/src/com/android/jack/tools/jacoco/NamingUtils.java b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/NamingUtils.java
new file mode 100644
index 0000000..a882eb4
--- /dev/null
+++ b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/NamingUtils.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.tools.jacoco;
+
+import javax.annotation.Nonnull;
+
+/**
+ * Utilities for class names.
+ */
+public class NamingUtils {
+
+  /**
+   * Convert fully qualified name (primitive or reference) to binary name.
+   *
+   * @param typeName the fully-qualified name to convert
+   * @return the binary name of the class
+   */
+  @Nonnull
+  public static String fqNameToBinaryName(@Nonnull String typeName) {
+    assert typeName.indexOf('/') < 0;
+    return typeName.replace('.', '/');
+  }
+
+  @Nonnull
+  public static String binaryNameToFqName(@Nonnull String binaryName) {
+    assert binaryName.indexOf('.') < 0;
+    return binaryName.replace('/', '.');
+  }
+
+  /**
+   * Converts the fully qualified name to a signature.
+   */
+  @Nonnull
+  public static String fqNameToSignature(@Nonnull String typeName) {
+    int arrayPos = typeName.lastIndexOf('[');
+    if (arrayPos > 0) {
+      assert arrayPos == typeName.length() - 2;
+      assert typeName.charAt(arrayPos + 1) == ']';
+      return '[' + fqNameToSignature(typeName.substring(0, arrayPos));
+    } else if (typeName.equals("boolean")) {
+      return "Z";
+    } else if (typeName.equals("byte")) {
+      return "B";
+    } else if (typeName.equals("char")) {
+      return "C";
+    } else if (typeName.equals("short")) {
+      return "S";
+    } else if (typeName.equals("int")) {
+      return "I";
+    } else if (typeName.equals("float")) {
+      return "F";
+    } else if (typeName.equals("double")) {
+      return "D";
+    } else if (typeName.equals("long")) {
+      return "J";
+    } else if (typeName.equals("void")) {
+      return "V";
+    } else {
+      return binaryNameToSignature(fqNameToBinaryName(typeName));
+    }
+  }
+
+  @Nonnull
+  public static String binaryNameToSignature(@Nonnull String binaryName) {
+    assert binaryName.indexOf('.') < 0;
+    return 'L' + binaryName + ';';
+  }
+
+  @Nonnull
+  public static String signatureToBinaryName(@Nonnull String signature) {
+    assert signature.length() > 2;  // at least one character between 'L' and ';';
+    assert signature.charAt(0) == 'L';
+    int lastCharPos = signature.length() - 1;
+    assert lastCharPos > 1;
+    assert signature.charAt(lastCharPos) == ';';
+    return signature.substring(1, lastCharPos);
+  }
+}
diff --git a/jack-jacoco-reporter/src/com/android/jack/tools/jacoco/Options.java b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/Options.java
similarity index 76%
rename from jack-jacoco-reporter/src/com/android/jack/tools/jacoco/Options.java
rename to jack-coverage/reporter/src/com/android/jack/tools/jacoco/Options.java
index 2e2330d..a8d32e3 100644
--- a/jack-jacoco-reporter/src/com/android/jack/tools/jacoco/Options.java
+++ b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/Options.java
@@ -16,12 +16,14 @@
 
 package com.android.jack.tools.jacoco;
 
+import org.kohsuke.args4j.CmdLineException;
+import org.kohsuke.args4j.CmdLineParser;
 import org.kohsuke.args4j.Option;
+import org.kohsuke.args4j.ParserProperties;
 
 import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
-
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 
@@ -58,26 +60,31 @@
 
   @Option(name = "--report-name", metaVar = "<name>", usage = "the name of the report")
   @Nonnull
-  private String reportName = "Report";
+  private String reportName = Constants.DEFAULT_REPORT_NAME;
 
   @Option(name = "--report-type", metaVar = "<type>",
       usage = "the type of the report (default is HTML)")
   @Nonnull
-  private ReportType reportType = ReportType.HTML;
+  private ReportType reportType = Constants.DEFAULT_REPORT_TYPE;
 
   @Option(name = "--output-encoding", metaVar = "<encoding>",
       usage = "the encoding for output report files (default is UTF-8)")
   @Nonnull
-  private String outputReportEncoding = "UTF-8";
+  private String outputReportEncoding = Constants.DEFAULT_OUTPUT_ENCODING;
 
   @Option(name = "--input-encoding", metaVar = "<encoding>",
       usage = "the encoding for input source files (default is UTF-8)")
   @Nonnull
-  private String inputSourceFilesEncoding = "UTF-8";
+  private String inputSourceFilesEncoding = Constants.DEFAULT_INPUT_ENCODING;
 
   @Option(name = "--tab-width", metaVar = "<value>",
       usage = "the width of tabs in source code (default is 4)")
-  private int tabWidth = 4;
+  private int tabWidth = Constants.DEFAULT_TAB_WIDTH;
+
+  @Option(name = "--mapping-file", metaVar = "<file>",
+      usage = "the mapping file to support shrinking and obfuscation")
+  @CheckForNull
+  private File mappingFile;
 
   @Nonnull
   public List<File> getCoverageDescriptionFiles() {
@@ -94,8 +101,9 @@
     return sourceFilesDirectories;
   }
 
-  @CheckForNull
+  @Nonnull
   public File getReportOutputDirectory() {
+    assert reportOutputDirectory != null;
     return reportOutputDirectory;
   }
 
@@ -123,6 +131,11 @@
     return tabWidth;
   }
 
+  @CheckForNull
+  public File getMappingFile() {
+    return mappingFile;
+  }
+
   public boolean askForHelp() {
     return showHelp;
   }
@@ -130,4 +143,14 @@
   public boolean askForVersion() {
     return showVersion;
   }
+
+  @Nonnull
+  public static Options parseCommandLine(@Nonnull List<String> list) throws CmdLineException {
+    Options options = new Options();
+    CmdLineParser parser =
+        new CmdLineParser(options, ParserProperties.defaults().withUsageWidth(100));
+    parser.parseArgument(list);
+    parser.stopOptionParsing();
+    return options;
+  }
 }
diff --git a/jack-jacoco-reporter/src/com/android/jack/tools/jacoco/ProbeDescription.java b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/ProbeDescription.java
similarity index 95%
rename from jack-jacoco-reporter/src/com/android/jack/tools/jacoco/ProbeDescription.java
rename to jack-coverage/reporter/src/com/android/jack/tools/jacoco/ProbeDescription.java
index 3be8023..e071f27 100644
--- a/jack-jacoco-reporter/src/com/android/jack/tools/jacoco/ProbeDescription.java
+++ b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/ProbeDescription.java
@@ -23,6 +23,7 @@
 import java.util.List;
 
 import javax.annotation.CheckForNull;
+import javax.annotation.Nonnegative;
 import javax.annotation.Nonnull;
 
 class ProbeDescription {
@@ -36,7 +37,7 @@
 
   private static final int UNKNOWN_LINE = -1;
 
-  class Line {
+  static class Line {
     public Line(int line, int instructionsCount, int branchesCount) {
       if (line < UNKNOWN_LINE) {
         throw new IllegalArgumentException("negative line");
@@ -53,7 +54,9 @@
     }
 
     final int line;
+    @Nonnegative
     final int instructionsCount;
+    @Nonnegative
     final int branchesCount;
 
     @Override
@@ -75,6 +78,7 @@
   }
 
   @Override
+  @Nonnull
   public String toString() {
     return "Probe " + id + " lines=" + Arrays.toString(lines.toArray());
   }
diff --git a/jack-jacoco-reporter/src/com/android/jack/tools/jacoco/ReportType.java b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/ReportType.java
similarity index 100%
rename from jack-jacoco-reporter/src/com/android/jack/tools/jacoco/ReportType.java
rename to jack-coverage/reporter/src/com/android/jack/tools/jacoco/ReportType.java
diff --git a/jack-coverage/reporter/src/com/android/jack/tools/jacoco/Reporter.java b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/Reporter.java
new file mode 100644
index 0000000..b5ccef9
--- /dev/null
+++ b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/Reporter.java
@@ -0,0 +1,479 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.tools.jacoco;
+
+import org.jacoco.core.analysis.CoverageBuilder;
+import org.jacoco.core.analysis.IBundleCoverage;
+import org.jacoco.core.tools.ExecFileLoader;
+import org.jacoco.report.DirectorySourceFileLocator;
+import org.jacoco.report.FileMultiReportOutput;
+import org.jacoco.report.IReportVisitor;
+import org.jacoco.report.MultiSourceFileLocator;
+import org.jacoco.report.csv.CSVFormatter;
+import org.jacoco.report.html.HTMLFormatter;
+import org.jacoco.report.xml.XMLFormatter;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.text.MessageFormat;
+import java.util.Collections;
+import java.util.List;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnegative;
+import javax.annotation.Nonnull;
+
+/**
+ * A class responsible for generating a coverage report.
+ */
+public class Reporter {
+  /**
+   * A list of coverage description files produced by Jack.
+   */
+  @Nonnull
+  private List<File> coverageDescriptionFiles = Collections.emptyList();
+
+  /**
+   * The coverage execution file produced during execution.
+   */
+  @Nonnull
+  private List<File> coverageExecutionDataFiles = Collections.emptyList();
+
+  /**
+   * The directory where the report must be generated into.
+   */
+  @CheckForNull
+  private File reportOutputDirectory;
+
+  /**
+   * A list of source files directories.
+   */
+  @Nonnull
+  private List<File> sourceFilesDirectories = Collections.emptyList();
+
+  /**
+   * The name of the report.
+   */
+  @Nonnull
+  private String reportName = Constants.DEFAULT_REPORT_NAME;
+
+  /**
+   * The type of the report.
+   */
+  @Nonnull
+  private ReportType reportType = Constants.DEFAULT_REPORT_TYPE;
+
+  /**
+   * The output encoding of the report.
+   */
+  @Nonnull
+  private String outputEncoding = Constants.DEFAULT_OUTPUT_ENCODING;
+
+  /**
+   * The input encoding of source files.
+   */
+  @Nonnull
+  private String sourceFilesEncoding = Constants.DEFAULT_INPUT_ENCODING;
+
+  /**
+   * The tab width of the report.
+   */
+  @Nonnegative
+  private int tabWidth = Constants.DEFAULT_TAB_WIDTH;
+
+  /**
+   * The mapping file for shrinking and obfuscation.
+   */
+  @CheckForNull
+  private File mappingFile;
+
+  /**
+   * @return a list of coverage description files.
+   */
+  @Nonnull
+  public List<File> getCoverageDescriptionFiles() {
+    return coverageDescriptionFiles;
+  }
+
+  /**
+   * @return a list of coverage execution data files.
+   */
+  @Nonnull
+  public List<File> getCoverageExecutionDataFiles() {
+    return coverageExecutionDataFiles;
+  }
+
+  /**
+   * @return the report output directory.
+   */
+  @CheckForNull
+  public File getReportOutputDirectory() {
+    return reportOutputDirectory;
+  }
+
+  /**
+   * @return a list of source files directories.
+   */
+  @Nonnull
+  public List<File> getSourceFilesDirectories() {
+    return sourceFilesDirectories;
+  }
+
+  /**
+   * @return the report name.
+   */
+  @Nonnull
+  public String getReportName() {
+    return reportName;
+  }
+
+  /**
+   * @return the report type.
+   */
+  @Nonnull
+  public ReportType getReportType() {
+    return reportType;
+  }
+
+  /**
+   * @return the output encoding.
+   */
+  @Nonnull
+  public String getOutputEncoding() {
+    return outputEncoding;
+  }
+
+  /**
+   * @return the source files encoding.
+   */
+  @Nonnull
+  public String getSourceFilesEncoding() {
+    return sourceFilesEncoding;
+  }
+
+  /**
+   * @return the tab width.
+   */
+  @Nonnegative
+  public int getTabWidth() {
+    return tabWidth;
+  }
+
+  /**
+   * @return the mapping file
+   */
+  @CheckForNull
+  public File getMappingFile() {
+    return mappingFile;
+  }
+
+  /**
+   * Sets input coverage description files.
+   *
+   * @param coverageDescriptionFiles the coverageDescriptionFiles to set
+   * @throws NullPointerException if one file is null in the list.
+   * @throws ReporterException if a file does not exist or is not readable.
+   */
+  public void setCoverageDescriptionFiles(@Nonnull List<File> coverageDescriptionFiles)
+      throws ReporterException {
+    for (File coverageDescriptionFile : coverageDescriptionFiles) {
+      if (coverageDescriptionFile == null) {
+        throw new NullPointerException();
+      }
+      checkFileExists(coverageDescriptionFile);
+      checkCanReadFromFile(coverageDescriptionFile);
+    }
+    this.coverageDescriptionFiles = coverageDescriptionFiles;
+  }
+
+  /**
+   * Sets input coverage execution files.
+   *
+   * @param coverageExecutionDataFiles the coverageExecutionDataFiles to set
+   * @throws NullPointerException if one file is null in the list.
+   * @throws ReporterException if a file does not exist or is not readable.
+   */
+  public void setCoverageExecutionDataFiles(@Nonnull List<File> coverageExecutionDataFiles)
+      throws ReporterException {
+    for (File coverageExecutionDataFile : coverageExecutionDataFiles) {
+      if (coverageExecutionDataFile == null) {
+        throw new NullPointerException();
+      }
+      checkFileExists(coverageExecutionDataFile);
+      checkCanReadFromFile(coverageExecutionDataFile);
+    }
+    this.coverageExecutionDataFiles = coverageExecutionDataFiles;
+  }
+
+  /**
+   * Sets output report directory.
+   *
+   * @param reportOutputDirectory the reportOutputDirectory to set
+   * @throws ReporterException if the file does not exist or is not writable.
+   */
+  public void setReportOutputDirectory(@Nonnull File reportOutputDirectory)
+      throws ReporterException {
+    checkDirectoryExists(reportOutputDirectory);
+    checkCanWriteToFile(reportOutputDirectory);
+    this.reportOutputDirectory = reportOutputDirectory;
+  }
+
+  /**
+   * Sets input source file directories.
+   *
+   * @param sourceFilesDirectories the sourceFilesDirectories to set
+   * @throws NullPointerException if one file is null in the list.
+   * @throws ReporterException if a file does not exist or is not readable.
+   */
+  public void setSourceFilesDirectories(@Nonnull List<File> sourceFilesDirectories)
+      throws ReporterException {
+    for (File sourceFilesDirectory : sourceFilesDirectories) {
+      if (sourceFilesDirectory == null) {
+        throw new NullPointerException();
+      }
+      checkDirectoryExists(sourceFilesDirectory);
+      checkCanReadFromFile(sourceFilesDirectory);
+    }
+    this.sourceFilesDirectories = sourceFilesDirectories;
+  }
+
+  /**
+   * Sets report name.
+   *
+   * @param reportName the reportName to set
+   */
+  public void setReportName(@Nonnull String reportName) {
+    this.reportName = reportName;
+  }
+
+  /**
+   * Sets report type.
+   *
+   * @param reportType the reportType to set
+   */
+  public void setReportType(@Nonnull ReportType reportType) {
+    this.reportType = reportType;
+  }
+
+  /**
+   * Sets output encoding of the report.
+   *
+   * @param outputEncoding the outputEncoding to set
+   */
+  public void setOutputEncoding(@Nonnull String outputEncoding) {
+    this.outputEncoding = outputEncoding;
+  }
+
+  /**
+   * Sets input encoding of the source files.
+   *
+   * @param sourceFilesEncoding the sourceFilesEncoding to set
+   */
+  public void setSourceFilesEncoding(@Nonnull String sourceFilesEncoding) {
+    this.sourceFilesEncoding = sourceFilesEncoding;
+  }
+
+  /**
+   * Sets tab width for the source files in the report.
+   *
+   * @param tabWidth the tabWidth to set
+   */
+  public void setTabWidth(@Nonnegative int tabWidth) {
+    this.tabWidth = tabWidth;
+  }
+
+  /**
+   * Set the mapping file for the report.
+   *
+   * @param mappingFile a mapping file
+   * @throws ReporterException if the file does not exist or is not readable.
+   */
+  public void setMappingFile(@Nonnull File mappingFile) throws ReporterException {
+    checkFileExists(mappingFile);
+    checkCanReadFromFile(mappingFile);
+    this.mappingFile = mappingFile;
+  }
+
+  public void createReport() throws IOException, ReporterException {
+    checkFiles();
+
+    // Load and analyze coverage execution file.
+    ExecFileLoader loader = loadCoverageExecutionFile();
+    IBundleCoverage bundleCoverage = createBundleCoverage(loader);
+
+    // Create report.
+    switch (reportType) {
+      case HTML:
+        createHtmlReport(loader, bundleCoverage);
+        break;
+
+      case XML:
+        createXmlReport(loader, bundleCoverage);
+        break;
+
+      case CSV:
+        createCsvReport(loader, bundleCoverage);
+        break;
+
+      default:
+        throw new IllegalArgumentException("Unknown report type");
+    }
+  }
+
+  private void checkFiles() throws ReporterException {
+    if (coverageDescriptionFiles.isEmpty()) {
+      throw new ReporterException("Missing coverage description file (at least one is required)");
+    }
+    if (coverageExecutionDataFiles.isEmpty()) {
+      throw new ReporterException("Missing coverage execution file");
+    }
+    if (reportOutputDirectory == null) {
+      throw new ReporterException("Missing report output directory");
+    }
+  }
+
+  @Nonnull
+  private ExecFileLoader loadCoverageExecutionFile() throws IOException {
+    ExecFileLoader loader = new ExecFileLoader();
+    for (File coverageExecutionDataFile : coverageExecutionDataFiles) {
+      loader.load(coverageExecutionDataFile);
+    }
+    return loader;
+  }
+
+  @Nonnull
+  private IBundleCoverage createBundleCoverage(@Nonnull ExecFileLoader loader) throws IOException {
+    CoverageBuilder coverageBuilder = new CoverageBuilder();
+    MappingFileLoader mappingFileLoader = null;
+    if (mappingFile != null) {
+      mappingFileLoader = new MappingFileLoader();
+      InputStream in = new FileInputStream(mappingFile);
+      try {
+        mappingFileLoader.load(in);
+      } finally {
+        in.close();
+      }
+    }
+    JackCoverageAnalyzer analyzer = new JackCoverageAnalyzer(loader.getExecutionDataStore(),
+        coverageBuilder, mappingFileLoader);
+    // Analyze each coverage description file to fill the coverage builder.
+    for (File coverageDescriptionFile : coverageDescriptionFiles) {
+      analyzer.analyze(coverageDescriptionFile);
+    }
+    return coverageBuilder.getBundle(reportName);
+  }
+
+  private void createHtmlReport(@Nonnull ExecFileLoader loader,
+      @Nonnull IBundleCoverage bundleCoverage) throws IOException {
+    HTMLFormatter htmlFormatter = new HTMLFormatter();
+    htmlFormatter.setOutputEncoding(outputEncoding);
+    IReportVisitor visitor =
+        htmlFormatter.createVisitor(new FileMultiReportOutput(reportOutputDirectory));
+    applyVisitor(loader, bundleCoverage, visitor);
+    File indexHtmlFile = new File(reportOutputDirectory, "index.html");
+    System.out.println("Created HTML report at " + indexHtmlFile.getAbsolutePath());
+  }
+
+  private void createXmlReport(@Nonnull ExecFileLoader loader,
+      @Nonnull IBundleCoverage bundleCoverage) throws IOException {
+    XMLFormatter xmlFormatter = new XMLFormatter();
+    xmlFormatter.setOutputEncoding(outputEncoding);
+    File xmlReportFile = new File(reportOutputDirectory, "report.xml");
+    OutputStream outputStream = new FileOutputStream(xmlReportFile);
+    try {
+      IReportVisitor visitor = xmlFormatter.createVisitor(outputStream);
+      applyVisitor(loader, bundleCoverage, visitor);
+      System.out.println("Created XML report at " + xmlReportFile.getAbsolutePath());
+    } finally {
+      outputStream.close();
+    }
+  }
+
+  private void createCsvReport(@Nonnull ExecFileLoader loader,
+      @Nonnull IBundleCoverage bundleCoverage) throws IOException {
+    CSVFormatter csvFormatter = new CSVFormatter();
+    csvFormatter.setOutputEncoding(outputEncoding);
+    File csvReportFile = new File(reportOutputDirectory, "report.csv");
+    OutputStream outputStream = new FileOutputStream(csvReportFile);
+    try {
+      IReportVisitor visitor = csvFormatter.createVisitor(outputStream);
+      applyVisitor(loader, bundleCoverage, visitor);
+      System.out.println("Created CSV report at " + csvReportFile.getAbsolutePath());
+    } finally {
+      outputStream.close();
+    }
+  }
+
+  private void applyVisitor(@Nonnull ExecFileLoader loader, @Nonnull IBundleCoverage bundleCoverage,
+      @Nonnull IReportVisitor visitor) throws IOException {
+    // Let the visitor know about execution information. This must be done before visiting
+    // the bundle.
+    visitor.visitInfo(loader.getSessionInfoStore().getInfos(),
+        loader.getExecutionDataStore().getContents());
+
+    // Visit the bundle with source file information.
+    MultiSourceFileLocator sourceFileLocator = new MultiSourceFileLocator(tabWidth);
+    for (File sourceFilesDirectory : sourceFilesDirectories) {
+      sourceFileLocator
+          .add(new DirectorySourceFileLocator(sourceFilesDirectory, sourceFilesEncoding, tabWidth));
+    }
+    visitor.visitBundle(bundleCoverage, sourceFileLocator);
+
+    // Let the visitor know we're done so the report gets generated.
+    visitor.visitEnd();
+  }
+
+  private static void checkFileExists(@Nonnull File file) throws ReporterException {
+    checkFileExistsImpl(file, false);
+  }
+
+  private static void checkCanReadFromFile(@Nonnull File file) throws ReporterException {
+    if (!file.canRead()) {
+      throw new ReporterException(MessageFormat.format("Cannot read from file {0}", file));
+    }
+  }
+
+  private static void checkCanWriteToFile(@Nonnull File file) throws ReporterException {
+    if (!file.canWrite()) {
+      throw new ReporterException(MessageFormat.format("Cannot write to file {0}", file));
+    }
+  }
+
+  private static void checkDirectoryExists(@Nonnull File file) throws ReporterException {
+    checkFileExistsImpl(file, true);
+    if (!file.isDirectory()) {
+      throw new ReporterException(MessageFormat.format("File {0} is not a directory", file));
+    }
+  }
+
+  private static void checkFileExistsImpl(@Nonnull File file, boolean expectDirectory)
+      throws ReporterException {
+    if (!file.exists()) {
+      throw new ReporterException(MessageFormat.format("File {0} does not exist", file));
+    } else if (expectDirectory != file.isDirectory()) {
+      if (expectDirectory) {
+        throw new ReporterException(MessageFormat.format("File {0} is not a directory", file));
+      } else {
+        throw new ReporterException(MessageFormat.format("File {0} is a directory", file));
+      }
+    }
+  }
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/ReporterException.java
similarity index 68%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-coverage/reporter/src/com/android/jack/tools/jacoco/ReporterException.java
index 0b9fd92..4aa6794 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-coverage/reporter/src/com/android/jack/tools/jacoco/ReporterException.java
@@ -14,7 +14,18 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.tools.jacoco;
 
-public interface Interface {}
+import javax.annotation.Nonnull;
 
+/**
+ * A reporter exception.
+ */
+public class ReporterException extends Exception {
+
+  private static final long serialVersionUID = 1L;
+
+  public ReporterException(@Nonnull String msg) {
+    super(msg);
+  }
+}
diff --git a/sched/tests/com/android/sched/util/file/AllTests.java b/jack-coverage/reporter/tests/com/android/jack/tools/jacoco/AllTests.java
similarity index 75%
rename from sched/tests/com/android/sched/util/file/AllTests.java
rename to jack-coverage/reporter/tests/com/android/jack/tools/jacoco/AllTests.java
index 1f2ce79..b62b083 100644
--- a/sched/tests/com/android/sched/util/file/AllTests.java
+++ b/jack-coverage/reporter/tests/com/android/jack/tools/jacoco/AllTests.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2016 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,13 +14,17 @@
  * limitations under the License.
  */
 
-package com.android.sched.util.file;
+package com.android.jack.tools.jacoco;
 
 import org.junit.runner.RunWith;
 import org.junit.runners.Suite;
 import org.junit.runners.Suite.SuiteClasses;
 
 @RunWith(Suite.class)
-@SuiteClasses(value = {FileUtilsTest.class})
+@SuiteClasses(value = {
+    JackCoverageAnalyzerTest.class,
+    MappingFileLoaderTest.class,
+    OptionsTest.class,
+    ReporterTest.class})
 public class AllTests {
-}
\ No newline at end of file
+}
diff --git a/jack-coverage/reporter/tests/com/android/jack/tools/jacoco/JackCoverageAnalyzerTest.java b/jack-coverage/reporter/tests/com/android/jack/tools/jacoco/JackCoverageAnalyzerTest.java
new file mode 100644
index 0000000..a846a9e
--- /dev/null
+++ b/jack-coverage/reporter/tests/com/android/jack/tools/jacoco/JackCoverageAnalyzerTest.java
@@ -0,0 +1,321 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.tools.jacoco;
+
+import com.google.gson.stream.JsonWriter;
+
+import junit.framework.Assert;
+
+import org.jacoco.core.analysis.IClassCoverage;
+import org.jacoco.core.analysis.ICoverageVisitor;
+import org.jacoco.core.analysis.IMethodCoverage;
+import org.jacoco.core.data.ExecutionData;
+import org.jacoco.core.data.ExecutionDataStore;
+import org.junit.Test;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import javax.annotation.Nonnull;
+
+public class JackCoverageAnalyzerTest {
+  private static final long ID = 12345L;
+  private static final String CLASS_NAME = "foo/bar/MyClass";
+  private static final String OBFUSCATED_CLASS_NAME = "a/A";
+  private static final String METHOD_DECLARATION = "void oldMethod(foo.bar.MyClass)";
+  private static final String METHOD_SIGNATURE = "oldMethod(Lfoo/bar/MyClass;)V";
+  private static final String OBFUSCATED_METHOD_NAME = "newMethod";
+  private static final String OBFUSCATED_METHOD_SIGNATURE = "newMethod(La/A;)V";
+  private static final String SUPER_CLASS_NAME = "java/lang/Object";
+  private static final boolean[] PROBES = {true, false, true, false};
+
+  @Test
+  public void testAnalysis() throws IOException {
+    byte[] buffer = createSimpleJsonBuffer(CLASS_NAME, METHOD_SIGNATURE);
+
+    ICoverageVisitor visitor = new ICoverageVisitor() {
+      @Override
+      public void visitCoverage(IClassCoverage arg0) {
+        // Check class
+        Assert.assertEquals(ID, arg0.getId());
+        Assert.assertEquals(CLASS_NAME, arg0.getName());
+        Assert.assertEquals(SUPER_CLASS_NAME, arg0.getSuperName());
+
+        // Check method
+        Assert.assertEquals(1, arg0.getMethods().size());
+        IMethodCoverage methodCoverage = arg0.getMethods().iterator().next();
+        Assert.assertNotNull(methodCoverage);
+        String[] nameAndDesc = splitSignatureInNameAndDesc(METHOD_SIGNATURE);
+        Assert.assertEquals(nameAndDesc[0], methodCoverage.getName());
+        Assert.assertEquals(nameAndDesc[1], methodCoverage.getDesc());
+      }
+    };
+
+    ExecutionDataStore executionDataStore = createExecutionDataStore(CLASS_NAME);
+    JackCoverageAnalyzer jackCoverageAnalyzer =
+        new JackCoverageAnalyzer(executionDataStore, visitor, null /* no mapping file */);
+
+    ByteArrayInputStream bais = new ByteArrayInputStream(buffer);
+    try {
+      jackCoverageAnalyzer.analyze(bais);
+    } finally {
+      bais.close();
+    }
+  }
+
+  @Test
+  public void testAnalysisWithIdentityMappingFile() throws IOException {
+    byte[] buffer = createSimpleJsonBuffer(CLASS_NAME, METHOD_SIGNATURE);
+
+    ICoverageVisitor visitor = new ICoverageVisitor() {
+      @Override
+      public void visitCoverage(IClassCoverage arg0) {
+        Assert.assertEquals(ID, arg0.getId());
+        Assert.assertEquals(CLASS_NAME, arg0.getName());
+        Assert.assertEquals(SUPER_CLASS_NAME, arg0.getSuperName());
+      }
+    };
+
+    MappingFileLoader loader = MappingFileLoaderTest.loadMappingFile(
+        String.format("%s -> %s:",
+            NamingUtils.binaryNameToFqName(CLASS_NAME), NamingUtils.binaryNameToFqName(CLASS_NAME))
+    );
+
+    ExecutionDataStore executionDataStore = createExecutionDataStore(CLASS_NAME);
+    JackCoverageAnalyzer jackCoverageAnalyzer =
+        new JackCoverageAnalyzer(executionDataStore, visitor, loader);
+
+    ByteArrayInputStream bais = new ByteArrayInputStream(buffer);
+    try {
+      jackCoverageAnalyzer.analyze(bais);
+    } finally {
+      bais.close();
+    }
+  }
+
+  /**
+   * Simulate shrinking where the class is not in the mapping file
+   */
+  @Test
+  public void testAnalysisWithClassShrinking() throws IOException {
+    byte[] buffer = createSimpleJsonBuffer(CLASS_NAME, METHOD_SIGNATURE);
+
+    ICoverageVisitor visitor = new ICoverageVisitor() {
+      @Override
+      public void visitCoverage(IClassCoverage arg0) {
+        // The only class in the file should be ignored because it does not appear in the mapping
+        // file
+        Assert.fail("Unexpected visit: class is shrunk");
+      }
+    };
+
+    MappingFileLoader loader = MappingFileLoaderTest.loadMappingFile(
+        String.format("Foo -> Foo:")
+    );
+
+    ExecutionDataStore executionDataStore = createExecutionDataStore(CLASS_NAME);
+    JackCoverageAnalyzer jackCoverageAnalyzer =
+        new JackCoverageAnalyzer(executionDataStore, visitor, loader);
+
+    ByteArrayInputStream bais = new ByteArrayInputStream(buffer);
+    try {
+      jackCoverageAnalyzer.analyze(bais);
+    } finally {
+      bais.close();
+    }
+  }
+
+  /**
+   * Simulate shrinking where the method is not in the mapping file
+   */
+  @Test
+  public void testAnalysisWithMethodShrinking() throws IOException {
+    byte[] buffer = createSimpleJsonBuffer(CLASS_NAME, METHOD_SIGNATURE);
+
+    ICoverageVisitor visitor = new ICoverageVisitor() {
+      @Override
+      public void visitCoverage(IClassCoverage arg0) {
+        Assert.assertEquals(ID, arg0.getId());
+        Assert.assertEquals(CLASS_NAME, arg0.getName());
+        Assert.assertEquals(SUPER_CLASS_NAME, arg0.getSuperName());
+        // We must not find the method.
+        Assert.assertTrue(arg0.getMethods().isEmpty());
+      }
+    };
+
+    String classBinaryName = NamingUtils.binaryNameToFqName(CLASS_NAME);
+    MappingFileLoader loader = MappingFileLoaderTest.loadMappingFile(
+        String.format("%s -> %s:", classBinaryName, classBinaryName),
+        String.format("void nonExistentMethod() -> nonExistentMethod")
+    );
+
+    ExecutionDataStore executionDataStore = createExecutionDataStore(CLASS_NAME);
+    JackCoverageAnalyzer jackCoverageAnalyzer =
+        new JackCoverageAnalyzer(executionDataStore, visitor, loader);
+
+    ByteArrayInputStream bais = new ByteArrayInputStream(buffer);
+    try {
+      jackCoverageAnalyzer.analyze(bais);
+    } finally {
+      bais.close();
+    }
+  }
+
+  /**
+   * Simulate obfuscated class.
+   */
+  @Test
+  public void testAnalysisWithClassObfuscation() throws IOException {
+    byte[] buffer = createSimpleJsonBuffer(OBFUSCATED_CLASS_NAME, METHOD_SIGNATURE);
+
+    ICoverageVisitor visitor = new ICoverageVisitor() {
+      @Override
+      public void visitCoverage(IClassCoverage arg0) {
+        Assert.assertEquals(ID, arg0.getId());
+        Assert.assertEquals(CLASS_NAME, arg0.getName());
+        Assert.assertEquals(SUPER_CLASS_NAME, arg0.getSuperName());
+      }
+    };
+
+    MappingFileLoader loader = MappingFileLoaderTest.loadMappingFile(
+        String.format("%s -> %s:",
+            NamingUtils.binaryNameToFqName(CLASS_NAME),
+            NamingUtils.binaryNameToFqName(OBFUSCATED_CLASS_NAME))
+    );
+
+    ExecutionDataStore executionDataStore = createExecutionDataStore(OBFUSCATED_CLASS_NAME);
+    JackCoverageAnalyzer jackCoverageAnalyzer =
+        new JackCoverageAnalyzer(executionDataStore, visitor, loader);
+
+    ByteArrayInputStream bais = new ByteArrayInputStream(buffer);
+    try {
+      jackCoverageAnalyzer.analyze(bais);
+    } finally {
+      bais.close();
+    }
+  }
+
+  /**
+   * Simulate obfuscated class.
+   */
+  @Test
+  public void testAnalysisWithMethodObfuscation() throws IOException {
+    byte[] buffer = createSimpleJsonBuffer(OBFUSCATED_CLASS_NAME, OBFUSCATED_METHOD_SIGNATURE);
+
+    ICoverageVisitor visitor = new ICoverageVisitor() {
+      @Override
+      public void visitCoverage(IClassCoverage arg0) {
+        Assert.assertEquals(ID, arg0.getId());
+        Assert.assertEquals(CLASS_NAME, arg0.getName());
+        Assert.assertEquals(SUPER_CLASS_NAME, arg0.getSuperName());
+
+        // Check method
+        Assert.assertEquals(1, arg0.getMethods().size());
+        IMethodCoverage methodCoverage = arg0.getMethods().iterator().next();
+        Assert.assertNotNull(methodCoverage);
+        String[] nameAndDesc = splitSignatureInNameAndDesc(METHOD_SIGNATURE);
+        Assert.assertEquals(nameAndDesc[0], methodCoverage.getName());
+        Assert.assertEquals(nameAndDesc[1], methodCoverage.getDesc());
+      }
+    };
+
+    MappingFileLoader loader = MappingFileLoaderTest.loadMappingFile(
+        String.format("%s -> %s:",
+            NamingUtils.binaryNameToFqName(CLASS_NAME),
+            NamingUtils.binaryNameToFqName(OBFUSCATED_CLASS_NAME)),
+        String.format("%s -> %s",
+            METHOD_DECLARATION, OBFUSCATED_METHOD_NAME)
+    );
+
+    ExecutionDataStore executionDataStore = createExecutionDataStore(OBFUSCATED_CLASS_NAME);
+    JackCoverageAnalyzer jackCoverageAnalyzer =
+        new JackCoverageAnalyzer(executionDataStore, visitor, loader);
+
+    ByteArrayInputStream bais = new ByteArrayInputStream(buffer);
+    try {
+      jackCoverageAnalyzer.analyze(bais);
+    } finally {
+      bais.close();
+    }
+  }
+
+  @Nonnull
+  private ExecutionDataStore createExecutionDataStore(@Nonnull String className) {
+    ExecutionDataStore executionDataStore = new ExecutionDataStore();
+    ExecutionData executionData = executionDataStore.get(Long.valueOf(ID), className,
+        PROBES.length);
+    for (int i = 0, e = PROBES.length; i < e; ++i) {
+      executionData.getProbes()[i] = PROBES[i];
+    }
+    return executionDataStore;
+  }
+
+  // Create the minimal JSON for the class.
+  @Nonnull
+  private byte[] createSimpleJsonBuffer(@Nonnull String className, @Nonnull String methodSignature)
+      throws IOException {
+    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+    JsonWriter w = new JsonWriter(new OutputStreamWriter(baos, "UTF-8"));
+    try {
+      w.beginObject();
+      w.name(JackCoverageAnalyzer.JSON_VERSION_ATTRIBUTE)
+          .value(JackCoverageAnalyzer.CURRENT_VERSION);
+      w.name(JackCoverageAnalyzer.JSON_DATA_ATTRIBUTE).beginArray();
+      w.beginObject();
+      w.name("id").value(ID);
+      w.name("name").value(className);
+      w.name("superClassName").value(SUPER_CLASS_NAME);
+      w.name("methods").beginArray();
+      // Add method
+      {
+        String[] nameAndDesc = splitSignatureInNameAndDesc(methodSignature);
+        w.beginObject();
+        w.name("id").value(0);
+        w.name("name").value(nameAndDesc[0]);
+        w.name("desc").value(nameAndDesc[1]);
+        w.endObject();
+      }
+      w.endArray();
+      w.name("probes").beginArray();
+      for (int i = 0, e = PROBES.length; i < e; ++i) {
+        w.beginObject();
+        w.name("id").value(i);
+        w.name("method").value(0);
+        w.endObject();
+      }
+      w.endArray();
+      w.endObject();
+      w.endArray();
+      w.endObject();
+      w.flush();
+    } finally {
+      w.close();
+    }
+
+    return baos.toByteArray();
+  }
+
+  @Nonnull
+  private static String[] splitSignatureInNameAndDesc(@Nonnull String methodSignature) {
+    int separatorPos = methodSignature.indexOf('(');
+    assert separatorPos > 0;
+    String methodName = methodSignature.substring(0, separatorPos);
+    String methodDesc = methodSignature.substring(separatorPos);
+    return new String[] { methodName, methodDesc };
+  }
+}
diff --git a/jack-coverage/reporter/tests/com/android/jack/tools/jacoco/MappingFileLoaderTest.java b/jack-coverage/reporter/tests/com/android/jack/tools/jacoco/MappingFileLoaderTest.java
new file mode 100644
index 0000000..e42641b
--- /dev/null
+++ b/jack-coverage/reporter/tests/com/android/jack/tools/jacoco/MappingFileLoaderTest.java
@@ -0,0 +1,222 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.tools.jacoco;
+
+import com.android.jack.tools.jacoco.MappingFileLoader.ClassMapping;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Nonnull;
+import junit.framework.Assert;
+import org.junit.Test;
+
+public class MappingFileLoaderTest {
+
+  @Test
+  public void testClassLineParsing() throws IOException {
+    String oldClassName = "com.Foo";
+    String newClassName = "com.A";
+
+    List<String> testLines = generateStringWithSpaces(oldClassName, "->", newClassName, ":");
+    for (String testLine : testLines) {
+      MappingFileLoader loader = loadMappingFile(testLine);
+
+      ClassMapping cm = loader.getClassMapping(NamingUtils.fqNameToBinaryName(newClassName));
+      Assert.assertNotNull("No match for line '" + testLine + "'", cm);
+      Assert.assertEquals("Invalid mapping for line '" + testLine + "'",
+          NamingUtils.fqNameToBinaryName(oldClassName), cm.getOriginalClassName());
+    }
+  }
+
+  @Test
+  public void testMethodLineParsing() throws IOException {
+    String oldClassName = "com.Foo";
+    String newClassName = "com.A";
+
+    List<String> testLines = generateStringWithSpaces("void m()", "->", "newM");
+    for (String testLine : testLines) {
+      MappingFileLoader loader = loadMappingFile(
+          "com.Foo -> com.A:",
+          testLine);
+
+      ClassMapping cm = loader.getClassMapping(NamingUtils.fqNameToBinaryName(newClassName));
+      Assert.assertNotNull("No match for line '" + testLine + "'", cm);
+      Assert.assertEquals("Invalid mapping for line '" + testLine + "'",
+          NamingUtils.fqNameToBinaryName(oldClassName), cm.getOriginalClassName());
+      Assert.assertEquals("Failure with line '" + testLine + "'",
+          "m()V", cm.getOriginalMethodSignature("newM()V"));
+    }
+  }
+
+  @Test
+  public void testMethodLineParsingWithLineInfo() throws IOException {
+    String oldClassName = "com.Foo";
+    String newClassName = "com.A";
+
+    List<String> testLines = generateStringWithSpaces("1:5", "void m()", "->", "newM");
+    for (String testLine : testLines) {
+      MappingFileLoader loader = loadMappingFile(
+          "com.Foo -> com.A:",
+          testLine);
+
+      ClassMapping cm = loader.getClassMapping(NamingUtils.fqNameToBinaryName(newClassName));
+      Assert.assertNotNull("No match for line '" + testLine + "'", cm);
+      Assert.assertEquals("Invalid mapping for line '" + testLine + "'",
+          NamingUtils.fqNameToBinaryName(oldClassName), cm.getOriginalClassName());
+      Assert.assertEquals("Failure with line '" + testLine + "'",
+          "m()V", cm.getOriginalMethodSignature("newM()V"));
+    }
+  }
+
+  @Test
+  public void testParsingWithignoredFieldInfo() throws IOException {
+    String oldClassName = "com.Foo";
+    String newClassName = "com.A";
+
+    List<String> testLines = generateStringWithSpaces("void m()", "->", "newM");
+    for (String testLine : testLines) {
+      MappingFileLoader loader = loadMappingFile(
+          "com.Foo -> com.A:",
+          "void m() -> newM",
+          "oldField -> newField");
+
+      ClassMapping cm = loader.getClassMapping(NamingUtils.fqNameToBinaryName(newClassName));
+      Assert.assertNotNull("No match for line '" + testLine + "'", cm);
+      Assert.assertEquals("Invalid mapping for line '" + testLine + "'",
+          NamingUtils.fqNameToBinaryName(oldClassName), cm.getOriginalClassName());
+      Assert.assertEquals("Failure with line '" + testLine + "'",
+          "m()V", cm.getOriginalMethodSignature("newM()V"));
+    }
+  }
+
+  @Test
+  public void testInvalidClassLine() throws IOException {
+    // Missing trailing ':' character.
+    byte[] buffer = buildBuffer("com.Foo -> com.A");
+
+    MappingFileLoader loader = new MappingFileLoader();
+    InputStream input = new ByteArrayInputStream(buffer);
+    try {
+      loader.load(input);
+      Assert.fail();
+    } catch (AssertionError expected) {
+      // OK, we got our exception.
+    } finally {
+      input.close();
+    }
+  }
+
+  @Test
+  public void testSignatureConversion() throws IOException {
+    MappingFileLoader loader = loadMappingFile(
+        "com.Foo -> com.A:",
+        "void m(int) -> newM1",
+        "void m(int, int) -> newM2",
+        "void m(com.Foo) -> newM3",
+        "void m(com.Foo[]) -> newM4"
+    );
+    ClassMapping cm = loader.getClassMapping("com/A");
+    Assert.assertNotNull(cm);
+
+    // Check unknown signature
+    Assert.assertNull(cm.getOriginalMethodSignature("notRenamed()V"));
+
+    // Check conversions
+    Assert.assertEquals("m(I)V", cm.getOriginalMethodSignature("newM1(I)V"));
+    Assert.assertEquals("m(II)V", cm.getOriginalMethodSignature("newM2(II)V"));
+
+    // Check method name and parameters are restored
+    Assert.assertEquals("m(Lcom/Foo;)V", cm.getOriginalMethodSignature("newM3(Lcom/A;)V"));
+    Assert.assertEquals("m([Lcom/Foo;)V", cm.getOriginalMethodSignature("newM4([Lcom/A;)V"));
+  }
+
+  /**
+   * Generate a list of all possible strings when the given {@code strings} are separated or not by
+   * a space character (including leading and trailing space).
+   */
+  private static List<String> generateStringWithSpaces(String... strings) {
+    int spacesPosCount = strings.length + 1;
+    int spacesCombinationsCount = 1 << spacesPosCount;
+    List<String> list = new ArrayList<String>(spacesCombinationsCount);
+
+    for (int i = 0; i < spacesCombinationsCount; ++i) {
+      StringBuilder sb = new StringBuilder();
+      int j = 0;
+      for (; j < strings.length; ++j) {
+        String s = strings[j];
+        if (isBitSet(i, j)) {
+          sb.append(' ');
+        }
+        sb.append(s);
+      }
+      assert j == strings.length;
+      // End space
+      if (isBitSet(i, j)) {
+        sb.append(' ');
+      }
+      list.add(sb.toString());
+    }
+    return list;
+  }
+
+  private static boolean isBitSet(int number, int index) {
+    return (number & (1 << index)) != 0;
+  }
+
+  @Test
+  public void testGenerateSpaces() {
+    List<String> strings = generateStringWithSpaces("str");
+    Assert.assertNotNull(strings);
+    Assert.assertEquals(4, strings.size());
+    Assert.assertTrue(strings.contains("str"));
+    Assert.assertTrue(strings.contains(" str"));
+    Assert.assertTrue(strings.contains("str "));
+    Assert.assertTrue(strings.contains(" str "));
+  }
+
+  static MappingFileLoader loadMappingFile(@Nonnull String... lines) throws IOException {
+    byte[] buffer = buildBuffer(lines);
+    MappingFileLoader loader = new MappingFileLoader();
+    InputStream input = new ByteArrayInputStream(buffer);
+    try {
+      loader.load(input);
+    } finally {
+      input.close();
+    }
+    return loader;
+  }
+
+  private static byte[] buildBuffer(@Nonnull String... lines) throws IOException {
+    byte[] result;
+    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+    try {
+      PrintWriter pw = new PrintWriter(baos);
+      for (String line : lines) {
+        pw.println(line);
+      }
+      pw.flush();
+      result = baos.toByteArray();
+    } finally {
+      baos.close();
+    }
+    return result;
+  }
+}
diff --git a/jack-coverage/reporter/tests/com/android/jack/tools/jacoco/OptionsTest.java b/jack-coverage/reporter/tests/com/android/jack/tools/jacoco/OptionsTest.java
new file mode 100644
index 0000000..4567eb4
--- /dev/null
+++ b/jack-coverage/reporter/tests/com/android/jack/tools/jacoco/OptionsTest.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.tools.jacoco;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.kohsuke.args4j.CmdLineException;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class OptionsTest {
+  private static Options parseOptions(String str) throws CmdLineException {
+    String[] strings = str.split(" ");
+    return Options.parseCommandLine(Arrays.asList(strings));
+  }
+
+  private static final File METADATA_FILE = new File("pathToMetadataFile");
+  private static final File COVERAGE_FILE = new File("pathToCoverageFile");
+  private static final File REPORT_DIR = new File("pathToReportDir");
+
+  private List<String> strings = new ArrayList<String>();
+
+  @Before
+  public void setUp() {
+    resetCommandLine();
+  }
+
+  private void resetCommandLine() {
+    strings.clear();
+    strings.add("--metadata-file");
+    strings.add(METADATA_FILE.getPath());
+    strings.add("--coverage-file");
+    strings.add(COVERAGE_FILE.getPath());
+    strings.add("--report-dir");
+    strings.add(REPORT_DIR.getPath());
+  }
+
+  @Test
+  public void testMinimum() throws CmdLineException {
+    Options options = Options.parseCommandLine(strings);
+    assertNotNull(options);
+    assertNotNull(options.getCoverageExecutionFiles());
+    assertNotNull(options.getCoverageDescriptionFiles());
+    assertNotNull(options.getReportOutputDirectory());
+    assertNotNull(options.getSourceFilesDirectories());
+    assertNotNull(options.getReportType());
+    assertEquals(1, options.getCoverageDescriptionFiles().size());
+    assertEquals(1, options.getCoverageExecutionFiles().size());
+    assertEquals(METADATA_FILE.getPath(), options.getCoverageDescriptionFiles().get(0).getPath());
+    assertEquals(COVERAGE_FILE.getPath(), options.getCoverageExecutionFiles().get(0).getPath());
+    assertEquals(REPORT_DIR.getPath(), options.getReportOutputDirectory().getPath());
+    assertTrue(options.getSourceFilesDirectories().isEmpty());
+    assertEquals(ReportType.HTML, options.getReportType());
+    assertEquals("UTF-8", options.getOutputReportEncoding());
+    assertEquals("UTF-8", options.getInputSourceFilesEncoding());
+    assertEquals(4, options.getTabWidth());
+    assertFalse(options.askForHelp());
+    assertFalse(options.askForVersion());
+  }
+
+  @Test
+  public void testReport() throws CmdLineException {
+    for (ReportType type : ReportType.values()) {
+      strings.add("--report-type");
+      strings.add(type.name());
+      Options options = Options.parseCommandLine(strings);
+      assertNotNull(options);
+      assertEquals(options.getReportType(), type);
+
+      // Test in lower case mode.
+      resetCommandLine();
+      strings.add("--report-type");
+      strings.add(type.name().toLowerCase());
+      options = Options.parseCommandLine(strings);
+      assertNotNull(options);
+      assertEquals(options.getReportType(), type);
+    }
+  }
+
+  @Test
+  public void testHelp() throws CmdLineException {
+    Options options = parseOptions("-h");
+    assertTrue(options.askForHelp());
+
+    options = parseOptions("--help");
+    assertTrue(options.askForHelp());
+  }
+
+  @Test
+  public void testVersion() throws CmdLineException {
+    Options options = parseOptions("--version");
+    assertTrue(options.askForVersion());
+  }
+
+  @Test
+  public void testEmpty() {
+    try {
+      parseOptions("");
+      fail();
+    } catch (CmdLineException expected) {
+    }
+  }
+}
diff --git a/jack-coverage/reporter/tests/com/android/jack/tools/jacoco/ReporterTest.java b/jack-coverage/reporter/tests/com/android/jack/tools/jacoco/ReporterTest.java
new file mode 100644
index 0000000..23231dd
--- /dev/null
+++ b/jack-coverage/reporter/tests/com/android/jack/tools/jacoco/ReporterTest.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.tools.jacoco;
+
+import junit.framework.Assert;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.util.Collections;
+
+public class ReporterTest {
+  /**
+   * Checks the {@link Options} and {@link Reporter} classes use the same default values.
+   */
+  @Test
+  public void testDefaultOptions() {
+    Options options = new Options();
+    Reporter reporter = new Reporter();
+
+    Assert.assertEquals(options.getCoverageDescriptionFiles().size(),
+        reporter.getCoverageDescriptionFiles().size());
+    Assert.assertEquals(options.getCoverageExecutionFiles().size(),
+        reporter.getCoverageExecutionDataFiles().size());
+    Assert.assertEquals(options.getSourceFilesDirectories().size(),
+        reporter.getSourceFilesDirectories().size());
+    Assert.assertEquals(options.getReportName(), reporter.getReportName());
+    Assert.assertEquals(options.getReportType(), reporter.getReportType());
+    Assert.assertEquals(options.getOutputReportEncoding(), reporter.getOutputEncoding());
+    Assert.assertEquals(options.getInputSourceFilesEncoding(), reporter.getSourceFilesEncoding());
+    Assert.assertEquals(options.getTabWidth(), reporter.getTabWidth());
+  }
+
+  private static final File DUMMY_FILE = new File("foo");
+
+  private Reporter reporter = new Reporter();
+  private File tempCoverageDescriptionFile;
+  private File tempCoverageExecutionFile;
+  private File tempOutputReportDir;
+
+  @Before
+  public void setUp() throws IOException {
+    tempCoverageDescriptionFile = Files.createTempFile("coverage", "em.tmp").toFile();
+    tempCoverageExecutionFile = Files.createTempFile("coverage", "ec.tmp").toFile();
+    tempOutputReportDir = Files.createTempDirectory("coverage-report").toFile();
+  }
+
+  @After
+  public void tearDown() {
+    boolean tempCoverageDescriptionFileDeleted = tempCoverageDescriptionFile.delete();
+    boolean tempCoverageExecutionFileDeleted = tempCoverageExecutionFile.delete();
+    boolean tempOutputReportDirDeleted = tempOutputReportDir.delete();
+
+    Assert.assertTrue(tempCoverageDescriptionFileDeleted);
+    Assert.assertTrue(tempCoverageExecutionFileDeleted);
+    Assert.assertTrue(tempOutputReportDirDeleted);
+  }
+
+  @Test
+  public void testNoCoverageDescriptionFile() throws IOException {
+    // No coverage description file must throw a ReporterException.
+    try {
+      reporter.createReport();
+      Assert.fail();
+    } catch (ReporterException expected) {
+    }
+  }
+
+  @Test
+  public void testNullCoverageDescriptionFile() throws ReporterException {
+    // Non-existent coverage description file must throw a ReporterException.
+    try {
+      reporter.setCoverageDescriptionFiles(Collections.<File>singletonList(null));
+      Assert.fail();
+    } catch (NullPointerException expected) {
+    }
+  }
+
+  @Test
+  public void testInvalidCoverageDescriptionFile() {
+    // Non-existent coverage description file must throw a ReporterException.
+    try {
+      reporter.setCoverageDescriptionFiles(Collections.singletonList(DUMMY_FILE));
+      Assert.fail();
+    } catch (ReporterException expected) {
+    }
+  }
+
+  @Test
+  public void testNoCoverageExecutionFile() throws IOException, ReporterException {
+    reporter.setCoverageDescriptionFiles(Collections.singletonList(tempCoverageDescriptionFile));
+
+    // No coverage execution file must throw a ReporterException.
+    try {
+      reporter.createReport();
+      Assert.fail();
+    } catch (ReporterException expected) {
+    }
+  }
+
+  @Test
+  public void testInvalidCoverageExecutionFile() throws ReporterException {
+    reporter.setCoverageDescriptionFiles(Collections.singletonList(tempCoverageDescriptionFile));
+    try {
+      reporter.setCoverageExecutionDataFiles(Collections.singletonList(DUMMY_FILE));
+      Assert.fail();
+    } catch (ReporterException expected) {
+    }
+  }
+
+  @Test
+  public void testNoOutputReportDir() throws IOException, ReporterException {
+    reporter.setCoverageDescriptionFiles(Collections.singletonList(tempCoverageDescriptionFile));
+    reporter.setCoverageExecutionDataFiles(Collections.singletonList(tempCoverageExecutionFile));
+
+    // No report output directory must throw a ReporterException.
+    try {
+      reporter.createReport();
+      Assert.fail();
+    } catch (ReporterException expected) {
+    }
+  }
+
+  @Test
+  public void testInvalidOutputReportDir() throws ReporterException {
+    reporter.setCoverageDescriptionFiles(Collections.singletonList(tempCoverageDescriptionFile));
+    reporter.setCoverageExecutionDataFiles(Collections.singletonList(tempCoverageExecutionFile));
+    try {
+      reporter.setReportOutputDirectory(DUMMY_FILE);
+      Assert.fail();
+    } catch (ReporterException expected) {
+    }
+    // Testing with an existing file but not a directory.
+    try {
+      reporter.setReportOutputDirectory(tempCoverageExecutionFile);
+      Assert.fail();
+    } catch (ReporterException expected) {
+    }
+  }
+
+  @Test
+  public void testNullSourceDirectory() throws ReporterException {
+    reporter.setCoverageDescriptionFiles(Collections.singletonList(tempCoverageDescriptionFile));
+    reporter.setCoverageExecutionDataFiles(Collections.singletonList(tempCoverageExecutionFile));
+    reporter.setReportOutputDirectory(tempOutputReportDir);
+    try {
+      reporter.setSourceFilesDirectories(Collections.<File>singletonList(null));
+      Assert.fail();
+    } catch (NullPointerException expected) {
+    }
+  }
+
+  @Test
+  public void testInvalidSourceDirectory() throws ReporterException {
+    reporter.setCoverageDescriptionFiles(Collections.singletonList(tempCoverageDescriptionFile));
+    reporter.setCoverageExecutionDataFiles(Collections.singletonList(tempCoverageExecutionFile));
+    reporter.setReportOutputDirectory(tempOutputReportDir);
+    try {
+      reporter.setSourceFilesDirectories(Collections.singletonList(DUMMY_FILE));
+      Assert.fail();
+    } catch (ReporterException expected) {
+    }
+  }
+
+  @Test
+  public void testInvalidMappingFile() throws ReporterException {
+    reporter.setCoverageDescriptionFiles(Collections.singletonList(tempCoverageDescriptionFile));
+    reporter.setCoverageExecutionDataFiles(Collections.singletonList(tempCoverageExecutionFile));
+    reporter.setReportOutputDirectory(tempOutputReportDir);
+    try {
+      reporter.setMappingFile(DUMMY_FILE);
+      Assert.fail();
+    } catch (ReporterException expected) {
+    }
+  }
+}
diff --git a/jack-coverage/src/com/android/jack/coverage/CodeCoverageAnalyzer.java b/jack-coverage/src/com/android/jack/coverage/CodeCoverageAnalyzer.java
deleted file mode 100644
index 8182bfe..0000000
--- a/jack-coverage/src/com/android/jack/coverage/CodeCoverageAnalyzer.java
+++ /dev/null
@@ -1,258 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.jack.coverage;
-
-import com.android.jack.cfg.BasicBlock;
-import com.android.jack.cfg.ConditionalBasicBlock;
-import com.android.jack.cfg.ControlFlowGraph;
-import com.android.jack.cfg.SwitchBasicBlock;
-import com.android.jack.cfg.ThrowBasicBlock;
-import com.android.jack.ir.ast.JDefinedClassOrInterface;
-import com.android.jack.ir.ast.JExpression;
-import com.android.jack.ir.ast.JIfStatement;
-import com.android.jack.ir.ast.JMethod;
-import com.android.jack.ir.ast.JStatement;
-import com.android.jack.ir.ast.JSwitchStatement;
-import com.android.jack.ir.ast.JVisitor;
-import com.android.jack.ir.sourceinfo.SourceInfo;
-import com.android.jack.scheduling.filter.TypeWithoutPrebuiltFilter;
-import com.android.sched.item.Description;
-import com.android.sched.schedulable.Constraint;
-import com.android.sched.schedulable.Filter;
-import com.android.sched.schedulable.RunnableSchedulable;
-import com.android.sched.schedulable.Support;
-import com.android.sched.schedulable.Transform;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Queue;
-
-import javax.annotation.Nonnull;
-
-/**
- * Analyzes control flow graph of a method to determine the coverage probes required to instrument
- * the method.
- */
-@Description("Code coverage analyzer")
-@Support(CodeCoverageFeature.class)
-@Constraint(need = {CodeCoverageMarker.Initialized.class, ControlFlowGraph.class})
-@Transform(
-    add = {CodeCoverageMarker.Analyzed.class, ProbeMarker.class}, modify = CodeCoverageMarker.class)
-@Filter(TypeWithoutPrebuiltFilter.class)
-public class CodeCoverageAnalyzer implements RunnableSchedulable<JMethod> {
-  @Override
-  public void run(@Nonnull JMethod m) {
-    if (m.isNative() || m.isAbstract()) {
-      // This method has no code so cannot be instrumented.
-      return;
-    }
-
-    JDefinedClassOrInterface declaringClass = m.getEnclosingType();
-    CodeCoverageMarker coverageMarker = declaringClass.getMarker(CodeCoverageMarker.class);
-    if (coverageMarker == null) {
-      // The declaring class is not selected for code coverage.
-      return;
-    }
-
-    ControlFlowGraph controlFlowGraph = m.getMarker(ControlFlowGraph.class);
-    assert controlFlowGraph != null : "No control flow graph";
-
-    analyzeCFG(m, controlFlowGraph, coverageMarker);
-    findProbeLocations(controlFlowGraph);
-  }
-
-  /**
-   * Analyzes the control flow graph to identify all required probes. This does not modify the IR,
-   * only adding {@link ProbeMarker} on {@link BasicBlock}.
-   * @param method the method being analyzed
-   * @param controlFlowGraph
-   * @param coverageMarker
-   */
-  private static void analyzeCFG(@Nonnull JMethod method,
-      @Nonnull ControlFlowGraph controlFlowGraph, @Nonnull CodeCoverageMarker coverageMarker) {
-    // Analyze the CFG to identify probes.
-    Queue<BasicBlock> blocks = new LinkedList<BasicBlock>();
-    blocks.add(controlFlowGraph.getEntryNode());
-    for (BasicBlock bb = blocks.poll(); bb != null; bb = blocks.poll()) {
-      if (bb.containsMarker(ProbeMarker.class)) {
-        // The block has already been processed.
-        continue;
-      }
-      List<BasicBlock> predecessors = bb.getPredecessors();
-      int predecessorsCount = predecessors.size();
-      ProbeDescription probe = null;
-      if (predecessorsCount == 0) {
-        // This is the start of a new probe.
-        probe = assignNewProbe(method, coverageMarker, bb);
-      } else if (predecessorsCount > 1) {
-        // There are different paths to reach this block: use a new probe.
-        probe = assignNewProbe(method, coverageMarker, bb);
-      } else { // predecessorsCount == 1
-        // The block has only one predecessor.
-        BasicBlock pred = predecessors.get(0);
-        int successorsOfPredecessorCount = pred.getSuccessors().size();
-        if (successorsOfPredecessorCount > 1) {
-          // TODO(shertz) Jacoco does not seem to split probe on throwing instructions. If we want
-          // to do the same thing, we could test whether the predecessor is a Pei block, in which
-          // case we continue with the same probe instead of creating a new one.
-          probe = assignNewProbe(method, coverageMarker, bb);
-        } else {
-          // There is an unconditional path from the predecessor to this block: use the same
-          // probe.
-          ProbeMarker probeMarker = pred.getMarker(ProbeMarker.class);
-          assert probeMarker != null;
-          bb.addMarker(probeMarker);
-          probe = probeMarker.getProbe();
-        }
-      }
-
-      // Update probe with source information of each statement it covers.
-      assert probe != null;
-      for (JStatement st : bb.getStatements()) {
-        ProbeUpdater visitor = new ProbeUpdater(probe);
-        visitor.accept(st);
-      }
-
-      // Visit all its successors
-      blocks.addAll(bb.getSuccessors());
-    }
-
-    // Mark branch lines. We need that all blocks have been processed once so the ProbeMarker is
-    // installed.
-    for (BasicBlock bb : controlFlowGraph.getNodes()) {
-      if (bb instanceof ConditionalBasicBlock || bb instanceof SwitchBasicBlock) {
-        // For Jacoco, we need to remember these are branching instructions and how many
-        // possible branches exist.
-        JStatement branchStatement = bb.getStatements().get(0);
-        SourceInfo branchSourceInfo = branchStatement.getSourceInfo();
-        for (BasicBlock succ : bb.getSuccessors()) {
-          ProbeMarker marker = succ.getMarker(ProbeMarker.class);
-          assert marker != null;
-          marker.getProbe().incrementLine(branchSourceInfo.getStartLine(), 1, true);
-        }
-      }
-    }
-  }
-
-  /**
-   * Iterates over basic block to identify which ones are terminating their respective probes.
-   * @param controlFlowGraph
-   */
-  private static void findProbeLocations(@Nonnull ControlFlowGraph controlFlowGraph) {
-    BasicBlock entryBlock = controlFlowGraph.getEntryNode();
-    BasicBlock exitBlock = controlFlowGraph.getExitNode();
-    for (BasicBlock bb : controlFlowGraph.getNodes()) {
-      if (bb == entryBlock || bb == exitBlock) {
-        // we do not process these special blocks.
-        continue;
-      }
-
-      ProbeMarker probeMarker = bb.getMarker(ProbeMarker.class);
-      assert probeMarker != null;
-      List<BasicBlock> successors = bb.getSuccessors();
-      if (successors.size() > 1) {
-        // There is more than one path from this block so its probe ends.
-        assert doSuccessorsHaveDifferentProbes(probeMarker, successors);
-        probeMarker.setInsertionBlock(bb);
-      } else if (successors.size() == 1) {
-        BasicBlock successor = successors.get(0);
-        if (successor == exitBlock) {
-          // We're going to leave the method (return or throw) so we must terminate the probe.
-          probeMarker.setInsertionBlock(bb);
-        } else {
-          // Is it successor covered by a different probe?
-          ProbeMarker successorProbeMarker = successor.getMarker(ProbeMarker.class);
-          assert successorProbeMarker != null;
-          if (successorProbeMarker.getProbe() != probeMarker.getProbe()) {
-            // The successor starts a different probe so we must terminate ours.
-            probeMarker.setInsertionBlock(bb);
-          }
-        }
-      } else { // no successor
-        assert bb instanceof ThrowBasicBlock;
-        probeMarker.setInsertionBlock(bb);
-      }
-    }
-  }
-
-  /**
-   * Only used for assertion.
-   */
-  private static boolean doSuccessorsHaveDifferentProbes(
-      @Nonnull ProbeMarker marker, @Nonnull List<BasicBlock> successors) {
-    for (BasicBlock bb : successors) {
-      ProbeMarker probeMarker = bb.getMarker(ProbeMarker.class);
-      assert probeMarker != null;
-      if (probeMarker == marker) {
-        return false;
-      }
-    }
-    return true;
-  }
-
-  private static ProbeDescription assignNewProbe(
-      @Nonnull JMethod method, @Nonnull CodeCoverageMarker coverageMarker, @Nonnull BasicBlock bb) {
-    ProbeDescription p = coverageMarker.createProbe(method);
-    bb.addMarker(new ProbeMarker(p));
-    return p;
-  }
-
-  /**
-   * Updates probes with source information.
-   */
-  private static class ProbeUpdater extends JVisitor {
-    @Nonnull
-    private final ProbeDescription probe;
-
-    public ProbeUpdater(@Nonnull ProbeDescription probe) {
-      this.probe = probe;
-    }
-
-    @Override
-    public void endVisit(@Nonnull JExpression x) {
-      updateProbe(x.getSourceInfo());
-    }
-
-    @Override
-    public boolean visit(@Nonnull JIfStatement x) {
-      // Do not visit 'then' and 'else' statements: they will be assigned to different probes
-      // so we do not want to update the current probe with their source information.
-      accept(x.getIfExpr());
-      return false;
-    }
-
-    @Override
-    public boolean visit(@Nonnull JSwitchStatement x) {
-      // Do not visit 'case' and 'default' statements: they will be assigned to different probes
-      // so we do not want to update the current probe with their source information.
-      accept(x.getExpr());
-      return false;
-    }
-
-    @Override
-    public boolean visit(@Nonnull JStatement x) {
-      updateProbe(x.getSourceInfo());
-      return false;
-    }
-
-    private void updateProbe(@Nonnull SourceInfo sourceInfo) {
-      // Without debug info, JaCoCo considers instruction's line to be -1.
-      int line = (sourceInfo != SourceInfo.UNKNOWN) ? sourceInfo.getStartLine() : -1;
-      probe.incrementLine(line, 1, false);
-    }
-  }
-}
diff --git a/jack-coverage/tests/com/android/jack/coverage/CoverageTests.java b/jack-coverage/tests/com/android/jack/coverage/CoverageTests.java
deleted file mode 100644
index 9b1afb2..0000000
--- a/jack-coverage/tests/com/android/jack/coverage/CoverageTests.java
+++ /dev/null
@@ -1,552 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.jack.coverage;
-
-import static org.junit.Assert.assertEquals;
-
-import com.google.common.collect.Sets;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-
-import com.android.jack.test.TestsProperties;
-import com.android.jack.test.junit.KnownIssue;
-import com.android.jack.test.toolchain.AbstractTestTools;
-import com.android.jack.test.toolchain.JackApiV03Toolchain;
-import com.android.jack.test.toolchain.JackApiV04Toolchain;
-import com.android.jack.test.toolchain.JackBasedToolchain;
-import com.android.jack.test.toolchain.JackCliToolchain;
-import com.android.jack.util.NamingTools;
-import com.android.sched.util.file.CannotChangePermissionException;
-import com.android.sched.util.file.CannotCreateFileException;
-import com.android.sched.util.file.WrongPermissionException;
-
-import junit.framework.Assert;
-
-import org.junit.Test;
-
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
-
-public class CoverageTests {
-  @Nonnull
-  private static final String JACOCO_RUNTIME_PACKAGE = "org.jacoco.agent.rt.internal_04864a1";
-
-  @Nonnull private static final String COVERAGE_TEST_PACKAGE = "com.android.jack.coverage";
-
-  @Test
-  public void testSingleClass() throws Exception {
-    final String testPackageName = getTestPackageName("test001");
-    JsonArray classes = compileAndReadJson(testPackageName);
-
-    // We expect only one class
-    Assert.assertNotNull(classes);
-    Assert.assertEquals(1, classes.size());
-    JsonObject testClass = classes.get(0).getAsJsonObject();
-    Assert.assertNotNull(testClass);
-    Assert.assertEquals(
-        getClassNameForJson(testPackageName + ".AbstractClass"),
-        getClassName(testClass));
-
-    // Check its methods.
-    JsonArray methods = testClass.get("methods").getAsJsonArray();
-    Assert.assertEquals(3, methods.size()); // abstract and native methods are excluded.
-
-    class NameAndDesc {
-      @Nonnull public final String name;
-      @Nonnull public final String desc;
-
-      public NameAndDesc(@Nonnull String name, @Nonnull String desc) {
-        this.name = name;
-        this.desc = desc;
-      }
-
-      @Override
-      public boolean equals(Object obj) {
-        if (obj instanceof NameAndDesc) {
-          NameAndDesc other = (NameAndDesc) obj;
-          return name.equals(other.name) && desc.equals(other.desc);
-        } else {
-          return false;
-        }
-      }
-
-      @Override
-      public int hashCode() {
-        String concat = name + desc;
-        return concat.hashCode();
-      }
-    }
-    Set<NameAndDesc> expectedMethods = new HashSet<NameAndDesc>();
-    expectedMethods.add(new NameAndDesc(NamingTools.INIT_NAME, "()V"));
-    expectedMethods.add(new NameAndDesc("staticMethod", "()V"));
-    expectedMethods.add(new NameAndDesc("instanceMethod", "()V"));
-    for (JsonElement methodElt : methods) {
-      String name = methodElt.getAsJsonObject().get("name").getAsString();
-      String desc = methodElt.getAsJsonObject().get("desc").getAsString();
-      Assert.assertTrue(expectedMethods.contains(new NameAndDesc(name, desc)));
-    }
-  }
-
-  @Nonnull
-  private static String getClassName(JsonArray classArray, int index) {
-    return getClassName(classArray.get(index).getAsJsonObject());
-  }
-
-  @Nonnull
-  private static String getClassName(JsonObject classObject) {
-    return classObject.get("name").getAsString();
-  }
-
-  @Test
-  public void testSingleInterface() throws Exception {
-    JsonArray classes = compileAndReadJson(getTestPackageName("test002"));
-
-    // Interface must be skipped
-    Assert.assertEquals(0, classes.size());
-  }
-
-  @Test
-  public void testIncludeAll() throws Exception {
-    String testPackageName = getTestPackageName("test003");
-    JsonArray classes = compileAndReadJson(testPackageName, "*", null);
-
-    // Full coverage: Foo and Bar classes.
-    Assert.assertEquals(2, classes.size());
-    Collection<? extends String> actualClassNames = collectClassNames(classes);
-    Set<String> expectedClassNames = Sets.newHashSet(
-        getClassNameForJson(testPackageName + ".foo.Foo"),
-        getClassNameForJson(testPackageName + ".foo.bar.Bar"));
-    Assert.assertTrue(actualClassNames.containsAll(expectedClassNames));
-  }
-
-  @Test
-  public void testIncludeSingle() throws Exception {
-    String testPackageName = getTestPackageName("test003");
-    String includeFilter = testPackageName + ".foo.bar.Bar";
-    JsonArray classes = compileAndReadJson(testPackageName, includeFilter, null);
-
-    // Partial coverage: only Bar class.
-    Assert.assertEquals(1, classes.size());
-    Collection<? extends String> actualClassNames = collectClassNames(classes);
-    Set<String> expectedClassNames = Sets.newHashSet(
-        getClassNameForJson(testPackageName + ".foo.bar.Bar"));
-    Assert.assertTrue(actualClassNames.containsAll(expectedClassNames));
-  }
-
-  @Test
-  public void testIncludeWildcard() throws Exception {
-    String testPackageName = getTestPackageName("test003");
-    String includeFilter = testPackageName + ".foo.bar.*";
-    JsonArray classes = compileAndReadJson(testPackageName, includeFilter, null);
-
-    // Partial coverage: only Bar class.
-    Assert.assertEquals(1, classes.size());
-    Collection<? extends String> actualClassNames = collectClassNames(classes);
-    Set<String> expectedClassNames = Sets.newHashSet(
-        getClassNameForJson(testPackageName + ".foo.bar.Bar"));
-    Assert.assertTrue(actualClassNames.containsAll(expectedClassNames));
-  }
-
-  @Test
-  public void testExcludeAll() throws Exception {
-    JsonArray classes = compileAndReadJson(getTestPackageName("test003"), null, "*");
-
-    // No coverage at all
-    Assert.assertEquals(0, classes.size());
-  }
-
-  @Test
-  public void testExcludeSingle() throws Exception {
-    String testPackageName = getTestPackageName("test003");
-    String excludeFilter = testPackageName + ".foo.bar.Bar";
-    JsonArray classes = compileAndReadJson(getTestPackageName("test003"), null, excludeFilter);
-
-    // Partial coverage: only Foo class.
-    Assert.assertEquals(1, classes.size());
-    Collection<? extends String> actualClassNames = collectClassNames(classes);
-    Set<String> expectedClassNames = Sets.newHashSet(
-        getClassNameForJson(testPackageName + ".foo.Foo"));
-    Assert.assertTrue(actualClassNames.containsAll(expectedClassNames));
-  }
-
-  @Test
-  public void testExcludeWildcard() throws Exception {
-    String testPackageName = getTestPackageName("test003");
-    String excludeFilter = testPackageName + ".foo.bar.*";
-    JsonArray classes = compileAndReadJson(testPackageName, null, excludeFilter);
-
-    // Partial coverage: only Foo class.
-    Assert.assertEquals(1, classes.size());
-    Collection<? extends String> actualClassNames = collectClassNames(classes);
-    Set<String> expectedClassNames = Sets.newHashSet(
-        getClassNameForJson(testPackageName + ".foo.Foo"));
-    Assert.assertTrue(actualClassNames.containsAll(expectedClassNames));
-  }
-
-  @Test
-  public void testIncludeExclude() throws Exception {
-    String testPackageName = getTestPackageName("test003");
-    String includeFilter = testPackageName + ".foo.bar.*";
-    String excludeFilter = testPackageName + ".foo.*";
-    JsonArray classes = compileAndReadJson(testPackageName, includeFilter, excludeFilter);
-
-    // No coverage at all
-    Assert.assertEquals(0, classes.size());
-  }
-
-  @Test
-  public void testPreDex() throws Exception {
-    String testPackageName = getTestPackageName("test004");
-
-    // 1 - Create a lib.
-    JackBasedToolchain toolchain = createJackToolchain();
-    File libDir = AbstractTestTools.createTempDir();
-    File libSrcFiles = new File(getTestRootDir(testPackageName), "lib");
-    toolchain.srcToLib(libDir, false, libSrcFiles);
-
-    // 2 - Compile the lib with coverage.
-    toolchain = createJackToolchain();
-    toolchain.addStaticLibs(libDir);
-    File coverageMetadataFile = enableCodeCoverage(toolchain, null, null);
-    File srcFiles = new File(getTestRootDir(testPackageName), "src");
-    File outDexFolder = AbstractTestTools.createTempDir();
-    toolchain.srcToExe(outDexFolder, false, srcFiles);
-
-    // 3 - Check types from the lib are instrumented.
-    JsonArray classes = loadJsonCoverageClasses(coverageMetadataFile);
-    JsonObject testClass =
-        getJsonClass(classes, getClassNameForJson(testPackageName + ".lib.LibClass"));
-    JsonArray probesArray = testClass.get("probes").getAsJsonArray();
-    Assert.assertNotNull(probesArray);
-    Assert.assertTrue(probesArray.size() > 0);
-  }
-
-  @Test
-  @KnownIssue  // flaky due to non-determinism
-  public void testClassId_005() throws Exception {
-    String testPackageName = getTestPackageName("test005");
-    File testRootDir = getTestRootDir(testPackageName);
-    final String className = getClassNameForJson(testPackageName + ".jack.LibClass");
-
-    long classIdOne;
-    long classIdTwo;
-    long classIdThree;
-    JackBasedToolchain toolchain;
-
-    // Compile with coverage only
-    {
-      toolchain = createJackToolchain();
-      File coverageFileOne = enableCodeCoverage(toolchain, null, null);
-      File outDexFolderOne = AbstractTestTools.createTempDir();
-      toolchain.srcToExe(outDexFolderOne, false, testRootDir);
-      classIdOne = getClassIdOf(coverageFileOne, className);
-    }
-
-    // Compile with coverage only again into a different coverage file.
-    {
-      toolchain = createJackToolchain();
-      File coverageFileTwo = enableCodeCoverage(toolchain, null, null);
-      File outDexFolderTwo = AbstractTestTools.createTempDir();
-      toolchain.srcToExe(outDexFolderTwo, false, testRootDir);
-      classIdTwo = getClassIdOf(coverageFileTwo, className);
-    }
-
-    // Compile with coverage *and* proguard to shrink LibClass so it loses its unusedMethod.
-    {
-      toolchain = createJackToolchain();
-      File coverageFileThree = enableCodeCoverage(toolchain, null, null);
-      File proguardFile = new File(testRootDir, "proguard.flags");
-      toolchain.addProguardFlags(proguardFile);
-      File outDexFolderThree = AbstractTestTools.createTempDir();
-      toolchain.srcToExe(outDexFolderThree, false, testRootDir);
-      classIdThree = getClassIdOf(coverageFileThree, className);
-    }
-
-    // We should generate the same class ID for the same class.
-    Assert.assertEquals("Expected same class IDs", classIdOne, classIdTwo);
-
-    // We should generate different class IDs when they are different (after shrinking here).
-    assertNotEquals("Expected different class IDs", classIdOne, classIdThree);
-  }
-
-  @Test
-  public void testClassId_006() throws Exception {
-    String testPackageNameV1 = getTestPackageName("test006_v1");
-    File testRootDirV1 = getTestRootDir(testPackageNameV1);
-
-    String testPackageNameV2 = getTestPackageName("test006_v2");
-    File testRootDirV2 = getTestRootDir(testPackageNameV2);
-
-    final String className = getClassNameForJson("jack.SrcClass");
-    long classIdV1;
-    long classIdV2;
-    long classIdV2_2;
-    JackBasedToolchain toolchain;
-
-    // Compile with coverage the version v1
-    {
-      toolchain = createJackToolchain();
-      File coverageFileOne = enableCodeCoverage(toolchain, null, null);
-      File outDexFolderOne = AbstractTestTools.createTempDir();
-      toolchain.srcToExe(outDexFolderOne, false, testRootDirV1);
-      classIdV1 = getClassIdOf(coverageFileOne, className);
-    }
-
-    // Compile with coverage the version v2
-    {
-      toolchain = createJackToolchain();
-      File coverageFileTwo = enableCodeCoverage(toolchain, null, null);
-      File outDexFolderTwo = AbstractTestTools.createTempDir();
-      toolchain.srcToExe(outDexFolderTwo, false, testRootDirV2);
-      classIdV2 = getClassIdOf(coverageFileTwo, className);
-    }
-
-    // Compile with coverage the version v2 again
-    {
-      toolchain = createJackToolchain();
-      File coverageFileThree = enableCodeCoverage(toolchain, null, null);
-      File outDexFolderThree = AbstractTestTools.createTempDir();
-      toolchain.srcToExe(outDexFolderThree, false, testRootDirV2);
-      classIdV2_2 = getClassIdOf(coverageFileThree, className);
-    }
-
-    // We should generate different class IDs when they are different (after shrinking here).
-    assertNotEquals("Expected different class IDs", classIdV1, classIdV2);
-
-    assertEquals("Expected different class IDs", classIdV2, classIdV2_2);
-  }
-
-  private static void assertNotEquals(@Nonnull String msg, long expected, long actual) {
-    if (expected == actual) {
-      StringBuilder stringBuilder = new StringBuilder(msg);
-      stringBuilder.append(": expected=");
-      stringBuilder.append(Long.toHexString(expected));
-      stringBuilder.append(", actual=");
-      stringBuilder.append(Long.toHexString(actual));
-      Assert.fail(stringBuilder.toString());
-    }
-  }
-
-  private static long getClassIdOf(@Nonnull File coverageFile, @Nonnull String className)
-      throws IOException {
-    JsonArray classesArray = loadJsonCoverageClasses(coverageFile);
-    for (int i = 0, e = classesArray.size(); i < e; ++i) {
-      JsonObject classObject = classesArray.get(i).getAsJsonObject();
-      String jsonClassName = classObject.get("name").getAsString();
-      if (className.equals(jsonClassName)) {
-        long id = classObject.get("id").getAsLong();
-        return id;
-      }
-    }
-    throw new AssertionError("No class " + className + " in coverage file");
-  }
-
-  @Nonnull
-  private static JsonObject getJsonClass(
-      @Nonnull JsonArray jsonClasses, @Nonnull String className) {
-    for (JsonElement jsonElement : jsonClasses) {
-      JsonObject jsonClass = jsonElement.getAsJsonObject();
-      if (jsonClass.get("name").getAsString().equals(className)) {
-        return jsonClass;
-      }
-    }
-    throw new AssertionError("No class " + className);
-  }
-
-  @Nonnull
-  private static String getClassNameForJson(@Nonnull String className) {
-    return NamingTools.getBinaryName(className);
-  }
-
-  @Nonnull
-  private Collection<? extends String> collectClassNames(@Nonnull JsonArray classes) {
-    Set<String> classNames = new HashSet<String>();
-    for (JsonElement arrayElt: classes) {
-      classNames.add(getClassName(arrayElt.getAsJsonObject()));
-    }
-    return classNames;
-  }
-
-  @Nonnull
-  private static JackBasedToolchain createJackToolchain() {
-    JackBasedToolchain toolchain =
-        AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class);
-    toolchain.addToClasspath(toolchain.getDefaultBootClasspath());
-    return toolchain;
-  }
-
-  /**
-   * Enable code coverage for the given toolchain.
-   *
-   * @param toolchain the toolchain to configure with code coverage
-   * @param includeFilter the 'include' class filter
-   * @param excludeFilter the 'exclude' class filter
-   * @return the coverage metadata file generated by the compilation
-   * @throws Exception if the compilation fails
-   */
-  private static File enableCodeCoverage(
-      @Nonnull JackBasedToolchain toolchain,
-      @Nonnull String includeFilter,
-      @Nonnull String excludeFilter) throws Exception {
-    File coverageMetadataFile = createTempCoverageMetadataFile();
-    toolchain.addProperty("jack.coverage", "true");
-    toolchain.addProperty(
-        "jack.coverage.metadata.file", coverageMetadataFile.getAbsolutePath());
-    toolchain.addProperty(
-        "jack.coverage.jacoco.package", JACOCO_RUNTIME_PACKAGE);
-    if (includeFilter != null) {
-      toolchain.addProperty("jack.coverage.jacoco.include", includeFilter);
-    }
-    if (excludeFilter != null) {
-      toolchain.addProperty("jack.coverage.jacoco.exclude", excludeFilter);
-    }
-    toolchain.addToClasspath(getJacocoAgentLib());
-    File pluginFile = getCodeCoveragePluginFile();
-    List<File> pluginPath = Collections.singletonList(pluginFile);
-    List<String> pluginNames = Collections.singletonList("com.android.jack.coverage.CodeCoverage");
-    if (toolchain instanceof JackCliToolchain) {
-      JackCliToolchain cliToolchain = (JackCliToolchain) toolchain;
-      cliToolchain.setPluginPath(pluginPath);
-      cliToolchain.setPluginNames(pluginNames);
-    } else {
-      // TODO: need to rework API toolchain hierarchy in test framework to avoid these if/else.
-      if (toolchain instanceof JackApiV03Toolchain) {
-        JackApiV03Toolchain jackApiV03 = (JackApiV03Toolchain) toolchain;
-        jackApiV03.setPluginPath(pluginPath);
-        jackApiV03.setPluginNames(pluginNames);
-      } else if (toolchain instanceof JackApiV04Toolchain) {
-        JackApiV04Toolchain jackApiV04 = (JackApiV04Toolchain) toolchain;
-        jackApiV04.setPluginPath(pluginPath);
-        jackApiV04.setPluginNames(pluginNames);
-      } else {
-        throw new AssertionError("Unsupported toolchain: " + toolchain.getClass().getName());
-      }
-    }
-    return coverageMetadataFile;
-  }
-
-  @Nonnull
-  private JsonArray compileAndReadJson(@Nonnull String testPackageName)
-      throws CannotCreateFileException, CannotChangePermissionException, WrongPermissionException,
-          IOException, Exception {
-    return compileAndReadJson(testPackageName, null, null);
-  }
-
-  @Nonnull
-  private static File createTempCoverageMetadataFile()
-      throws CannotCreateFileException, CannotChangePermissionException {
-    return AbstractTestTools.createTempFile("coverage", ".metadata");
-  }
-
-  private File compileDexWithCoverage(@Nonnull File[] sourceFiles,
-      @CheckForNull String includeFilter,
-      @CheckForNull String excludeFilter,
-      @Nonnull File[] staticLibs) throws Exception {
-    File outDexFolder = AbstractTestTools.createTempDir();
-    JackBasedToolchain toolchain = createJackToolchain();
-    File coverageMetadataFile = enableCodeCoverage(toolchain, includeFilter, excludeFilter);
-
-    // Setup classpath.
-    toolchain.addStaticLibs(staticLibs);
-
-    toolchain.srcToExe(outDexFolder, false, sourceFiles);
-
-    return coverageMetadataFile;
-  }
-
-  @Nonnull
-  private JsonArray compileAndReadJson(
-      @Nonnull String testPackageName,
-      @CheckForNull String includeFilter,
-      @CheckForNull String excludeFilter)
-      throws CannotCreateFileException, CannotChangePermissionException, WrongPermissionException,
-          IOException, Exception {
-    File sourceDir = getTestRootDir(testPackageName);
-    File coverageMetadataFile = compileDexWithCoverage(new File[]{sourceDir},
-        includeFilter, excludeFilter, new File[0]);
-
-    return loadJsonCoverageClasses(coverageMetadataFile);
-  }
-
-  @Nonnull
-  private static JsonArray loadJsonCoverageClasses(@Nonnull File coverageMetadataFile)
-      throws IOException {
-    Assert.assertTrue(coverageMetadataFile.length() > 0);
-
-    JsonObject root = loadJson(coverageMetadataFile).getAsJsonObject();
-    Assert.assertNotNull(root);
-
-    String version = root.get("version").getAsString();
-    Assert.assertNotNull(version);
-    Assert.assertEquals("1.0", version);
-
-    JsonArray classes =
-        root.get("data").getAsJsonArray();
-    Assert.assertNotNull(classes);
-    return classes;
-  }
-
-  @Nonnull
-  private static JsonElement loadJson(@Nonnull File jsonFile) throws IOException {
-    JsonParser parser = new JsonParser();
-    FileReader reader = new FileReader(jsonFile);
-    try {
-      return parser.parse(reader);
-    } finally {
-      reader.close();
-    }
-  }
-
-  @Nonnull
-  private static File getJacocoAgentLib() {
-    return new File(
-        TestsProperties.getJackRootDir(), "jacoco/org.jacoco.agent.rt-0.7.5.201505241946-all.jar");
-  }
-
-  @Nonnull
-  private static File getCodeCoveragePluginFile() {
-    return new File(
-        TestsProperties.getJackRootDir(), "jack-coverage/dist/jack-coverage-plugin.jar");
-  }
-
-  @Nonnull
-  private String getTestPackageName(@Nonnull String testName) {
-    return COVERAGE_TEST_PACKAGE + "." + testName;
-  }
-
-  /**
-   * Workaround AbstractTestTools.getTestRootDir hardcoded for Jack tests only.
-   */
-  @Nonnull
-  private static final File getTestRootDir(@Nonnull String testPackageName) {
-    File jackRootDir = TestsProperties.getJackRootDir();
-    File jackCoverageDir = new File(jackRootDir, "jack-coverage");
-    File jackCoverageTestsDir = new File(jackCoverageDir, "tests");
-    return new File(jackCoverageTestsDir, testPackageName.replace('.', File.separatorChar));
-  }
-}
diff --git a/jack-jacoco-reporter/src/com/android/jack/tools/jacoco/ErrorCode.java b/jack-jacoco-reporter/src/com/android/jack/tools/jacoco/ErrorCode.java
deleted file mode 100644
index 0ecb389..0000000
--- a/jack-jacoco-reporter/src/com/android/jack/tools/jacoco/ErrorCode.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.android.jack.tools.jacoco;
-
-import javax.annotation.Nonnegative;
-
-/**
- * An enumeration of possible error codes.
- */
-public enum ErrorCode {
-  USAGE_ERROR(1),
-  INERNAL_ERROR(2);
-
-  @Nonnegative
-  private final int errorCode;
-
-  private ErrorCode(@Nonnegative int errorCode) {
-    assert errorCode > 0;
-    this.errorCode = errorCode;
-  }
-
-  @Nonnegative
-  public int getErrorCode() {
-    return errorCode;
-  }
-}
-
diff --git a/jack-jacoco-reporter/src/com/android/jack/tools/jacoco/JackCoverageAnalyzer.java b/jack-jacoco-reporter/src/com/android/jack/tools/jacoco/JackCoverageAnalyzer.java
deleted file mode 100644
index ab6b6f5..0000000
--- a/jack-jacoco-reporter/src/com/android/jack/tools/jacoco/JackCoverageAnalyzer.java
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.jack.tools.jacoco;
-
-import com.google.gson.JsonParseException;
-import com.google.gson.stream.JsonReader;
-
-import org.jacoco.core.analysis.IClassCoverage;
-import org.jacoco.core.analysis.ICounter;
-import org.jacoco.core.analysis.ICoverageVisitor;
-import org.jacoco.core.analysis.IMethodCoverage;
-import org.jacoco.core.data.ExecutionData;
-import org.jacoco.core.data.ExecutionDataStore;
-import org.jacoco.core.internal.analysis.ClassCoverageImpl;
-import org.jacoco.core.internal.analysis.CounterImpl;
-import org.jacoco.core.internal.analysis.MethodCoverageImpl;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Pattern;
-
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
-
-/**
- * Code coverage report analyzer.
- */
-public class JackCoverageAnalyzer {
-  @Nonnull private static final String CURRENT_VERSION = "1.0";
-
-  @Nonnull private static final String JSON_VERSION_ATTRIBUTE = "version";
-
-  @Nonnull private static final String JSON_DATA_ATTRIBUTE = "data";
-
-  @Nonnull private final ExecutionDataStore executionDataStore;
-
-  @Nonnull private final ICoverageVisitor coverageVisitor;
-
-  public JackCoverageAnalyzer(
-      @Nonnull ExecutionDataStore executionDataStore, @Nonnull ICoverageVisitor coverageVisitor) {
-    this.executionDataStore = executionDataStore;
-    this.coverageVisitor = coverageVisitor;
-  }
-
-  /**
-   * Reads the coverage description file and report each class to the {@link ICoverageVisitor}.
-   *
-   * @param jackCoverageDescriptionFile
-   * @throws IOException
-   */
-  public void analyze(@Nonnull File jackCoverageDescriptionFile) throws IOException {
-    if (!jackCoverageDescriptionFile.exists()) {
-      throw new IllegalArgumentException(
-          "File " + jackCoverageDescriptionFile + " does not exist.");
-    }
-
-    InputStream is = new FileInputStream(jackCoverageDescriptionFile);
-    try {
-      analyze(is);
-    } finally {
-      is.close();
-    }
-  }
-
-  private void analyze(@Nonnull InputStream coverageDescriptionInputStream) throws IOException {
-    JsonReader jsonReader = new JsonReader(new InputStreamReader(coverageDescriptionInputStream));
-    readMetadata(jsonReader);
-  }
-
-  private void checkVersion(@CheckForNull String version) {
-    if (version == null) {
-      throw new JsonParseException("Missing 'version' attribute before coverage metadadata");
-    }
-    String[] parts = version.split(Pattern.quote("."));
-    if (parts.length != 2) {
-      throw new JsonParseException("Version number format must be x.y");
-    }
-    if (!version.equals(CURRENT_VERSION)) {
-      throw new JsonParseException("Unknown version " + version);
-    }
-  }
-
-  private void readMetadata(@Nonnull JsonReader jsonReader) throws IOException {
-    jsonReader.beginObject();
-
-    String version = null;
-    while (jsonReader.hasNext()) {
-      String attributeName = jsonReader.nextName();
-      if (attributeName.equals(JSON_VERSION_ATTRIBUTE)) {
-        // Reads the version so we can parse the JSON accordingly.
-        version = jsonReader.nextString();
-      } else if (attributeName.equals(JSON_DATA_ATTRIBUTE)) {
-        checkVersion(version);
-        readClasses(jsonReader);
-      } else {
-        jsonReader.skipValue();
-      }
-    }
-
-    jsonReader.endObject();
-  }
-
-  private void readClasses(@Nonnull JsonReader jsonReader) throws IOException {
-    jsonReader.beginArray();
-    while (jsonReader.hasNext()) {
-      IClassCoverage classCoverage = readClass(jsonReader);
-      coverageVisitor.visitCoverage(classCoverage);
-    }
-    jsonReader.endArray();
-  }
-
-  @Nonnull
-  private IClassCoverage readClass(@Nonnull JsonReader jsonReader) throws IOException {
-    long id = 0;
-    String className = null;
-    String sourceFile = null;
-    String superClassName = null;
-    List<IMethodCoverage> methods = new ArrayList<IMethodCoverage>();
-    List<ProbeDescription> probes = new ArrayList<ProbeDescription>();
-    List<String> interfaces = new ArrayList<String>();
-
-    jsonReader.beginObject();
-    while (jsonReader.hasNext()) {
-      String attributeName = jsonReader.nextName();
-      if ("id".equals(attributeName)) {
-        id = jsonReader.nextLong();
-      } else if ("name".equals(attributeName)) {
-        className = jsonReader.nextString();
-      } else if ("sourceFile".equals(attributeName)) {
-        sourceFile = jsonReader.nextString();
-      } else if ("superClassName".equals(attributeName)) {
-        superClassName = jsonReader.nextString();
-      } else if ("interfaces".equals(attributeName)) {
-        readInterfaces(jsonReader, interfaces);
-      } else if ("methods".equals(attributeName)) {
-        readMethods(jsonReader, methods);
-      } else if ("probes".equals(attributeName)) {
-        readProbes(jsonReader, probes, methods);
-      } else {
-        throw new JsonParseException("Unknown attribute \"" + attributeName + "\"");
-      }
-    }
-    jsonReader.endObject();
-
-    final ExecutionData executionData = executionDataStore.get(id);
-    boolean noMatch;
-    if (executionData != null) {
-      noMatch = false;
-      // Check there is no id collision.
-      executionData.assertCompatibility(id, className, probes.size());
-    } else {
-      noMatch = executionDataStore.contains(className);
-    }
-
-    // Build the class coverage.
-    String[] interfacesArray = interfaces.toArray(new String[0]);
-    ClassCoverageImpl c =
-        new ClassCoverageImpl(
-            className, id, noMatch, "L" + className + ";", superClassName, interfacesArray);
-    c.setSourceFileName(sourceFile);
-
-    // Update methods with probes.
-    final boolean[] executionProbes = executionData != null ? executionData.getProbes() : null;
-    for (ProbeDescription probe : probes) {
-      final int probeIndex = probe.id;
-      final boolean active = (executionProbes != null && executionProbes[probeIndex]);
-      final MethodCoverageImpl methodCoverage = probe.method;
-      for (ProbeDescription.Line line : probe.lines) {
-        ICounter instructionCounter;
-        ICounter branchCounter;
-        if (active) {
-          instructionCounter = CounterImpl.getInstance(0, line.instructionsCount);
-          branchCounter = CounterImpl.getInstance(0, line.branchesCount);
-        } else {
-          instructionCounter = CounterImpl.getInstance(line.instructionsCount, 0);
-          branchCounter = CounterImpl.getInstance(line.branchesCount, 0);
-        }
-        methodCoverage.increment(instructionCounter, branchCounter, line.line);
-      }
-    }
-
-    // Now methods have been updated with probes, add them to the class coverage.
-    for (IMethodCoverage method : methods) {
-      c.addMethod(method);
-    }
-
-    return c;
-  }
-
-  private void readInterfaces(@Nonnull JsonReader jsonReader, @Nonnull List<String> interfaces)
-      throws IOException {
-    jsonReader.beginArray();
-    while (jsonReader.hasNext()) {
-      interfaces.add(jsonReader.nextString());
-    }
-    jsonReader.endArray();
-  }
-
-  // Parses probes.
-  private static void readProbes(
-      @Nonnull JsonReader jsonReader,
-      @Nonnull List<ProbeDescription> probes,
-      @Nonnull List<? extends IMethodCoverage> methods)
-      throws IOException {
-    jsonReader.beginArray();
-    while (jsonReader.hasNext()) {
-      probes.add(readProbe(jsonReader, methods));
-    }
-    jsonReader.endArray();
-  }
-
-  // Parses one probe.
-  private static ProbeDescription readProbe(
-      @Nonnull JsonReader jsonReader, @Nonnull List<? extends IMethodCoverage> methods)
-      throws IOException {
-    ProbeDescription probe = new ProbeDescription();
-    jsonReader.beginObject();
-    while (jsonReader.hasNext()) {
-      String attributeName = jsonReader.nextName();
-      if ("id".equals(attributeName)) {
-        probe.setId(jsonReader.nextInt());
-      } else if ("method".equals(attributeName)) {
-        int methodId = jsonReader.nextInt();
-        probe.setMethod((MethodCoverageImpl) methods.get(methodId));
-      } else if ("lines".equals(attributeName)) {
-        readLines(jsonReader, probe);
-      } else {
-        throw new JsonParseException("Unknown attribute \"" + attributeName + "\"");
-      }
-    }
-    jsonReader.endObject();
-    return probe;
-  }
-
-  private static void readLines(@Nonnull JsonReader jsonReader, @Nonnull ProbeDescription probe)
-      throws IOException {
-    jsonReader.beginArray();
-    while (jsonReader.hasNext()) {
-      jsonReader.beginObject();
-      int line = -1;
-      int instructionsCount = -1;
-      int branchesCount = -1;
-      while (jsonReader.hasNext()) {
-        String attributeName = jsonReader.nextName();
-        if ("line".equals(attributeName)) {
-          line = jsonReader.nextInt();
-        } else if ("insnCount".equals(attributeName)) {
-          instructionsCount = jsonReader.nextInt();
-        } else if ("branchCount".equals(attributeName)) {
-          branchesCount = jsonReader.nextInt();
-        } else {
-          throw new JsonParseException("Unknown attribute \"" + attributeName + "\"");
-        }
-      }
-      probe.addLine(line, instructionsCount, branchesCount);
-      jsonReader.endObject();
-    }
-    jsonReader.endArray();
-  }
-
-  private static void readMethods(
-      @Nonnull JsonReader jsonReader, @Nonnull List<IMethodCoverage> methods) throws IOException {
-    jsonReader.beginArray();
-    while (jsonReader.hasNext()) {
-      methods.add(readMethod(jsonReader));
-    }
-    jsonReader.endArray();
-  }
-
-  @Nonnull
-  private static IMethodCoverage readMethod(@Nonnull JsonReader jsonReader) throws IOException {
-    int id = -1;
-    String name = null;
-    String desc = null;
-    String signature = null;
-
-    jsonReader.beginObject();
-    while (jsonReader.hasNext()) {
-      String attributeName = jsonReader.nextName();
-      if ("id".equals(attributeName)) {
-        id = jsonReader.nextInt();
-      } else if ("name".equals(attributeName)) {
-        name = jsonReader.nextString();
-      } else if ("desc".equals(attributeName)) {
-        desc = jsonReader.nextString();
-      } else if ("signature".equals(attributeName)) {
-        signature = jsonReader.nextString();
-      } else {
-        throw new JsonParseException("Unknown attribute \"" + attributeName + "\"");
-      }
-    }
-    jsonReader.endObject();
-
-    return new JackMethodCoverage(id, name, desc, signature);
-  }
-}
diff --git a/jack-jacoco-reporter/src/com/android/jack/tools/jacoco/Main.java b/jack-jacoco-reporter/src/com/android/jack/tools/jacoco/Main.java
deleted file mode 100644
index 8835bd3..0000000
--- a/jack-jacoco-reporter/src/com/android/jack/tools/jacoco/Main.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.jack.tools.jacoco;
-
-import com.android.sched.util.Version;
-
-import org.jacoco.core.analysis.CoverageBuilder;
-import org.jacoco.core.analysis.IBundleCoverage;
-import org.jacoco.core.tools.ExecFileLoader;
-import org.jacoco.report.DirectorySourceFileLocator;
-import org.jacoco.report.FileMultiReportOutput;
-import org.jacoco.report.IReportVisitor;
-import org.jacoco.report.MultiSourceFileLocator;
-import org.jacoco.report.csv.CSVFormatter;
-import org.jacoco.report.html.HTMLFormatter;
-import org.jacoco.report.xml.XMLFormatter;
-import org.kohsuke.args4j.CmdLineException;
-import org.kohsuke.args4j.CmdLineParser;
-import org.kohsuke.args4j.ParserProperties;
-import org.kohsuke.args4j.spi.OptionHandler;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.text.MessageFormat;
-import java.util.Arrays;
-import java.util.List;
-
-import javax.annotation.Nonnull;
-
-/**
- * Jack code coverage reporter.
- */
-public class Main {
-  public static void main(String[] args) {
-    try {
-      Options options = parseCommandLine(Arrays.asList(args));
-      if (options.askForHelp()) {
-        printUsage(System.out);
-      } else if (options.askForVersion()) {
-        printVersion(System.out);
-      } else {
-        createReport(options);
-      }
-    } catch (CmdLineException e) {
-      System.err.println(e.getMessage());
-      CmdLineParser parser = e.getParser();
-      if (parser != null) {
-        printUsage(System.err);
-      } else {
-        System.err.println("Try --help for help.");
-      }
-    } catch (IOException e) {
-      e.printStackTrace(System.err);
-      printErrorAndExit(ErrorCode.INERNAL_ERROR, e.getMessage());
-    }
-  }
-
-  private static void printVersion(@Nonnull PrintStream out) {
-    try {
-      Version version = new Version("jack-jacoco-reporter", Main.class.getClassLoader());
-      out.println("Jack Jacoco reporter: " + version.getVerboseVersion());
-    } catch (IOException e) {
-      throw new AssertionError("Failed to find reporter version", e);
-    }
-  }
-
-  @Nonnull
-  private static Options parseCommandLine(@Nonnull List<String> list) throws CmdLineException {
-    Options options = new Options();
-    CmdLineParser parser =
-        new CmdLineParser(options, ParserProperties.defaults().withUsageWidth(100));
-    parser.parseArgument(list);
-    parser.stopOptionParsing();
-    return options;
-  }
-
-  private static void printUsage(@Nonnull PrintStream printStream) {
-    CmdLineParser parser =
-        new CmdLineParser(new Options(), ParserProperties.defaults().withUsageWidth(100));
-
-    // Prints one line with all required options.
-    StringBuilder oneLineUsage = new StringBuilder("Usage:");
-    for (OptionHandler<?> optionHandler : parser.getOptions()) {
-      if (optionHandler.option.required()) {
-        oneLineUsage.append(' ');
-        oneLineUsage.append(optionHandler.option.toString());
-        oneLineUsage.append(' ');
-        oneLineUsage.append(optionHandler.option.metaVar());
-        if (optionHandler.option.isMultiValued()) {
-          oneLineUsage.append(" ...");
-        }
-      }
-    }
-    oneLineUsage.append(" [<options>]");
-    printStream.println(oneLineUsage.toString());
-
-    // Print all options with their usage.
-    printStream.println();
-    printStream.println("Options:");
-    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-    parser.printUsage(outputStream);
-    printStream.append(outputStream.toString());
-  }
-
-  private static void createReport(@Nonnull Options options) throws IOException {
-    List<File> coverageDescriptionFiles = options.getCoverageDescriptionFiles();
-    for (File coverageDescriptionFile : coverageDescriptionFiles) {
-      checkFileExists(coverageDescriptionFile);
-      checkCanReadFromFile(coverageDescriptionFile);
-    }
-
-    List<File> coverageExecutionDataFiles = options.getCoverageExecutionFiles();
-    for (File coverageExecutionDataFile : coverageExecutionDataFiles) {
-      checkFileExists(coverageExecutionDataFile);
-      checkCanReadFromFile(coverageExecutionDataFile);
-    }
-
-    File reportOutputFile = options.getReportOutputDirectory();
-    assert reportOutputFile != null;
-    checkDirectoryExists(reportOutputFile);
-    checkCanWriteToFile(reportOutputFile);
-
-    List<File> sourceFilesDirectories = options.getSourceFilesDirectories();
-    for (File sourceFilesDirectory : sourceFilesDirectories) {
-      checkDirectoryExists(sourceFilesDirectory);
-      checkCanReadFromFile(sourceFilesDirectory);
-    }
-
-    String reportName = options.getReportName();
-    ReportType reportType = options.getReportType();
-    String outputEncoding = options.getOutputReportEncoding();
-
-    // Load coverage execution files.
-    ExecFileLoader loader = new ExecFileLoader();
-    for (File coverageExecutionDataFile : coverageExecutionDataFiles) {
-      loader.load(coverageExecutionDataFile);
-    }
-
-    // Analyze coverage.
-    CoverageBuilder coverageBuilder = new CoverageBuilder();
-    JackCoverageAnalyzer analyzer =
-        new JackCoverageAnalyzer(loader.getExecutionDataStore(), coverageBuilder);
-    for (File coverageDescriptionFile : coverageDescriptionFiles) {
-      analyzer.analyze(coverageDescriptionFile);
-    }
-    IBundleCoverage bundleCoverage = coverageBuilder.getBundle(reportName);
-
-    // Create report.
-    IReportVisitor visitor = null;
-    switch (reportType) {
-      case HTML:
-        HTMLFormatter htmlFormatter = new HTMLFormatter();
-        htmlFormatter.setOutputEncoding(outputEncoding);
-        visitor = htmlFormatter.createVisitor(new FileMultiReportOutput(reportOutputFile));
-        break;
-
-      case XML:
-        XMLFormatter xmlFormatter = new XMLFormatter();
-        xmlFormatter.setOutputEncoding(outputEncoding);
-        File xmlReportFile = new File(reportOutputFile, "report.xml");
-        visitor = xmlFormatter.createVisitor(new FileOutputStream(xmlReportFile));
-        break;
-
-      case CSV:
-        CSVFormatter csvFormatter = new CSVFormatter();
-        csvFormatter.setOutputEncoding(outputEncoding);
-        File csvReportFile = new File(reportOutputFile, "report.csv");
-        visitor = csvFormatter.createVisitor(new FileOutputStream(csvReportFile));
-        break;
-
-      default:
-        throw new IllegalArgumentException("Unknown report type");
-    }
-
-    if (visitor == null) {
-      throw new NullPointerException("Report's visitor has not been created");
-    }
-
-
-    // Initialize the report with all of the execution and session
-    // information. At this point the report doesn't know about the
-    // structure of the report being created
-    visitor.visitInfo(
-        loader.getSessionInfoStore().getInfos(), loader.getExecutionDataStore().getContents());
-
-    // Populate the report structure with the bundle coverage information.
-    // Call visitGroup if you need groups in your report.
-    int tabWidth = options.getTabWidth();
-    MultiSourceFileLocator sourceFileLocator = new MultiSourceFileLocator(tabWidth);
-    final String sourceFilesEncoding = options.getInputSourceFilesEncoding();
-    for (File sourceFilesDirectory : sourceFilesDirectories) {
-      sourceFileLocator.add(
-          new DirectorySourceFileLocator(sourceFilesDirectory, sourceFilesEncoding, tabWidth));
-    }
-    visitor.visitBundle(bundleCoverage, sourceFileLocator);
-
-    // Signal end of structure information to allow report to write all
-    // information out
-    visitor.visitEnd();
-
-    System.out.println("Created report at " + reportOutputFile);
-  }
-
-  private static void checkFileExists(@Nonnull File file) {
-    if (!file.exists()) {
-      printErrorAndExit(
-          ErrorCode.USAGE_ERROR, MessageFormat.format("File {0} does not exist", file));
-    }
-  }
-
-  private static void checkCanReadFromFile(@Nonnull File file) {
-    if (!file.canRead()) {
-      printErrorAndExit(
-          ErrorCode.USAGE_ERROR, MessageFormat.format("Cannot read from file {0}", file));
-    }
-  }
-
-  private static void checkCanWriteToFile(@Nonnull File file) {
-    if (!file.canWrite()) {
-      printErrorAndExit(
-          ErrorCode.USAGE_ERROR, MessageFormat.format("Cannot write to file {0}", file));
-    }
-  }
-
-  private static void checkDirectoryExists(@Nonnull File file) {
-    checkFileExists(file);
-    if (!file.isDirectory()) {
-      printErrorAndExit(
-          ErrorCode.USAGE_ERROR, MessageFormat.format("File {0} is not a directory", file));
-    }
-  }
-
-  private static void printErrorAndExit(@Nonnull ErrorCode error, String msg) {
-    System.err.println(msg);
-    System.exit(error.getErrorCode());
-  }
-}
diff --git a/jack-jar-tools/.classpath b/jack-jar-tools/.classpath
index 4a22221..4838580 100644
--- a/jack-jar-tools/.classpath
+++ b/jack-jar-tools/.classpath
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry kind="lib" path="libs/jsr305-lib.jar"/>
 	<classpathentry kind="lib" path="libs/args4j-lib.jar"/>
 	<classpathentry combineaccessrules="false" kind="src" path="/Scheduler"/>
diff --git a/jack-jar-tools/.settings/org.eclipse.jdt.core.prefs b/jack-jar-tools/.settings/org.eclipse.jdt.core.prefs
index d4b25d9..3b86858 100644
--- a/jack-jar-tools/.settings/org.eclipse.jdt.core.prefs
+++ b/jack-jar-tools/.settings/org.eclipse.jdt.core.prefs
@@ -6,9 +6,9 @@
 org.eclipse.jdt.core.compiler.annotation.nullable=javax.annotation.CheckForNull
 org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.compliance=1.8
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -97,7 +97,7 @@
 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
 org.eclipse.jdt.core.compiler.processAnnotations=disabled
-org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.source=1.8
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
 org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=1585
 org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field.count_dependent=1585|-1|1585
diff --git a/jack-jar-tools/build.gradle b/jack-jar-tools/build.gradle
new file mode 100644
index 0000000..7590f27
--- /dev/null
+++ b/jack-jar-tools/build.gradle
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+apply plugin: 'java'
+apply plugin: 'com.github.johnrengelman.shadow'
+
+sourceCompatibility = 1.8
+targetCompatibility = 1.8
+
+apply from: "$rootDir/gradle-script/checkstyle.gradle"
+apply from: "$rootDir/gradle-script/findbugs.gradle"
+
+sourceSets {
+    main {
+        java {
+            srcDirs = ['src']
+        }
+    }
+}
+
+dependencies {
+  compileOnly libs.jsr305
+  compile project(':sched')
+  compile project(':args4j')
+}
+
+apply from: "$rootDir/gradle-script/versionfile.gradle"
+
+jar {
+  classifier 'lib'
+}
+
+shadowJar {
+    dependsOn createJackVersionFile
+    classifier ''
+    manifest {
+        from 'etc/manifest.txt'
+    }
+    from ("${project.buildDir}") {
+      include "jack-jar-tools-version.properties"
+    }
+}
+
+task dist (type: Copy, dependsOn: shadowJar) {
+  from shadowJar.archivePath
+  into file("${rootDir}/gradle-dist/")
+}
diff --git a/jack-samples/jack-transform-plugin/src/main/java/com/android/jack/sample/instrumentation/Instrumenter.java b/jack-samples/jack-transform-plugin/src/main/java/com/android/jack/sample/instrumentation/Instrumenter.java
index 4e88ac5..8e59956 100644
--- a/jack-samples/jack-transform-plugin/src/main/java/com/android/jack/sample/instrumentation/Instrumenter.java
+++ b/jack-samples/jack-transform-plugin/src/main/java/com/android/jack/sample/instrumentation/Instrumenter.java
@@ -19,7 +19,6 @@
 import com.android.jack.Jack;
 import com.android.jack.ir.ast.*;
 import com.android.jack.ir.formatter.BinarySignatureFormatter;
-import com.android.jack.ir.formatter.MethodFormatter;
 import com.android.jack.ir.formatter.TypeAndMethodFormatter;
 import com.android.jack.ir.sourceinfo.SourceInfo;
 import com.android.jack.lookup.CommonTypes;
@@ -94,7 +93,7 @@
    * representation.
    */
   @Nonnull
-  private final JMethodId printlnMethod;
+  private final JMethodId printlnMethodId;
 
   /**
    * The constructor used by the scheduler to build an instance of this schedulable (using
@@ -117,7 +116,7 @@
     // We look for java.io.PrintStream.println(java.lang.String)
     JType javaLangStringClass = lookup.getClass(CommonTypes.JAVA_LANG_STRING);
     List<JType> methodArgTypes = Collections.singletonList(javaLangStringClass);
-    printlnMethod = javaIoPrintStreamClass.getMethodId("println", methodArgTypes,
+    printlnMethodId = javaIoPrintStreamClass.getMethodId("println", methodArgTypes,
             MethodKind.INSTANCE_VIRTUAL, JPrimitiveType.JPrimitiveTypeEnum.VOID.getType());
 
   }
@@ -189,8 +188,7 @@
     // "System.out" as receiver. In other words, we create the expression
     // "System.out.println(<methodNameString>)".
     JMethodCall methodCall = new JMethodCall(sourceInfo, systemOutFieldAccess,
-            javaIoPrintStreamClass, printlnMethod.getMethodIdWide(), printlnMethod.getType(),
-            true /* virtual method */);
+            javaIoPrintStreamClass, printlnMethodId, true /* virtual method */);
     methodCall.addArg(methodNameString);
 
     // The root expression of the statement is the method call.
diff --git a/jack-tests/.classpath b/jack-tests/.classpath
index bd48491..49d610b 100644
--- a/jack-tests/.classpath
+++ b/jack-tests/.classpath
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
-	<classpathentry excluding="com/android/jack/annotation/test014/jack/|com/android/jack/annotation/test015/jack/|com/android/jack/annotation/test016/jack/|com/android/jack/annotation/test017/jack/|com/android/jack/classpath/test002/lib1override/|com/android/jack/compiletime/test*/**|com/android/jack/enums/test003/link/Other.java|com/android/jack/enums/test003/link/Values.java|com/android/jack/error/test001/jack/A.java|com/android/jack/error/test002/jack/A.java|com/android/jack/frontend/test002/jack/PackageName/ClassInConflictingPackage.java|com/android/jack/frontend/test005/jack/|com/android/jack/frontend/test006/jack/|com/android/jack/frontend/test007/jack/|com/android/jack/frontend/test007/jackduplicate/|com/android/jack/frontend/test008/jack/NoOuterContext.java|com/android/jack/frontend/test010/jack/UnusedLocalVar.java|com/android/jack/frontend/test013/jack/ExtendingInnerOnly.java|com/android/jack/frontend/test014/jack/ExtendingInnerInStaticContext.java|com/android/jack/frontend/test015/jack/WithOuterContextButStatic.java|com/android/jack/frontend/test016/jack/WithDuplicated.java|com/android/jack/frontend/test017/jack/InvalidQualification.java|com/android/jack/jarjar/test003/dontcompile/|com/android/jack/jarjar/test004/dontcompile/|com/android/jack/java8/annotation/|com/android/jack/java8/defaultmethod/|com/android/jack/java8/gwt/|com/android/jack/java8/inference/|com/android/jack/java8/intersectiontype/|com/android/jack/java8/lambda/|com/android/jack/java8/methodref/|com/android/jack/java8/retrolambda/|com/android/jack/java8/staticmethod/|com/android/jack/java8/variable/|com/android/jack/lookup/test001/liboverride/|com/android/jack/nopackage/test*/**|com/android/jack/optimizations/lambdas/test*/**|com/android/jack/jarjar/test006/dontcompile/|com/android/jack/java8/bridges/|com/android/jack/jill/test001/|com/android/jack/jill/test002/|com/android/jack/jill/test003/|com/android/jack/jill/test004/|com/android/jack/sourcepath/test002/jack/Sourcepath002.java|com/android/jack/annotation/test019/jack/|com/android/jack/frontend/test018/jack/|com/android/jack/annotation/test020/jack/|com/android/jack/assign/test002/jack/|com/android/jack/annotation/processor/sample2/src/|com/android/jack/shrob/test062/jack/Tests.java|com/android/jack/shrob/test062/jack/A.java|com/android/jack/coverage/test006_v1/jack/|com/android/jack/coverage/test006_v2/jack/|com/android/jack/multidex/test004/jack/|com/android/jack/shrob/test066/jack/MySuperInterfaceWithDefaultMethod.java|com/android/jack/shrob/test066/jack/MyClass.java|com/android/jack/shrob/test068/jack/I1.java|com/android/jack/shrob/test068/jack/I2.java|com/android/jack/shrob/test068/jack/I2Impl.java|com/android/jack/shrob/test068/jack/I2ImplImpl.java|com/android/jack/shrob/test068/jack/Kept.java|com/android/jack/shrob/test067/jack/MyInterfaceWithDefaultMethod.java|com/android/jack/shrob/test067/jack/MyClass.java|com/android/jack/shrob/test067/jack/Kept.java|com/android/jack/frontend/generic/test002/jack/|com/android/jack/frontend/generic/test003/jack/" kind="src" path="tests"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry excluding="com/android/jack/annotation/processor/sample2/src/|com/android/jack/annotation/processor/sample2/src/|com/android/jack/annotation/test015/jack/|com/android/jack/annotation/test017/jack/|com/android/jack/assign/test002/|com/android/jack/classpath/test002/lib1override/**|com/android/jack/encoding/tests/**|com/android/jack/enums/test003/link/Other.java|com/android/jack/enums/test003/link/Values.java|com/android/jack/error/test001/jack/A.java|com/android/jack/error/test002/jack/A.java|com/android/jack/frontend/generic/test002/jack/|com/android/jack/frontend/test002/jack/PackageName/ClassInConflictingPackage.java|com/android/jack/frontend/test005/jack/**|com/android/jack/frontend/test006/jack/**|com/android/jack/frontend/test007/jack/|com/android/jack/frontend/test007/jackduplicate/|com/android/jack/frontend/test008/jack/NoOuterContext.java|com/android/jack/frontend/test010/jack/UnusedLocalVar.java|com/android/jack/frontend/test013/jack/ExtendingInnerOnly.java|com/android/jack/frontend/test014/jack/ExtendingInnerInStaticContext.java|com/android/jack/frontend/test015/jack/WithOuterContextButStatic.java|com/android/jack/frontend/test016/jack/WithDuplicated.java|com/android/jack/frontend/test017/jack/InvalidQualification.java|com/android/jack/frontend/test019/jack/TooBig.java|com/android/jack/jarjar/test003/dontcompile/|com/android/jack/jarjar/test006/dontcompile/|com/android/jack/jarjar/test006/dontcompile/|com/android/jack/java8/annotation/test004/|com/android/jack/java8/bridges/test007/|com/android/jack/java8/intersectiontype/test004/|com/android/jack/java8/intersectiontype/test005/|com/android/jack/java8/intersectiontype/test006/|com/android/jack/java8/lambda/test039/|com/android/jack/java8/lambda/test040/|com/android/jack/java8/lambda/test041/|com/android/jack/java8/variable/test001/|com/android/jack/java8/variable/test003/|com/android/jack/jill/test001/**|com/android/jack/jill/test002/**|com/android/jack/jill/test003/**|com/android/jack/jill/test004/**|com/android/jack/jill/test005/**|com/android/jack/lookup/test001/liboverride/|com/android/jack/nopackage/test*/**|com/android/jack/sourcepath/test002/jack/Sourcepath002.java" kind="src" path="tests"/>
 	<classpathentry kind="lib" path="libs/junit4.jar"/>
 	<classpathentry kind="lib" path="libs/antlr-runtime-lib.jar"/>
 	<classpathentry kind="lib" path="libs/dx-ref.jar"/>
diff --git a/jack-tests/.settings/findbugs-include.xml b/jack-tests/.settings/findbugs-include.xml
index f7b706a..c505a63 100644
--- a/jack-tests/.settings/findbugs-include.xml
+++ b/jack-tests/.settings/findbugs-include.xml
@@ -2,4 +2,32 @@
 <Match>
     <Package name="~com\.android\.jack\.test.*"/>
 </Match>
+
+<!-- TODO: move these classes in com.android.jack.test to ease filtering -->
+<Match>
+    <Class name="com.android.jack.annotations.CalledByInvokeCustom"/>
+</Match>
+<Match>
+    <Class name="com.android.jack.annotations.Constant"/>
+</Match>
+<Match>
+    <Class name="com.android.jack.annotations.LinkerFieldHandle"/>
+</Match>
+<Match>
+    <Class name="com.android.jack.annotations.LinkerMethodHandle"/>
+</Match>
+<Match>
+    <Class name="com.android.jack.annotations.MethodHandleKind"/>
+</Match>
+
+<Match>
+    <Class name="~com\.android\.jack\.shrob\.AbstractListingComparator.*"/>
+</Match>
+<Match>
+    <Class name="com.android.jack.shrob.ListingComparator"/>
+</Match>
+<Match>
+    <Class name="com.android.jack.shrob.SeedsComparator"/>
+</Match>
+
 </FindBugsFilter>
diff --git a/jack-tests/.settings/org.eclipse.jdt.core.prefs b/jack-tests/.settings/org.eclipse.jdt.core.prefs
index eeaca9e..2aa601b 100644
--- a/jack-tests/.settings/org.eclipse.jdt.core.prefs
+++ b/jack-tests/.settings/org.eclipse.jdt.core.prefs
@@ -7,9 +7,9 @@
 org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.compliance=1.8
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -92,7 +92,7 @@
 org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.7
+org.eclipse.jdt.core.compiler.source=1.8
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
 org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=1585
 org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field.count_dependent=1585|-1|1585
diff --git a/jack-tests/README.android b/jack-tests/README.android
index 047e3b5..e3ff195 100644
--- a/jack-tests/README.android
+++ b/jack-tests/README.android
@@ -29,5 +29,8 @@
 Original sources can be downloaded from:
 http://archive.apache.org/dist/ant/source/apache-ant-1.9.6-src.zip
 
+* Proguard 5.3.2, as a prebuilt jar for jack-tests
+https://sourceforge.net/projects/proguard/files/proguard/5.3/proguard5.3.2.zip/download
+
 
 
diff --git a/jack-tests/build.gradle b/jack-tests/build.gradle
new file mode 100644
index 0000000..5c84b4c
--- /dev/null
+++ b/jack-tests/build.gradle
@@ -0,0 +1,209 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+project(':jack-tests') {
+  apply plugin: 'java'
+  apply plugin: 'org.anarres.jarjar'
+
+  sourceCompatibility = 1.8
+  targetCompatibility = 1.8
+
+  apply from: "$rootDir/gradle-script/checkstyle.gradle"
+  apply from: "$rootDir/gradle-script/findbugs.gradle"
+
+  checkstyleMain {
+    source = 'src'
+  }
+
+  findbugs {
+      includeFilter = file("config/findbugs/findbugs-include.xml")
+  }
+
+  sourceSets {
+      main {
+          java {
+              srcDirs = ['src', 'tests']
+              exclude "com/android/jack/annotation/processor/sample2/src/"
+              exclude "com/android/jack/annotation/processor/sample2/src/"
+              exclude "com/android/jack/classpath/test002/lib1override/**"
+              exclude "com/android/jack/encoding/tests/**"
+              exclude "com/android/jack/enums/test003/link/Other.java"
+              exclude "com/android/jack/enums/test003/link/Values.java"
+              exclude "com/android/jack/error/test001/jack/A.java"
+              exclude "com/android/jack/error/test002/jack/A.java"
+              exclude "com/android/jack/frontend/test002/jack/PackageName/ClassInConflictingPackage.java"
+              exclude "com/android/jack/frontend/test005/jack/**"
+              exclude "com/android/jack/frontend/test006/jack/**"
+              exclude "com/android/jack/frontend/test007/jackduplicate/"
+              exclude "com/android/jack/frontend/test008/jack/NoOuterContext.java"
+              exclude "com/android/jack/frontend/test010/jack/UnusedLocalVar.java"
+              exclude "com/android/jack/frontend/test013/jack/ExtendingInnerOnly.java"
+              exclude "com/android/jack/frontend/test014/jack/ExtendingInnerInStaticContext.java"
+              exclude "com/android/jack/frontend/test015/jack/WithOuterContextButStatic.java"
+              exclude "com/android/jack/frontend/test016/jack/WithDuplicated.java"
+              exclude "com/android/jack/frontend/test017/jack/InvalidQualification.java"
+              exclude "com/android/jack/frontend/test019/jack/TooBig.java"
+              exclude "com/android/jack/jarjar/test003/dontcompile/"
+              exclude "com/android/jack/jarjar/test006/dontcompile/"
+              exclude "com/android/jack/jarjar/test006/dontcompile/"
+              exclude "com/android/jack/java8/gwt/test019/jack/Java8Test.java"
+              exclude "com/android/jack/java8/intersectiontype/test004/"
+              exclude "com/android/jack/java8/intersectiontype/test005/"
+              exclude "com/android/jack/java8/intersectiontype/test006/"
+              exclude "com/android/jack/java8/lambda/test019/"
+              exclude "com/android/jack/java8/methodref/test014/jack/Tests.java"
+              exclude "com/android/jack/java8/variable/test001/"
+              exclude "com/android/jack/java8/variable/test003/"
+              exclude "com/android/jack/jill/test001/**"
+              exclude "com/android/jack/jill/test002/**"
+              exclude "com/android/jack/jill/test003/**"
+              exclude "com/android/jack/jill/test004/**"
+              exclude "com/android/jack/jill/test005/**"
+              exclude "com/android/jack/lookup/test001/liboverride/"
+              exclude "com/android/jack/sourcepath/test002/jack/Sourcepath002.java"
+          }
+      }
+
+      // HACK: this way, test library can be built (e.g. for dump) and test can be passed
+      //with gradle command line as well.
+      test {
+        java {
+          srcDirs = sourceSets.main.java.srcDirs
+          excludes = sourceSets.main.java.excludes
+        }
+      }
+  }
+
+  gradle.taskGraph.whenReady { graph ->
+      if (graph.hasTask(check)) {
+        // test needs to specify right test suite to use Jack test runner
+        // this prevents from running tests bound to fail during ' check'
+        test.enabled = false
+      }
+  }
+
+  dependencies {
+
+    compile project(':jill-api')
+    compile project(':jack:jackunittests')
+    compile project(':dx-ref').configurations.archives.artifacts.files
+    compile project(':ddmlib').configurations.archives.artifacts.files
+    compile project(':jack-api')
+    compile project(':sched:schedtests')
+    compile jarjar.repackage ("ecj-tests-lib-jarjar") {
+        from files(project(':ecj-tests-lib').configurations.archives.artifacts.file.path) {
+          builtBy ':ecj-tests-lib:jar'
+        }
+        classRename "org.eclipse.**", "com.android.jack.test.eclipse.@1"
+    }
+    compileOnly libs.jsr305
+    testCompileOnly libs.jsr305
+  }
+}
+
+javadoc.enabled false
+
+project(':jack-tests:test-lib') {
+  apply plugin: 'java'
+
+  configurations {
+      schedBuildDep
+  }
+
+  dependencies {
+    compile project(':jack-tests')
+    compile project(':jack:jackunittests')
+    compile project(':ddmlib').configurations.archives.artifacts.files
+    schedBuildDep project(':sched:sched-ap')
+  }
+
+  task schedBuildJackIntermediate (type: Exec) {
+
+    List<String> inputJars = new ArrayList<String>()
+    inputJars.add(configurations.schedBuildDep.singleFile.getAbsolutePath())
+    configurations.runtime.files.each {
+          File file ->
+              inputJars.add(file.getAbsolutePath())
+    }
+
+    def cmdLine = ['java', '-jar', configurations.schedBuildDep.singleFile]
+    configurations.compile.files.each {
+      File file ->
+              cmdLine << file.getAbsolutePath()
+    }
+    doFirst {
+      file("${project.buildDir}").mkdirs()
+    }
+    cmdLine << new File(project.buildDir, "test-lib-intermediate.jar").toString()
+
+    commandLine cmdLine
+
+    inputs.files(inputJars)
+    outputs.files(file("${project.buildDir}/test-lib-intermediate.jar"))
+  }
+
+  jar {
+    dependsOn schedBuildJackIntermediate
+
+    manifest {
+      from '../etc/manifest.txt'
+    }
+    from ("${rootDir}/jack/rsc") {
+      include 'META-INF/services/**'
+    }
+    from ("${rootDir}/jill/rsc") {
+      include 'META-INF/services/**'
+    }
+    from zipTree("${project.buildDir}/test-lib-intermediate.jar")
+  }
+}
+
+test {
+  systemProperty "tests.config", System.getProperty("tests.config")
+  systemProperty "tests.runtime.tolerant", System.getProperty("tests.runtime.tolerant")
+  systemProperty "file.encoding", System.getProperty("file.encoding")
+  systemProperty "runtime.version", System.getProperty("runtime.version")
+  reports {
+        junitXml.enabled = false
+        html.enabled = true
+  }
+}
+
+def generateTestDumpTasks(taskName, dumpFileName, testSuiteName, classPathFiles) {
+  return tasks.create(name: taskName, type: JavaExec) {
+
+    doFirst {
+      file("gradle-dump").mkdirs()
+      standardOutput new FileOutputStream(file('gradle-dump/' + dumpFileName + '.js'))
+    }
+    def vmArgs = ['-Dfile.encoding=utf-8', '-Dtests.dump=true']
+    if (!System.getProperty("runtime.version", "").equals("")) {
+      vmArgs << "-Druntime.version=" + System.getProperty("runtime.version")
+    }
+    if (!System.getProperty("tests.config", "").equals("")) {
+      vmArgs << "-Dtests.config=" + System.getProperty("tests.config")
+    }
+    main 'com.android.jack.test.junit.JackJUnitLauncher'
+    classpath classPathFiles
+    jvmArgs vmArgs
+    args testSuiteName
+
+    }
+}
+
+generateTestDumpTasks('testJackDump', 'PreSubmitTests', 'com.android.jack.PreSubmitTests', [project(':jack-tests:test-lib').jar.archivePath])
+generateTestDumpTasks('testJackLongDump', 'LongLastingTests', 'com.android.jack.LongLastingTests', [project(':jack-tests:test-lib').jar.archivePath])
+generateTestDumpTasks('testSchedDump', 'SchedAllTests', 'com.android.sched.SchedAllTests', [project(':sched:schedtests').jar.archivePath, project(':jack-tests:test-lib').jar.archivePath])
diff --git a/jack-tests/config/findbugs/findbugs-include.xml b/jack-tests/config/findbugs/findbugs-include.xml
new file mode 100644
index 0000000..ec89019
--- /dev/null
+++ b/jack-tests/config/findbugs/findbugs-include.xml
@@ -0,0 +1,34 @@
+<FindBugsFilter>
+<Match>
+    <Package name="~com\.android\.jack\.test.*"/>
+</Match>
+
+
+<!-- TODO: move these classes in com.android.jack.test to ease filtering -->
+<Match>
+    <Class name="com.android.jack.annotations.CalledByInvokeCustom"/>
+</Match>
+<Match>
+    <Class name="com.android.jack.annotations.Constant"/>
+</Match>
+<Match>
+    <Class name="com.android.jack.annotations.LinkerFieldHandle"/>
+</Match>
+<Match>
+    <Class name="com.android.jack.annotations.LinkerMethodHandle"/>
+</Match>
+<Match>
+    <Class name="com.android.jack.annotations.MethodHandleKind"/>
+</Match>
+
+<Match>
+    <Class name="~com\.android\.jack\.shrob\.AbstractListingComparator.*"/>
+</Match>
+<Match>
+    <Class name="com.android.jack.shrob.ListingComparator"/>
+</Match>
+<Match>
+    <Class name="com.android.jack.shrob.SeedsComparator"/>
+</Match>
+
+</FindBugsFilter>
diff --git a/jack-tests/prebuilts/core-stubs-mini.jack b/jack-tests/prebuilts/core-stubs-mini.jack
index 2f5db0e..698808e 100644
--- a/jack-tests/prebuilts/core-stubs-mini.jack
+++ b/jack-tests/prebuilts/core-stubs-mini.jack
Binary files differ
diff --git a/jack-tests/prebuilts/core-stubs-mini.jar b/jack-tests/prebuilts/core-stubs-mini.jar
index a8638dc..3772849 100644
--- a/jack-tests/prebuilts/core-stubs-mini.jar
+++ b/jack-tests/prebuilts/core-stubs-mini.jar
Binary files differ
diff --git a/jack-tests/prebuilts/ecj-tests-lib.jar b/jack-tests/prebuilts/ecj-tests-lib.jar
index e508f48..f70131d 100644
--- a/jack-tests/prebuilts/ecj-tests-lib.jar
+++ b/jack-tests/prebuilts/ecj-tests-lib.jar
Binary files differ
diff --git a/jack-tests/prebuilts/jack-test-annotations-lib.jack b/jack-tests/prebuilts/jack-test-annotations-lib.jack
index f728d45..2233ca0 100644
--- a/jack-tests/prebuilts/jack-test-annotations-lib.jack
+++ b/jack-tests/prebuilts/jack-test-annotations-lib.jack
Binary files differ
diff --git a/jack-tests/prebuilts/junit4-lib.jack b/jack-tests/prebuilts/junit4-lib.jack
index f718a92..2e8d083 100644
--- a/jack-tests/prebuilts/junit4-lib.jack
+++ b/jack-tests/prebuilts/junit4-lib.jack
Binary files differ
diff --git a/jack-tests/prebuilts/proguard.jar b/jack-tests/prebuilts/proguard.jar
index 56d68ba..bf92108 100644
--- a/jack-tests/prebuilts/proguard.jar
+++ b/jack-tests/prebuilts/proguard.jar
Binary files differ
diff --git a/jack-tests/run-jack-tests-gradle b/jack-tests/run-jack-tests-gradle
new file mode 100755
index 0000000..d66279e
--- /dev/null
+++ b/jack-tests/run-jack-tests-gradle
@@ -0,0 +1,23 @@
+# Copyright (C) 2012 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#!/bin/bash
+
+if [ $# -lt 2 ]
+then
+  echo "Usage: $(basename $0) <tests config file path> <test suite>+"
+  exit 1
+fi
+CURRENT_DIR=$(dirname $0)
+java -Dtests.config=$1 -jar $CURRENT_DIR/test-lib/gradle-build/libs/test-lib.jar $2
diff --git a/jack-tests/src/com/android/jack/test/comparator/ComparatorDex.java b/jack-tests/src/com/android/jack/test/comparator/ComparatorDex.java
index 00f47a1..486ff10 100644
--- a/jack-tests/src/com/android/jack/test/comparator/ComparatorDex.java
+++ b/jack-tests/src/com/android/jack/test/comparator/ComparatorDex.java
@@ -18,9 +18,10 @@
 
 import com.android.jack.comparator.DexComparator;
 import com.android.jack.comparator.DifferenceFoundException;
+import com.android.sched.util.file.CannotCloseException;
+import com.android.sched.util.file.CannotReadException;
 
 import java.io.File;
-import java.io.IOException;
 
 import javax.annotation.Nonnull;
 
@@ -74,7 +75,7 @@
     try {
       new DexComparator(withDebugInfo, strict, compareDebugInfoBinary, compareInstructionNumber,
           instructionNumberTolerance).compare(reference, candidate);
-    } catch (IOException e) {
+    } catch (CannotReadException | CannotCloseException e) {
       throw new ComparatorException(e);
     }
   }
diff --git a/jack-tests/src/com/android/jack/test/dex/DexOutputBasedTest.java b/jack-tests/src/com/android/jack/test/dex/DexOutputBasedTest.java
index a031b69..0bd1f33 100644
--- a/jack-tests/src/com/android/jack/test/dex/DexOutputBasedTest.java
+++ b/jack-tests/src/com/android/jack/test/dex/DexOutputBasedTest.java
@@ -17,6 +17,7 @@
 package com.android.jack.test.dex;
 
 import com.android.jack.backend.dex.DexFileWriter;
+import com.android.jack.backend.dex.rop.CodeItemBuilder;
 import com.android.jack.optimizations.Optimizations;
 import com.android.jack.test.helper.RuntimeTestHelper;
 import com.android.jack.test.toolchain.AbstractTestTools;
@@ -127,6 +128,8 @@
 
     toolchain.addProperty(Optimizations.REMOVE_UNUSED_NON_SYNTHETIC_DEFINITION.getName(),
         String.valueOf(false));
+    toolchain.addProperty(CodeItemBuilder.DEX_OPTIMIZE.getName(),
+        String.valueOf(true));
     toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
         .srcToExe(outFolder, /* zipFile = */false, allTestFolders);
 
diff --git a/jack-tests/src/com/android/jack/test/helper/CheckDexStructureTestHelper.java b/jack-tests/src/com/android/jack/test/helper/CheckDexStructureTestHelper.java
index 8672f56..a252975 100644
--- a/jack-tests/src/com/android/jack/test/helper/CheckDexStructureTestHelper.java
+++ b/jack-tests/src/com/android/jack/test/helper/CheckDexStructureTestHelper.java
@@ -77,7 +77,7 @@
   }
 
   public void compare() throws Exception {
-    runTest(createDexFileComparator().setWithDebugInfo(withDebugInfos));
+    runTest(createDexFileComparatorWithAnnotations());
   }
 
 }
diff --git a/jack-tests/src/com/android/jack/test/helper/IncrementalTestHelper.java b/jack-tests/src/com/android/jack/test/helper/IncrementalTestHelper.java
index 5be494c..6265f65 100644
--- a/jack-tests/src/com/android/jack/test/helper/IncrementalTestHelper.java
+++ b/jack-tests/src/com/android/jack/test/helper/IncrementalTestHelper.java
@@ -244,7 +244,7 @@
 
   @Nonnull
   public void run(@Nonnull String mainClass, @Nonnull String expected) throws Exception {
-    List<RuntimeRunner> runnerList = AbstractTestTools.listRuntimeTestRunners(null);
+    List<RuntimeRunner> runnerList = AbstractTestTools.listRuntimeTestRunners();
     for (RuntimeRunner runner : runnerList) {
       ByteArrayOutputStream out = new ByteArrayOutputStream();
       ((AbstractRuntimeRunner) runner).setOutputStream(out);
diff --git a/jack-tests/src/com/android/jack/test/helper/RuntimeTestHelper.java b/jack-tests/src/com/android/jack/test/helper/RuntimeTestHelper.java
index be2c84a..21c166f 100644
--- a/jack-tests/src/com/android/jack/test/helper/RuntimeTestHelper.java
+++ b/jack-tests/src/com/android/jack/test/helper/RuntimeTestHelper.java
@@ -31,6 +31,8 @@
 
 import junit.framework.Assert;
 
+import org.junit.Assume;
+
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
@@ -65,6 +67,9 @@
 
   private SourceLevel level = SourceLevel.JAVA_6;
 
+  @CheckForNull
+  private String minApiLevel = null;
+
   @Nonnull
   private List<FileChecker> fileCheckers = new ArrayList<FileChecker>(0);
 
@@ -102,6 +107,12 @@
   }
 
   @Nonnull
+  public RuntimeTestHelper setAndroidMinApiLevel(@Nonnull String minApiLevel) {
+    this.minApiLevel = minApiLevel;
+    return this;
+  }
+
+  @Nonnull
   public RuntimeTestHelper addProperty(@Nonnull String key, @Nonnull String value) {
     String oldValue = runtimeProperties.get(key);
     if (oldValue != null && !oldValue.equals(value)) {
@@ -308,12 +319,16 @@
   }
 
   @Nonnull
-  private AndroidToolchain createCandidateToolchain() {
+  private AndroidToolchain createCandidateToolchain() throws Exception {
     AndroidToolchain candidateTestTools =
         AbstractTestTools.getCandidateToolchain(AndroidToolchain.class, ignoredCandidateToolchains);
     candidateTestTools.setSourceLevel(level);
+    if (minApiLevel != null) {
+      candidateTestTools.setAndroidMinApiLevel(minApiLevel);
+    }
     candidateTestTools.setWithDebugInfos(withDebugInfos);
-    if (!runtimeProperties.isEmpty() && candidateTestTools instanceof JackBasedToolchain) {
+    if (!runtimeProperties.isEmpty()) {
+      Assume.assumeTrue(candidateTestTools instanceof JackBasedToolchain);
       // if the tool chain is type of JackBasedToolchain and the customized properties are set,
       // configure the runtime testing properties
       JackBasedToolchain jackBasedToolchain = (JackBasedToolchain) candidateTestTools;
@@ -325,10 +340,13 @@
   }
 
   @Nonnull
-  private AndroidToolchain createReferenceToolchain() {
+  private AndroidToolchain createReferenceToolchain() throws Exception {
     AndroidToolchain referenceTestTools =
         AbstractTestTools.getReferenceToolchain(AndroidToolchain.class);
     referenceTestTools.setSourceLevel(level);
+    if (minApiLevel != null) {
+      referenceTestTools.setAndroidMinApiLevel(minApiLevel);
+    }
     referenceTestTools.setWithDebugInfos(withDebugInfos);
     if (!runtimeProperties.isEmpty() && referenceTestTools instanceof JackBasedToolchain) {
       // if the tool chain is type of JackBasedToolchain and the customized properties are set,
diff --git a/jack-tests/src/com/android/jack/test/helper/SourceToDexComparisonTestHelper.java b/jack-tests/src/com/android/jack/test/helper/SourceToDexComparisonTestHelper.java
index e8d7f7e..3ec1c64 100644
--- a/jack-tests/src/com/android/jack/test/helper/SourceToDexComparisonTestHelper.java
+++ b/jack-tests/src/com/android/jack/test/helper/SourceToDexComparisonTestHelper.java
@@ -16,7 +16,10 @@
 
 package com.android.jack.test.helper;
 
+import com.android.jack.test.comparator.Comparator;
+import com.android.jack.test.comparator.ComparatorComposite;
 import com.android.jack.test.comparator.ComparatorDex;
+import com.android.jack.test.comparator.ComparatorDexAnnotations;
 import com.android.jack.test.toolchain.AbstractTestTools;
 import com.android.jack.test.toolchain.AndroidToolchain;
 import com.android.jack.test.toolchain.Toolchain.SourceLevel;
@@ -156,6 +159,12 @@
   }
 
   @Nonnull
+  public Comparator createDexFileComparatorWithAnnotations() {
+    return new ComparatorComposite(createDexFileComparator(),
+        new ComparatorDexAnnotations(refDex, candidateDex));
+  }
+
+  @Nonnull
   public SourceToDexComparisonTestHelper setJarjarRulesFile(@Nonnull File jarjarRulesFile) {
     this.jarjarRulesFile = jarjarRulesFile;
     return this;
diff --git a/jack-tests/src/com/android/jack/test/junit/JackJUnitLauncher.java b/jack-tests/src/com/android/jack/test/junit/JackJUnitLauncher.java
index a4c4853..4f3d97a 100644
--- a/jack-tests/src/com/android/jack/test/junit/JackJUnitLauncher.java
+++ b/jack-tests/src/com/android/jack/test/junit/JackJUnitLauncher.java
@@ -21,6 +21,7 @@
 import org.junit.runner.JUnitCore;
 import org.junit.runner.Request;
 import org.junit.runner.Result;
+import org.junit.runner.notification.Failure;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -104,6 +105,9 @@
     for (Request req : requests) {
       Result result = core.run(req);
       failureCount += result.getFailureCount();
+      for (Failure f : result.getFailures()) {
+        f.getException().printStackTrace();
+      }
     }
 
     if (dumpTests) {
diff --git a/jack-tests/src/com/android/jack/test/junit/JackTestRunner.java b/jack-tests/src/com/android/jack/test/junit/JackTestRunner.java
index cad02ab..8249925 100644
--- a/jack-tests/src/com/android/jack/test/junit/JackTestRunner.java
+++ b/jack-tests/src/com/android/jack/test/junit/JackTestRunner.java
@@ -69,58 +69,63 @@
 
     @Override
     public boolean shouldRun(@Nonnull Description description) {
-      boolean shouldRun = false;
+      boolean knownIssue = false;
+      boolean notApplicable = false;
 
       KnownIssue knownIssueAnnot = description.getAnnotation(KnownIssue.class);
       Runtime runtimeAnnot = description.getAnnotation(Runtime.class);
 
       // Special case of ecj tests that use JUnit3
-      boolean ecjTestEligibleToRun = false;
       boolean isEcjTestPostM = false;
       if (description.getClassName().contains("Ecj")) {
         isEcjTestPostM =
             (description.getClassName().contains("PostM"))
                 || description.getClassName().contains("EcjInterfaceMethodsTest");
-        shouldRun =
-            // Otherwise method of class aren't scanned and dump won't work
-            (dumpTests && description.getMethodName() == null)
-                || (isEcjTestPostM && runtimeVersion.compareTo(RuntimeVersion.N) >= 0);
+
+        notApplicable = isEcjTestPostM && runtimeVersion.compareTo(RuntimeVersion.N) < 0;
+
       } else {
         // General case
-        if (runtimeAnnot == null
-            || runtimeAnnot.from().compareTo(runtimeVersion) <= 0) {
-          if (knownIssueAnnot == null) {
-            shouldRun = true;
-          } else {
-            shouldRun =
-                (knownIssueAnnot.candidate().length > 0 || knownIssueAnnot.reference().length > 0)
-                    && (isValidToolchain(candidate, knownIssueAnnot.candidate())
-                        && isValidToolchain(reference, knownIssueAnnot.reference()));
-          }
-        }
+        knownIssue = (knownIssueAnnot != null)
+            && ((knownIssueAnnot.candidate().length == 0)
+                    || !isValidToolchain(candidate, knownIssueAnnot.candidate())
+                && (knownIssueAnnot.reference().length == 0
+                    || !isValidToolchain(reference, knownIssueAnnot.reference())));
+
+        notApplicable = runtimeAnnot != null && runtimeAnnot.from().compareTo(runtimeVersion) > 0;
       }
 
-      if (dumpTests && description.getMethodName() != null) {
-        System.out.println(
-            "  \"" + description.getClassName() + '#' + description.getMethodName() + "\": {");
-        System.out.print("    \"ignored\":" + !shouldRun);
-        if (runtimeAnnot != null) {
-          System.out.println(",");
+      if (dumpTests) {
+        if (description.getMethodName() != null) {
           System.out.println(
-              "    \"runtimePostM\":"
-                  + (runtimeAnnot.from().ordinal() > RuntimeVersion.M.ordinal()));
-        } else if (description.getClassName().contains("Ecj")) {
-          // Special case for Ecj tests that use JUnit3
-          System.out.println(",");
-          System.out.println("    \"runtimePostM\":" + isEcjTestPostM);
+              "  \"" + description.getClassName() + '#' + description.getMethodName() + "\": {");
+          System.out.println("    \"notApplicable\":" + notApplicable + ',');
+          System.out.print("    \"knownIssue\":" + knownIssue);
+          if (runtimeAnnot != null) {
+            System.out.println(",");
+            System.out.println(
+                "    \"runtimePostM\":"
+                    + (runtimeAnnot.from().ordinal() > RuntimeVersion.M.ordinal()));
+          } else if (description.getClassName().contains("Ecj")) {
+            // Special case for Ecj tests that use JUnit3
+            System.out.println(",");
+            System.out.println("    \"runtimePostM\":" + isEcjTestPostM);
+          } else {
+            System.out.println();
+          }
+          System.out.println("  },");
+
+          // Don't run test, dump only
+          return false;
+
         } else {
-          System.out.println();
+
+          // Visit types
+          return true;
         }
-        System.out.println("  },");
-        return false;
       }
 
-      return shouldRun;
+      return !knownIssue && !notApplicable;
     }
 
     private boolean isValidToolchain(
diff --git a/jack-tests/src/com/android/jack/test/runner/DeviceRunner.java b/jack-tests/src/com/android/jack/test/runner/DeviceRunner.java
index 7a087bb..ba7955c 100644
--- a/jack-tests/src/com/android/jack/test/runner/DeviceRunner.java
+++ b/jack-tests/src/com/android/jack/test/runner/DeviceRunner.java
@@ -188,176 +188,186 @@
     }
 
     int exitStatus = -1;
+    List<String> failingDevices = new ArrayList<>(0);
     for (IDevice device : connectedDevices) {
 
-      checkDeviceRuntime(device);
-
-      if (isVerbose) {
-        System.out.println("Running on device: " + device.getName());
-      }
-
-      ensureAdbRoot(device);
-
-      //Remove trailing '\n' returned by emulator
-      File testsRootDirFile =
-          new File(device.getMountPoint(IDevice.MNT_DATA).replace("\n", ""), "jack-tests");
-      String testsRootDir = convertToTargetPath(testsRootDirFile);
-
-      String testScriptPathOnTarget =
-          convertToTargetPath(new File(testsRootDirFile, "TEST_SCRIPT_NAME"));
-
-      String[] desFilePaths = new String[classpathFiles.length];
       try {
-        if (isVerbose) {
-          System.out.println("adb shell -s " + device.getSerialNumber() + " mkdir "
-              + testsRootDir);
-        }
-        device.executeShellCommand("mkdir " + testsRootDir, hostOutput);
+
+        checkDeviceRuntime(device);
 
         if (isVerbose) {
-          System.out.println("adb shell -s " + device.getSerialNumber() + " rm "
-              + testsRootDir + FileListingService.FILE_SEPARATOR + "*");
+          System.out.println("Running on device: " + device.getName());
         }
-        device.executeShellCommand("rm " + testsRootDir + FileListingService.FILE_SEPARATOR + "*",
-            hostOutput);
 
-        if (isVerbose) {
-          System.out.println("adb -s " + device.getSerialNumber() + " push  "
-              + TEST_SCRIPT_FILE.getAbsolutePath() + " "
-              + testScriptPathOnTarget);
-        }
-        device.pushFile(TEST_SCRIPT_FILE.getAbsolutePath(),
-            testScriptPathOnTarget);
+        ensureAdbRoot(device);
 
-        if (isVerbose) {
-          System.out.println("adb -s " + device.getSerialNumber() + " shell chmod 777 "
-              + testScriptPathOnTarget);
-        }
-        device.executeShellCommand(
-            "chmod 777 " + testScriptPathOnTarget, hostOutput);
+        //Remove trailing '\n' returned by emulator
+        File testsRootDirFile =
+            new File(device.getMountPoint(IDevice.MNT_DATA).replace("\n", ""), "jack-tests");
+        String testsRootDir = convertToTargetPath(testsRootDirFile);
 
-        int i = 0;
-        for (File f : classpathFiles) {
-          desFilePaths[i] =
-              convertToTargetPath(new File(testsRootDirFile,  "f" + i + "_" + f.getName()));
+        String testScriptPathOnTarget =
+            convertToTargetPath(new File(testsRootDirFile, "TEST_SCRIPT_NAME"));
+
+        String[] desFilePaths = new String[classpathFiles.length];
+        try {
+          if (isVerbose) {
+            System.out.println("adb shell -s " + device.getSerialNumber() + " mkdir "
+                + testsRootDir);
+          }
+          device.executeShellCommand("mkdir " + testsRootDir, hostOutput);
 
           if (isVerbose) {
-            System.out.println("adb -s " + device.getSerialNumber() + " push "
-                + f.getAbsolutePath() + " " + desFilePaths[i]);
+            System.out.println("adb shell -s " + device.getSerialNumber() + " rm "
+                + testsRootDir + FileListingService.FILE_SEPARATOR + "*");
           }
-          device.pushFile(f.getAbsolutePath(), desFilePaths[i]);
-          i++;
-        }
-      } catch (TimeoutException e) {
-        throw new RuntimeRunnerException(e);
-      } catch (AdbCommandRejectedException e) {
-        throw new RuntimeRunnerException(e);
-      } catch (ShellCommandUnresponsiveException e) {
-        throw new RuntimeRunnerException(e);
-      } catch (IOException e) {
-        throw new RuntimeRunnerException(e);
-      } catch (SyncException e) {
-        throw new RuntimeRunnerException(e);
-      }
+          device.executeShellCommand("rm " + testsRootDir + FileListingService.FILE_SEPARATOR + "*",
+              hostOutput);
 
-      // Split command line to have at most MAX_NB_CLASSES jUnit classes per invocation
-      List<List<String>> splittedMainClasses = new ArrayList<List<String>>();
-      int currentChunk = 0;
-      for (String classToRun : classes) {
-        if (splittedMainClasses.size() == currentChunk) {
-          splittedMainClasses.add(new ArrayList<String>(MAX_NB_CLASSES));
-          if (jUnitRunnerName != null) {
-            splittedMainClasses.get(currentChunk).add(jUnitRunnerName);
-          }
-        }
-
-        splittedMainClasses.get(currentChunk).add(classToRun);
-
-        if (splittedMainClasses.get(currentChunk).size() == MAX_NB_CLASSES) {
-          currentChunk++;
-        }
-      }
-      List<String> cmdLines = new ArrayList<String>(splittedMainClasses.size());
-      File rootDir = new File(device.getMountPoint(IDevice.MNT_ROOT).replace("\n", ""));
-      for (List<String> classList : splittedMainClasses) {
-        cmdLines.add(Joiner.on(' ').join(buildCommandLine(rootDir, options,
-            classList.toArray(new String[classList.size()]), desFilePaths)));
-      }
-
-      try {
-        // Bug : exit code return by adb shell is wrong (always 0)
-        // https://code.google.com/p/android/issues/detail?id=3254
-        // Use go team hack to work this around
-        // https://code.google.com/p/go/source/browse/misc/arm/a
-
-        for (String args : cmdLines) {
           if (isVerbose) {
-            System.out.println("adb -s " + device.getSerialNumber() + " shell "
-                + testScriptPathOnTarget + ' ' + args);
+            System.out.println("adb -s " + device.getSerialNumber() + " push  "
+                + TEST_SCRIPT_FILE.getAbsolutePath() + " "
+                + testScriptPathOnTarget);
+          }
+          device.pushFile(TEST_SCRIPT_FILE.getAbsolutePath(),
+              testScriptPathOnTarget);
+
+          if (isVerbose) {
+            System.out.println("adb -s " + device.getSerialNumber() + " shell chmod 777 "
+                + testScriptPathOnTarget);
           }
           device.executeShellCommand(
-              testScriptPathOnTarget + ' ' + args,
-              new MyShellOuputReceiver(outRedirectStream, errRedirectStream),
-              /* maxTimeToOutputResponse = */ 10000);
+              "chmod 777 " + testScriptPathOnTarget, hostOutput);
 
-          File exitStatusFile = AbstractTestTools.createTempFile("exitStatus", "");
-          if (isVerbose) {
-            System.out.println("adb -s " + device.getSerialNumber() + " pull "
-                + testsRootDir + "/exitStatus "
-                + exitStatusFile.getAbsolutePath());
-          }
-          device.pullFile(testsRootDir + "/exitStatus",
-              exitStatusFile.getAbsolutePath());
+          int i = 0;
+          for (File f : classpathFiles) {
+            desFilePaths[i] =
+                convertToTargetPath(new File(testsRootDirFile,  "f" + i + "_" + f.getName()));
 
-          BufferedReader br = new BufferedReader(new FileReader(exitStatusFile));
-          try {
-            String readLine = br.readLine();
-            if (readLine == null) {
-              throw new RuntimeRunnerException("Exit status not found");
-            }
-            exitStatus = Integer.parseInt(readLine);
-          } finally {
-            br.close();
-          }
-
-          if (isVerbose) {
-            System.out.println("Exit status: " + exitStatus);
-          }
-
-          if (exitStatus != 0) {
-            System.err.println("Execution failed on device '" + device.getName() + "'");
-            break;
-          }
-        }
-      } catch (TimeoutException e) {
-        throw new RuntimeRunnerException(e);
-      } catch (AdbCommandRejectedException e) {
-        throw new RuntimeRunnerException(e);
-      } catch (ShellCommandUnresponsiveException e) {
-        throw new RuntimeRunnerException(e);
-      } catch (CannotChangePermissionException | CannotCreateFileException | IOException e) {
-        throw new RuntimeRunnerException(e);
-      } catch (SyncException e) {
-        throw new RuntimeRunnerException(e);
-      } finally {
-        try {
-          for (String pushedFile : desFilePaths) {
             if (isVerbose) {
-              System.out.println(
-                  "adb -s " + device.getSerialNumber() + " rm " + pushedFile);
+              System.out.println("adb -s " + device.getSerialNumber() + " push "
+                  + f.getAbsolutePath() + " " + desFilePaths[i]);
             }
-            device.executeShellCommand("rm " + pushedFile, hostOutput);
+            device.pushFile(f.getAbsolutePath(), desFilePaths[i]);
+            i++;
           }
-        } catch (IOException e) {
-          throw new RuntimeRunnerException(e);
-        } catch (TimeoutException e) {
-          throw new RuntimeRunnerException(e);
-        } catch (AdbCommandRejectedException e) {
-          throw new RuntimeRunnerException(e);
-        } catch (ShellCommandUnresponsiveException e) {
+        } catch (TimeoutException
+            | AdbCommandRejectedException
+            | ShellCommandUnresponsiveException
+            | IOException
+            | SyncException e) {
           throw new RuntimeRunnerException(e);
         }
+
+        // Split command line to have at most MAX_NB_CLASSES jUnit classes per invocation
+        List<List<String>> splittedMainClasses = new ArrayList<List<String>>();
+        int currentChunk = 0;
+        for (String classToRun : classes) {
+          if (splittedMainClasses.size() == currentChunk) {
+            splittedMainClasses.add(new ArrayList<String>(MAX_NB_CLASSES));
+            if (jUnitRunnerName != null) {
+              splittedMainClasses.get(currentChunk).add(jUnitRunnerName);
+            }
+          }
+
+          splittedMainClasses.get(currentChunk).add(classToRun);
+
+          if (splittedMainClasses.get(currentChunk).size() == MAX_NB_CLASSES) {
+            currentChunk++;
+          }
+        }
+        List<String> cmdLines = new ArrayList<String>(splittedMainClasses.size());
+        File rootDir = new File(device.getMountPoint(IDevice.MNT_ROOT).replace("\n", ""));
+        for (List<String> classList : splittedMainClasses) {
+          cmdLines.add(Joiner.on(' ').join(buildCommandLine(rootDir, options,
+              classList.toArray(new String[classList.size()]), desFilePaths)));
+        }
+
+        try {
+          // Bug : exit code return by adb shell is wrong (always 0)
+          // https://code.google.com/p/android/issues/detail?id=3254
+          // Use go team hack to work this around
+          // https://code.google.com/p/go/source/browse/misc/arm/a
+
+          for (String args : cmdLines) {
+            if (isVerbose) {
+              System.out.println("adb -s " + device.getSerialNumber() + " shell "
+                  + testScriptPathOnTarget + ' ' + args);
+            }
+            device.executeShellCommand(
+                testScriptPathOnTarget + ' ' + args,
+                new MyShellOuputReceiver(outRedirectStream, errRedirectStream),
+                /* maxTimeToOutputResponse = */ 10000);
+
+            File exitStatusFile = AbstractTestTools.createTempFile("exitStatus", "");
+            if (isVerbose) {
+              System.out.println("adb -s " + device.getSerialNumber() + " pull "
+                  + testsRootDir + "/exitStatus "
+                  + exitStatusFile.getAbsolutePath());
+            }
+            device.pullFile(testsRootDir + "/exitStatus",
+                exitStatusFile.getAbsolutePath());
+
+            BufferedReader br = new BufferedReader(new FileReader(exitStatusFile));
+            try {
+              String readLine = br.readLine();
+              if (readLine == null) {
+                throw new RuntimeRunnerException("Exit status not found");
+              }
+              exitStatus = Integer.parseInt(readLine);
+            } finally {
+              br.close();
+            }
+
+            if (isVerbose) {
+              System.out.println("Exit status: " + exitStatus);
+            }
+
+            if (exitStatus != 0) {
+              System.err.println("Execution failed on device '" + device.getName() + "'");
+              break;
+            }
+          }
+        } catch (TimeoutException
+            | AdbCommandRejectedException
+            | ShellCommandUnresponsiveException
+            | CannotChangePermissionException
+            | CannotCreateFileException
+            | IOException
+            | SyncException e) {
+          throw new RuntimeRunnerException(e);
+        } finally {
+          try {
+            for (String pushedFile : desFilePaths) {
+              if (isVerbose) {
+                System.out.println(
+                    "adb -s " + device.getSerialNumber() + " rm " + pushedFile);
+              }
+              device.executeShellCommand("rm " + pushedFile, hostOutput);
+            }
+          } catch (IOException
+              | TimeoutException
+              | AdbCommandRejectedException
+              | ShellCommandUnresponsiveException e) {
+            throw new RuntimeRunnerException(e);
+          }
+        }
+
+      } catch (RuntimeRunnerException e) {
+        System.err.println("Error with device '" + device.getName() + "': " + e.getMessage());
+        failingDevices.add(device.getName());
       }
+
+    }
+
+    if (failingDevices.size() > 0) {
+      String device = failingDevices.size() == 1 ? "device" : "devices";
+      throw new RuntimeRunnerException(
+          "Error with "
+              + device
+              + ": "
+              + Joiner.on(',').join(failingDevices)
+              + ". See log for details");
     }
 
     return exitStatus;
diff --git a/jack-tests/src/com/android/jack/test/toolchain/AbstractTestTools.java b/jack-tests/src/com/android/jack/test/toolchain/AbstractTestTools.java
index f16a330..f8dfe2f 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/AbstractTestTools.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/AbstractTestTools.java
@@ -34,6 +34,7 @@
 import com.android.sched.util.file.CannotChangePermissionException;
 import com.android.sched.util.file.CannotCloseException;
 import com.android.sched.util.file.CannotCreateFileException;
+import com.android.sched.util.file.CannotDeleteFileException;
 import com.android.sched.util.file.CannotReadException;
 import com.android.sched.util.file.CannotWriteException;
 import com.android.sched.util.file.Files;
@@ -98,7 +99,7 @@
   @Nonnull
   private static final String TOOLCHAIN_PREBUILT_PREFIX = "toolchain.prebuilt.";
   @Nonnull
-  private static final String TMP_PREFIX                = "jacktest-";
+  private static final String TMP_PREFIX                = "test-jack-";
   @Nonnull
   private static final String LEGACY_COMPILER_KEY       = "toolchain.prebuilt.legacy-java-compiler";
   @Nonnull
@@ -434,7 +435,7 @@
           try {
             deleteTempDir(tmpDir);
           } catch (IOException e) {
-            System.err.println(e.getMessage());
+            throw new RuntimeException(new CannotDeleteFileException(new FileLocation(tmpDir)));
           }
         }
       });
@@ -838,6 +839,12 @@
   }
 
   @Nonnull
+  public static List<RuntimeRunner> listRuntimeTestRunners()
+      throws SecurityException, IllegalArgumentException, RuntimeRunnerException {
+    return listRuntimeTestRunners(/*properties = */ null);
+  }
+
+  @Nonnull
   public static List<RuntimeRunner> listRuntimeTestRunners(@CheckForNull Properties properties)
       throws SecurityException, IllegalArgumentException, RuntimeRunnerException {
 
@@ -855,8 +862,6 @@
       }
     }
 
-    assert runtimes != null;
-
     if (properties != null) {
       String rtAsString = properties.getProperty(RUNTIME_LIST_KEY);
       if (rtAsString != null) {
@@ -864,6 +869,7 @@
       }
     }
 
+    assert runtimes != null; // Make FindBugs happy
     if (runtimes.size() == 0) {
       if (Boolean.parseBoolean(System.getProperty(RUNTIME_TOLERANT, "false"))) {
         if (!hasRuntimeWarningBeenEmitted) {
@@ -877,6 +883,7 @@
       }
     }
 
+    assert runtimes != null; // Make FindBugs happy
     return runtimes;
   }
 
diff --git a/jack-tests/src/com/android/jack/test/toolchain/AndroidToolchain.java b/jack-tests/src/com/android/jack/test/toolchain/AndroidToolchain.java
index bf7ece7..9ff4f92 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/AndroidToolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/AndroidToolchain.java
@@ -40,4 +40,7 @@
   @Nonnull
   public abstract AndroidToolchain enableDxOptimizations();
 
+  @Nonnull
+  public abstract AndroidToolchain setAndroidMinApiLevel(@Nonnull String minApiLevel)
+      throws Exception;
 }
diff --git a/jack-tests/src/com/android/jack/test/toolchain/DummyToolchain.java b/jack-tests/src/com/android/jack/test/toolchain/DummyToolchain.java
index 27c3135..6b20d35 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/DummyToolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/DummyToolchain.java
@@ -77,4 +77,11 @@
   public String getLibraryElementsExtension() {
     return ".dummy";
   }
+
+  @Override
+  @Nonnull
+  public AndroidToolchain setAndroidMinApiLevel(@Nonnull String minApiLevel) {
+    // Do nothing
+    return this;
+  }
 }
diff --git a/jack-tests/src/com/android/jack/test/toolchain/EmbeddedJillBasedToolchain.java b/jack-tests/src/com/android/jack/test/toolchain/EmbeddedJillBasedToolchain.java
index d99c85f..e2c679c 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/EmbeddedJillBasedToolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/EmbeddedJillBasedToolchain.java
@@ -240,6 +240,8 @@
       commandLine.add("-g");
     }
 
+    commandLine.add("-parameters");
+
     commandLine.add("-d");
     commandLine.add(out.getAbsolutePath());
 
diff --git a/jack-tests/src/com/android/jack/test/toolchain/IncrementalToolchainUtils.java b/jack-tests/src/com/android/jack/test/toolchain/IncrementalToolchainUtils.java
new file mode 100644
index 0000000..76aa0db
--- /dev/null
+++ b/jack-tests/src/com/android/jack/test/toolchain/IncrementalToolchainUtils.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.test.toolchain;
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.attribute.FileTime;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
+/**
+ * Utilities methods for incremental toolchains
+ */
+class IncrementalToolchainUtils {
+
+  @CheckForNull
+  private static File getFileToTouch(@Nonnull File... sources) throws Exception  {
+    List<File> files = new ArrayList<File>();
+    for (File source : sources) {
+      AbstractTestTools.getJavaFiles(source, files, /* mustExist = */ false);
+    }
+    if (files.size() > 0) {
+      return files.get(files.size() / 2);
+    }
+    return null;
+  }
+
+  public static void touchSourceFile(@Nonnull File... sources) throws Exception {
+
+    File fileToTouch = getFileToTouch(sources);
+
+    if (fileToTouch != null) {
+
+      FileTime fileTime = Files.getLastModifiedTime(fileToTouch.toPath());
+
+      Files.setLastModifiedTime(
+          fileToTouch.toPath(), FileTime.fromMillis(System.currentTimeMillis()));
+
+      if (Files.getLastModifiedTime(fileToTouch.toPath()).equals(fileTime)) {
+        Thread.sleep(1000);
+        Files.setLastModifiedTime(
+            fileToTouch.toPath(), FileTime.fromMillis(System.currentTimeMillis()));
+      }
+
+      assert !fileTime.equals(Files.getLastModifiedTime(fileToTouch.toPath()));
+    }
+  }
+
+}
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java
index 8b7ccb6..3a4d688 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackApiV01Toolchain.java
@@ -274,4 +274,10 @@
     }
   }
 
+  @Override
+  @Nonnull
+  public AndroidToolchain setAndroidMinApiLevel(@Nonnull String minApiLevel) throws Exception {
+    apiV01Config.setProperty(Options.ANDROID_MIN_API_LEVEL.getName(), minApiLevel);
+    return this;
+  }
 }
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackApiV02IncrementalToolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackApiV02IncrementalToolchain.java
index 044599b..52f4578 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/JackApiV02IncrementalToolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackApiV02IncrementalToolchain.java
@@ -17,8 +17,6 @@
 package com.android.jack.test.toolchain;
 
 import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
 
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
@@ -40,8 +38,7 @@
       throws Exception {
     setIncrementalFolder(AbstractTestTools.createTempDir());
     super.srcToExe(out, zipFile, sources);
-    Thread.sleep(1000);
-    touchSourceFile(sources);
+    IncrementalToolchainUtils.touchSourceFile(sources);
     super.srcToExe(out, zipFile, sources);
   }
 
@@ -50,22 +47,8 @@
       throws Exception {
     setIncrementalFolder(AbstractTestTools.createTempDir());
     super.srcToLib(out, zipFiles, sources);
-    Thread.sleep(1000);
-    touchSourceFile(sources);
+    IncrementalToolchainUtils.touchSourceFile(sources);
     super.srcToLib(out, zipFiles, sources);
   }
 
-  private void touchSourceFile(@Nonnull File... sources) throws Exception {
-    List<File> files = new ArrayList<File>();
-    for (File source : sources) {
-      AbstractTestTools.getJavaFiles(source, files, /* mustExist = */ false);
-    }
-    if (files.size() > 0) {
-      File fileToTouch = files.get(files.size() / 2);
-      if (!fileToTouch.setLastModified(System.currentTimeMillis())) {
-        throw new AssertionError("Could not touch file '" + fileToTouch.getPath() + "'");
-      }
-    }
-  }
-
 }
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackApiV02Toolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackApiV02Toolchain.java
index 51fab1c..b41a308 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/JackApiV02Toolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackApiV02Toolchain.java
@@ -287,4 +287,10 @@
     }
   }
 
+  @Override
+  @Nonnull
+  public AndroidToolchain setAndroidMinApiLevel(@Nonnull String minApiLevel) throws Exception {
+    apiV02Config.setProperty(Options.ANDROID_MIN_API_LEVEL.getName(), minApiLevel);
+    return this;
+  }
 }
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackApiV03IncrementalToolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackApiV03IncrementalToolchain.java
index c67499c..58cad90 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/JackApiV03IncrementalToolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackApiV03IncrementalToolchain.java
@@ -17,8 +17,6 @@
 package com.android.jack.test.toolchain;
 
 import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
 
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
@@ -40,8 +38,7 @@
       throws Exception {
     setIncrementalFolder(AbstractTestTools.createTempDir());
     super.srcToExe(out, zipFile, sources);
-    Thread.sleep(1000);
-    touchSourceFile(sources);
+    IncrementalToolchainUtils.touchSourceFile(sources);
     super.srcToExe(out, zipFile, sources);
   }
 
@@ -50,22 +47,9 @@
       throws Exception {
     setIncrementalFolder(AbstractTestTools.createTempDir());
     super.srcToLib(out, zipFiles, sources);
-    Thread.sleep(1000);
-    touchSourceFile(sources);
+    IncrementalToolchainUtils.touchSourceFile(sources);
     super.srcToLib(out, zipFiles, sources);
   }
 
-  private void touchSourceFile(@Nonnull File... sources) throws Exception {
-    List<File> files = new ArrayList<File>();
-    for (File source : sources) {
-      AbstractTestTools.getJavaFiles(source, files, /* mustExist = */ false);
-    }
-    if (files.size() > 0) {
-      File fileToTouch = files.get(files.size() / 2);
-      if (!fileToTouch.setLastModified(System.currentTimeMillis())) {
-        throw new AssertionError("Could not touch file '" + fileToTouch.getPath() + "'");
-      }
-    }
-  }
 
 }
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackApiV03Toolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackApiV03Toolchain.java
index 765c108..7a754f1 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/JackApiV03Toolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackApiV03Toolchain.java
@@ -308,4 +308,10 @@
     return this;
   }
 
+  @Override
+  @Nonnull
+  public AndroidToolchain setAndroidMinApiLevel(@Nonnull String minApiLevel) throws Exception {
+    apiV03Config.setProperty(Options.ANDROID_MIN_API_LEVEL.getName(), minApiLevel);
+    return this;
+  }
 }
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackApiV04IncrementalToolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackApiV04IncrementalToolchain.java
index 6327293..c74b2f8 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/JackApiV04IncrementalToolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackApiV04IncrementalToolchain.java
@@ -17,8 +17,6 @@
 package com.android.jack.test.toolchain;
 
 import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
 
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
@@ -40,8 +38,7 @@
       throws Exception {
     setIncrementalFolder(AbstractTestTools.createTempDir());
     super.srcToExe(out, zipFile, sources);
-    Thread.sleep(1000);
-    touchSourceFile(sources);
+    IncrementalToolchainUtils.touchSourceFile(sources);
     super.srcToExe(out, zipFile, sources);
   }
 
@@ -50,22 +47,8 @@
       throws Exception {
     setIncrementalFolder(AbstractTestTools.createTempDir());
     super.srcToLib(out, zipFiles, sources);
-    Thread.sleep(1000);
-    touchSourceFile(sources);
+    IncrementalToolchainUtils.touchSourceFile(sources);
     super.srcToLib(out, zipFiles, sources);
   }
 
-  private void touchSourceFile(@Nonnull File... sources) throws Exception {
-    List<File> files = new ArrayList<File>();
-    for (File source : sources) {
-      AbstractTestTools.getJavaFiles(source, files, /* mustExist = */ false);
-    }
-    if (files.size() > 0) {
-      File fileToTouch = files.get(files.size() / 2);
-      if (!fileToTouch.setLastModified(System.currentTimeMillis())) {
-        throw new AssertionError("Could not touch file '" + fileToTouch.getPath() + "'");
-      }
-    }
-  }
-
 }
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackApiV04Toolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackApiV04Toolchain.java
index ee1cb29..7e6ac02 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/JackApiV04Toolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackApiV04Toolchain.java
@@ -318,4 +318,11 @@
     }
     return this;
   }
+
+  @Override
+  @Nonnull
+  public AndroidToolchain setAndroidMinApiLevel(@Nonnull String minApiLevel) throws Exception {
+    apiV04Config.setProperty(Options.ANDROID_MIN_API_LEVEL.getName(), minApiLevel);
+    return this;
+  }
 }
diff --git a/jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java b/jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java
index 83de85c..36e28bb 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/JackCliToolchain.java
@@ -19,7 +19,7 @@
 import com.google.common.base.Joiner;
 
 import com.android.jack.Options;
-import com.android.jack.Options.VerbosityLevel;
+import com.android.jack.VerbosityLevel;
 import com.android.jack.test.util.ExecFileException;
 import com.android.jack.test.util.ExecuteFile;
 
@@ -50,7 +50,7 @@
   @CheckForNull
   protected File incrementalFolder;
   @Nonnull
-  protected Options.VerbosityLevel verbosityLevel = VerbosityLevel.WARNING;
+  protected VerbosityLevel verbosityLevel = VerbosityLevel.WARNING;
   @Nonnull
   protected final Map<String, String> properties = new HashMap<String, String>();
 
@@ -467,4 +467,11 @@
     writer.close();
     commandLine.add('@' + sourceList.getAbsolutePath());
   }
+
+  @Override
+  @Nonnull
+  public AndroidToolchain setAndroidMinApiLevel(@Nonnull String minApiLevel) throws Exception {
+    properties.put(Options.ANDROID_MIN_API_LEVEL.getName(), minApiLevel);
+    return this;
+  }
 }
diff --git a/jack-tests/src/com/android/jack/test/toolchain/LegacyToolchain.java b/jack-tests/src/com/android/jack/test/toolchain/LegacyToolchain.java
index 5fc1a78..9c428d4 100644
--- a/jack-tests/src/com/android/jack/test/toolchain/LegacyToolchain.java
+++ b/jack-tests/src/com/android/jack/test/toolchain/LegacyToolchain.java
@@ -389,4 +389,11 @@
     writer.close();
     commandLine.add('@' + sourceList.getAbsolutePath());
   }
+
+  @Override
+  @Nonnull
+  public AndroidToolchain setAndroidMinApiLevel(@Nonnull String minApiLevel) throws Exception {
+    // Not used
+    return this;
+  }
 }
diff --git a/jack-tests/tests/com/android/jack/AllTests.java b/jack-tests/tests/com/android/jack/AllTests.java
index 25f0e6a..fa07f24 100644
--- a/jack-tests/tests/com/android/jack/AllTests.java
+++ b/jack-tests/tests/com/android/jack/AllTests.java
@@ -11,6 +11,7 @@
 import com.android.jack.box.BoxTests;
 import com.android.jack.bridge.BridgeTests;
 import com.android.jack.cast.CastAllTests;
+import com.android.jack.classfile.ClassfileTests;
 import com.android.jack.classpath.ClasspathTests;
 import com.android.jack.clinit.ClinitTests;
 import com.android.jack.comparison.ComparisonTests;
@@ -99,6 +100,7 @@
     BridgeTests.class,
     BridgeAnnotationsTests.class,
     CastAllTests.class,
+    ClassfileTests.class,
     ClasspathTests.class,
     ClinitTests.class,
     ComparisonTests.class,
diff --git a/jack-tests/tests/com/android/jack/LongLastingTests.java b/jack-tests/tests/com/android/jack/LongLastingTests.java
index f23a459..bce5c5e 100644
--- a/jack-tests/tests/com/android/jack/LongLastingTests.java
+++ b/jack-tests/tests/com/android/jack/LongLastingTests.java
@@ -17,7 +17,7 @@
 package com.android.jack;
 
 
-import com.android.jack.test.category.SlowTests;
+import com.android.jack.test.category.NonPreSubmitTests;
 import com.android.jack.test.junit.JackTestRunner;
 
 import org.junit.experimental.categories.Categories.IncludeCategory;
@@ -31,7 +31,7 @@
  * CL.
  */
 @RunWith(JackTestRunner.class)
-@IncludeCategory(SlowTests.class)
+@IncludeCategory(NonPreSubmitTests.class)
 @SuiteClasses(value = {AllTests.class, LongLastingUnitTests.class})
 public class LongLastingTests {
 }
diff --git a/jack-tests/tests/com/android/jack/RegressionTests.java b/jack-tests/tests/com/android/jack/RegressionTests.java
index 325bfcb..273648c 100644
--- a/jack-tests/tests/com/android/jack/RegressionTests.java
+++ b/jack-tests/tests/com/android/jack/RegressionTests.java
@@ -40,9 +40,11 @@
 import com.android.jack.invoke.InvokeTests;
 import com.android.jack.newarray.NewarrayTests;
 import com.android.jack.opcodes.OpcodesTests;
+import com.android.jack.optimizations.defuse.DefUseTests;
 import com.android.jack.optimizations.exprsimplifier.ExprsimplifierTests;
 import com.android.jack.optimizations.ifwithconstantsimplifier.IfWithConstantSimplifierTests;
 import com.android.jack.optimizations.notsimplifier.NotsimplifierTests;
+import com.android.jack.optimizations.sideeffect.SideEffectTests;
 import com.android.jack.optimizations.tailrecursion.TailRecursionTests;
 import com.android.jack.optimizations.usedef.UseDefTests;
 import com.android.jack.order.OrderTests;
@@ -58,6 +60,7 @@
 import com.android.jack.test.runtime.RuntimeTestInfo;
 import com.android.jack.threeaddress.ThreeaddressTests;
 import com.android.jack.throwstatement.ThrowstatementTests;
+import com.android.jack.transformations.boostlockregionpriority.BoostLockedRegionPriorityTests;
 import com.android.jack.trycatch.TrycatchTests;
 import com.android.jack.tryfinally.TryfinallyTests;
 import com.android.jack.unary.UnaryTests;
@@ -76,6 +79,7 @@
       new ArrayTests(),
       new AssertionTests(),
       new AssignTests(),
+      new BoostLockedRegionPriorityTests(),
       new BoxTests(),
       new BridgeTests(),
       new BridgeAnnotationsTests(),
@@ -83,6 +87,7 @@
       new ComparisonTests(),
       new ConditionalTests(),
       new ConstantTests(),
+      new DefUseTests(),
       new DxTests(),
       new EnumsTests(),
       new ExprsimplifierTests(),
@@ -102,6 +107,7 @@
       new ReflectTests(),
       new ReturnstatementTests(),
       new ShrobRuntimeTests(),
+      new SideEffectTests(),
       new StringTests(),
       new SwitchstatementTests(),
       new SynchronizeTests(),
diff --git a/jack-tests/tests/com/android/jack/annotation/processor/AnnotationProcessorTests.java b/jack-tests/tests/com/android/jack/annotation/processor/AnnotationProcessorTests.java
index 354e2b4..942ed8a 100644
--- a/jack-tests/tests/com/android/jack/annotation/processor/AnnotationProcessorTests.java
+++ b/jack-tests/tests/com/android/jack/annotation/processor/AnnotationProcessorTests.java
@@ -23,8 +23,10 @@
 import com.android.jack.library.FileTypeDoesNotExistException;
 import com.android.jack.library.InputJackLibrary;
 import com.android.jack.test.TestsProperties;
+import com.android.jack.test.junit.KnownIssue;
 import com.android.jack.test.toolchain.AbstractTestTools;
 import com.android.jack.test.toolchain.IToolchain;
+import com.android.jack.test.toolchain.IncrementalToolchain;
 import com.android.jack.test.toolchain.JackBasedToolchain;
 import com.android.jack.test.toolchain.JillBasedToolchain;
 import com.android.jack.test.util.ExecFileException;
@@ -118,6 +120,7 @@
   }
 
   @Test
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void compileWithAnnotationProcessorAuto_classpath() throws Exception {
     List<Class<? extends IToolchain>> exclude = new ArrayList<Class<? extends IToolchain>>();
     exclude.add(JillBasedToolchain.class);
@@ -137,6 +140,7 @@
   }
 
   @Test
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void compileWithAnnotationProcessorAuto_processorPath() throws Exception {
     List<Class<? extends IToolchain>> exclude = new ArrayList<Class<? extends IToolchain>>();
     exclude.add(JillBasedToolchain.class);
@@ -157,6 +161,7 @@
   }
 
   @Test
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void compileWithAnnotationProcessorNoAuto_processorPath() throws Exception {
     List<Class<? extends IToolchain>> exclude = new ArrayList<Class<? extends IToolchain>>();
     exclude.add(JillBasedToolchain.class);
diff --git a/jack-tests/tests/com/android/jack/box/BoxTests.java b/jack-tests/tests/com/android/jack/box/BoxTests.java
index 89cecf3..8729f38 100644
--- a/jack-tests/tests/com/android/jack/box/BoxTests.java
+++ b/jack-tests/tests/com/android/jack/box/BoxTests.java
@@ -16,22 +16,46 @@
 
 package com.android.jack.box;
 
+import com.android.jack.frontend.FrontendCompilationException;
 import com.android.jack.test.category.RuntimeRegressionTest;
 import com.android.jack.test.helper.RuntimeTestHelper;
+import com.android.jack.test.junit.KnownIssue;
 import com.android.jack.test.junit.Runtime;
 import com.android.jack.test.runtime.RuntimeTest;
 import com.android.jack.test.runtime.RuntimeTestInfo;
 import com.android.jack.test.toolchain.AbstractTestTools;
+import com.android.jack.test.toolchain.JackApiToolchainBase;
+import com.android.jack.test.toolchain.JackBasedToolchain;
+import com.android.jack.test.toolchain.Toolchain.SourceLevel;
+
+import junit.framework.Assert;
 
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
+import java.io.File;
+
+import javax.annotation.Nonnull;
+
 public class BoxTests extends RuntimeTest {
 
   private RuntimeTestInfo TEST001 = new RuntimeTestInfo(
     AbstractTestTools.getTestRootDir("com.android.jack.box.test001"),
     "com.android.jack.box.test001.dx.Tests");
 
+  private RuntimeTestInfo TEST002 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.box.test002"),
+      "com.android.jack.box.test002.jack.Java7Boxing");
+  private RuntimeTestInfo TEST003 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.box.test003"),
+      "com.android.jack.box.test003.jack.Java7Boxing");
+  private RuntimeTestInfo TEST004 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.box.test004"),
+      "com.android.jack.box.test004.jack.Java7Boxing");
+  private RuntimeTestInfo TEST005 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.box.test005"),
+      "com.android.jack.box.test005.jack.Java7Boxing");
+
   @Test
   @Runtime
   @Category(RuntimeRegressionTest.class)
@@ -39,6 +63,68 @@
     new RuntimeTestHelper(TEST001).compileAndRunTest();
   }
 
+  @Test
+  @Runtime
+  public void test002() throws Exception {
+    new RuntimeTestHelper(TEST002).setSourceLevel(SourceLevel.JAVA_7).compileAndRunTest();
+  }
+
+  @Test
+  @Runtime
+  public void test002_1() throws Exception {
+    checkCompilationFailOnJava6(TEST002);
+  }
+
+  @Test
+  @Runtime
+  public void test003() throws Exception {
+    new RuntimeTestHelper(TEST003).setSourceLevel(SourceLevel.JAVA_7).compileAndRunTest();
+  }
+
+  @Test
+  @Runtime
+  public void test003_1() throws Exception {
+    checkCompilationFailOnJava6(TEST003);
+  }
+
+  @Test
+  @Runtime
+  @KnownIssue
+  public void test004() throws Exception {
+    new RuntimeTestHelper(TEST004).setSourceLevel(SourceLevel.JAVA_7).compileAndRunTest();
+  }
+
+  @Test
+  @Runtime
+  public void test004_1() throws Exception {
+    checkCompilationFailOnJava6(TEST004);
+  }
+
+  @Test
+  @Runtime
+  public void test005() throws Exception {
+    new RuntimeTestHelper(TEST005).setSourceLevel(SourceLevel.JAVA_7).compileAndRunTest();
+  }
+
+  @Test
+  @Runtime
+  public void test005_1() throws Exception {
+    checkCompilationFailOnJava6(TEST005);
+  }
+
+  private void checkCompilationFailOnJava6(@Nonnull RuntimeTestInfo test) throws Exception {
+    JackBasedToolchain toolchain =
+        AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
+    toolchain.setSourceLevel(SourceLevel.JAVA_6);
+    File tmpOut = AbstractTestTools.createTempFile("", ".jack");
+    try {
+      toolchain.srcToLib(tmpOut, /* zipFiles = */ true, test.directory);
+      Assert.fail();
+    } catch (FrontendCompilationException e) {
+      // OK
+    }
+  }
+
   @Override
   protected void fillRtTestInfos() {
     rtTestInfos.add(TEST001);
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-tests/tests/com/android/jack/box/test002/jack/Java7Boxing.java
similarity index 63%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-tests/tests/com/android/jack/box/test002/jack/Java7Boxing.java
index 0b9fd92..3bb1fa3 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-tests/tests/com/android/jack/box/test002/jack/Java7Boxing.java
@@ -14,7 +14,21 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.box.test002.jack;
 
-public interface Interface {}
+import org.junit.Assert;
+import org.junit.Test;
 
+public class Java7Boxing {
+
+  @Test
+  public void test() {
+    Assert.assertEquals(1.3f, Java7Boxing.get(1.3f), 0.0001);
+  }
+
+  @SuppressWarnings("boxing")
+  public static float get(float value) {
+    Object f = Float.valueOf(value);
+    return (float) f;
+  }
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-tests/tests/com/android/jack/box/test003/jack/Java7Boxing.java
similarity index 60%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-tests/tests/com/android/jack/box/test003/jack/Java7Boxing.java
index 0b9fd92..c835628 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-tests/tests/com/android/jack/box/test003/jack/Java7Boxing.java
@@ -14,7 +14,26 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.box.test003.jack;
 
-public interface Interface {}
+import org.junit.Assert;
+import org.junit.Test;
 
+public class Java7Boxing {
+
+  @Test
+  public void test() {
+    try {
+      Java7Boxing.get(1.3);
+      Assert.fail();
+    } catch (ClassCastException e) {
+      // OK
+    }
+  }
+
+  @SuppressWarnings("boxing")
+  public static float get(double value) {
+    Object f = Double.valueOf(value);
+    return (float) f;
+  }
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/AllCoverageTests.java b/jack-tests/tests/com/android/jack/box/test004/jack/Java7Boxing.java
similarity index 61%
copy from jack-coverage/tests/com/android/jack/coverage/AllCoverageTests.java
copy to jack-tests/tests/com/android/jack/box/test004/jack/Java7Boxing.java
index 2f7525b..1b7ec81 100644
--- a/jack-coverage/tests/com/android/jack/coverage/AllCoverageTests.java
+++ b/jack-tests/tests/com/android/jack/box/test004/jack/Java7Boxing.java
@@ -14,14 +14,23 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage;
+package com.android.jack.box.test004.jack;
 
-import com.android.jack.test.junit.JackTestRunner;
+import org.junit.Assert;
+import org.junit.Test;
 
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite.SuiteClasses;
+public class Java7Boxing {
 
-@RunWith(JackTestRunner.class)
-@SuiteClasses(value = {CoverageTests.class})
-public class AllCoverageTests {
+  @Test
+  public void test003() {
+    Assert.assertEquals(4414079, Java7Boxing.get());
+  }
+
+  @SuppressWarnings({"boxing", "unused"})
+  public static int get() {
+    int i = 35312635;
+    Object s = 702730947;
+    i >>>= (int) (true ? s : -1284717918.0f);
+    return i;
+  }
 }
diff --git a/jack-tests/tests/com/android/jack/box/test005/jack/Java7Boxing.java b/jack-tests/tests/com/android/jack/box/test005/jack/Java7Boxing.java
new file mode 100644
index 0000000..24527a7
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/box/test005/jack/Java7Boxing.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.box.test005.jack;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class Java7Boxing {
+
+  @Test
+  public void test001() {
+    Assert.assertEquals(4414079, Java7Boxing.get(true));
+  }
+  @Test
+  public void test002() {
+    try {
+      Java7Boxing.get(false);
+      Assert.fail();
+    } catch (ClassCastException e) {
+      // OK
+    }
+  }
+
+  @SuppressWarnings("boxing")
+  public static int get(boolean cond) {
+    int i = 35312635;
+    Object s = 702730947;
+    i >>>= (int) (cond ? s : -1284717918.0f);
+    return i;
+  }
+
+}
diff --git a/jack-tests/tests/com/android/jack/bridge/BridgeTests.java b/jack-tests/tests/com/android/jack/bridge/BridgeTests.java
index 592bfcc..3db60ab 100644
--- a/jack-tests/tests/com/android/jack/bridge/BridgeTests.java
+++ b/jack-tests/tests/com/android/jack/bridge/BridgeTests.java
@@ -23,6 +23,7 @@
 import com.android.jack.test.runtime.RuntimeTestInfo;
 import com.android.jack.test.toolchain.AbstractTestTools;
 import com.android.jack.test.toolchain.IToolchain;
+import com.android.jack.test.toolchain.JillBasedToolchain;
 
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
@@ -147,9 +148,10 @@
 
   @Test
   @Runtime
-  @Category(RuntimeRegressionTest.class)
   public void test009() throws Exception {
-    new RuntimeTestHelper(TEST009).compileAndRunTest();
+    new RuntimeTestHelper(TEST009)
+    .addIgnoredCandidateToolchain(JillBasedToolchain.class)
+    .compileAndRunTest();
   }
 
   /**
@@ -174,6 +176,5 @@
     rtTestInfos.add(TEST005);
     rtTestInfos.add(TEST006);
     rtTestInfos.add(TEST007);
-    rtTestInfos.add(TEST009);
   }
 }
diff --git a/jack-tests/tests/com/android/jack/classfile/ClassfileTests.java b/jack-tests/tests/com/android/jack/classfile/ClassfileTests.java
new file mode 100644
index 0000000..8aaa5d9
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/classfile/ClassfileTests.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.classfile;
+
+import com.android.jack.Options;
+import com.android.jack.test.toolchain.AbstractTestTools;
+import com.android.jack.test.toolchain.IToolchain;
+import com.android.jack.test.toolchain.JackBasedToolchain;
+import com.android.jack.test.toolchain.JillBasedToolchain;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import java.io.File;
+import java.util.Collections;
+import java.util.List;
+
+public class ClassfileTests {
+
+  @Test
+  public void testClassFileIsCompiled() throws Exception {
+    // class file generation support is only for sources not imports.
+    List<Class<? extends IToolchain>> excludeList =
+        Collections.<Class<? extends IToolchain>>singletonList(JillBasedToolchain.class);
+    JackBasedToolchain toolchain =
+        AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class,
+            excludeList);
+    File[] defaultClasspath = toolchain.getDefaultBootClasspath();
+    File jackOut = AbstractTestTools.createTempFile("jackOut", toolchain.getLibraryExtension());
+    File classOut = AbstractTestTools.createTempDir();
+    File sourceDir = AbstractTestTools.getTestRootDir("com.android.jack.classfile.test001");
+
+    toolchain.addProperty(Options.EMIT_CLASS_FILES.getName(), "true");
+    toolchain.addProperty(Options.EMIT_CLASS_FILES_FOLDER.getName(), classOut.getPath());
+
+    toolchain.addToClasspath(defaultClasspath)
+    .srcToLib(jackOut, /* zipFiles = */ true, sourceDir);
+
+    Assert.assertTrue(
+        new File(classOut, "com/android/jack/classfile/test001/jack/ClassTest.class").isFile());
+
+  }
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-tests/tests/com/android/jack/classfile/test001/jack/ClassTest.java
similarity index 85%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-tests/tests/com/android/jack/classfile/test001/jack/ClassTest.java
index 0b9fd92..554fbfe 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-tests/tests/com/android/jack/classfile/test001/jack/ClassTest.java
@@ -14,7 +14,11 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.classfile.test001.jack;
 
-public interface Interface {}
+public class ClassTest {
 
+  public ClassTest() {
+  }
+
+}
diff --git a/jack-tests/tests/com/android/jack/clinit/ClinitTests.java b/jack-tests/tests/com/android/jack/clinit/ClinitTests.java
index 01262e1..ed3e6f6 100644
--- a/jack-tests/tests/com/android/jack/clinit/ClinitTests.java
+++ b/jack-tests/tests/com/android/jack/clinit/ClinitTests.java
@@ -24,7 +24,7 @@
 public class ClinitTests {
 
   public static final String CLASS_WITH_VARIABLE_INIT_BINARY_NAME
-    = "com/android/jack/clinit/jack/ClInitWithVariableInit";
+    = "com/android/jack/clinit/test001/jack/ClInitWithVariableInit";
 
   @Test
   public void testCompileWithClinit() throws Exception {
@@ -33,7 +33,17 @@
     .srcToExe(
         AbstractTestTools.createTempDir(),
         /* zipFile = */ false,
-        AbstractTestTools.getTestRootDir("com.android.jack.clinit.jack"));
+        AbstractTestTools.getTestRootDir("com.android.jack.clinit.test001.jack"));
+  }
+
+  @Test
+  public void testCompileAnnotationWithClinit() throws Exception {
+    IToolchain toolchain = AbstractTestTools.getCandidateToolchain();
+    toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
+    .srcToExe(
+        AbstractTestTools.createTempDir(),
+        /* zipFile = */ false,
+        AbstractTestTools.getTestRootDir("com.android.jack.clinit.test002.jack"));
   }
 
 }
diff --git a/jack-tests/tests/com/android/jack/clinit/jack/ClInit.java b/jack-tests/tests/com/android/jack/clinit/test001/jack/ClInit.java
similarity index 93%
rename from jack-tests/tests/com/android/jack/clinit/jack/ClInit.java
rename to jack-tests/tests/com/android/jack/clinit/test001/jack/ClInit.java
index 680f9cf..d4fbee3 100644
--- a/jack-tests/tests/com/android/jack/clinit/jack/ClInit.java
+++ b/jack-tests/tests/com/android/jack/clinit/test001/jack/ClInit.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.jack.clinit.jack;
+package com.android.jack.clinit.test001.jack;
 
 public class ClInit {
 
diff --git a/jack-tests/tests/com/android/jack/clinit/jack/ClInitWithVariableInit.java b/jack-tests/tests/com/android/jack/clinit/test001/jack/ClInitWithVariableInit.java
similarity index 93%
rename from jack-tests/tests/com/android/jack/clinit/jack/ClInitWithVariableInit.java
rename to jack-tests/tests/com/android/jack/clinit/test001/jack/ClInitWithVariableInit.java
index 8c344dd..f39d1c8 100644
--- a/jack-tests/tests/com/android/jack/clinit/jack/ClInitWithVariableInit.java
+++ b/jack-tests/tests/com/android/jack/clinit/test001/jack/ClInitWithVariableInit.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.jack.clinit.jack;
+package com.android.jack.clinit.test001.jack;
 
 public class ClInitWithVariableInit {
 
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-tests/tests/com/android/jack/clinit/test002/jack/Application.java
similarity index 78%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-tests/tests/com/android/jack/clinit/test002/jack/Application.java
index 0b9fd92..0cc416e 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-tests/tests/com/android/jack/clinit/test002/jack/Application.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2017 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,7 +14,8 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.clinit.test002.jack;
 
-public interface Interface {}
-
+class Application {
+  protected Application() { }
+}
diff --git a/jack-tests/tests/com/android/jack/clinit/jack/ClInit.java b/jack-tests/tests/com/android/jack/clinit/test002/jack/Config.java
similarity index 71%
copy from jack-tests/tests/com/android/jack/clinit/jack/ClInit.java
copy to jack-tests/tests/com/android/jack/clinit/test002/jack/Config.java
index 680f9cf..83ed1e6 100644
--- a/jack-tests/tests/com/android/jack/clinit/jack/ClInit.java
+++ b/jack-tests/tests/com/android/jack/clinit/test002/jack/Config.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2017 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,8 +14,10 @@
  * limitations under the License.
  */
 
-package com.android.jack.clinit.jack;
+package com.android.jack.clinit.test002.jack;
 
-public class ClInit {
-
+public @interface Config {
+  String s = "A String";
+  int i = 123;
+  Class<Application> DEFAULT_APPLICATION = Application.class;
 }
diff --git a/jack-tests/tests/com/android/jack/conditional/ConditionalTests.java b/jack-tests/tests/com/android/jack/conditional/ConditionalTests.java
index 3d7af14..0681280 100644
--- a/jack-tests/tests/com/android/jack/conditional/ConditionalTests.java
+++ b/jack-tests/tests/com/android/jack/conditional/ConditionalTests.java
@@ -18,6 +18,7 @@
 
 import com.android.jack.test.category.RuntimeRegressionTest;
 import com.android.jack.test.helper.RuntimeTestHelper;
+import com.android.jack.test.junit.KnownIssue;
 import com.android.jack.test.junit.Runtime;
 import com.android.jack.test.runtime.RuntimeTest;
 import com.android.jack.test.runtime.RuntimeTestInfo;
@@ -60,6 +61,10 @@
       AbstractTestTools.getTestRootDir("com.android.jack.conditional.test008"),
       "com.android.jack.conditional.test008.dx.Tests");
 
+  private RuntimeTestInfo TEST009 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.conditional.test009"),
+      "com.android.jack.conditional.test009.jack.ConditionalTest009");
+
   @Test
   @Runtime
   @Category(RuntimeRegressionTest.class)
@@ -116,6 +121,14 @@
     new RuntimeTestHelper(TEST008).compileAndRunTest();
   }
 
+  @Test
+  @Runtime
+  @Category(RuntimeRegressionTest.class)
+  @KnownIssue
+  public void test009() throws Exception {
+    new RuntimeTestHelper(TEST009).compileAndRunTest();
+  }
+
   @Override
   protected void fillRtTestInfos() {
     rtTestInfos.add(TEST001);
@@ -126,5 +139,6 @@
     rtTestInfos.add(TEST006);
     rtTestInfos.add(TEST007);
     rtTestInfos.add(TEST008);
+//    rtTestInfos.add(TEST009);
   }
 }
diff --git a/jack-tests/tests/com/android/jack/conditional/test009/jack/ConditionalTest009.java b/jack-tests/tests/com/android/jack/conditional/test009/jack/ConditionalTest009.java
new file mode 100644
index 0000000..5a98f8a
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/conditional/test009/jack/ConditionalTest009.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.conditional.test009.jack;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class ConditionalTest009 {
+  @Test
+  public void test001() {
+    Assert.assertEquals(35312635, get());
+  }
+
+  @Test
+  public void test002() {
+    Assert.assertEquals(35312635, get2());
+  }
+
+  @SuppressWarnings("unused")
+  public int get() {
+    int i = 35312635;
+    int s = 702730947;
+    i >>>= (int) (true ? s : -1284717918.0f);
+    return i;
+  }
+
+  @SuppressWarnings("cast")
+  public int get2() {
+    int i = 35312635;
+    i >>>= (int) (float) 702730947;
+    return i;
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/constant/ConstantTests.java b/jack-tests/tests/com/android/jack/constant/ConstantTests.java
index fb50443..643d24c 100644
--- a/jack-tests/tests/com/android/jack/constant/ConstantTests.java
+++ b/jack-tests/tests/com/android/jack/constant/ConstantTests.java
@@ -17,6 +17,7 @@
 package com.android.jack.constant;
 
 import com.android.jack.TestTools;
+import com.android.jack.optimizations.Optimizations;
 import com.android.jack.test.category.RuntimeRegressionTest;
 import com.android.jack.test.helper.FileChecker;
 import com.android.jack.test.helper.RuntimeTestHelper;
@@ -130,6 +131,7 @@
   @Runtime
   public void test005() throws Exception {
     new RuntimeTestHelper(TEST005)
+    .addProperty(Optimizations.UseDefSimplifier.OPTIMIZE_CST_DEF.getName(), "false")
     .addIgnoredCandidateToolchain(JillBasedToolchain.class)
     .compileAndRunTest();
   }
diff --git a/jack-tests/tests/com/android/jack/debug/DebugTests.java b/jack-tests/tests/com/android/jack/debug/DebugTests.java
index 74466fa..ebda877 100644
--- a/jack-tests/tests/com/android/jack/debug/DebugTests.java
+++ b/jack-tests/tests/com/android/jack/debug/DebugTests.java
@@ -16,6 +16,7 @@
 
 package com.android.jack.debug;
 
+import com.android.jack.backend.dex.rop.CodeItemBuilder;
 import com.android.jack.optimizations.Optimizations;
 import com.android.jack.test.helper.CheckDexStructureTestHelper;
 import com.android.jack.test.helper.RuntimeTestHelper;
@@ -57,6 +58,7 @@
         .setWithDebugInfos(true)
         .addProperty(Optimizations.REMOVE_UNUSED_NON_SYNTHETIC_DEFINITION.getName(),
             String.valueOf(false))
+        .addProperty(CodeItemBuilder.DEX_OPTIMIZE.getName(), "true")
         .compileAndRunTest(/* checkStructure = */ true);
   }
 
diff --git a/jack-tests/tests/com/android/jack/dextag/DexTagTests.java b/jack-tests/tests/com/android/jack/dextag/DexTagTests.java
index fd3498c..c2e6b2d 100644
--- a/jack-tests/tests/com/android/jack/dextag/DexTagTests.java
+++ b/jack-tests/tests/com/android/jack/dextag/DexTagTests.java
@@ -20,13 +20,14 @@
 import com.android.jack.dx.io.DexBuffer;
 import com.android.jack.test.toolchain.AbstractTestTools;
 import com.android.jack.test.toolchain.JackBasedToolchain;
+import com.android.sched.util.file.CannotCloseException;
+import com.android.sched.util.file.CannotReadException;
 
 import junit.framework.Assert;
 
 import org.junit.Test;
 
 import java.io.File;
-import java.io.IOException;
 import java.util.Iterator;
 
 import javax.annotation.Nonnull;
@@ -49,7 +50,7 @@
     Assert.assertTrue(hasTag(classesDex));
   }
 
-  private boolean hasTag(@Nonnull File dexFile) throws IOException {
+  private boolean hasTag(@Nonnull File dexFile) throws CannotReadException, CannotCloseException {
     Iterator<String> stringsIt = new DexBuffer(dexFile).strings().iterator();
 
     while (stringsIt.hasNext()) {
diff --git a/jack-tests/tests/com/android/jack/dx/DxTests.java b/jack-tests/tests/com/android/jack/dx/DxTests.java
index d23a339..80e530e 100644
--- a/jack-tests/tests/com/android/jack/dx/DxTests.java
+++ b/jack-tests/tests/com/android/jack/dx/DxTests.java
@@ -18,14 +18,17 @@
 
 import com.android.jack.Options;
 import com.android.jack.TestTools;
+import com.android.jack.backend.dex.rop.CodeItemBuilder;
 import com.android.jack.test.category.RuntimeRegressionTest;
 import com.android.jack.test.helper.FileChecker;
 import com.android.jack.test.helper.RuntimeTestHelper;
+import com.android.jack.test.junit.KnownIssue;
 import com.android.jack.test.junit.Runtime;
 import com.android.jack.test.runtime.RuntimeTest;
 import com.android.jack.test.runtime.RuntimeTestInfo;
 import com.android.jack.test.toolchain.AbstractTestTools;
 import com.android.jack.test.toolchain.IToolchain;
+import com.android.jack.test.toolchain.IncrementalToolchain;
 import com.android.jack.test.toolchain.JackApiToolchainBase;
 import com.android.jack.test.toolchain.JackApiV02;
 import com.android.jack.test.toolchain.JillBasedToolchain;
@@ -130,7 +133,7 @@
   @Runtime
   public void deadcoderemover() throws Exception {
     new RuntimeTestHelper(DEADCODEREMOVER)
-    .compileAndRunTest();
+        .addProperty(CodeItemBuilder.DEX_OPTIMIZE.getName(), "true").compileAndRunTest();
   }
 
   @Test
@@ -208,6 +211,7 @@
   }
 
   @Test
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void testCarnacBinaryOr() throws Exception {
     File srcDir = AbstractTestTools.getTestRootDir("com.android.jack.dx.jacklibs");
     File carnacLib = new File(srcDir, "carnac-binary-or.jack");
diff --git a/jack-tests/tests/com/android/jack/encoding/CompileEncodingTests.java b/jack-tests/tests/com/android/jack/encoding/CompileEncodingTests.java
index 936f0bb..781cba5 100644
--- a/jack-tests/tests/com/android/jack/encoding/CompileEncodingTests.java
+++ b/jack-tests/tests/com/android/jack/encoding/CompileEncodingTests.java
@@ -210,7 +210,7 @@
   private void run(@Nonnull String clazz, @Nonnull File binDirectory,
       int expected)
           throws SecurityException, IllegalArgumentException, RuntimeRunnerException {
-    for (RuntimeRunner runner : AbstractTestTools.listRuntimeTestRunners(null)) {
+    for (RuntimeRunner runner : AbstractTestTools.listRuntimeTestRunners()) {
       if (runner.runJUnit(
               new String[0],
               AbstractTestTools.JUNIT_RUNNER_NAME,
diff --git a/jack-tests/tests/com/android/jack/error/AnnotationProcessorErrorTest.java b/jack-tests/tests/com/android/jack/error/AnnotationProcessorErrorTest.java
index eb0c93f..eafe041 100644
--- a/jack-tests/tests/com/android/jack/error/AnnotationProcessorErrorTest.java
+++ b/jack-tests/tests/com/android/jack/error/AnnotationProcessorErrorTest.java
@@ -30,7 +30,9 @@
 import com.android.jack.resource.ResourceReadingException;
 import com.android.jack.test.TestsProperties;
 import com.android.jack.test.helper.ErrorTestHelper;
+import com.android.jack.test.junit.KnownIssue;
 import com.android.jack.test.toolchain.AbstractTestTools;
+import com.android.jack.test.toolchain.IncrementalToolchain;
 import com.android.jack.test.toolchain.JackApiToolchainBase;
 
 import junit.framework.Assert;
@@ -58,6 +60,7 @@
    * Checks that compilation succeed when running annotation processor to generate resource file.
    */
   @Test
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void testAnnotationProcessorError002() throws Exception {
     runAnnotProcBuildingResource(new ErrorTestHelper());
   }
@@ -67,6 +70,7 @@
    * exist.
    */
   @Test
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void testAnnotationProcessorError003() throws Exception {
     ErrorTestHelper te = new ErrorTestHelper();
 
diff --git a/jack-tests/tests/com/android/jack/error/FileAccessErrorTest.java b/jack-tests/tests/com/android/jack/error/FileAccessErrorTest.java
index 0b0aae8..16d45f1 100644
--- a/jack-tests/tests/com/android/jack/error/FileAccessErrorTest.java
+++ b/jack-tests/tests/com/android/jack/error/FileAccessErrorTest.java
@@ -24,7 +24,9 @@
 import com.android.jack.library.LibraryIOException;
 import com.android.jack.library.LibraryReadingException;
 import com.android.jack.test.helper.ErrorTestHelper;
+import com.android.jack.test.junit.KnownIssue;
 import com.android.jack.test.toolchain.AbstractTestTools;
+import com.android.jack.test.toolchain.IncrementalToolchain;
 import com.android.jack.test.toolchain.JackApiToolchainBase;
 import com.android.sched.util.config.PropertyIdException;
 import com.android.sched.util.file.WrongPermissionException;
@@ -79,6 +81,7 @@
   /**
    * Checks that compilation fails correctly when a jack library folder is not readable.
    */
+  @KnownIssue(candidate=IncrementalToolchain.class)
   @Test
   public void testFileAccessError002() throws Exception {
     ErrorTestHelper helper = new ErrorTestHelper();
diff --git a/jack-tests/tests/com/android/jack/experimental/incremental/DependenciesTest014.java b/jack-tests/tests/com/android/jack/experimental/incremental/DependenciesTest014.java
index cd1fb2a..b564534 100644
--- a/jack-tests/tests/com/android/jack/experimental/incremental/DependenciesTest014.java
+++ b/jack-tests/tests/com/android/jack/experimental/incremental/DependenciesTest014.java
@@ -19,6 +19,7 @@
 import com.android.jack.dx.io.DexBuffer;
 import com.android.jack.test.helper.IncrementalTestHelper;
 import com.android.jack.test.toolchain.AbstractTestTools;
+import com.android.sched.util.location.FileLocation;
 
 import junit.framework.Assert;
 
@@ -26,6 +27,7 @@
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.InputStream;
 
 /**
  * JUnit test checking incremental support when files are deleted.
@@ -54,10 +56,12 @@
 
     ite.deleteJavaFile(f);
     ite.incrementalBuildFromFolder();
-    DexBuffer db = new DexBuffer(new FileInputStream(ite.getDexFile()));
-    for (String typeName : db.typeNames()) {
-      if (typeName.equals("Ljack/incremental/B;")) {
-        Assert.fail();
+    try (InputStream is = new FileInputStream(ite.getDexFile())) {
+      DexBuffer db = new DexBuffer(is, new FileLocation(ite.getDexFile()));
+      for (String typeName : db.typeNames()) {
+        if (typeName.equals("Ljack/incremental/B;")) {
+          Assert.fail();
+        }
       }
     }
   }
@@ -86,7 +90,10 @@
     ite.deleteJavaFile(fB);
     ite.deleteJavaFile(fC);
     ite.incrementalBuildFromFolder();
-    DexBuffer db = new DexBuffer(new FileInputStream(ite.getDexFile()));
+    DexBuffer db;
+    try (InputStream is = new FileInputStream(ite.getDexFile())) {
+      db = new DexBuffer(is, new FileLocation(ite.getDexFile()));
+    }
     for (String typeName : db.typeNames()) {
       if (typeName.equals("Ljack/incremental/B;") ||
           typeName.equals("Ljack/incremental/C;")) {
diff --git a/jack-tests/tests/com/android/jack/experimental/incremental/DependenciesTest015.java b/jack-tests/tests/com/android/jack/experimental/incremental/DependenciesTest015.java
index 3ce69cf..8268558 100644
--- a/jack-tests/tests/com/android/jack/experimental/incremental/DependenciesTest015.java
+++ b/jack-tests/tests/com/android/jack/experimental/incremental/DependenciesTest015.java
@@ -21,6 +21,7 @@
 import com.android.jack.test.helper.IncrementalTestHelper;
 import com.android.jack.test.toolchain.AbstractTestTools;
 import com.android.jack.test.toolchain.JackBasedToolchain.MultiDexKind;
+import com.android.sched.util.location.FileLocation;
 
 import junit.framework.Assert;
 
@@ -29,6 +30,7 @@
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.InputStream;
 import java.util.Arrays;
 
 /**
@@ -113,7 +115,10 @@
     iteProg.snapshotJackFilesModificationDate();
     Assert.assertEquals(1, iteProg.getJayceCount());
 
-    DexBuffer db = new DexBuffer(new FileInputStream(iteProg.getDexFile()));
+    DexBuffer db;
+    try (InputStream is = new FileInputStream(iteProg.getDexFile())) {
+      db = new DexBuffer(is, new FileLocation(iteProg.getDexFile()));
+    }
     Assert.assertTrue(db.typeNames().contains("Ljack/incremental/A;"));
     Assert.assertTrue(db.typeNames().contains("Ljack/incremental/B;"));
 
@@ -128,7 +133,9 @@
     iteProg.snapshotJackFilesModificationDate();
     Assert.assertEquals(1, iteProg.getJayceCount());
 
-    db = new DexBuffer(new FileInputStream(iteProg.getDexFile()));
+    try (InputStream is = new FileInputStream(iteProg.getDexFile())) {
+      db = new DexBuffer(is, new FileLocation(iteProg.getDexFile()));
+    }
     Assert.assertTrue(db.typeNames().contains("Ljack/incremental/A;"));
     Assert.assertTrue(db.typeNames().contains("Ljack/incremental/B;"));
     Assert.assertTrue(db.typeNames().contains("Ljack/incremental/C;"));
@@ -162,7 +169,10 @@
     iteProg.snapshotJackFilesModificationDate();
     Assert.assertEquals(1, iteProg.getJayceCount());
 
-    DexBuffer db = new DexBuffer(new FileInputStream(iteProg.getDexFile()));
+    DexBuffer db;
+    try (InputStream is = new FileInputStream(iteProg.getDexFile())) {
+      db = new DexBuffer(is, new FileLocation(iteProg.getDexFile()));
+    }
     Assert.assertTrue(db.typeNames().contains("Ljack/incremental/A;"));
     Assert.assertTrue(db.typeNames().contains("Ljack/incremental/B;"));
 
@@ -179,7 +189,9 @@
     iteProg.snapshotJackFilesModificationDate();
     Assert.assertEquals(2, iteProg.getJayceCount());
 
-    db = new DexBuffer(new FileInputStream(iteProg.getDexFile()));
+    try (InputStream is = new FileInputStream(iteProg.getDexFile())) {
+      db = new DexBuffer(is, new FileLocation(iteProg.getDexFile()));
+    }
     Assert.assertTrue(db.typeNames().contains("Ljack/incremental/A;"));
     Assert.assertTrue(db.typeNames().contains("Ljack/incremental/B;"));
     Assert.assertTrue(db.typeNames().contains("Ljack/incremental/C;"));
@@ -214,7 +226,10 @@
     iteProg.snapshotJackFilesModificationDate();
     Assert.assertEquals(1, iteProg.getJayceCount());
 
-    DexBuffer db = new DexBuffer(new FileInputStream(iteProg.getDexFile()));
+    DexBuffer db;
+    try (InputStream is = new FileInputStream(iteProg.getDexFile())) {
+      db = new DexBuffer(is, new FileLocation(iteProg.getDexFile()));
+    }
     Assert.assertTrue(db.typeNames().contains("Ljack/incremental/A;"));
     Assert.assertTrue(db.typeNames().contains("Ljack/incremental/B;"));
 
@@ -229,7 +244,9 @@
     iteProg.snapshotJackFilesModificationDate();
     Assert.assertEquals(1, iteProg.getJayceCount());
 
-    db = new DexBuffer(new FileInputStream(iteProg.getDexFile()));
+    try (InputStream is = new FileInputStream(iteProg.getDexFile())) {
+      db = new DexBuffer(is, new FileLocation(iteProg.getDexFile()));
+    }
     Assert.assertTrue(db.typeNames().contains("Ljack/incremental/A;"));
     Assert.assertTrue(db.typeNames().contains("Ljack/incremental/B;"));
     Assert.assertTrue(db.typeNames().contains("Ljack/incremental/C;"));
diff --git a/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java b/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java
index 8d7ba4f..45fe0e8 100644
--- a/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java
+++ b/jack-tests/tests/com/android/jack/fileconflict/FileConflictTests.java
@@ -205,7 +205,6 @@
    * @throws Exception
    */
   @Test
-  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test002a() throws Exception {
     File jackOutput;
     ByteArrayOutputStream errOut = new ByteArrayOutputStream();
@@ -228,7 +227,6 @@
    * @throws Exception
    */
   @Test
-  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test002b() throws Exception {
     File jackOutput;
     ByteArrayOutputStream errOut = new ByteArrayOutputStream();
@@ -252,7 +250,6 @@
    * @throws Exception
    */
   @Test
-  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test002c() throws Exception {
     File jackOutput;
     ByteArrayOutputStream errOut = new ByteArrayOutputStream();
@@ -278,7 +275,6 @@
    * @throws Exception
    */
   @Test
-  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test002d() throws Exception {
     File jackOutput;
     ByteArrayOutputStream errOut = new ByteArrayOutputStream();
@@ -301,7 +297,6 @@
    * @throws Exception
    */
   @Test
-  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test002e() throws Exception {
     File jackOutput;
     ByteArrayOutputStream errOut = new ByteArrayOutputStream();
diff --git a/jack-tests/tests/com/android/jack/frontend/FrontEndTests.java b/jack-tests/tests/com/android/jack/frontend/FrontEndTests.java
index 4610de9..0a41640 100644
--- a/jack-tests/tests/com/android/jack/frontend/FrontEndTests.java
+++ b/jack-tests/tests/com/android/jack/frontend/FrontEndTests.java
@@ -160,6 +160,7 @@
 
     List<Class<? extends IToolchain>> excludeList = new ArrayList<Class<? extends IToolchain>>(1);
     excludeList.add(JillBasedToolchain.class);
+    // because test check exact number of output "WARNING" messages
     excludeList.add(IncrementalToolchain.class);
     IToolchain toolchain =  AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, excludeList);
     ByteArrayOutputStream out = new ByteArrayOutputStream();
@@ -188,13 +189,16 @@
   @Test
   public void testInnerError001() throws Exception {
     File outDir = AbstractTestTools.createTempDir();
+    File classDir = AbstractTestTools.createTempDir();
 
-    IToolchain toolchain =
+    JackApiToolchainBase toolchain =
         AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
     ByteArrayOutputStream out = new ByteArrayOutputStream();
     ByteArrayOutputStream err = new ByteArrayOutputStream();
     toolchain.setOutputStream(out);
     toolchain.setErrorStream(err);
+    toolchain.addProperty(Options.EMIT_CLASS_FILES.getName(), "true");
+    toolchain.addProperty(Options.EMIT_CLASS_FILES_FOLDER.getName(), classDir.getPath());
 
     try {
       toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
@@ -207,6 +211,7 @@
       Assert.assertEquals(0, out.size());
       String errString = err.toString();
       Assert.assertTrue(errString.contains("ERROR:"));
+      Assert.assertTrue(errString.indexOf("ERROR:") == errString.lastIndexOf("ERROR:"));
       Assert.assertTrue(errString.contains("ExtendingInnerOnly"));
       Assert.assertTrue(errString.contains("Inner"));
    }
@@ -249,13 +254,16 @@
   @Test
   public void testInnerError003() throws Exception {
     File outDir = AbstractTestTools.createTempDir();
+    File classDir = AbstractTestTools.createTempDir();
 
-    IToolchain toolchain =
+    JackApiToolchainBase toolchain =
         AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
     ByteArrayOutputStream out = new ByteArrayOutputStream();
     ByteArrayOutputStream err = new ByteArrayOutputStream();
     toolchain.setOutputStream(out);
     toolchain.setErrorStream(err);
+    toolchain.addProperty(Options.EMIT_CLASS_FILES.getName(), "true");
+    toolchain.addProperty(Options.EMIT_CLASS_FILES_FOLDER.getName(), classDir.getPath());
 
     try {
       toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
@@ -268,6 +276,7 @@
       Assert.assertEquals(0, out.size());
       String errString = err.toString();
       Assert.assertTrue(errString.contains("ERROR:"));
+      Assert.assertTrue(errString.indexOf("ERROR:") == errString.lastIndexOf("ERROR:"));
       Assert.assertTrue(errString.contains("WithOuterContextButStatic"));
       Assert.assertTrue(errString.contains("Inner"));
    }
@@ -279,13 +288,16 @@
   @Test
   public void testInnerError004() throws Exception {
     File outDir = AbstractTestTools.createTempDir();
+    File classDir = AbstractTestTools.createTempDir();
 
-    IToolchain toolchain =
+    JackApiToolchainBase toolchain =
         AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
     ByteArrayOutputStream out = new ByteArrayOutputStream();
     ByteArrayOutputStream err = new ByteArrayOutputStream();
     toolchain.setOutputStream(out);
     toolchain.setErrorStream(err);
+    toolchain.addProperty(Options.EMIT_CLASS_FILES.getName(), "true");
+    toolchain.addProperty(Options.EMIT_CLASS_FILES_FOLDER.getName(), classDir.getPath());
 
     try {
       toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
@@ -298,6 +310,7 @@
       Assert.assertEquals(0, out.size());
       String errString = err.toString();
       Assert.assertTrue(errString.contains("ERROR:"));
+      Assert.assertTrue(errString.indexOf("ERROR:") == errString.lastIndexOf("ERROR:"));
       Assert.assertTrue(errString.contains("NoOuterContext"));
       Assert.assertTrue(errString.contains("Inner"));
    }
@@ -309,13 +322,16 @@
   @Test
   public void testUnusedLocalVar001() throws Exception {
     File outDir = AbstractTestTools.createTempDir();
+    File classDir = AbstractTestTools.createTempDir();
 
-    IToolchain toolchain =
+    JackApiToolchainBase toolchain =
         AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
     ByteArrayOutputStream out = new ByteArrayOutputStream();
     ByteArrayOutputStream err = new ByteArrayOutputStream();
     toolchain.setOutputStream(out);
     toolchain.setErrorStream(err);
+    toolchain.addProperty(Options.EMIT_CLASS_FILES.getName(), "true");
+    toolchain.addProperty(Options.EMIT_CLASS_FILES_FOLDER.getName(), classDir.getPath());
 
     try {
       toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
@@ -328,6 +344,7 @@
       Assert.assertEquals(0, out.size());
       String errString = err.toString();
       Assert.assertTrue(errString.contains("ERROR:"));
+      Assert.assertTrue(errString.indexOf("ERROR:") == errString.lastIndexOf("ERROR:"));
       Assert.assertTrue(errString.contains("UnusedLocalVar"));
       Assert.assertTrue(errString.contains("Inner"));
    }
@@ -373,13 +390,16 @@
   @Category(ExtraTests.class)
   public void testUnusedLocalVar004() throws Exception {
     File outDir = AbstractTestTools.createTempDir();
+    File classDir = AbstractTestTools.createTempDir();
 
-    IToolchain toolchain =
+    JackApiToolchainBase toolchain =
         AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
     ByteArrayOutputStream out = new ByteArrayOutputStream();
     ByteArrayOutputStream err = new ByteArrayOutputStream();
     toolchain.setOutputStream(out);
     toolchain.setErrorStream(err);
+    toolchain.addProperty(Options.EMIT_CLASS_FILES.getName(), "true");
+    toolchain.addProperty(Options.EMIT_CLASS_FILES_FOLDER.getName(), classDir.getPath());
 
     try {
       toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
@@ -392,7 +412,87 @@
       Assert.assertEquals(0, out.size());
       String errString = err.toString();
       Assert.assertTrue(errString.contains("ERROR:"));
+      Assert.assertTrue(errString.indexOf("ERROR:") == errString.lastIndexOf("ERROR:"));
       Assert.assertTrue(errString.contains("InvalidQualification"));
    }
   }
+
+  /**
+   * Test that Jack is able to compile a really big class into a jack file.
+   */
+  @Test
+  @Category(ExtraTests.class)
+  public void testTooBigClass001() throws Exception {
+    File outDir = AbstractTestTools.createTempDir();
+
+    IToolchain toolchain =
+        AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
+    ByteArrayOutputStream out = new ByteArrayOutputStream();
+    ByteArrayOutputStream err = new ByteArrayOutputStream();
+    toolchain.setOutputStream(out);
+    toolchain.setErrorStream(err);
+
+    toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
+    .srcToLib(
+        outDir,
+        /* zipFiles= */ false,
+        AbstractTestTools.getTestRootDir("com.android.jack.frontend.test019.jack"));
+  }
+
+  /**
+   * Test that Jack is able to compile a really big class into a dex file.
+   */
+  @Test
+  @Category(ExtraTests.class)
+  public void testTooBigClass002() throws Exception {
+    File outDir = AbstractTestTools.createTempDir();
+
+    IToolchain toolchain =
+        AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
+    ByteArrayOutputStream out = new ByteArrayOutputStream();
+    ByteArrayOutputStream err = new ByteArrayOutputStream();
+    toolchain.setOutputStream(out);
+    toolchain.setErrorStream(err);
+
+    toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
+    .srcToExe(
+        outDir,
+        /* zipFiles= */ false,
+        AbstractTestTools.getTestRootDir("com.android.jack.frontend.test019.jack"));
+  }
+
+  /**
+   * Test that Jack is reporting correctly an error when compiling a too big class into a class
+   * file.
+   */
+  @Test
+  @Category(ExtraTests.class)
+  public void testTooBigClass003() throws Exception {
+    File outDir = AbstractTestTools.createTempDir();
+    File classDir = AbstractTestTools.createTempDir();
+
+    JackApiToolchainBase toolchain =
+        AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class);
+    ByteArrayOutputStream out = new ByteArrayOutputStream();
+    ByteArrayOutputStream err = new ByteArrayOutputStream();
+    toolchain.setOutputStream(out);
+    toolchain.setErrorStream(err);
+    toolchain.addProperty(Options.EMIT_CLASS_FILES.getName(), "true");
+    toolchain.addProperty(Options.EMIT_CLASS_FILES_FOLDER.getName(), classDir.getPath());
+
+    try {
+      toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
+      .srcToExe(
+          outDir,
+          /* zipFiles= */ false,
+          AbstractTestTools.getTestRootDir("com.android.jack.frontend.test019.jack"));
+      Assert.fail();
+    } catch (Throwable e) {
+      Assert.assertEquals(0, out.size());
+      String errString = err.toString();
+      Assert.assertTrue(errString.contains("ERROR:"));
+      Assert.assertTrue(errString.contains(
+          "Too many constants, the constant pool for TooBig would exceed 65536 entries"));
+   }
+  }
 }
diff --git a/jack-tests/tests/com/android/jack/frontend/test019/jack/TooBig.java b/jack-tests/tests/com/android/jack/frontend/test019/jack/TooBig.java
new file mode 100644
index 0000000..6125833
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/frontend/test019/jack/TooBig.java
@@ -0,0 +1,65540 @@
+package com.android.jack.frontend.test019.jack;
+
+public abstract class TooBig {
+  public abstract int a0();
+  public abstract int a1();
+  public abstract int a2();
+  public abstract int a3();
+  public abstract int a4();
+  public abstract int a5();
+  public abstract int a6();
+  public abstract int a7();
+  public abstract int a8();
+  public abstract int a9();
+  public abstract int a10();
+  public abstract int a11();
+  public abstract int a12();
+  public abstract int a13();
+  public int a14;
+  public int a15;
+  public int a16;
+  public int a17;
+  public int a18;
+  public int a19;
+  public int a20;
+  public int a21;
+  public int a22;
+  public int a23;
+  public int a24;
+  public int a25;
+  public int a26;
+  public int a27;
+  public int a28;
+  public int a29;
+  public int a30;
+  public int a31;
+  public int a32;
+  public int a33;
+  public int a34;
+  public int a35;
+  public int a36;
+  public int a37;
+  public int a38;
+  public int a39;
+  public int a40;
+  public int a41;
+  public int a42;
+  public int a43;
+  public int a44;
+  public int a45;
+  public int a46;
+  public int a47;
+  public int a48;
+  public int a49;
+  public int a50;
+  public int a51;
+  public int a52;
+  public int a53;
+  public int a54;
+  public int a55;
+  public int a56;
+  public int a57;
+  public int a58;
+  public int a59;
+  public int a60;
+  public int a61;
+  public int a62;
+  public int a63;
+  public int a64;
+  public int a65;
+  public int a66;
+  public int a67;
+  public int a68;
+  public int a69;
+  public int a70;
+  public int a71;
+  public int a72;
+  public int a73;
+  public int a74;
+  public int a75;
+  public int a76;
+  public int a77;
+  public int a78;
+  public int a79;
+  public int a80;
+  public int a81;
+  public int a82;
+  public int a83;
+  public int a84;
+  public int a85;
+  public int a86;
+  public int a87;
+  public int a88;
+  public int a89;
+  public int a90;
+  public int a91;
+  public int a92;
+  public int a93;
+  public int a94;
+  public int a95;
+  public int a96;
+  public int a97;
+  public int a98;
+  public int a99;
+  public int a100;
+  public int a101;
+  public int a102;
+  public int a103;
+  public int a104;
+  public int a105;
+  public int a106;
+  public int a107;
+  public int a108;
+  public int a109;
+  public int a110;
+  public int a111;
+  public int a112;
+  public int a113;
+  public int a114;
+  public int a115;
+  public int a116;
+  public int a117;
+  public int a118;
+  public int a119;
+  public int a120;
+  public int a121;
+  public int a122;
+  public int a123;
+  public int a124;
+  public int a125;
+  public int a126;
+  public int a127;
+  public int a128;
+  public int a129;
+  public int a130;
+  public int a131;
+  public int a132;
+  public int a133;
+  public int a134;
+  public int a135;
+  public int a136;
+  public int a137;
+  public int a138;
+  public int a139;
+  public int a140;
+  public int a141;
+  public int a142;
+  public int a143;
+  public int a144;
+  public int a145;
+  public int a146;
+  public int a147;
+  public int a148;
+  public int a149;
+  public int a150;
+  public int a151;
+  public int a152;
+  public int a153;
+  public int a154;
+  public int a155;
+  public int a156;
+  public int a157;
+  public int a158;
+  public int a159;
+  public int a160;
+  public int a161;
+  public int a162;
+  public int a163;
+  public int a164;
+  public int a165;
+  public int a166;
+  public int a167;
+  public int a168;
+  public int a169;
+  public int a170;
+  public int a171;
+  public int a172;
+  public int a173;
+  public int a174;
+  public int a175;
+  public int a176;
+  public int a177;
+  public int a178;
+  public int a179;
+  public int a180;
+  public int a181;
+  public int a182;
+  public int a183;
+  public int a184;
+  public int a185;
+  public int a186;
+  public int a187;
+  public int a188;
+  public int a189;
+  public int a190;
+  public int a191;
+  public int a192;
+  public int a193;
+  public int a194;
+  public int a195;
+  public int a196;
+  public int a197;
+  public int a198;
+  public int a199;
+  public int a200;
+  public int a201;
+  public int a202;
+  public int a203;
+  public int a204;
+  public int a205;
+  public int a206;
+  public int a207;
+  public int a208;
+  public int a209;
+  public int a210;
+  public int a211;
+  public int a212;
+  public int a213;
+  public int a214;
+  public int a215;
+  public int a216;
+  public int a217;
+  public int a218;
+  public int a219;
+  public int a220;
+  public int a221;
+  public int a222;
+  public int a223;
+  public int a224;
+  public int a225;
+  public int a226;
+  public int a227;
+  public int a228;
+  public int a229;
+  public int a230;
+  public int a231;
+  public int a232;
+  public int a233;
+  public int a234;
+  public int a235;
+  public int a236;
+  public int a237;
+  public int a238;
+  public int a239;
+  public int a240;
+  public int a241;
+  public int a242;
+  public int a243;
+  public int a244;
+  public int a245;
+  public int a246;
+  public int a247;
+  public int a248;
+  public int a249;
+  public int a250;
+  public int a251;
+  public int a252;
+  public int a253;
+  public int a254;
+  public int a255;
+  public int a256;
+  public int a257;
+  public int a258;
+  public int a259;
+  public int a260;
+  public int a261;
+  public int a262;
+  public int a263;
+  public int a264;
+  public int a265;
+  public int a266;
+  public int a267;
+  public int a268;
+  public int a269;
+  public int a270;
+  public int a271;
+  public int a272;
+  public int a273;
+  public int a274;
+  public int a275;
+  public int a276;
+  public int a277;
+  public int a278;
+  public int a279;
+  public int a280;
+  public int a281;
+  public int a282;
+  public int a283;
+  public int a284;
+  public int a285;
+  public int a286;
+  public int a287;
+  public int a288;
+  public int a289;
+  public int a290;
+  public int a291;
+  public int a292;
+  public int a293;
+  public int a294;
+  public int a295;
+  public int a296;
+  public int a297;
+  public int a298;
+  public int a299;
+  public int a300;
+  public int a301;
+  public int a302;
+  public int a303;
+  public int a304;
+  public int a305;
+  public int a306;
+  public int a307;
+  public int a308;
+  public int a309;
+  public int a310;
+  public int a311;
+  public int a312;
+  public int a313;
+  public int a314;
+  public int a315;
+  public int a316;
+  public int a317;
+  public int a318;
+  public int a319;
+  public int a320;
+  public int a321;
+  public int a322;
+  public int a323;
+  public int a324;
+  public int a325;
+  public int a326;
+  public int a327;
+  public int a328;
+  public int a329;
+  public int a330;
+  public int a331;
+  public int a332;
+  public int a333;
+  public int a334;
+  public int a335;
+  public int a336;
+  public int a337;
+  public int a338;
+  public int a339;
+  public int a340;
+  public int a341;
+  public int a342;
+  public int a343;
+  public int a344;
+  public int a345;
+  public int a346;
+  public int a347;
+  public int a348;
+  public int a349;
+  public int a350;
+  public int a351;
+  public int a352;
+  public int a353;
+  public int a354;
+  public int a355;
+  public int a356;
+  public int a357;
+  public int a358;
+  public int a359;
+  public int a360;
+  public int a361;
+  public int a362;
+  public int a363;
+  public int a364;
+  public int a365;
+  public int a366;
+  public int a367;
+  public int a368;
+  public int a369;
+  public int a370;
+  public int a371;
+  public int a372;
+  public int a373;
+  public int a374;
+  public int a375;
+  public int a376;
+  public int a377;
+  public int a378;
+  public int a379;
+  public int a380;
+  public int a381;
+  public int a382;
+  public int a383;
+  public int a384;
+  public int a385;
+  public int a386;
+  public int a387;
+  public int a388;
+  public int a389;
+  public int a390;
+  public int a391;
+  public int a392;
+  public int a393;
+  public int a394;
+  public int a395;
+  public int a396;
+  public int a397;
+  public int a398;
+  public int a399;
+  public int a400;
+  public int a401;
+  public int a402;
+  public int a403;
+  public int a404;
+  public int a405;
+  public int a406;
+  public int a407;
+  public int a408;
+  public int a409;
+  public int a410;
+  public int a411;
+  public int a412;
+  public int a413;
+  public int a414;
+  public int a415;
+  public int a416;
+  public int a417;
+  public int a418;
+  public int a419;
+  public int a420;
+  public int a421;
+  public int a422;
+  public int a423;
+  public int a424;
+  public int a425;
+  public int a426;
+  public int a427;
+  public int a428;
+  public int a429;
+  public int a430;
+  public int a431;
+  public int a432;
+  public int a433;
+  public int a434;
+  public int a435;
+  public int a436;
+  public int a437;
+  public int a438;
+  public int a439;
+  public int a440;
+  public int a441;
+  public int a442;
+  public int a443;
+  public int a444;
+  public int a445;
+  public int a446;
+  public int a447;
+  public int a448;
+  public int a449;
+  public int a450;
+  public int a451;
+  public int a452;
+  public int a453;
+  public int a454;
+  public int a455;
+  public int a456;
+  public int a457;
+  public int a458;
+  public int a459;
+  public int a460;
+  public int a461;
+  public int a462;
+  public int a463;
+  public int a464;
+  public int a465;
+  public int a466;
+  public int a467;
+  public int a468;
+  public int a469;
+  public int a470;
+  public int a471;
+  public int a472;
+  public int a473;
+  public int a474;
+  public int a475;
+  public int a476;
+  public int a477;
+  public int a478;
+  public int a479;
+  public int a480;
+  public int a481;
+  public int a482;
+  public int a483;
+  public int a484;
+  public int a485;
+  public int a486;
+  public int a487;
+  public int a488;
+  public int a489;
+  public int a490;
+  public int a491;
+  public int a492;
+  public int a493;
+  public int a494;
+  public int a495;
+  public int a496;
+  public int a497;
+  public int a498;
+  public int a499;
+  public int a500;
+  public int a501;
+  public int a502;
+  public int a503;
+  public int a504;
+  public int a505;
+  public int a506;
+  public int a507;
+  public int a508;
+  public int a509;
+  public int a510;
+  public int a511;
+  public int a512;
+  public int a513;
+  public int a514;
+  public int a515;
+  public int a516;
+  public int a517;
+  public int a518;
+  public int a519;
+  public int a520;
+  public int a521;
+  public int a522;
+  public int a523;
+  public int a524;
+  public int a525;
+  public int a526;
+  public int a527;
+  public int a528;
+  public int a529;
+  public int a530;
+  public int a531;
+  public int a532;
+  public int a533;
+  public int a534;
+  public int a535;
+  public int a536;
+  public int a537;
+  public int a538;
+  public int a539;
+  public int a540;
+  public int a541;
+  public int a542;
+  public int a543;
+  public int a544;
+  public int a545;
+  public int a546;
+  public int a547;
+  public int a548;
+  public int a549;
+  public int a550;
+  public int a551;
+  public int a552;
+  public int a553;
+  public int a554;
+  public int a555;
+  public int a556;
+  public int a557;
+  public int a558;
+  public int a559;
+  public int a560;
+  public int a561;
+  public int a562;
+  public int a563;
+  public int a564;
+  public int a565;
+  public int a566;
+  public int a567;
+  public int a568;
+  public int a569;
+  public int a570;
+  public int a571;
+  public int a572;
+  public int a573;
+  public int a574;
+  public int a575;
+  public int a576;
+  public int a577;
+  public int a578;
+  public int a579;
+  public int a580;
+  public int a581;
+  public int a582;
+  public int a583;
+  public int a584;
+  public int a585;
+  public int a586;
+  public int a587;
+  public int a588;
+  public int a589;
+  public int a590;
+  public int a591;
+  public int a592;
+  public int a593;
+  public int a594;
+  public int a595;
+  public int a596;
+  public int a597;
+  public int a598;
+  public int a599;
+  public int a600;
+  public int a601;
+  public int a602;
+  public int a603;
+  public int a604;
+  public int a605;
+  public int a606;
+  public int a607;
+  public int a608;
+  public int a609;
+  public int a610;
+  public int a611;
+  public int a612;
+  public int a613;
+  public int a614;
+  public int a615;
+  public int a616;
+  public int a617;
+  public int a618;
+  public int a619;
+  public int a620;
+  public int a621;
+  public int a622;
+  public int a623;
+  public int a624;
+  public int a625;
+  public int a626;
+  public int a627;
+  public int a628;
+  public int a629;
+  public int a630;
+  public int a631;
+  public int a632;
+  public int a633;
+  public int a634;
+  public int a635;
+  public int a636;
+  public int a637;
+  public int a638;
+  public int a639;
+  public int a640;
+  public int a641;
+  public int a642;
+  public int a643;
+  public int a644;
+  public int a645;
+  public int a646;
+  public int a647;
+  public int a648;
+  public int a649;
+  public int a650;
+  public int a651;
+  public int a652;
+  public int a653;
+  public int a654;
+  public int a655;
+  public int a656;
+  public int a657;
+  public int a658;
+  public int a659;
+  public int a660;
+  public int a661;
+  public int a662;
+  public int a663;
+  public int a664;
+  public int a665;
+  public int a666;
+  public int a667;
+  public int a668;
+  public int a669;
+  public int a670;
+  public int a671;
+  public int a672;
+  public int a673;
+  public int a674;
+  public int a675;
+  public int a676;
+  public int a677;
+  public int a678;
+  public int a679;
+  public int a680;
+  public int a681;
+  public int a682;
+  public int a683;
+  public int a684;
+  public int a685;
+  public int a686;
+  public int a687;
+  public int a688;
+  public int a689;
+  public int a690;
+  public int a691;
+  public int a692;
+  public int a693;
+  public int a694;
+  public int a695;
+  public int a696;
+  public int a697;
+  public int a698;
+  public int a699;
+  public int a700;
+  public int a701;
+  public int a702;
+  public int a703;
+  public int a704;
+  public int a705;
+  public int a706;
+  public int a707;
+  public int a708;
+  public int a709;
+  public int a710;
+  public int a711;
+  public int a712;
+  public int a713;
+  public int a714;
+  public int a715;
+  public int a716;
+  public int a717;
+  public int a718;
+  public int a719;
+  public int a720;
+  public int a721;
+  public int a722;
+  public int a723;
+  public int a724;
+  public int a725;
+  public int a726;
+  public int a727;
+  public int a728;
+  public int a729;
+  public int a730;
+  public int a731;
+  public int a732;
+  public int a733;
+  public int a734;
+  public int a735;
+  public int a736;
+  public int a737;
+  public int a738;
+  public int a739;
+  public int a740;
+  public int a741;
+  public int a742;
+  public int a743;
+  public int a744;
+  public int a745;
+  public int a746;
+  public int a747;
+  public int a748;
+  public int a749;
+  public int a750;
+  public int a751;
+  public int a752;
+  public int a753;
+  public int a754;
+  public int a755;
+  public int a756;
+  public int a757;
+  public int a758;
+  public int a759;
+  public int a760;
+  public int a761;
+  public int a762;
+  public int a763;
+  public int a764;
+  public int a765;
+  public int a766;
+  public int a767;
+  public int a768;
+  public int a769;
+  public int a770;
+  public int a771;
+  public int a772;
+  public int a773;
+  public int a774;
+  public int a775;
+  public int a776;
+  public int a777;
+  public int a778;
+  public int a779;
+  public int a780;
+  public int a781;
+  public int a782;
+  public int a783;
+  public int a784;
+  public int a785;
+  public int a786;
+  public int a787;
+  public int a788;
+  public int a789;
+  public int a790;
+  public int a791;
+  public int a792;
+  public int a793;
+  public int a794;
+  public int a795;
+  public int a796;
+  public int a797;
+  public int a798;
+  public int a799;
+  public int a800;
+  public int a801;
+  public int a802;
+  public int a803;
+  public int a804;
+  public int a805;
+  public int a806;
+  public int a807;
+  public int a808;
+  public int a809;
+  public int a810;
+  public int a811;
+  public int a812;
+  public int a813;
+  public int a814;
+  public int a815;
+  public int a816;
+  public int a817;
+  public int a818;
+  public int a819;
+  public int a820;
+  public int a821;
+  public int a822;
+  public int a823;
+  public int a824;
+  public int a825;
+  public int a826;
+  public int a827;
+  public int a828;
+  public int a829;
+  public int a830;
+  public int a831;
+  public int a832;
+  public int a833;
+  public int a834;
+  public int a835;
+  public int a836;
+  public int a837;
+  public int a838;
+  public int a839;
+  public int a840;
+  public int a841;
+  public int a842;
+  public int a843;
+  public int a844;
+  public int a845;
+  public int a846;
+  public int a847;
+  public int a848;
+  public int a849;
+  public int a850;
+  public int a851;
+  public int a852;
+  public int a853;
+  public int a854;
+  public int a855;
+  public int a856;
+  public int a857;
+  public int a858;
+  public int a859;
+  public int a860;
+  public int a861;
+  public int a862;
+  public int a863;
+  public int a864;
+  public int a865;
+  public int a866;
+  public int a867;
+  public int a868;
+  public int a869;
+  public int a870;
+  public int a871;
+  public int a872;
+  public int a873;
+  public int a874;
+  public int a875;
+  public int a876;
+  public int a877;
+  public int a878;
+  public int a879;
+  public int a880;
+  public int a881;
+  public int a882;
+  public int a883;
+  public int a884;
+  public int a885;
+  public int a886;
+  public int a887;
+  public int a888;
+  public int a889;
+  public int a890;
+  public int a891;
+  public int a892;
+  public int a893;
+  public int a894;
+  public int a895;
+  public int a896;
+  public int a897;
+  public int a898;
+  public int a899;
+  public int a900;
+  public int a901;
+  public int a902;
+  public int a903;
+  public int a904;
+  public int a905;
+  public int a906;
+  public int a907;
+  public int a908;
+  public int a909;
+  public int a910;
+  public int a911;
+  public int a912;
+  public int a913;
+  public int a914;
+  public int a915;
+  public int a916;
+  public int a917;
+  public int a918;
+  public int a919;
+  public int a920;
+  public int a921;
+  public int a922;
+  public int a923;
+  public int a924;
+  public int a925;
+  public int a926;
+  public int a927;
+  public int a928;
+  public int a929;
+  public int a930;
+  public int a931;
+  public int a932;
+  public int a933;
+  public int a934;
+  public int a935;
+  public int a936;
+  public int a937;
+  public int a938;
+  public int a939;
+  public int a940;
+  public int a941;
+  public int a942;
+  public int a943;
+  public int a944;
+  public int a945;
+  public int a946;
+  public int a947;
+  public int a948;
+  public int a949;
+  public int a950;
+  public int a951;
+  public int a952;
+  public int a953;
+  public int a954;
+  public int a955;
+  public int a956;
+  public int a957;
+  public int a958;
+  public int a959;
+  public int a960;
+  public int a961;
+  public int a962;
+  public int a963;
+  public int a964;
+  public int a965;
+  public int a966;
+  public int a967;
+  public int a968;
+  public int a969;
+  public int a970;
+  public int a971;
+  public int a972;
+  public int a973;
+  public int a974;
+  public int a975;
+  public int a976;
+  public int a977;
+  public int a978;
+  public int a979;
+  public int a980;
+  public int a981;
+  public int a982;
+  public int a983;
+  public int a984;
+  public int a985;
+  public int a986;
+  public int a987;
+  public int a988;
+  public int a989;
+  public int a990;
+  public int a991;
+  public int a992;
+  public int a993;
+  public int a994;
+  public int a995;
+  public int a996;
+  public int a997;
+  public int a998;
+  public int a999;
+  public int a1000;
+  public int a1001;
+  public int a1002;
+  public int a1003;
+  public int a1004;
+  public int a1005;
+  public int a1006;
+  public int a1007;
+  public int a1008;
+  public int a1009;
+  public int a1010;
+  public int a1011;
+  public int a1012;
+  public int a1013;
+  public int a1014;
+  public int a1015;
+  public int a1016;
+  public int a1017;
+  public int a1018;
+  public int a1019;
+  public int a1020;
+  public int a1021;
+  public int a1022;
+  public int a1023;
+  public int a1024;
+  public int a1025;
+  public int a1026;
+  public int a1027;
+  public int a1028;
+  public int a1029;
+  public int a1030;
+  public int a1031;
+  public int a1032;
+  public int a1033;
+  public int a1034;
+  public int a1035;
+  public int a1036;
+  public int a1037;
+  public int a1038;
+  public int a1039;
+  public int a1040;
+  public int a1041;
+  public int a1042;
+  public int a1043;
+  public int a1044;
+  public int a1045;
+  public int a1046;
+  public int a1047;
+  public int a1048;
+  public int a1049;
+  public int a1050;
+  public int a1051;
+  public int a1052;
+  public int a1053;
+  public int a1054;
+  public int a1055;
+  public int a1056;
+  public int a1057;
+  public int a1058;
+  public int a1059;
+  public int a1060;
+  public int a1061;
+  public int a1062;
+  public int a1063;
+  public int a1064;
+  public int a1065;
+  public int a1066;
+  public int a1067;
+  public int a1068;
+  public int a1069;
+  public int a1070;
+  public int a1071;
+  public int a1072;
+  public int a1073;
+  public int a1074;
+  public int a1075;
+  public int a1076;
+  public int a1077;
+  public int a1078;
+  public int a1079;
+  public int a1080;
+  public int a1081;
+  public int a1082;
+  public int a1083;
+  public int a1084;
+  public int a1085;
+  public int a1086;
+  public int a1087;
+  public int a1088;
+  public int a1089;
+  public int a1090;
+  public int a1091;
+  public int a1092;
+  public int a1093;
+  public int a1094;
+  public int a1095;
+  public int a1096;
+  public int a1097;
+  public int a1098;
+  public int a1099;
+  public int a1100;
+  public int a1101;
+  public int a1102;
+  public int a1103;
+  public int a1104;
+  public int a1105;
+  public int a1106;
+  public int a1107;
+  public int a1108;
+  public int a1109;
+  public int a1110;
+  public int a1111;
+  public int a1112;
+  public int a1113;
+  public int a1114;
+  public int a1115;
+  public int a1116;
+  public int a1117;
+  public int a1118;
+  public int a1119;
+  public int a1120;
+  public int a1121;
+  public int a1122;
+  public int a1123;
+  public int a1124;
+  public int a1125;
+  public int a1126;
+  public int a1127;
+  public int a1128;
+  public int a1129;
+  public int a1130;
+  public int a1131;
+  public int a1132;
+  public int a1133;
+  public int a1134;
+  public int a1135;
+  public int a1136;
+  public int a1137;
+  public int a1138;
+  public int a1139;
+  public int a1140;
+  public int a1141;
+  public int a1142;
+  public int a1143;
+  public int a1144;
+  public int a1145;
+  public int a1146;
+  public int a1147;
+  public int a1148;
+  public int a1149;
+  public int a1150;
+  public int a1151;
+  public int a1152;
+  public int a1153;
+  public int a1154;
+  public int a1155;
+  public int a1156;
+  public int a1157;
+  public int a1158;
+  public int a1159;
+  public int a1160;
+  public int a1161;
+  public int a1162;
+  public int a1163;
+  public int a1164;
+  public int a1165;
+  public int a1166;
+  public int a1167;
+  public int a1168;
+  public int a1169;
+  public int a1170;
+  public int a1171;
+  public int a1172;
+  public int a1173;
+  public int a1174;
+  public int a1175;
+  public int a1176;
+  public int a1177;
+  public int a1178;
+  public int a1179;
+  public int a1180;
+  public int a1181;
+  public int a1182;
+  public int a1183;
+  public int a1184;
+  public int a1185;
+  public int a1186;
+  public int a1187;
+  public int a1188;
+  public int a1189;
+  public int a1190;
+  public int a1191;
+  public int a1192;
+  public int a1193;
+  public int a1194;
+  public int a1195;
+  public int a1196;
+  public int a1197;
+  public int a1198;
+  public int a1199;
+  public int a1200;
+  public int a1201;
+  public int a1202;
+  public int a1203;
+  public int a1204;
+  public int a1205;
+  public int a1206;
+  public int a1207;
+  public int a1208;
+  public int a1209;
+  public int a1210;
+  public int a1211;
+  public int a1212;
+  public int a1213;
+  public int a1214;
+  public int a1215;
+  public int a1216;
+  public int a1217;
+  public int a1218;
+  public int a1219;
+  public int a1220;
+  public int a1221;
+  public int a1222;
+  public int a1223;
+  public int a1224;
+  public int a1225;
+  public int a1226;
+  public int a1227;
+  public int a1228;
+  public int a1229;
+  public int a1230;
+  public int a1231;
+  public int a1232;
+  public int a1233;
+  public int a1234;
+  public int a1235;
+  public int a1236;
+  public int a1237;
+  public int a1238;
+  public int a1239;
+  public int a1240;
+  public int a1241;
+  public int a1242;
+  public int a1243;
+  public int a1244;
+  public int a1245;
+  public int a1246;
+  public int a1247;
+  public int a1248;
+  public int a1249;
+  public int a1250;
+  public int a1251;
+  public int a1252;
+  public int a1253;
+  public int a1254;
+  public int a1255;
+  public int a1256;
+  public int a1257;
+  public int a1258;
+  public int a1259;
+  public int a1260;
+  public int a1261;
+  public int a1262;
+  public int a1263;
+  public int a1264;
+  public int a1265;
+  public int a1266;
+  public int a1267;
+  public int a1268;
+  public int a1269;
+  public int a1270;
+  public int a1271;
+  public int a1272;
+  public int a1273;
+  public int a1274;
+  public int a1275;
+  public int a1276;
+  public int a1277;
+  public int a1278;
+  public int a1279;
+  public int a1280;
+  public int a1281;
+  public int a1282;
+  public int a1283;
+  public int a1284;
+  public int a1285;
+  public int a1286;
+  public int a1287;
+  public int a1288;
+  public int a1289;
+  public int a1290;
+  public int a1291;
+  public int a1292;
+  public int a1293;
+  public int a1294;
+  public int a1295;
+  public int a1296;
+  public int a1297;
+  public int a1298;
+  public int a1299;
+  public int a1300;
+  public int a1301;
+  public int a1302;
+  public int a1303;
+  public int a1304;
+  public int a1305;
+  public int a1306;
+  public int a1307;
+  public int a1308;
+  public int a1309;
+  public int a1310;
+  public int a1311;
+  public int a1312;
+  public int a1313;
+  public int a1314;
+  public int a1315;
+  public int a1316;
+  public int a1317;
+  public int a1318;
+  public int a1319;
+  public int a1320;
+  public int a1321;
+  public int a1322;
+  public int a1323;
+  public int a1324;
+  public int a1325;
+  public int a1326;
+  public int a1327;
+  public int a1328;
+  public int a1329;
+  public int a1330;
+  public int a1331;
+  public int a1332;
+  public int a1333;
+  public int a1334;
+  public int a1335;
+  public int a1336;
+  public int a1337;
+  public int a1338;
+  public int a1339;
+  public int a1340;
+  public int a1341;
+  public int a1342;
+  public int a1343;
+  public int a1344;
+  public int a1345;
+  public int a1346;
+  public int a1347;
+  public int a1348;
+  public int a1349;
+  public int a1350;
+  public int a1351;
+  public int a1352;
+  public int a1353;
+  public int a1354;
+  public int a1355;
+  public int a1356;
+  public int a1357;
+  public int a1358;
+  public int a1359;
+  public int a1360;
+  public int a1361;
+  public int a1362;
+  public int a1363;
+  public int a1364;
+  public int a1365;
+  public int a1366;
+  public int a1367;
+  public int a1368;
+  public int a1369;
+  public int a1370;
+  public int a1371;
+  public int a1372;
+  public int a1373;
+  public int a1374;
+  public int a1375;
+  public int a1376;
+  public int a1377;
+  public int a1378;
+  public int a1379;
+  public int a1380;
+  public int a1381;
+  public int a1382;
+  public int a1383;
+  public int a1384;
+  public int a1385;
+  public int a1386;
+  public int a1387;
+  public int a1388;
+  public int a1389;
+  public int a1390;
+  public int a1391;
+  public int a1392;
+  public int a1393;
+  public int a1394;
+  public int a1395;
+  public int a1396;
+  public int a1397;
+  public int a1398;
+  public int a1399;
+  public int a1400;
+  public int a1401;
+  public int a1402;
+  public int a1403;
+  public int a1404;
+  public int a1405;
+  public int a1406;
+  public int a1407;
+  public int a1408;
+  public int a1409;
+  public int a1410;
+  public int a1411;
+  public int a1412;
+  public int a1413;
+  public int a1414;
+  public int a1415;
+  public int a1416;
+  public int a1417;
+  public int a1418;
+  public int a1419;
+  public int a1420;
+  public int a1421;
+  public int a1422;
+  public int a1423;
+  public int a1424;
+  public int a1425;
+  public int a1426;
+  public int a1427;
+  public int a1428;
+  public int a1429;
+  public int a1430;
+  public int a1431;
+  public int a1432;
+  public int a1433;
+  public int a1434;
+  public int a1435;
+  public int a1436;
+  public int a1437;
+  public int a1438;
+  public int a1439;
+  public int a1440;
+  public int a1441;
+  public int a1442;
+  public int a1443;
+  public int a1444;
+  public int a1445;
+  public int a1446;
+  public int a1447;
+  public int a1448;
+  public int a1449;
+  public int a1450;
+  public int a1451;
+  public int a1452;
+  public int a1453;
+  public int a1454;
+  public int a1455;
+  public int a1456;
+  public int a1457;
+  public int a1458;
+  public int a1459;
+  public int a1460;
+  public int a1461;
+  public int a1462;
+  public int a1463;
+  public int a1464;
+  public int a1465;
+  public int a1466;
+  public int a1467;
+  public int a1468;
+  public int a1469;
+  public int a1470;
+  public int a1471;
+  public int a1472;
+  public int a1473;
+  public int a1474;
+  public int a1475;
+  public int a1476;
+  public int a1477;
+  public int a1478;
+  public int a1479;
+  public int a1480;
+  public int a1481;
+  public int a1482;
+  public int a1483;
+  public int a1484;
+  public int a1485;
+  public int a1486;
+  public int a1487;
+  public int a1488;
+  public int a1489;
+  public int a1490;
+  public int a1491;
+  public int a1492;
+  public int a1493;
+  public int a1494;
+  public int a1495;
+  public int a1496;
+  public int a1497;
+  public int a1498;
+  public int a1499;
+  public int a1500;
+  public int a1501;
+  public int a1502;
+  public int a1503;
+  public int a1504;
+  public int a1505;
+  public int a1506;
+  public int a1507;
+  public int a1508;
+  public int a1509;
+  public int a1510;
+  public int a1511;
+  public int a1512;
+  public int a1513;
+  public int a1514;
+  public int a1515;
+  public int a1516;
+  public int a1517;
+  public int a1518;
+  public int a1519;
+  public int a1520;
+  public int a1521;
+  public int a1522;
+  public int a1523;
+  public int a1524;
+  public int a1525;
+  public int a1526;
+  public int a1527;
+  public int a1528;
+  public int a1529;
+  public int a1530;
+  public int a1531;
+  public int a1532;
+  public int a1533;
+  public int a1534;
+  public int a1535;
+  public int a1536;
+  public int a1537;
+  public int a1538;
+  public int a1539;
+  public int a1540;
+  public int a1541;
+  public int a1542;
+  public int a1543;
+  public int a1544;
+  public int a1545;
+  public int a1546;
+  public int a1547;
+  public int a1548;
+  public int a1549;
+  public int a1550;
+  public int a1551;
+  public int a1552;
+  public int a1553;
+  public int a1554;
+  public int a1555;
+  public int a1556;
+  public int a1557;
+  public int a1558;
+  public int a1559;
+  public int a1560;
+  public int a1561;
+  public int a1562;
+  public int a1563;
+  public int a1564;
+  public int a1565;
+  public int a1566;
+  public int a1567;
+  public int a1568;
+  public int a1569;
+  public int a1570;
+  public int a1571;
+  public int a1572;
+  public int a1573;
+  public int a1574;
+  public int a1575;
+  public int a1576;
+  public int a1577;
+  public int a1578;
+  public int a1579;
+  public int a1580;
+  public int a1581;
+  public int a1582;
+  public int a1583;
+  public int a1584;
+  public int a1585;
+  public int a1586;
+  public int a1587;
+  public int a1588;
+  public int a1589;
+  public int a1590;
+  public int a1591;
+  public int a1592;
+  public int a1593;
+  public int a1594;
+  public int a1595;
+  public int a1596;
+  public int a1597;
+  public int a1598;
+  public int a1599;
+  public int a1600;
+  public int a1601;
+  public int a1602;
+  public int a1603;
+  public int a1604;
+  public int a1605;
+  public int a1606;
+  public int a1607;
+  public int a1608;
+  public int a1609;
+  public int a1610;
+  public int a1611;
+  public int a1612;
+  public int a1613;
+  public int a1614;
+  public int a1615;
+  public int a1616;
+  public int a1617;
+  public int a1618;
+  public int a1619;
+  public int a1620;
+  public int a1621;
+  public int a1622;
+  public int a1623;
+  public int a1624;
+  public int a1625;
+  public int a1626;
+  public int a1627;
+  public int a1628;
+  public int a1629;
+  public int a1630;
+  public int a1631;
+  public int a1632;
+  public int a1633;
+  public int a1634;
+  public int a1635;
+  public int a1636;
+  public int a1637;
+  public int a1638;
+  public int a1639;
+  public int a1640;
+  public int a1641;
+  public int a1642;
+  public int a1643;
+  public int a1644;
+  public int a1645;
+  public int a1646;
+  public int a1647;
+  public int a1648;
+  public int a1649;
+  public int a1650;
+  public int a1651;
+  public int a1652;
+  public int a1653;
+  public int a1654;
+  public int a1655;
+  public int a1656;
+  public int a1657;
+  public int a1658;
+  public int a1659;
+  public int a1660;
+  public int a1661;
+  public int a1662;
+  public int a1663;
+  public int a1664;
+  public int a1665;
+  public int a1666;
+  public int a1667;
+  public int a1668;
+  public int a1669;
+  public int a1670;
+  public int a1671;
+  public int a1672;
+  public int a1673;
+  public int a1674;
+  public int a1675;
+  public int a1676;
+  public int a1677;
+  public int a1678;
+  public int a1679;
+  public int a1680;
+  public int a1681;
+  public int a1682;
+  public int a1683;
+  public int a1684;
+  public int a1685;
+  public int a1686;
+  public int a1687;
+  public int a1688;
+  public int a1689;
+  public int a1690;
+  public int a1691;
+  public int a1692;
+  public int a1693;
+  public int a1694;
+  public int a1695;
+  public int a1696;
+  public int a1697;
+  public int a1698;
+  public int a1699;
+  public int a1700;
+  public int a1701;
+  public int a1702;
+  public int a1703;
+  public int a1704;
+  public int a1705;
+  public int a1706;
+  public int a1707;
+  public int a1708;
+  public int a1709;
+  public int a1710;
+  public int a1711;
+  public int a1712;
+  public int a1713;
+  public int a1714;
+  public int a1715;
+  public int a1716;
+  public int a1717;
+  public int a1718;
+  public int a1719;
+  public int a1720;
+  public int a1721;
+  public int a1722;
+  public int a1723;
+  public int a1724;
+  public int a1725;
+  public int a1726;
+  public int a1727;
+  public int a1728;
+  public int a1729;
+  public int a1730;
+  public int a1731;
+  public int a1732;
+  public int a1733;
+  public int a1734;
+  public int a1735;
+  public int a1736;
+  public int a1737;
+  public int a1738;
+  public int a1739;
+  public int a1740;
+  public int a1741;
+  public int a1742;
+  public int a1743;
+  public int a1744;
+  public int a1745;
+  public int a1746;
+  public int a1747;
+  public int a1748;
+  public int a1749;
+  public int a1750;
+  public int a1751;
+  public int a1752;
+  public int a1753;
+  public int a1754;
+  public int a1755;
+  public int a1756;
+  public int a1757;
+  public int a1758;
+  public int a1759;
+  public int a1760;
+  public int a1761;
+  public int a1762;
+  public int a1763;
+  public int a1764;
+  public int a1765;
+  public int a1766;
+  public int a1767;
+  public int a1768;
+  public int a1769;
+  public int a1770;
+  public int a1771;
+  public int a1772;
+  public int a1773;
+  public int a1774;
+  public int a1775;
+  public int a1776;
+  public int a1777;
+  public int a1778;
+  public int a1779;
+  public int a1780;
+  public int a1781;
+  public int a1782;
+  public int a1783;
+  public int a1784;
+  public int a1785;
+  public int a1786;
+  public int a1787;
+  public int a1788;
+  public int a1789;
+  public int a1790;
+  public int a1791;
+  public int a1792;
+  public int a1793;
+  public int a1794;
+  public int a1795;
+  public int a1796;
+  public int a1797;
+  public int a1798;
+  public int a1799;
+  public int a1800;
+  public int a1801;
+  public int a1802;
+  public int a1803;
+  public int a1804;
+  public int a1805;
+  public int a1806;
+  public int a1807;
+  public int a1808;
+  public int a1809;
+  public int a1810;
+  public int a1811;
+  public int a1812;
+  public int a1813;
+  public int a1814;
+  public int a1815;
+  public int a1816;
+  public int a1817;
+  public int a1818;
+  public int a1819;
+  public int a1820;
+  public int a1821;
+  public int a1822;
+  public int a1823;
+  public int a1824;
+  public int a1825;
+  public int a1826;
+  public int a1827;
+  public int a1828;
+  public int a1829;
+  public int a1830;
+  public int a1831;
+  public int a1832;
+  public int a1833;
+  public int a1834;
+  public int a1835;
+  public int a1836;
+  public int a1837;
+  public int a1838;
+  public int a1839;
+  public int a1840;
+  public int a1841;
+  public int a1842;
+  public int a1843;
+  public int a1844;
+  public int a1845;
+  public int a1846;
+  public int a1847;
+  public int a1848;
+  public int a1849;
+  public int a1850;
+  public int a1851;
+  public int a1852;
+  public int a1853;
+  public int a1854;
+  public int a1855;
+  public int a1856;
+  public int a1857;
+  public int a1858;
+  public int a1859;
+  public int a1860;
+  public int a1861;
+  public int a1862;
+  public int a1863;
+  public int a1864;
+  public int a1865;
+  public int a1866;
+  public int a1867;
+  public int a1868;
+  public int a1869;
+  public int a1870;
+  public int a1871;
+  public int a1872;
+  public int a1873;
+  public int a1874;
+  public int a1875;
+  public int a1876;
+  public int a1877;
+  public int a1878;
+  public int a1879;
+  public int a1880;
+  public int a1881;
+  public int a1882;
+  public int a1883;
+  public int a1884;
+  public int a1885;
+  public int a1886;
+  public int a1887;
+  public int a1888;
+  public int a1889;
+  public int a1890;
+  public int a1891;
+  public int a1892;
+  public int a1893;
+  public int a1894;
+  public int a1895;
+  public int a1896;
+  public int a1897;
+  public int a1898;
+  public int a1899;
+  public int a1900;
+  public int a1901;
+  public int a1902;
+  public int a1903;
+  public int a1904;
+  public int a1905;
+  public int a1906;
+  public int a1907;
+  public int a1908;
+  public int a1909;
+  public int a1910;
+  public int a1911;
+  public int a1912;
+  public int a1913;
+  public int a1914;
+  public int a1915;
+  public int a1916;
+  public int a1917;
+  public int a1918;
+  public int a1919;
+  public int a1920;
+  public int a1921;
+  public int a1922;
+  public int a1923;
+  public int a1924;
+  public int a1925;
+  public int a1926;
+  public int a1927;
+  public int a1928;
+  public int a1929;
+  public int a1930;
+  public int a1931;
+  public int a1932;
+  public int a1933;
+  public int a1934;
+  public int a1935;
+  public int a1936;
+  public int a1937;
+  public int a1938;
+  public int a1939;
+  public int a1940;
+  public int a1941;
+  public int a1942;
+  public int a1943;
+  public int a1944;
+  public int a1945;
+  public int a1946;
+  public int a1947;
+  public int a1948;
+  public int a1949;
+  public int a1950;
+  public int a1951;
+  public int a1952;
+  public int a1953;
+  public int a1954;
+  public int a1955;
+  public int a1956;
+  public int a1957;
+  public int a1958;
+  public int a1959;
+  public int a1960;
+  public int a1961;
+  public int a1962;
+  public int a1963;
+  public int a1964;
+  public int a1965;
+  public int a1966;
+  public int a1967;
+  public int a1968;
+  public int a1969;
+  public int a1970;
+  public int a1971;
+  public int a1972;
+  public int a1973;
+  public int a1974;
+  public int a1975;
+  public int a1976;
+  public int a1977;
+  public int a1978;
+  public int a1979;
+  public int a1980;
+  public int a1981;
+  public int a1982;
+  public int a1983;
+  public int a1984;
+  public int a1985;
+  public int a1986;
+  public int a1987;
+  public int a1988;
+  public int a1989;
+  public int a1990;
+  public int a1991;
+  public int a1992;
+  public int a1993;
+  public int a1994;
+  public int a1995;
+  public int a1996;
+  public int a1997;
+  public int a1998;
+  public int a1999;
+  public int a2000;
+  public int a2001;
+  public int a2002;
+  public int a2003;
+  public int a2004;
+  public int a2005;
+  public int a2006;
+  public int a2007;
+  public int a2008;
+  public int a2009;
+  public int a2010;
+  public int a2011;
+  public int a2012;
+  public int a2013;
+  public int a2014;
+  public int a2015;
+  public int a2016;
+  public int a2017;
+  public int a2018;
+  public int a2019;
+  public int a2020;
+  public int a2021;
+  public int a2022;
+  public int a2023;
+  public int a2024;
+  public int a2025;
+  public int a2026;
+  public int a2027;
+  public int a2028;
+  public int a2029;
+  public int a2030;
+  public int a2031;
+  public int a2032;
+  public int a2033;
+  public int a2034;
+  public int a2035;
+  public int a2036;
+  public int a2037;
+  public int a2038;
+  public int a2039;
+  public int a2040;
+  public int a2041;
+  public int a2042;
+  public int a2043;
+  public int a2044;
+  public int a2045;
+  public int a2046;
+  public int a2047;
+  public int a2048;
+  public int a2049;
+  public int a2050;
+  public int a2051;
+  public int a2052;
+  public int a2053;
+  public int a2054;
+  public int a2055;
+  public int a2056;
+  public int a2057;
+  public int a2058;
+  public int a2059;
+  public int a2060;
+  public int a2061;
+  public int a2062;
+  public int a2063;
+  public int a2064;
+  public int a2065;
+  public int a2066;
+  public int a2067;
+  public int a2068;
+  public int a2069;
+  public int a2070;
+  public int a2071;
+  public int a2072;
+  public int a2073;
+  public int a2074;
+  public int a2075;
+  public int a2076;
+  public int a2077;
+  public int a2078;
+  public int a2079;
+  public int a2080;
+  public int a2081;
+  public int a2082;
+  public int a2083;
+  public int a2084;
+  public int a2085;
+  public int a2086;
+  public int a2087;
+  public int a2088;
+  public int a2089;
+  public int a2090;
+  public int a2091;
+  public int a2092;
+  public int a2093;
+  public int a2094;
+  public int a2095;
+  public int a2096;
+  public int a2097;
+  public int a2098;
+  public int a2099;
+  public int a2100;
+  public int a2101;
+  public int a2102;
+  public int a2103;
+  public int a2104;
+  public int a2105;
+  public int a2106;
+  public int a2107;
+  public int a2108;
+  public int a2109;
+  public int a2110;
+  public int a2111;
+  public int a2112;
+  public int a2113;
+  public int a2114;
+  public int a2115;
+  public int a2116;
+  public int a2117;
+  public int a2118;
+  public int a2119;
+  public int a2120;
+  public int a2121;
+  public int a2122;
+  public int a2123;
+  public int a2124;
+  public int a2125;
+  public int a2126;
+  public int a2127;
+  public int a2128;
+  public int a2129;
+  public int a2130;
+  public int a2131;
+  public int a2132;
+  public int a2133;
+  public int a2134;
+  public int a2135;
+  public int a2136;
+  public int a2137;
+  public int a2138;
+  public int a2139;
+  public int a2140;
+  public int a2141;
+  public int a2142;
+  public int a2143;
+  public int a2144;
+  public int a2145;
+  public int a2146;
+  public int a2147;
+  public int a2148;
+  public int a2149;
+  public int a2150;
+  public int a2151;
+  public int a2152;
+  public int a2153;
+  public int a2154;
+  public int a2155;
+  public int a2156;
+  public int a2157;
+  public int a2158;
+  public int a2159;
+  public int a2160;
+  public int a2161;
+  public int a2162;
+  public int a2163;
+  public int a2164;
+  public int a2165;
+  public int a2166;
+  public int a2167;
+  public int a2168;
+  public int a2169;
+  public int a2170;
+  public int a2171;
+  public int a2172;
+  public int a2173;
+  public int a2174;
+  public int a2175;
+  public int a2176;
+  public int a2177;
+  public int a2178;
+  public int a2179;
+  public int a2180;
+  public int a2181;
+  public int a2182;
+  public int a2183;
+  public int a2184;
+  public int a2185;
+  public int a2186;
+  public int a2187;
+  public int a2188;
+  public int a2189;
+  public int a2190;
+  public int a2191;
+  public int a2192;
+  public int a2193;
+  public int a2194;
+  public int a2195;
+  public int a2196;
+  public int a2197;
+  public int a2198;
+  public int a2199;
+  public int a2200;
+  public int a2201;
+  public int a2202;
+  public int a2203;
+  public int a2204;
+  public int a2205;
+  public int a2206;
+  public int a2207;
+  public int a2208;
+  public int a2209;
+  public int a2210;
+  public int a2211;
+  public int a2212;
+  public int a2213;
+  public int a2214;
+  public int a2215;
+  public int a2216;
+  public int a2217;
+  public int a2218;
+  public int a2219;
+  public int a2220;
+  public int a2221;
+  public int a2222;
+  public int a2223;
+  public int a2224;
+  public int a2225;
+  public int a2226;
+  public int a2227;
+  public int a2228;
+  public int a2229;
+  public int a2230;
+  public int a2231;
+  public int a2232;
+  public int a2233;
+  public int a2234;
+  public int a2235;
+  public int a2236;
+  public int a2237;
+  public int a2238;
+  public int a2239;
+  public int a2240;
+  public int a2241;
+  public int a2242;
+  public int a2243;
+  public int a2244;
+  public int a2245;
+  public int a2246;
+  public int a2247;
+  public int a2248;
+  public int a2249;
+  public int a2250;
+  public int a2251;
+  public int a2252;
+  public int a2253;
+  public int a2254;
+  public int a2255;
+  public int a2256;
+  public int a2257;
+  public int a2258;
+  public int a2259;
+  public int a2260;
+  public int a2261;
+  public int a2262;
+  public int a2263;
+  public int a2264;
+  public int a2265;
+  public int a2266;
+  public int a2267;
+  public int a2268;
+  public int a2269;
+  public int a2270;
+  public int a2271;
+  public int a2272;
+  public int a2273;
+  public int a2274;
+  public int a2275;
+  public int a2276;
+  public int a2277;
+  public int a2278;
+  public int a2279;
+  public int a2280;
+  public int a2281;
+  public int a2282;
+  public int a2283;
+  public int a2284;
+  public int a2285;
+  public int a2286;
+  public int a2287;
+  public int a2288;
+  public int a2289;
+  public int a2290;
+  public int a2291;
+  public int a2292;
+  public int a2293;
+  public int a2294;
+  public int a2295;
+  public int a2296;
+  public int a2297;
+  public int a2298;
+  public int a2299;
+  public int a2300;
+  public int a2301;
+  public int a2302;
+  public int a2303;
+  public int a2304;
+  public int a2305;
+  public int a2306;
+  public int a2307;
+  public int a2308;
+  public int a2309;
+  public int a2310;
+  public int a2311;
+  public int a2312;
+  public int a2313;
+  public int a2314;
+  public int a2315;
+  public int a2316;
+  public int a2317;
+  public int a2318;
+  public int a2319;
+  public int a2320;
+  public int a2321;
+  public int a2322;
+  public int a2323;
+  public int a2324;
+  public int a2325;
+  public int a2326;
+  public int a2327;
+  public int a2328;
+  public int a2329;
+  public int a2330;
+  public int a2331;
+  public int a2332;
+  public int a2333;
+  public int a2334;
+  public int a2335;
+  public int a2336;
+  public int a2337;
+  public int a2338;
+  public int a2339;
+  public int a2340;
+  public int a2341;
+  public int a2342;
+  public int a2343;
+  public int a2344;
+  public int a2345;
+  public int a2346;
+  public int a2347;
+  public int a2348;
+  public int a2349;
+  public int a2350;
+  public int a2351;
+  public int a2352;
+  public int a2353;
+  public int a2354;
+  public int a2355;
+  public int a2356;
+  public int a2357;
+  public int a2358;
+  public int a2359;
+  public int a2360;
+  public int a2361;
+  public int a2362;
+  public int a2363;
+  public int a2364;
+  public int a2365;
+  public int a2366;
+  public int a2367;
+  public int a2368;
+  public int a2369;
+  public int a2370;
+  public int a2371;
+  public int a2372;
+  public int a2373;
+  public int a2374;
+  public int a2375;
+  public int a2376;
+  public int a2377;
+  public int a2378;
+  public int a2379;
+  public int a2380;
+  public int a2381;
+  public int a2382;
+  public int a2383;
+  public int a2384;
+  public int a2385;
+  public int a2386;
+  public int a2387;
+  public int a2388;
+  public int a2389;
+  public int a2390;
+  public int a2391;
+  public int a2392;
+  public int a2393;
+  public int a2394;
+  public int a2395;
+  public int a2396;
+  public int a2397;
+  public int a2398;
+  public int a2399;
+  public int a2400;
+  public int a2401;
+  public int a2402;
+  public int a2403;
+  public int a2404;
+  public int a2405;
+  public int a2406;
+  public int a2407;
+  public int a2408;
+  public int a2409;
+  public int a2410;
+  public int a2411;
+  public int a2412;
+  public int a2413;
+  public int a2414;
+  public int a2415;
+  public int a2416;
+  public int a2417;
+  public int a2418;
+  public int a2419;
+  public int a2420;
+  public int a2421;
+  public int a2422;
+  public int a2423;
+  public int a2424;
+  public int a2425;
+  public int a2426;
+  public int a2427;
+  public int a2428;
+  public int a2429;
+  public int a2430;
+  public int a2431;
+  public int a2432;
+  public int a2433;
+  public int a2434;
+  public int a2435;
+  public int a2436;
+  public int a2437;
+  public int a2438;
+  public int a2439;
+  public int a2440;
+  public int a2441;
+  public int a2442;
+  public int a2443;
+  public int a2444;
+  public int a2445;
+  public int a2446;
+  public int a2447;
+  public int a2448;
+  public int a2449;
+  public int a2450;
+  public int a2451;
+  public int a2452;
+  public int a2453;
+  public int a2454;
+  public int a2455;
+  public int a2456;
+  public int a2457;
+  public int a2458;
+  public int a2459;
+  public int a2460;
+  public int a2461;
+  public int a2462;
+  public int a2463;
+  public int a2464;
+  public int a2465;
+  public int a2466;
+  public int a2467;
+  public int a2468;
+  public int a2469;
+  public int a2470;
+  public int a2471;
+  public int a2472;
+  public int a2473;
+  public int a2474;
+  public int a2475;
+  public int a2476;
+  public int a2477;
+  public int a2478;
+  public int a2479;
+  public int a2480;
+  public int a2481;
+  public int a2482;
+  public int a2483;
+  public int a2484;
+  public int a2485;
+  public int a2486;
+  public int a2487;
+  public int a2488;
+  public int a2489;
+  public int a2490;
+  public int a2491;
+  public int a2492;
+  public int a2493;
+  public int a2494;
+  public int a2495;
+  public int a2496;
+  public int a2497;
+  public int a2498;
+  public int a2499;
+  public int a2500;
+  public int a2501;
+  public int a2502;
+  public int a2503;
+  public int a2504;
+  public int a2505;
+  public int a2506;
+  public int a2507;
+  public int a2508;
+  public int a2509;
+  public int a2510;
+  public int a2511;
+  public int a2512;
+  public int a2513;
+  public int a2514;
+  public int a2515;
+  public int a2516;
+  public int a2517;
+  public int a2518;
+  public int a2519;
+  public int a2520;
+  public int a2521;
+  public int a2522;
+  public int a2523;
+  public int a2524;
+  public int a2525;
+  public int a2526;
+  public int a2527;
+  public int a2528;
+  public int a2529;
+  public int a2530;
+  public int a2531;
+  public int a2532;
+  public int a2533;
+  public int a2534;
+  public int a2535;
+  public int a2536;
+  public int a2537;
+  public int a2538;
+  public int a2539;
+  public int a2540;
+  public int a2541;
+  public int a2542;
+  public int a2543;
+  public int a2544;
+  public int a2545;
+  public int a2546;
+  public int a2547;
+  public int a2548;
+  public int a2549;
+  public int a2550;
+  public int a2551;
+  public int a2552;
+  public int a2553;
+  public int a2554;
+  public int a2555;
+  public int a2556;
+  public int a2557;
+  public int a2558;
+  public int a2559;
+  public int a2560;
+  public int a2561;
+  public int a2562;
+  public int a2563;
+  public int a2564;
+  public int a2565;
+  public int a2566;
+  public int a2567;
+  public int a2568;
+  public int a2569;
+  public int a2570;
+  public int a2571;
+  public int a2572;
+  public int a2573;
+  public int a2574;
+  public int a2575;
+  public int a2576;
+  public int a2577;
+  public int a2578;
+  public int a2579;
+  public int a2580;
+  public int a2581;
+  public int a2582;
+  public int a2583;
+  public int a2584;
+  public int a2585;
+  public int a2586;
+  public int a2587;
+  public int a2588;
+  public int a2589;
+  public int a2590;
+  public int a2591;
+  public int a2592;
+  public int a2593;
+  public int a2594;
+  public int a2595;
+  public int a2596;
+  public int a2597;
+  public int a2598;
+  public int a2599;
+  public int a2600;
+  public int a2601;
+  public int a2602;
+  public int a2603;
+  public int a2604;
+  public int a2605;
+  public int a2606;
+  public int a2607;
+  public int a2608;
+  public int a2609;
+  public int a2610;
+  public int a2611;
+  public int a2612;
+  public int a2613;
+  public int a2614;
+  public int a2615;
+  public int a2616;
+  public int a2617;
+  public int a2618;
+  public int a2619;
+  public int a2620;
+  public int a2621;
+  public int a2622;
+  public int a2623;
+  public int a2624;
+  public int a2625;
+  public int a2626;
+  public int a2627;
+  public int a2628;
+  public int a2629;
+  public int a2630;
+  public int a2631;
+  public int a2632;
+  public int a2633;
+  public int a2634;
+  public int a2635;
+  public int a2636;
+  public int a2637;
+  public int a2638;
+  public int a2639;
+  public int a2640;
+  public int a2641;
+  public int a2642;
+  public int a2643;
+  public int a2644;
+  public int a2645;
+  public int a2646;
+  public int a2647;
+  public int a2648;
+  public int a2649;
+  public int a2650;
+  public int a2651;
+  public int a2652;
+  public int a2653;
+  public int a2654;
+  public int a2655;
+  public int a2656;
+  public int a2657;
+  public int a2658;
+  public int a2659;
+  public int a2660;
+  public int a2661;
+  public int a2662;
+  public int a2663;
+  public int a2664;
+  public int a2665;
+  public int a2666;
+  public int a2667;
+  public int a2668;
+  public int a2669;
+  public int a2670;
+  public int a2671;
+  public int a2672;
+  public int a2673;
+  public int a2674;
+  public int a2675;
+  public int a2676;
+  public int a2677;
+  public int a2678;
+  public int a2679;
+  public int a2680;
+  public int a2681;
+  public int a2682;
+  public int a2683;
+  public int a2684;
+  public int a2685;
+  public int a2686;
+  public int a2687;
+  public int a2688;
+  public int a2689;
+  public int a2690;
+  public int a2691;
+  public int a2692;
+  public int a2693;
+  public int a2694;
+  public int a2695;
+  public int a2696;
+  public int a2697;
+  public int a2698;
+  public int a2699;
+  public int a2700;
+  public int a2701;
+  public int a2702;
+  public int a2703;
+  public int a2704;
+  public int a2705;
+  public int a2706;
+  public int a2707;
+  public int a2708;
+  public int a2709;
+  public int a2710;
+  public int a2711;
+  public int a2712;
+  public int a2713;
+  public int a2714;
+  public int a2715;
+  public int a2716;
+  public int a2717;
+  public int a2718;
+  public int a2719;
+  public int a2720;
+  public int a2721;
+  public int a2722;
+  public int a2723;
+  public int a2724;
+  public int a2725;
+  public int a2726;
+  public int a2727;
+  public int a2728;
+  public int a2729;
+  public int a2730;
+  public int a2731;
+  public int a2732;
+  public int a2733;
+  public int a2734;
+  public int a2735;
+  public int a2736;
+  public int a2737;
+  public int a2738;
+  public int a2739;
+  public int a2740;
+  public int a2741;
+  public int a2742;
+  public int a2743;
+  public int a2744;
+  public int a2745;
+  public int a2746;
+  public int a2747;
+  public int a2748;
+  public int a2749;
+  public int a2750;
+  public int a2751;
+  public int a2752;
+  public int a2753;
+  public int a2754;
+  public int a2755;
+  public int a2756;
+  public int a2757;
+  public int a2758;
+  public int a2759;
+  public int a2760;
+  public int a2761;
+  public int a2762;
+  public int a2763;
+  public int a2764;
+  public int a2765;
+  public int a2766;
+  public int a2767;
+  public int a2768;
+  public int a2769;
+  public int a2770;
+  public int a2771;
+  public int a2772;
+  public int a2773;
+  public int a2774;
+  public int a2775;
+  public int a2776;
+  public int a2777;
+  public int a2778;
+  public int a2779;
+  public int a2780;
+  public int a2781;
+  public int a2782;
+  public int a2783;
+  public int a2784;
+  public int a2785;
+  public int a2786;
+  public int a2787;
+  public int a2788;
+  public int a2789;
+  public int a2790;
+  public int a2791;
+  public int a2792;
+  public int a2793;
+  public int a2794;
+  public int a2795;
+  public int a2796;
+  public int a2797;
+  public int a2798;
+  public int a2799;
+  public int a2800;
+  public int a2801;
+  public int a2802;
+  public int a2803;
+  public int a2804;
+  public int a2805;
+  public int a2806;
+  public int a2807;
+  public int a2808;
+  public int a2809;
+  public int a2810;
+  public int a2811;
+  public int a2812;
+  public int a2813;
+  public int a2814;
+  public int a2815;
+  public int a2816;
+  public int a2817;
+  public int a2818;
+  public int a2819;
+  public int a2820;
+  public int a2821;
+  public int a2822;
+  public int a2823;
+  public int a2824;
+  public int a2825;
+  public int a2826;
+  public int a2827;
+  public int a2828;
+  public int a2829;
+  public int a2830;
+  public int a2831;
+  public int a2832;
+  public int a2833;
+  public int a2834;
+  public int a2835;
+  public int a2836;
+  public int a2837;
+  public int a2838;
+  public int a2839;
+  public int a2840;
+  public int a2841;
+  public int a2842;
+  public int a2843;
+  public int a2844;
+  public int a2845;
+  public int a2846;
+  public int a2847;
+  public int a2848;
+  public int a2849;
+  public int a2850;
+  public int a2851;
+  public int a2852;
+  public int a2853;
+  public int a2854;
+  public int a2855;
+  public int a2856;
+  public int a2857;
+  public int a2858;
+  public int a2859;
+  public int a2860;
+  public int a2861;
+  public int a2862;
+  public int a2863;
+  public int a2864;
+  public int a2865;
+  public int a2866;
+  public int a2867;
+  public int a2868;
+  public int a2869;
+  public int a2870;
+  public int a2871;
+  public int a2872;
+  public int a2873;
+  public int a2874;
+  public int a2875;
+  public int a2876;
+  public int a2877;
+  public int a2878;
+  public int a2879;
+  public int a2880;
+  public int a2881;
+  public int a2882;
+  public int a2883;
+  public int a2884;
+  public int a2885;
+  public int a2886;
+  public int a2887;
+  public int a2888;
+  public int a2889;
+  public int a2890;
+  public int a2891;
+  public int a2892;
+  public int a2893;
+  public int a2894;
+  public int a2895;
+  public int a2896;
+  public int a2897;
+  public int a2898;
+  public int a2899;
+  public int a2900;
+  public int a2901;
+  public int a2902;
+  public int a2903;
+  public int a2904;
+  public int a2905;
+  public int a2906;
+  public int a2907;
+  public int a2908;
+  public int a2909;
+  public int a2910;
+  public int a2911;
+  public int a2912;
+  public int a2913;
+  public int a2914;
+  public int a2915;
+  public int a2916;
+  public int a2917;
+  public int a2918;
+  public int a2919;
+  public int a2920;
+  public int a2921;
+  public int a2922;
+  public int a2923;
+  public int a2924;
+  public int a2925;
+  public int a2926;
+  public int a2927;
+  public int a2928;
+  public int a2929;
+  public int a2930;
+  public int a2931;
+  public int a2932;
+  public int a2933;
+  public int a2934;
+  public int a2935;
+  public int a2936;
+  public int a2937;
+  public int a2938;
+  public int a2939;
+  public int a2940;
+  public int a2941;
+  public int a2942;
+  public int a2943;
+  public int a2944;
+  public int a2945;
+  public int a2946;
+  public int a2947;
+  public int a2948;
+  public int a2949;
+  public int a2950;
+  public int a2951;
+  public int a2952;
+  public int a2953;
+  public int a2954;
+  public int a2955;
+  public int a2956;
+  public int a2957;
+  public int a2958;
+  public int a2959;
+  public int a2960;
+  public int a2961;
+  public int a2962;
+  public int a2963;
+  public int a2964;
+  public int a2965;
+  public int a2966;
+  public int a2967;
+  public int a2968;
+  public int a2969;
+  public int a2970;
+  public int a2971;
+  public int a2972;
+  public int a2973;
+  public int a2974;
+  public int a2975;
+  public int a2976;
+  public int a2977;
+  public int a2978;
+  public int a2979;
+  public int a2980;
+  public int a2981;
+  public int a2982;
+  public int a2983;
+  public int a2984;
+  public int a2985;
+  public int a2986;
+  public int a2987;
+  public int a2988;
+  public int a2989;
+  public int a2990;
+  public int a2991;
+  public int a2992;
+  public int a2993;
+  public int a2994;
+  public int a2995;
+  public int a2996;
+  public int a2997;
+  public int a2998;
+  public int a2999;
+  public int a3000;
+  public int a3001;
+  public int a3002;
+  public int a3003;
+  public int a3004;
+  public int a3005;
+  public int a3006;
+  public int a3007;
+  public int a3008;
+  public int a3009;
+  public int a3010;
+  public int a3011;
+  public int a3012;
+  public int a3013;
+  public int a3014;
+  public int a3015;
+  public int a3016;
+  public int a3017;
+  public int a3018;
+  public int a3019;
+  public int a3020;
+  public int a3021;
+  public int a3022;
+  public int a3023;
+  public int a3024;
+  public int a3025;
+  public int a3026;
+  public int a3027;
+  public int a3028;
+  public int a3029;
+  public int a3030;
+  public int a3031;
+  public int a3032;
+  public int a3033;
+  public int a3034;
+  public int a3035;
+  public int a3036;
+  public int a3037;
+  public int a3038;
+  public int a3039;
+  public int a3040;
+  public int a3041;
+  public int a3042;
+  public int a3043;
+  public int a3044;
+  public int a3045;
+  public int a3046;
+  public int a3047;
+  public int a3048;
+  public int a3049;
+  public int a3050;
+  public int a3051;
+  public int a3052;
+  public int a3053;
+  public int a3054;
+  public int a3055;
+  public int a3056;
+  public int a3057;
+  public int a3058;
+  public int a3059;
+  public int a3060;
+  public int a3061;
+  public int a3062;
+  public int a3063;
+  public int a3064;
+  public int a3065;
+  public int a3066;
+  public int a3067;
+  public int a3068;
+  public int a3069;
+  public int a3070;
+  public int a3071;
+  public int a3072;
+  public int a3073;
+  public int a3074;
+  public int a3075;
+  public int a3076;
+  public int a3077;
+  public int a3078;
+  public int a3079;
+  public int a3080;
+  public int a3081;
+  public int a3082;
+  public int a3083;
+  public int a3084;
+  public int a3085;
+  public int a3086;
+  public int a3087;
+  public int a3088;
+  public int a3089;
+  public int a3090;
+  public int a3091;
+  public int a3092;
+  public int a3093;
+  public int a3094;
+  public int a3095;
+  public int a3096;
+  public int a3097;
+  public int a3098;
+  public int a3099;
+  public int a3100;
+  public int a3101;
+  public int a3102;
+  public int a3103;
+  public int a3104;
+  public int a3105;
+  public int a3106;
+  public int a3107;
+  public int a3108;
+  public int a3109;
+  public int a3110;
+  public int a3111;
+  public int a3112;
+  public int a3113;
+  public int a3114;
+  public int a3115;
+  public int a3116;
+  public int a3117;
+  public int a3118;
+  public int a3119;
+  public int a3120;
+  public int a3121;
+  public int a3122;
+  public int a3123;
+  public int a3124;
+  public int a3125;
+  public int a3126;
+  public int a3127;
+  public int a3128;
+  public int a3129;
+  public int a3130;
+  public int a3131;
+  public int a3132;
+  public int a3133;
+  public int a3134;
+  public int a3135;
+  public int a3136;
+  public int a3137;
+  public int a3138;
+  public int a3139;
+  public int a3140;
+  public int a3141;
+  public int a3142;
+  public int a3143;
+  public int a3144;
+  public int a3145;
+  public int a3146;
+  public int a3147;
+  public int a3148;
+  public int a3149;
+  public int a3150;
+  public int a3151;
+  public int a3152;
+  public int a3153;
+  public int a3154;
+  public int a3155;
+  public int a3156;
+  public int a3157;
+  public int a3158;
+  public int a3159;
+  public int a3160;
+  public int a3161;
+  public int a3162;
+  public int a3163;
+  public int a3164;
+  public int a3165;
+  public int a3166;
+  public int a3167;
+  public int a3168;
+  public int a3169;
+  public int a3170;
+  public int a3171;
+  public int a3172;
+  public int a3173;
+  public int a3174;
+  public int a3175;
+  public int a3176;
+  public int a3177;
+  public int a3178;
+  public int a3179;
+  public int a3180;
+  public int a3181;
+  public int a3182;
+  public int a3183;
+  public int a3184;
+  public int a3185;
+  public int a3186;
+  public int a3187;
+  public int a3188;
+  public int a3189;
+  public int a3190;
+  public int a3191;
+  public int a3192;
+  public int a3193;
+  public int a3194;
+  public int a3195;
+  public int a3196;
+  public int a3197;
+  public int a3198;
+  public int a3199;
+  public int a3200;
+  public int a3201;
+  public int a3202;
+  public int a3203;
+  public int a3204;
+  public int a3205;
+  public int a3206;
+  public int a3207;
+  public int a3208;
+  public int a3209;
+  public int a3210;
+  public int a3211;
+  public int a3212;
+  public int a3213;
+  public int a3214;
+  public int a3215;
+  public int a3216;
+  public int a3217;
+  public int a3218;
+  public int a3219;
+  public int a3220;
+  public int a3221;
+  public int a3222;
+  public int a3223;
+  public int a3224;
+  public int a3225;
+  public int a3226;
+  public int a3227;
+  public int a3228;
+  public int a3229;
+  public int a3230;
+  public int a3231;
+  public int a3232;
+  public int a3233;
+  public int a3234;
+  public int a3235;
+  public int a3236;
+  public int a3237;
+  public int a3238;
+  public int a3239;
+  public int a3240;
+  public int a3241;
+  public int a3242;
+  public int a3243;
+  public int a3244;
+  public int a3245;
+  public int a3246;
+  public int a3247;
+  public int a3248;
+  public int a3249;
+  public int a3250;
+  public int a3251;
+  public int a3252;
+  public int a3253;
+  public int a3254;
+  public int a3255;
+  public int a3256;
+  public int a3257;
+  public int a3258;
+  public int a3259;
+  public int a3260;
+  public int a3261;
+  public int a3262;
+  public int a3263;
+  public int a3264;
+  public int a3265;
+  public int a3266;
+  public int a3267;
+  public int a3268;
+  public int a3269;
+  public int a3270;
+  public int a3271;
+  public int a3272;
+  public int a3273;
+  public int a3274;
+  public int a3275;
+  public int a3276;
+  public int a3277;
+  public int a3278;
+  public int a3279;
+  public int a3280;
+  public int a3281;
+  public int a3282;
+  public int a3283;
+  public int a3284;
+  public int a3285;
+  public int a3286;
+  public int a3287;
+  public int a3288;
+  public int a3289;
+  public int a3290;
+  public int a3291;
+  public int a3292;
+  public int a3293;
+  public int a3294;
+  public int a3295;
+  public int a3296;
+  public int a3297;
+  public int a3298;
+  public int a3299;
+  public int a3300;
+  public int a3301;
+  public int a3302;
+  public int a3303;
+  public int a3304;
+  public int a3305;
+  public int a3306;
+  public int a3307;
+  public int a3308;
+  public int a3309;
+  public int a3310;
+  public int a3311;
+  public int a3312;
+  public int a3313;
+  public int a3314;
+  public int a3315;
+  public int a3316;
+  public int a3317;
+  public int a3318;
+  public int a3319;
+  public int a3320;
+  public int a3321;
+  public int a3322;
+  public int a3323;
+  public int a3324;
+  public int a3325;
+  public int a3326;
+  public int a3327;
+  public int a3328;
+  public int a3329;
+  public int a3330;
+  public int a3331;
+  public int a3332;
+  public int a3333;
+  public int a3334;
+  public int a3335;
+  public int a3336;
+  public int a3337;
+  public int a3338;
+  public int a3339;
+  public int a3340;
+  public int a3341;
+  public int a3342;
+  public int a3343;
+  public int a3344;
+  public int a3345;
+  public int a3346;
+  public int a3347;
+  public int a3348;
+  public int a3349;
+  public int a3350;
+  public int a3351;
+  public int a3352;
+  public int a3353;
+  public int a3354;
+  public int a3355;
+  public int a3356;
+  public int a3357;
+  public int a3358;
+  public int a3359;
+  public int a3360;
+  public int a3361;
+  public int a3362;
+  public int a3363;
+  public int a3364;
+  public int a3365;
+  public int a3366;
+  public int a3367;
+  public int a3368;
+  public int a3369;
+  public int a3370;
+  public int a3371;
+  public int a3372;
+  public int a3373;
+  public int a3374;
+  public int a3375;
+  public int a3376;
+  public int a3377;
+  public int a3378;
+  public int a3379;
+  public int a3380;
+  public int a3381;
+  public int a3382;
+  public int a3383;
+  public int a3384;
+  public int a3385;
+  public int a3386;
+  public int a3387;
+  public int a3388;
+  public int a3389;
+  public int a3390;
+  public int a3391;
+  public int a3392;
+  public int a3393;
+  public int a3394;
+  public int a3395;
+  public int a3396;
+  public int a3397;
+  public int a3398;
+  public int a3399;
+  public int a3400;
+  public int a3401;
+  public int a3402;
+  public int a3403;
+  public int a3404;
+  public int a3405;
+  public int a3406;
+  public int a3407;
+  public int a3408;
+  public int a3409;
+  public int a3410;
+  public int a3411;
+  public int a3412;
+  public int a3413;
+  public int a3414;
+  public int a3415;
+  public int a3416;
+  public int a3417;
+  public int a3418;
+  public int a3419;
+  public int a3420;
+  public int a3421;
+  public int a3422;
+  public int a3423;
+  public int a3424;
+  public int a3425;
+  public int a3426;
+  public int a3427;
+  public int a3428;
+  public int a3429;
+  public int a3430;
+  public int a3431;
+  public int a3432;
+  public int a3433;
+  public int a3434;
+  public int a3435;
+  public int a3436;
+  public int a3437;
+  public int a3438;
+  public int a3439;
+  public int a3440;
+  public int a3441;
+  public int a3442;
+  public int a3443;
+  public int a3444;
+  public int a3445;
+  public int a3446;
+  public int a3447;
+  public int a3448;
+  public int a3449;
+  public int a3450;
+  public int a3451;
+  public int a3452;
+  public int a3453;
+  public int a3454;
+  public int a3455;
+  public int a3456;
+  public int a3457;
+  public int a3458;
+  public int a3459;
+  public int a3460;
+  public int a3461;
+  public int a3462;
+  public int a3463;
+  public int a3464;
+  public int a3465;
+  public int a3466;
+  public int a3467;
+  public int a3468;
+  public int a3469;
+  public int a3470;
+  public int a3471;
+  public int a3472;
+  public int a3473;
+  public int a3474;
+  public int a3475;
+  public int a3476;
+  public int a3477;
+  public int a3478;
+  public int a3479;
+  public int a3480;
+  public int a3481;
+  public int a3482;
+  public int a3483;
+  public int a3484;
+  public int a3485;
+  public int a3486;
+  public int a3487;
+  public int a3488;
+  public int a3489;
+  public int a3490;
+  public int a3491;
+  public int a3492;
+  public int a3493;
+  public int a3494;
+  public int a3495;
+  public int a3496;
+  public int a3497;
+  public int a3498;
+  public int a3499;
+  public int a3500;
+  public int a3501;
+  public int a3502;
+  public int a3503;
+  public int a3504;
+  public int a3505;
+  public int a3506;
+  public int a3507;
+  public int a3508;
+  public int a3509;
+  public int a3510;
+  public int a3511;
+  public int a3512;
+  public int a3513;
+  public int a3514;
+  public int a3515;
+  public int a3516;
+  public int a3517;
+  public int a3518;
+  public int a3519;
+  public int a3520;
+  public int a3521;
+  public int a3522;
+  public int a3523;
+  public int a3524;
+  public int a3525;
+  public int a3526;
+  public int a3527;
+  public int a3528;
+  public int a3529;
+  public int a3530;
+  public int a3531;
+  public int a3532;
+  public int a3533;
+  public int a3534;
+  public int a3535;
+  public int a3536;
+  public int a3537;
+  public int a3538;
+  public int a3539;
+  public int a3540;
+  public int a3541;
+  public int a3542;
+  public int a3543;
+  public int a3544;
+  public int a3545;
+  public int a3546;
+  public int a3547;
+  public int a3548;
+  public int a3549;
+  public int a3550;
+  public int a3551;
+  public int a3552;
+  public int a3553;
+  public int a3554;
+  public int a3555;
+  public int a3556;
+  public int a3557;
+  public int a3558;
+  public int a3559;
+  public int a3560;
+  public int a3561;
+  public int a3562;
+  public int a3563;
+  public int a3564;
+  public int a3565;
+  public int a3566;
+  public int a3567;
+  public int a3568;
+  public int a3569;
+  public int a3570;
+  public int a3571;
+  public int a3572;
+  public int a3573;
+  public int a3574;
+  public int a3575;
+  public int a3576;
+  public int a3577;
+  public int a3578;
+  public int a3579;
+  public int a3580;
+  public int a3581;
+  public int a3582;
+  public int a3583;
+  public int a3584;
+  public int a3585;
+  public int a3586;
+  public int a3587;
+  public int a3588;
+  public int a3589;
+  public int a3590;
+  public int a3591;
+  public int a3592;
+  public int a3593;
+  public int a3594;
+  public int a3595;
+  public int a3596;
+  public int a3597;
+  public int a3598;
+  public int a3599;
+  public int a3600;
+  public int a3601;
+  public int a3602;
+  public int a3603;
+  public int a3604;
+  public int a3605;
+  public int a3606;
+  public int a3607;
+  public int a3608;
+  public int a3609;
+  public int a3610;
+  public int a3611;
+  public int a3612;
+  public int a3613;
+  public int a3614;
+  public int a3615;
+  public int a3616;
+  public int a3617;
+  public int a3618;
+  public int a3619;
+  public int a3620;
+  public int a3621;
+  public int a3622;
+  public int a3623;
+  public int a3624;
+  public int a3625;
+  public int a3626;
+  public int a3627;
+  public int a3628;
+  public int a3629;
+  public int a3630;
+  public int a3631;
+  public int a3632;
+  public int a3633;
+  public int a3634;
+  public int a3635;
+  public int a3636;
+  public int a3637;
+  public int a3638;
+  public int a3639;
+  public int a3640;
+  public int a3641;
+  public int a3642;
+  public int a3643;
+  public int a3644;
+  public int a3645;
+  public int a3646;
+  public int a3647;
+  public int a3648;
+  public int a3649;
+  public int a3650;
+  public int a3651;
+  public int a3652;
+  public int a3653;
+  public int a3654;
+  public int a3655;
+  public int a3656;
+  public int a3657;
+  public int a3658;
+  public int a3659;
+  public int a3660;
+  public int a3661;
+  public int a3662;
+  public int a3663;
+  public int a3664;
+  public int a3665;
+  public int a3666;
+  public int a3667;
+  public int a3668;
+  public int a3669;
+  public int a3670;
+  public int a3671;
+  public int a3672;
+  public int a3673;
+  public int a3674;
+  public int a3675;
+  public int a3676;
+  public int a3677;
+  public int a3678;
+  public int a3679;
+  public int a3680;
+  public int a3681;
+  public int a3682;
+  public int a3683;
+  public int a3684;
+  public int a3685;
+  public int a3686;
+  public int a3687;
+  public int a3688;
+  public int a3689;
+  public int a3690;
+  public int a3691;
+  public int a3692;
+  public int a3693;
+  public int a3694;
+  public int a3695;
+  public int a3696;
+  public int a3697;
+  public int a3698;
+  public int a3699;
+  public int a3700;
+  public int a3701;
+  public int a3702;
+  public int a3703;
+  public int a3704;
+  public int a3705;
+  public int a3706;
+  public int a3707;
+  public int a3708;
+  public int a3709;
+  public int a3710;
+  public int a3711;
+  public int a3712;
+  public int a3713;
+  public int a3714;
+  public int a3715;
+  public int a3716;
+  public int a3717;
+  public int a3718;
+  public int a3719;
+  public int a3720;
+  public int a3721;
+  public int a3722;
+  public int a3723;
+  public int a3724;
+  public int a3725;
+  public int a3726;
+  public int a3727;
+  public int a3728;
+  public int a3729;
+  public int a3730;
+  public int a3731;
+  public int a3732;
+  public int a3733;
+  public int a3734;
+  public int a3735;
+  public int a3736;
+  public int a3737;
+  public int a3738;
+  public int a3739;
+  public int a3740;
+  public int a3741;
+  public int a3742;
+  public int a3743;
+  public int a3744;
+  public int a3745;
+  public int a3746;
+  public int a3747;
+  public int a3748;
+  public int a3749;
+  public int a3750;
+  public int a3751;
+  public int a3752;
+  public int a3753;
+  public int a3754;
+  public int a3755;
+  public int a3756;
+  public int a3757;
+  public int a3758;
+  public int a3759;
+  public int a3760;
+  public int a3761;
+  public int a3762;
+  public int a3763;
+  public int a3764;
+  public int a3765;
+  public int a3766;
+  public int a3767;
+  public int a3768;
+  public int a3769;
+  public int a3770;
+  public int a3771;
+  public int a3772;
+  public int a3773;
+  public int a3774;
+  public int a3775;
+  public int a3776;
+  public int a3777;
+  public int a3778;
+  public int a3779;
+  public int a3780;
+  public int a3781;
+  public int a3782;
+  public int a3783;
+  public int a3784;
+  public int a3785;
+  public int a3786;
+  public int a3787;
+  public int a3788;
+  public int a3789;
+  public int a3790;
+  public int a3791;
+  public int a3792;
+  public int a3793;
+  public int a3794;
+  public int a3795;
+  public int a3796;
+  public int a3797;
+  public int a3798;
+  public int a3799;
+  public int a3800;
+  public int a3801;
+  public int a3802;
+  public int a3803;
+  public int a3804;
+  public int a3805;
+  public int a3806;
+  public int a3807;
+  public int a3808;
+  public int a3809;
+  public int a3810;
+  public int a3811;
+  public int a3812;
+  public int a3813;
+  public int a3814;
+  public int a3815;
+  public int a3816;
+  public int a3817;
+  public int a3818;
+  public int a3819;
+  public int a3820;
+  public int a3821;
+  public int a3822;
+  public int a3823;
+  public int a3824;
+  public int a3825;
+  public int a3826;
+  public int a3827;
+  public int a3828;
+  public int a3829;
+  public int a3830;
+  public int a3831;
+  public int a3832;
+  public int a3833;
+  public int a3834;
+  public int a3835;
+  public int a3836;
+  public int a3837;
+  public int a3838;
+  public int a3839;
+  public int a3840;
+  public int a3841;
+  public int a3842;
+  public int a3843;
+  public int a3844;
+  public int a3845;
+  public int a3846;
+  public int a3847;
+  public int a3848;
+  public int a3849;
+  public int a3850;
+  public int a3851;
+  public int a3852;
+  public int a3853;
+  public int a3854;
+  public int a3855;
+  public int a3856;
+  public int a3857;
+  public int a3858;
+  public int a3859;
+  public int a3860;
+  public int a3861;
+  public int a3862;
+  public int a3863;
+  public int a3864;
+  public int a3865;
+  public int a3866;
+  public int a3867;
+  public int a3868;
+  public int a3869;
+  public int a3870;
+  public int a3871;
+  public int a3872;
+  public int a3873;
+  public int a3874;
+  public int a3875;
+  public int a3876;
+  public int a3877;
+  public int a3878;
+  public int a3879;
+  public int a3880;
+  public int a3881;
+  public int a3882;
+  public int a3883;
+  public int a3884;
+  public int a3885;
+  public int a3886;
+  public int a3887;
+  public int a3888;
+  public int a3889;
+  public int a3890;
+  public int a3891;
+  public int a3892;
+  public int a3893;
+  public int a3894;
+  public int a3895;
+  public int a3896;
+  public int a3897;
+  public int a3898;
+  public int a3899;
+  public int a3900;
+  public int a3901;
+  public int a3902;
+  public int a3903;
+  public int a3904;
+  public int a3905;
+  public int a3906;
+  public int a3907;
+  public int a3908;
+  public int a3909;
+  public int a3910;
+  public int a3911;
+  public int a3912;
+  public int a3913;
+  public int a3914;
+  public int a3915;
+  public int a3916;
+  public int a3917;
+  public int a3918;
+  public int a3919;
+  public int a3920;
+  public int a3921;
+  public int a3922;
+  public int a3923;
+  public int a3924;
+  public int a3925;
+  public int a3926;
+  public int a3927;
+  public int a3928;
+  public int a3929;
+  public int a3930;
+  public int a3931;
+  public int a3932;
+  public int a3933;
+  public int a3934;
+  public int a3935;
+  public int a3936;
+  public int a3937;
+  public int a3938;
+  public int a3939;
+  public int a3940;
+  public int a3941;
+  public int a3942;
+  public int a3943;
+  public int a3944;
+  public int a3945;
+  public int a3946;
+  public int a3947;
+  public int a3948;
+  public int a3949;
+  public int a3950;
+  public int a3951;
+  public int a3952;
+  public int a3953;
+  public int a3954;
+  public int a3955;
+  public int a3956;
+  public int a3957;
+  public int a3958;
+  public int a3959;
+  public int a3960;
+  public int a3961;
+  public int a3962;
+  public int a3963;
+  public int a3964;
+  public int a3965;
+  public int a3966;
+  public int a3967;
+  public int a3968;
+  public int a3969;
+  public int a3970;
+  public int a3971;
+  public int a3972;
+  public int a3973;
+  public int a3974;
+  public int a3975;
+  public int a3976;
+  public int a3977;
+  public int a3978;
+  public int a3979;
+  public int a3980;
+  public int a3981;
+  public int a3982;
+  public int a3983;
+  public int a3984;
+  public int a3985;
+  public int a3986;
+  public int a3987;
+  public int a3988;
+  public int a3989;
+  public int a3990;
+  public int a3991;
+  public int a3992;
+  public int a3993;
+  public int a3994;
+  public int a3995;
+  public int a3996;
+  public int a3997;
+  public int a3998;
+  public int a3999;
+  public int a4000;
+  public int a4001;
+  public int a4002;
+  public int a4003;
+  public int a4004;
+  public int a4005;
+  public int a4006;
+  public int a4007;
+  public int a4008;
+  public int a4009;
+  public int a4010;
+  public int a4011;
+  public int a4012;
+  public int a4013;
+  public int a4014;
+  public int a4015;
+  public int a4016;
+  public int a4017;
+  public int a4018;
+  public int a4019;
+  public int a4020;
+  public int a4021;
+  public int a4022;
+  public int a4023;
+  public int a4024;
+  public int a4025;
+  public int a4026;
+  public int a4027;
+  public int a4028;
+  public int a4029;
+  public int a4030;
+  public int a4031;
+  public int a4032;
+  public int a4033;
+  public int a4034;
+  public int a4035;
+  public int a4036;
+  public int a4037;
+  public int a4038;
+  public int a4039;
+  public int a4040;
+  public int a4041;
+  public int a4042;
+  public int a4043;
+  public int a4044;
+  public int a4045;
+  public int a4046;
+  public int a4047;
+  public int a4048;
+  public int a4049;
+  public int a4050;
+  public int a4051;
+  public int a4052;
+  public int a4053;
+  public int a4054;
+  public int a4055;
+  public int a4056;
+  public int a4057;
+  public int a4058;
+  public int a4059;
+  public int a4060;
+  public int a4061;
+  public int a4062;
+  public int a4063;
+  public int a4064;
+  public int a4065;
+  public int a4066;
+  public int a4067;
+  public int a4068;
+  public int a4069;
+  public int a4070;
+  public int a4071;
+  public int a4072;
+  public int a4073;
+  public int a4074;
+  public int a4075;
+  public int a4076;
+  public int a4077;
+  public int a4078;
+  public int a4079;
+  public int a4080;
+  public int a4081;
+  public int a4082;
+  public int a4083;
+  public int a4084;
+  public int a4085;
+  public int a4086;
+  public int a4087;
+  public int a4088;
+  public int a4089;
+  public int a4090;
+  public int a4091;
+  public int a4092;
+  public int a4093;
+  public int a4094;
+  public int a4095;
+  public int a4096;
+  public int a4097;
+  public int a4098;
+  public int a4099;
+  public int a4100;
+  public int a4101;
+  public int a4102;
+  public int a4103;
+  public int a4104;
+  public int a4105;
+  public int a4106;
+  public int a4107;
+  public int a4108;
+  public int a4109;
+  public int a4110;
+  public int a4111;
+  public int a4112;
+  public int a4113;
+  public int a4114;
+  public int a4115;
+  public int a4116;
+  public int a4117;
+  public int a4118;
+  public int a4119;
+  public int a4120;
+  public int a4121;
+  public int a4122;
+  public int a4123;
+  public int a4124;
+  public int a4125;
+  public int a4126;
+  public int a4127;
+  public int a4128;
+  public int a4129;
+  public int a4130;
+  public int a4131;
+  public int a4132;
+  public int a4133;
+  public int a4134;
+  public int a4135;
+  public int a4136;
+  public int a4137;
+  public int a4138;
+  public int a4139;
+  public int a4140;
+  public int a4141;
+  public int a4142;
+  public int a4143;
+  public int a4144;
+  public int a4145;
+  public int a4146;
+  public int a4147;
+  public int a4148;
+  public int a4149;
+  public int a4150;
+  public int a4151;
+  public int a4152;
+  public int a4153;
+  public int a4154;
+  public int a4155;
+  public int a4156;
+  public int a4157;
+  public int a4158;
+  public int a4159;
+  public int a4160;
+  public int a4161;
+  public int a4162;
+  public int a4163;
+  public int a4164;
+  public int a4165;
+  public int a4166;
+  public int a4167;
+  public int a4168;
+  public int a4169;
+  public int a4170;
+  public int a4171;
+  public int a4172;
+  public int a4173;
+  public int a4174;
+  public int a4175;
+  public int a4176;
+  public int a4177;
+  public int a4178;
+  public int a4179;
+  public int a4180;
+  public int a4181;
+  public int a4182;
+  public int a4183;
+  public int a4184;
+  public int a4185;
+  public int a4186;
+  public int a4187;
+  public int a4188;
+  public int a4189;
+  public int a4190;
+  public int a4191;
+  public int a4192;
+  public int a4193;
+  public int a4194;
+  public int a4195;
+  public int a4196;
+  public int a4197;
+  public int a4198;
+  public int a4199;
+  public int a4200;
+  public int a4201;
+  public int a4202;
+  public int a4203;
+  public int a4204;
+  public int a4205;
+  public int a4206;
+  public int a4207;
+  public int a4208;
+  public int a4209;
+  public int a4210;
+  public int a4211;
+  public int a4212;
+  public int a4213;
+  public int a4214;
+  public int a4215;
+  public int a4216;
+  public int a4217;
+  public int a4218;
+  public int a4219;
+  public int a4220;
+  public int a4221;
+  public int a4222;
+  public int a4223;
+  public int a4224;
+  public int a4225;
+  public int a4226;
+  public int a4227;
+  public int a4228;
+  public int a4229;
+  public int a4230;
+  public int a4231;
+  public int a4232;
+  public int a4233;
+  public int a4234;
+  public int a4235;
+  public int a4236;
+  public int a4237;
+  public int a4238;
+  public int a4239;
+  public int a4240;
+  public int a4241;
+  public int a4242;
+  public int a4243;
+  public int a4244;
+  public int a4245;
+  public int a4246;
+  public int a4247;
+  public int a4248;
+  public int a4249;
+  public int a4250;
+  public int a4251;
+  public int a4252;
+  public int a4253;
+  public int a4254;
+  public int a4255;
+  public int a4256;
+  public int a4257;
+  public int a4258;
+  public int a4259;
+  public int a4260;
+  public int a4261;
+  public int a4262;
+  public int a4263;
+  public int a4264;
+  public int a4265;
+  public int a4266;
+  public int a4267;
+  public int a4268;
+  public int a4269;
+  public int a4270;
+  public int a4271;
+  public int a4272;
+  public int a4273;
+  public int a4274;
+  public int a4275;
+  public int a4276;
+  public int a4277;
+  public int a4278;
+  public int a4279;
+  public int a4280;
+  public int a4281;
+  public int a4282;
+  public int a4283;
+  public int a4284;
+  public int a4285;
+  public int a4286;
+  public int a4287;
+  public int a4288;
+  public int a4289;
+  public int a4290;
+  public int a4291;
+  public int a4292;
+  public int a4293;
+  public int a4294;
+  public int a4295;
+  public int a4296;
+  public int a4297;
+  public int a4298;
+  public int a4299;
+  public int a4300;
+  public int a4301;
+  public int a4302;
+  public int a4303;
+  public int a4304;
+  public int a4305;
+  public int a4306;
+  public int a4307;
+  public int a4308;
+  public int a4309;
+  public int a4310;
+  public int a4311;
+  public int a4312;
+  public int a4313;
+  public int a4314;
+  public int a4315;
+  public int a4316;
+  public int a4317;
+  public int a4318;
+  public int a4319;
+  public int a4320;
+  public int a4321;
+  public int a4322;
+  public int a4323;
+  public int a4324;
+  public int a4325;
+  public int a4326;
+  public int a4327;
+  public int a4328;
+  public int a4329;
+  public int a4330;
+  public int a4331;
+  public int a4332;
+  public int a4333;
+  public int a4334;
+  public int a4335;
+  public int a4336;
+  public int a4337;
+  public int a4338;
+  public int a4339;
+  public int a4340;
+  public int a4341;
+  public int a4342;
+  public int a4343;
+  public int a4344;
+  public int a4345;
+  public int a4346;
+  public int a4347;
+  public int a4348;
+  public int a4349;
+  public int a4350;
+  public int a4351;
+  public int a4352;
+  public int a4353;
+  public int a4354;
+  public int a4355;
+  public int a4356;
+  public int a4357;
+  public int a4358;
+  public int a4359;
+  public int a4360;
+  public int a4361;
+  public int a4362;
+  public int a4363;
+  public int a4364;
+  public int a4365;
+  public int a4366;
+  public int a4367;
+  public int a4368;
+  public int a4369;
+  public int a4370;
+  public int a4371;
+  public int a4372;
+  public int a4373;
+  public int a4374;
+  public int a4375;
+  public int a4376;
+  public int a4377;
+  public int a4378;
+  public int a4379;
+  public int a4380;
+  public int a4381;
+  public int a4382;
+  public int a4383;
+  public int a4384;
+  public int a4385;
+  public int a4386;
+  public int a4387;
+  public int a4388;
+  public int a4389;
+  public int a4390;
+  public int a4391;
+  public int a4392;
+  public int a4393;
+  public int a4394;
+  public int a4395;
+  public int a4396;
+  public int a4397;
+  public int a4398;
+  public int a4399;
+  public int a4400;
+  public int a4401;
+  public int a4402;
+  public int a4403;
+  public int a4404;
+  public int a4405;
+  public int a4406;
+  public int a4407;
+  public int a4408;
+  public int a4409;
+  public int a4410;
+  public int a4411;
+  public int a4412;
+  public int a4413;
+  public int a4414;
+  public int a4415;
+  public int a4416;
+  public int a4417;
+  public int a4418;
+  public int a4419;
+  public int a4420;
+  public int a4421;
+  public int a4422;
+  public int a4423;
+  public int a4424;
+  public int a4425;
+  public int a4426;
+  public int a4427;
+  public int a4428;
+  public int a4429;
+  public int a4430;
+  public int a4431;
+  public int a4432;
+  public int a4433;
+  public int a4434;
+  public int a4435;
+  public int a4436;
+  public int a4437;
+  public int a4438;
+  public int a4439;
+  public int a4440;
+  public int a4441;
+  public int a4442;
+  public int a4443;
+  public int a4444;
+  public int a4445;
+  public int a4446;
+  public int a4447;
+  public int a4448;
+  public int a4449;
+  public int a4450;
+  public int a4451;
+  public int a4452;
+  public int a4453;
+  public int a4454;
+  public int a4455;
+  public int a4456;
+  public int a4457;
+  public int a4458;
+  public int a4459;
+  public int a4460;
+  public int a4461;
+  public int a4462;
+  public int a4463;
+  public int a4464;
+  public int a4465;
+  public int a4466;
+  public int a4467;
+  public int a4468;
+  public int a4469;
+  public int a4470;
+  public int a4471;
+  public int a4472;
+  public int a4473;
+  public int a4474;
+  public int a4475;
+  public int a4476;
+  public int a4477;
+  public int a4478;
+  public int a4479;
+  public int a4480;
+  public int a4481;
+  public int a4482;
+  public int a4483;
+  public int a4484;
+  public int a4485;
+  public int a4486;
+  public int a4487;
+  public int a4488;
+  public int a4489;
+  public int a4490;
+  public int a4491;
+  public int a4492;
+  public int a4493;
+  public int a4494;
+  public int a4495;
+  public int a4496;
+  public int a4497;
+  public int a4498;
+  public int a4499;
+  public int a4500;
+  public int a4501;
+  public int a4502;
+  public int a4503;
+  public int a4504;
+  public int a4505;
+  public int a4506;
+  public int a4507;
+  public int a4508;
+  public int a4509;
+  public int a4510;
+  public int a4511;
+  public int a4512;
+  public int a4513;
+  public int a4514;
+  public int a4515;
+  public int a4516;
+  public int a4517;
+  public int a4518;
+  public int a4519;
+  public int a4520;
+  public int a4521;
+  public int a4522;
+  public int a4523;
+  public int a4524;
+  public int a4525;
+  public int a4526;
+  public int a4527;
+  public int a4528;
+  public int a4529;
+  public int a4530;
+  public int a4531;
+  public int a4532;
+  public int a4533;
+  public int a4534;
+  public int a4535;
+  public int a4536;
+  public int a4537;
+  public int a4538;
+  public int a4539;
+  public int a4540;
+  public int a4541;
+  public int a4542;
+  public int a4543;
+  public int a4544;
+  public int a4545;
+  public int a4546;
+  public int a4547;
+  public int a4548;
+  public int a4549;
+  public int a4550;
+  public int a4551;
+  public int a4552;
+  public int a4553;
+  public int a4554;
+  public int a4555;
+  public int a4556;
+  public int a4557;
+  public int a4558;
+  public int a4559;
+  public int a4560;
+  public int a4561;
+  public int a4562;
+  public int a4563;
+  public int a4564;
+  public int a4565;
+  public int a4566;
+  public int a4567;
+  public int a4568;
+  public int a4569;
+  public int a4570;
+  public int a4571;
+  public int a4572;
+  public int a4573;
+  public int a4574;
+  public int a4575;
+  public int a4576;
+  public int a4577;
+  public int a4578;
+  public int a4579;
+  public int a4580;
+  public int a4581;
+  public int a4582;
+  public int a4583;
+  public int a4584;
+  public int a4585;
+  public int a4586;
+  public int a4587;
+  public int a4588;
+  public int a4589;
+  public int a4590;
+  public int a4591;
+  public int a4592;
+  public int a4593;
+  public int a4594;
+  public int a4595;
+  public int a4596;
+  public int a4597;
+  public int a4598;
+  public int a4599;
+  public int a4600;
+  public int a4601;
+  public int a4602;
+  public int a4603;
+  public int a4604;
+  public int a4605;
+  public int a4606;
+  public int a4607;
+  public int a4608;
+  public int a4609;
+  public int a4610;
+  public int a4611;
+  public int a4612;
+  public int a4613;
+  public int a4614;
+  public int a4615;
+  public int a4616;
+  public int a4617;
+  public int a4618;
+  public int a4619;
+  public int a4620;
+  public int a4621;
+  public int a4622;
+  public int a4623;
+  public int a4624;
+  public int a4625;
+  public int a4626;
+  public int a4627;
+  public int a4628;
+  public int a4629;
+  public int a4630;
+  public int a4631;
+  public int a4632;
+  public int a4633;
+  public int a4634;
+  public int a4635;
+  public int a4636;
+  public int a4637;
+  public int a4638;
+  public int a4639;
+  public int a4640;
+  public int a4641;
+  public int a4642;
+  public int a4643;
+  public int a4644;
+  public int a4645;
+  public int a4646;
+  public int a4647;
+  public int a4648;
+  public int a4649;
+  public int a4650;
+  public int a4651;
+  public int a4652;
+  public int a4653;
+  public int a4654;
+  public int a4655;
+  public int a4656;
+  public int a4657;
+  public int a4658;
+  public int a4659;
+  public int a4660;
+  public int a4661;
+  public int a4662;
+  public int a4663;
+  public int a4664;
+  public int a4665;
+  public int a4666;
+  public int a4667;
+  public int a4668;
+  public int a4669;
+  public int a4670;
+  public int a4671;
+  public int a4672;
+  public int a4673;
+  public int a4674;
+  public int a4675;
+  public int a4676;
+  public int a4677;
+  public int a4678;
+  public int a4679;
+  public int a4680;
+  public int a4681;
+  public int a4682;
+  public int a4683;
+  public int a4684;
+  public int a4685;
+  public int a4686;
+  public int a4687;
+  public int a4688;
+  public int a4689;
+  public int a4690;
+  public int a4691;
+  public int a4692;
+  public int a4693;
+  public int a4694;
+  public int a4695;
+  public int a4696;
+  public int a4697;
+  public int a4698;
+  public int a4699;
+  public int a4700;
+  public int a4701;
+  public int a4702;
+  public int a4703;
+  public int a4704;
+  public int a4705;
+  public int a4706;
+  public int a4707;
+  public int a4708;
+  public int a4709;
+  public int a4710;
+  public int a4711;
+  public int a4712;
+  public int a4713;
+  public int a4714;
+  public int a4715;
+  public int a4716;
+  public int a4717;
+  public int a4718;
+  public int a4719;
+  public int a4720;
+  public int a4721;
+  public int a4722;
+  public int a4723;
+  public int a4724;
+  public int a4725;
+  public int a4726;
+  public int a4727;
+  public int a4728;
+  public int a4729;
+  public int a4730;
+  public int a4731;
+  public int a4732;
+  public int a4733;
+  public int a4734;
+  public int a4735;
+  public int a4736;
+  public int a4737;
+  public int a4738;
+  public int a4739;
+  public int a4740;
+  public int a4741;
+  public int a4742;
+  public int a4743;
+  public int a4744;
+  public int a4745;
+  public int a4746;
+  public int a4747;
+  public int a4748;
+  public int a4749;
+  public int a4750;
+  public int a4751;
+  public int a4752;
+  public int a4753;
+  public int a4754;
+  public int a4755;
+  public int a4756;
+  public int a4757;
+  public int a4758;
+  public int a4759;
+  public int a4760;
+  public int a4761;
+  public int a4762;
+  public int a4763;
+  public int a4764;
+  public int a4765;
+  public int a4766;
+  public int a4767;
+  public int a4768;
+  public int a4769;
+  public int a4770;
+  public int a4771;
+  public int a4772;
+  public int a4773;
+  public int a4774;
+  public int a4775;
+  public int a4776;
+  public int a4777;
+  public int a4778;
+  public int a4779;
+  public int a4780;
+  public int a4781;
+  public int a4782;
+  public int a4783;
+  public int a4784;
+  public int a4785;
+  public int a4786;
+  public int a4787;
+  public int a4788;
+  public int a4789;
+  public int a4790;
+  public int a4791;
+  public int a4792;
+  public int a4793;
+  public int a4794;
+  public int a4795;
+  public int a4796;
+  public int a4797;
+  public int a4798;
+  public int a4799;
+  public int a4800;
+  public int a4801;
+  public int a4802;
+  public int a4803;
+  public int a4804;
+  public int a4805;
+  public int a4806;
+  public int a4807;
+  public int a4808;
+  public int a4809;
+  public int a4810;
+  public int a4811;
+  public int a4812;
+  public int a4813;
+  public int a4814;
+  public int a4815;
+  public int a4816;
+  public int a4817;
+  public int a4818;
+  public int a4819;
+  public int a4820;
+  public int a4821;
+  public int a4822;
+  public int a4823;
+  public int a4824;
+  public int a4825;
+  public int a4826;
+  public int a4827;
+  public int a4828;
+  public int a4829;
+  public int a4830;
+  public int a4831;
+  public int a4832;
+  public int a4833;
+  public int a4834;
+  public int a4835;
+  public int a4836;
+  public int a4837;
+  public int a4838;
+  public int a4839;
+  public int a4840;
+  public int a4841;
+  public int a4842;
+  public int a4843;
+  public int a4844;
+  public int a4845;
+  public int a4846;
+  public int a4847;
+  public int a4848;
+  public int a4849;
+  public int a4850;
+  public int a4851;
+  public int a4852;
+  public int a4853;
+  public int a4854;
+  public int a4855;
+  public int a4856;
+  public int a4857;
+  public int a4858;
+  public int a4859;
+  public int a4860;
+  public int a4861;
+  public int a4862;
+  public int a4863;
+  public int a4864;
+  public int a4865;
+  public int a4866;
+  public int a4867;
+  public int a4868;
+  public int a4869;
+  public int a4870;
+  public int a4871;
+  public int a4872;
+  public int a4873;
+  public int a4874;
+  public int a4875;
+  public int a4876;
+  public int a4877;
+  public int a4878;
+  public int a4879;
+  public int a4880;
+  public int a4881;
+  public int a4882;
+  public int a4883;
+  public int a4884;
+  public int a4885;
+  public int a4886;
+  public int a4887;
+  public int a4888;
+  public int a4889;
+  public int a4890;
+  public int a4891;
+  public int a4892;
+  public int a4893;
+  public int a4894;
+  public int a4895;
+  public int a4896;
+  public int a4897;
+  public int a4898;
+  public int a4899;
+  public int a4900;
+  public int a4901;
+  public int a4902;
+  public int a4903;
+  public int a4904;
+  public int a4905;
+  public int a4906;
+  public int a4907;
+  public int a4908;
+  public int a4909;
+  public int a4910;
+  public int a4911;
+  public int a4912;
+  public int a4913;
+  public int a4914;
+  public int a4915;
+  public int a4916;
+  public int a4917;
+  public int a4918;
+  public int a4919;
+  public int a4920;
+  public int a4921;
+  public int a4922;
+  public int a4923;
+  public int a4924;
+  public int a4925;
+  public int a4926;
+  public int a4927;
+  public int a4928;
+  public int a4929;
+  public int a4930;
+  public int a4931;
+  public int a4932;
+  public int a4933;
+  public int a4934;
+  public int a4935;
+  public int a4936;
+  public int a4937;
+  public int a4938;
+  public int a4939;
+  public int a4940;
+  public int a4941;
+  public int a4942;
+  public int a4943;
+  public int a4944;
+  public int a4945;
+  public int a4946;
+  public int a4947;
+  public int a4948;
+  public int a4949;
+  public int a4950;
+  public int a4951;
+  public int a4952;
+  public int a4953;
+  public int a4954;
+  public int a4955;
+  public int a4956;
+  public int a4957;
+  public int a4958;
+  public int a4959;
+  public int a4960;
+  public int a4961;
+  public int a4962;
+  public int a4963;
+  public int a4964;
+  public int a4965;
+  public int a4966;
+  public int a4967;
+  public int a4968;
+  public int a4969;
+  public int a4970;
+  public int a4971;
+  public int a4972;
+  public int a4973;
+  public int a4974;
+  public int a4975;
+  public int a4976;
+  public int a4977;
+  public int a4978;
+  public int a4979;
+  public int a4980;
+  public int a4981;
+  public int a4982;
+  public int a4983;
+  public int a4984;
+  public int a4985;
+  public int a4986;
+  public int a4987;
+  public int a4988;
+  public int a4989;
+  public int a4990;
+  public int a4991;
+  public int a4992;
+  public int a4993;
+  public int a4994;
+  public int a4995;
+  public int a4996;
+  public int a4997;
+  public int a4998;
+  public int a4999;
+  public int a5000;
+  public int a5001;
+  public int a5002;
+  public int a5003;
+  public int a5004;
+  public int a5005;
+  public int a5006;
+  public int a5007;
+  public int a5008;
+  public int a5009;
+  public int a5010;
+  public int a5011;
+  public int a5012;
+  public int a5013;
+  public int a5014;
+  public int a5015;
+  public int a5016;
+  public int a5017;
+  public int a5018;
+  public int a5019;
+  public int a5020;
+  public int a5021;
+  public int a5022;
+  public int a5023;
+  public int a5024;
+  public int a5025;
+  public int a5026;
+  public int a5027;
+  public int a5028;
+  public int a5029;
+  public int a5030;
+  public int a5031;
+  public int a5032;
+  public int a5033;
+  public int a5034;
+  public int a5035;
+  public int a5036;
+  public int a5037;
+  public int a5038;
+  public int a5039;
+  public int a5040;
+  public int a5041;
+  public int a5042;
+  public int a5043;
+  public int a5044;
+  public int a5045;
+  public int a5046;
+  public int a5047;
+  public int a5048;
+  public int a5049;
+  public int a5050;
+  public int a5051;
+  public int a5052;
+  public int a5053;
+  public int a5054;
+  public int a5055;
+  public int a5056;
+  public int a5057;
+  public int a5058;
+  public int a5059;
+  public int a5060;
+  public int a5061;
+  public int a5062;
+  public int a5063;
+  public int a5064;
+  public int a5065;
+  public int a5066;
+  public int a5067;
+  public int a5068;
+  public int a5069;
+  public int a5070;
+  public int a5071;
+  public int a5072;
+  public int a5073;
+  public int a5074;
+  public int a5075;
+  public int a5076;
+  public int a5077;
+  public int a5078;
+  public int a5079;
+  public int a5080;
+  public int a5081;
+  public int a5082;
+  public int a5083;
+  public int a5084;
+  public int a5085;
+  public int a5086;
+  public int a5087;
+  public int a5088;
+  public int a5089;
+  public int a5090;
+  public int a5091;
+  public int a5092;
+  public int a5093;
+  public int a5094;
+  public int a5095;
+  public int a5096;
+  public int a5097;
+  public int a5098;
+  public int a5099;
+  public int a5100;
+  public int a5101;
+  public int a5102;
+  public int a5103;
+  public int a5104;
+  public int a5105;
+  public int a5106;
+  public int a5107;
+  public int a5108;
+  public int a5109;
+  public int a5110;
+  public int a5111;
+  public int a5112;
+  public int a5113;
+  public int a5114;
+  public int a5115;
+  public int a5116;
+  public int a5117;
+  public int a5118;
+  public int a5119;
+  public int a5120;
+  public int a5121;
+  public int a5122;
+  public int a5123;
+  public int a5124;
+  public int a5125;
+  public int a5126;
+  public int a5127;
+  public int a5128;
+  public int a5129;
+  public int a5130;
+  public int a5131;
+  public int a5132;
+  public int a5133;
+  public int a5134;
+  public int a5135;
+  public int a5136;
+  public int a5137;
+  public int a5138;
+  public int a5139;
+  public int a5140;
+  public int a5141;
+  public int a5142;
+  public int a5143;
+  public int a5144;
+  public int a5145;
+  public int a5146;
+  public int a5147;
+  public int a5148;
+  public int a5149;
+  public int a5150;
+  public int a5151;
+  public int a5152;
+  public int a5153;
+  public int a5154;
+  public int a5155;
+  public int a5156;
+  public int a5157;
+  public int a5158;
+  public int a5159;
+  public int a5160;
+  public int a5161;
+  public int a5162;
+  public int a5163;
+  public int a5164;
+  public int a5165;
+  public int a5166;
+  public int a5167;
+  public int a5168;
+  public int a5169;
+  public int a5170;
+  public int a5171;
+  public int a5172;
+  public int a5173;
+  public int a5174;
+  public int a5175;
+  public int a5176;
+  public int a5177;
+  public int a5178;
+  public int a5179;
+  public int a5180;
+  public int a5181;
+  public int a5182;
+  public int a5183;
+  public int a5184;
+  public int a5185;
+  public int a5186;
+  public int a5187;
+  public int a5188;
+  public int a5189;
+  public int a5190;
+  public int a5191;
+  public int a5192;
+  public int a5193;
+  public int a5194;
+  public int a5195;
+  public int a5196;
+  public int a5197;
+  public int a5198;
+  public int a5199;
+  public int a5200;
+  public int a5201;
+  public int a5202;
+  public int a5203;
+  public int a5204;
+  public int a5205;
+  public int a5206;
+  public int a5207;
+  public int a5208;
+  public int a5209;
+  public int a5210;
+  public int a5211;
+  public int a5212;
+  public int a5213;
+  public int a5214;
+  public int a5215;
+  public int a5216;
+  public int a5217;
+  public int a5218;
+  public int a5219;
+  public int a5220;
+  public int a5221;
+  public int a5222;
+  public int a5223;
+  public int a5224;
+  public int a5225;
+  public int a5226;
+  public int a5227;
+  public int a5228;
+  public int a5229;
+  public int a5230;
+  public int a5231;
+  public int a5232;
+  public int a5233;
+  public int a5234;
+  public int a5235;
+  public int a5236;
+  public int a5237;
+  public int a5238;
+  public int a5239;
+  public int a5240;
+  public int a5241;
+  public int a5242;
+  public int a5243;
+  public int a5244;
+  public int a5245;
+  public int a5246;
+  public int a5247;
+  public int a5248;
+  public int a5249;
+  public int a5250;
+  public int a5251;
+  public int a5252;
+  public int a5253;
+  public int a5254;
+  public int a5255;
+  public int a5256;
+  public int a5257;
+  public int a5258;
+  public int a5259;
+  public int a5260;
+  public int a5261;
+  public int a5262;
+  public int a5263;
+  public int a5264;
+  public int a5265;
+  public int a5266;
+  public int a5267;
+  public int a5268;
+  public int a5269;
+  public int a5270;
+  public int a5271;
+  public int a5272;
+  public int a5273;
+  public int a5274;
+  public int a5275;
+  public int a5276;
+  public int a5277;
+  public int a5278;
+  public int a5279;
+  public int a5280;
+  public int a5281;
+  public int a5282;
+  public int a5283;
+  public int a5284;
+  public int a5285;
+  public int a5286;
+  public int a5287;
+  public int a5288;
+  public int a5289;
+  public int a5290;
+  public int a5291;
+  public int a5292;
+  public int a5293;
+  public int a5294;
+  public int a5295;
+  public int a5296;
+  public int a5297;
+  public int a5298;
+  public int a5299;
+  public int a5300;
+  public int a5301;
+  public int a5302;
+  public int a5303;
+  public int a5304;
+  public int a5305;
+  public int a5306;
+  public int a5307;
+  public int a5308;
+  public int a5309;
+  public int a5310;
+  public int a5311;
+  public int a5312;
+  public int a5313;
+  public int a5314;
+  public int a5315;
+  public int a5316;
+  public int a5317;
+  public int a5318;
+  public int a5319;
+  public int a5320;
+  public int a5321;
+  public int a5322;
+  public int a5323;
+  public int a5324;
+  public int a5325;
+  public int a5326;
+  public int a5327;
+  public int a5328;
+  public int a5329;
+  public int a5330;
+  public int a5331;
+  public int a5332;
+  public int a5333;
+  public int a5334;
+  public int a5335;
+  public int a5336;
+  public int a5337;
+  public int a5338;
+  public int a5339;
+  public int a5340;
+  public int a5341;
+  public int a5342;
+  public int a5343;
+  public int a5344;
+  public int a5345;
+  public int a5346;
+  public int a5347;
+  public int a5348;
+  public int a5349;
+  public int a5350;
+  public int a5351;
+  public int a5352;
+  public int a5353;
+  public int a5354;
+  public int a5355;
+  public int a5356;
+  public int a5357;
+  public int a5358;
+  public int a5359;
+  public int a5360;
+  public int a5361;
+  public int a5362;
+  public int a5363;
+  public int a5364;
+  public int a5365;
+  public int a5366;
+  public int a5367;
+  public int a5368;
+  public int a5369;
+  public int a5370;
+  public int a5371;
+  public int a5372;
+  public int a5373;
+  public int a5374;
+  public int a5375;
+  public int a5376;
+  public int a5377;
+  public int a5378;
+  public int a5379;
+  public int a5380;
+  public int a5381;
+  public int a5382;
+  public int a5383;
+  public int a5384;
+  public int a5385;
+  public int a5386;
+  public int a5387;
+  public int a5388;
+  public int a5389;
+  public int a5390;
+  public int a5391;
+  public int a5392;
+  public int a5393;
+  public int a5394;
+  public int a5395;
+  public int a5396;
+  public int a5397;
+  public int a5398;
+  public int a5399;
+  public int a5400;
+  public int a5401;
+  public int a5402;
+  public int a5403;
+  public int a5404;
+  public int a5405;
+  public int a5406;
+  public int a5407;
+  public int a5408;
+  public int a5409;
+  public int a5410;
+  public int a5411;
+  public int a5412;
+  public int a5413;
+  public int a5414;
+  public int a5415;
+  public int a5416;
+  public int a5417;
+  public int a5418;
+  public int a5419;
+  public int a5420;
+  public int a5421;
+  public int a5422;
+  public int a5423;
+  public int a5424;
+  public int a5425;
+  public int a5426;
+  public int a5427;
+  public int a5428;
+  public int a5429;
+  public int a5430;
+  public int a5431;
+  public int a5432;
+  public int a5433;
+  public int a5434;
+  public int a5435;
+  public int a5436;
+  public int a5437;
+  public int a5438;
+  public int a5439;
+  public int a5440;
+  public int a5441;
+  public int a5442;
+  public int a5443;
+  public int a5444;
+  public int a5445;
+  public int a5446;
+  public int a5447;
+  public int a5448;
+  public int a5449;
+  public int a5450;
+  public int a5451;
+  public int a5452;
+  public int a5453;
+  public int a5454;
+  public int a5455;
+  public int a5456;
+  public int a5457;
+  public int a5458;
+  public int a5459;
+  public int a5460;
+  public int a5461;
+  public int a5462;
+  public int a5463;
+  public int a5464;
+  public int a5465;
+  public int a5466;
+  public int a5467;
+  public int a5468;
+  public int a5469;
+  public int a5470;
+  public int a5471;
+  public int a5472;
+  public int a5473;
+  public int a5474;
+  public int a5475;
+  public int a5476;
+  public int a5477;
+  public int a5478;
+  public int a5479;
+  public int a5480;
+  public int a5481;
+  public int a5482;
+  public int a5483;
+  public int a5484;
+  public int a5485;
+  public int a5486;
+  public int a5487;
+  public int a5488;
+  public int a5489;
+  public int a5490;
+  public int a5491;
+  public int a5492;
+  public int a5493;
+  public int a5494;
+  public int a5495;
+  public int a5496;
+  public int a5497;
+  public int a5498;
+  public int a5499;
+  public int a5500;
+  public int a5501;
+  public int a5502;
+  public int a5503;
+  public int a5504;
+  public int a5505;
+  public int a5506;
+  public int a5507;
+  public int a5508;
+  public int a5509;
+  public int a5510;
+  public int a5511;
+  public int a5512;
+  public int a5513;
+  public int a5514;
+  public int a5515;
+  public int a5516;
+  public int a5517;
+  public int a5518;
+  public int a5519;
+  public int a5520;
+  public int a5521;
+  public int a5522;
+  public int a5523;
+  public int a5524;
+  public int a5525;
+  public int a5526;
+  public int a5527;
+  public int a5528;
+  public int a5529;
+  public int a5530;
+  public int a5531;
+  public int a5532;
+  public int a5533;
+  public int a5534;
+  public int a5535;
+  public int a5536;
+  public int a5537;
+  public int a5538;
+  public int a5539;
+  public int a5540;
+  public int a5541;
+  public int a5542;
+  public int a5543;
+  public int a5544;
+  public int a5545;
+  public int a5546;
+  public int a5547;
+  public int a5548;
+  public int a5549;
+  public int a5550;
+  public int a5551;
+  public int a5552;
+  public int a5553;
+  public int a5554;
+  public int a5555;
+  public int a5556;
+  public int a5557;
+  public int a5558;
+  public int a5559;
+  public int a5560;
+  public int a5561;
+  public int a5562;
+  public int a5563;
+  public int a5564;
+  public int a5565;
+  public int a5566;
+  public int a5567;
+  public int a5568;
+  public int a5569;
+  public int a5570;
+  public int a5571;
+  public int a5572;
+  public int a5573;
+  public int a5574;
+  public int a5575;
+  public int a5576;
+  public int a5577;
+  public int a5578;
+  public int a5579;
+  public int a5580;
+  public int a5581;
+  public int a5582;
+  public int a5583;
+  public int a5584;
+  public int a5585;
+  public int a5586;
+  public int a5587;
+  public int a5588;
+  public int a5589;
+  public int a5590;
+  public int a5591;
+  public int a5592;
+  public int a5593;
+  public int a5594;
+  public int a5595;
+  public int a5596;
+  public int a5597;
+  public int a5598;
+  public int a5599;
+  public int a5600;
+  public int a5601;
+  public int a5602;
+  public int a5603;
+  public int a5604;
+  public int a5605;
+  public int a5606;
+  public int a5607;
+  public int a5608;
+  public int a5609;
+  public int a5610;
+  public int a5611;
+  public int a5612;
+  public int a5613;
+  public int a5614;
+  public int a5615;
+  public int a5616;
+  public int a5617;
+  public int a5618;
+  public int a5619;
+  public int a5620;
+  public int a5621;
+  public int a5622;
+  public int a5623;
+  public int a5624;
+  public int a5625;
+  public int a5626;
+  public int a5627;
+  public int a5628;
+  public int a5629;
+  public int a5630;
+  public int a5631;
+  public int a5632;
+  public int a5633;
+  public int a5634;
+  public int a5635;
+  public int a5636;
+  public int a5637;
+  public int a5638;
+  public int a5639;
+  public int a5640;
+  public int a5641;
+  public int a5642;
+  public int a5643;
+  public int a5644;
+  public int a5645;
+  public int a5646;
+  public int a5647;
+  public int a5648;
+  public int a5649;
+  public int a5650;
+  public int a5651;
+  public int a5652;
+  public int a5653;
+  public int a5654;
+  public int a5655;
+  public int a5656;
+  public int a5657;
+  public int a5658;
+  public int a5659;
+  public int a5660;
+  public int a5661;
+  public int a5662;
+  public int a5663;
+  public int a5664;
+  public int a5665;
+  public int a5666;
+  public int a5667;
+  public int a5668;
+  public int a5669;
+  public int a5670;
+  public int a5671;
+  public int a5672;
+  public int a5673;
+  public int a5674;
+  public int a5675;
+  public int a5676;
+  public int a5677;
+  public int a5678;
+  public int a5679;
+  public int a5680;
+  public int a5681;
+  public int a5682;
+  public int a5683;
+  public int a5684;
+  public int a5685;
+  public int a5686;
+  public int a5687;
+  public int a5688;
+  public int a5689;
+  public int a5690;
+  public int a5691;
+  public int a5692;
+  public int a5693;
+  public int a5694;
+  public int a5695;
+  public int a5696;
+  public int a5697;
+  public int a5698;
+  public int a5699;
+  public int a5700;
+  public int a5701;
+  public int a5702;
+  public int a5703;
+  public int a5704;
+  public int a5705;
+  public int a5706;
+  public int a5707;
+  public int a5708;
+  public int a5709;
+  public int a5710;
+  public int a5711;
+  public int a5712;
+  public int a5713;
+  public int a5714;
+  public int a5715;
+  public int a5716;
+  public int a5717;
+  public int a5718;
+  public int a5719;
+  public int a5720;
+  public int a5721;
+  public int a5722;
+  public int a5723;
+  public int a5724;
+  public int a5725;
+  public int a5726;
+  public int a5727;
+  public int a5728;
+  public int a5729;
+  public int a5730;
+  public int a5731;
+  public int a5732;
+  public int a5733;
+  public int a5734;
+  public int a5735;
+  public int a5736;
+  public int a5737;
+  public int a5738;
+  public int a5739;
+  public int a5740;
+  public int a5741;
+  public int a5742;
+  public int a5743;
+  public int a5744;
+  public int a5745;
+  public int a5746;
+  public int a5747;
+  public int a5748;
+  public int a5749;
+  public int a5750;
+  public int a5751;
+  public int a5752;
+  public int a5753;
+  public int a5754;
+  public int a5755;
+  public int a5756;
+  public int a5757;
+  public int a5758;
+  public int a5759;
+  public int a5760;
+  public int a5761;
+  public int a5762;
+  public int a5763;
+  public int a5764;
+  public int a5765;
+  public int a5766;
+  public int a5767;
+  public int a5768;
+  public int a5769;
+  public int a5770;
+  public int a5771;
+  public int a5772;
+  public int a5773;
+  public int a5774;
+  public int a5775;
+  public int a5776;
+  public int a5777;
+  public int a5778;
+  public int a5779;
+  public int a5780;
+  public int a5781;
+  public int a5782;
+  public int a5783;
+  public int a5784;
+  public int a5785;
+  public int a5786;
+  public int a5787;
+  public int a5788;
+  public int a5789;
+  public int a5790;
+  public int a5791;
+  public int a5792;
+  public int a5793;
+  public int a5794;
+  public int a5795;
+  public int a5796;
+  public int a5797;
+  public int a5798;
+  public int a5799;
+  public int a5800;
+  public int a5801;
+  public int a5802;
+  public int a5803;
+  public int a5804;
+  public int a5805;
+  public int a5806;
+  public int a5807;
+  public int a5808;
+  public int a5809;
+  public int a5810;
+  public int a5811;
+  public int a5812;
+  public int a5813;
+  public int a5814;
+  public int a5815;
+  public int a5816;
+  public int a5817;
+  public int a5818;
+  public int a5819;
+  public int a5820;
+  public int a5821;
+  public int a5822;
+  public int a5823;
+  public int a5824;
+  public int a5825;
+  public int a5826;
+  public int a5827;
+  public int a5828;
+  public int a5829;
+  public int a5830;
+  public int a5831;
+  public int a5832;
+  public int a5833;
+  public int a5834;
+  public int a5835;
+  public int a5836;
+  public int a5837;
+  public int a5838;
+  public int a5839;
+  public int a5840;
+  public int a5841;
+  public int a5842;
+  public int a5843;
+  public int a5844;
+  public int a5845;
+  public int a5846;
+  public int a5847;
+  public int a5848;
+  public int a5849;
+  public int a5850;
+  public int a5851;
+  public int a5852;
+  public int a5853;
+  public int a5854;
+  public int a5855;
+  public int a5856;
+  public int a5857;
+  public int a5858;
+  public int a5859;
+  public int a5860;
+  public int a5861;
+  public int a5862;
+  public int a5863;
+  public int a5864;
+  public int a5865;
+  public int a5866;
+  public int a5867;
+  public int a5868;
+  public int a5869;
+  public int a5870;
+  public int a5871;
+  public int a5872;
+  public int a5873;
+  public int a5874;
+  public int a5875;
+  public int a5876;
+  public int a5877;
+  public int a5878;
+  public int a5879;
+  public int a5880;
+  public int a5881;
+  public int a5882;
+  public int a5883;
+  public int a5884;
+  public int a5885;
+  public int a5886;
+  public int a5887;
+  public int a5888;
+  public int a5889;
+  public int a5890;
+  public int a5891;
+  public int a5892;
+  public int a5893;
+  public int a5894;
+  public int a5895;
+  public int a5896;
+  public int a5897;
+  public int a5898;
+  public int a5899;
+  public int a5900;
+  public int a5901;
+  public int a5902;
+  public int a5903;
+  public int a5904;
+  public int a5905;
+  public int a5906;
+  public int a5907;
+  public int a5908;
+  public int a5909;
+  public int a5910;
+  public int a5911;
+  public int a5912;
+  public int a5913;
+  public int a5914;
+  public int a5915;
+  public int a5916;
+  public int a5917;
+  public int a5918;
+  public int a5919;
+  public int a5920;
+  public int a5921;
+  public int a5922;
+  public int a5923;
+  public int a5924;
+  public int a5925;
+  public int a5926;
+  public int a5927;
+  public int a5928;
+  public int a5929;
+  public int a5930;
+  public int a5931;
+  public int a5932;
+  public int a5933;
+  public int a5934;
+  public int a5935;
+  public int a5936;
+  public int a5937;
+  public int a5938;
+  public int a5939;
+  public int a5940;
+  public int a5941;
+  public int a5942;
+  public int a5943;
+  public int a5944;
+  public int a5945;
+  public int a5946;
+  public int a5947;
+  public int a5948;
+  public int a5949;
+  public int a5950;
+  public int a5951;
+  public int a5952;
+  public int a5953;
+  public int a5954;
+  public int a5955;
+  public int a5956;
+  public int a5957;
+  public int a5958;
+  public int a5959;
+  public int a5960;
+  public int a5961;
+  public int a5962;
+  public int a5963;
+  public int a5964;
+  public int a5965;
+  public int a5966;
+  public int a5967;
+  public int a5968;
+  public int a5969;
+  public int a5970;
+  public int a5971;
+  public int a5972;
+  public int a5973;
+  public int a5974;
+  public int a5975;
+  public int a5976;
+  public int a5977;
+  public int a5978;
+  public int a5979;
+  public int a5980;
+  public int a5981;
+  public int a5982;
+  public int a5983;
+  public int a5984;
+  public int a5985;
+  public int a5986;
+  public int a5987;
+  public int a5988;
+  public int a5989;
+  public int a5990;
+  public int a5991;
+  public int a5992;
+  public int a5993;
+  public int a5994;
+  public int a5995;
+  public int a5996;
+  public int a5997;
+  public int a5998;
+  public int a5999;
+  public int a6000;
+  public int a6001;
+  public int a6002;
+  public int a6003;
+  public int a6004;
+  public int a6005;
+  public int a6006;
+  public int a6007;
+  public int a6008;
+  public int a6009;
+  public int a6010;
+  public int a6011;
+  public int a6012;
+  public int a6013;
+  public int a6014;
+  public int a6015;
+  public int a6016;
+  public int a6017;
+  public int a6018;
+  public int a6019;
+  public int a6020;
+  public int a6021;
+  public int a6022;
+  public int a6023;
+  public int a6024;
+  public int a6025;
+  public int a6026;
+  public int a6027;
+  public int a6028;
+  public int a6029;
+  public int a6030;
+  public int a6031;
+  public int a6032;
+  public int a6033;
+  public int a6034;
+  public int a6035;
+  public int a6036;
+  public int a6037;
+  public int a6038;
+  public int a6039;
+  public int a6040;
+  public int a6041;
+  public int a6042;
+  public int a6043;
+  public int a6044;
+  public int a6045;
+  public int a6046;
+  public int a6047;
+  public int a6048;
+  public int a6049;
+  public int a6050;
+  public int a6051;
+  public int a6052;
+  public int a6053;
+  public int a6054;
+  public int a6055;
+  public int a6056;
+  public int a6057;
+  public int a6058;
+  public int a6059;
+  public int a6060;
+  public int a6061;
+  public int a6062;
+  public int a6063;
+  public int a6064;
+  public int a6065;
+  public int a6066;
+  public int a6067;
+  public int a6068;
+  public int a6069;
+  public int a6070;
+  public int a6071;
+  public int a6072;
+  public int a6073;
+  public int a6074;
+  public int a6075;
+  public int a6076;
+  public int a6077;
+  public int a6078;
+  public int a6079;
+  public int a6080;
+  public int a6081;
+  public int a6082;
+  public int a6083;
+  public int a6084;
+  public int a6085;
+  public int a6086;
+  public int a6087;
+  public int a6088;
+  public int a6089;
+  public int a6090;
+  public int a6091;
+  public int a6092;
+  public int a6093;
+  public int a6094;
+  public int a6095;
+  public int a6096;
+  public int a6097;
+  public int a6098;
+  public int a6099;
+  public int a6100;
+  public int a6101;
+  public int a6102;
+  public int a6103;
+  public int a6104;
+  public int a6105;
+  public int a6106;
+  public int a6107;
+  public int a6108;
+  public int a6109;
+  public int a6110;
+  public int a6111;
+  public int a6112;
+  public int a6113;
+  public int a6114;
+  public int a6115;
+  public int a6116;
+  public int a6117;
+  public int a6118;
+  public int a6119;
+  public int a6120;
+  public int a6121;
+  public int a6122;
+  public int a6123;
+  public int a6124;
+  public int a6125;
+  public int a6126;
+  public int a6127;
+  public int a6128;
+  public int a6129;
+  public int a6130;
+  public int a6131;
+  public int a6132;
+  public int a6133;
+  public int a6134;
+  public int a6135;
+  public int a6136;
+  public int a6137;
+  public int a6138;
+  public int a6139;
+  public int a6140;
+  public int a6141;
+  public int a6142;
+  public int a6143;
+  public int a6144;
+  public int a6145;
+  public int a6146;
+  public int a6147;
+  public int a6148;
+  public int a6149;
+  public int a6150;
+  public int a6151;
+  public int a6152;
+  public int a6153;
+  public int a6154;
+  public int a6155;
+  public int a6156;
+  public int a6157;
+  public int a6158;
+  public int a6159;
+  public int a6160;
+  public int a6161;
+  public int a6162;
+  public int a6163;
+  public int a6164;
+  public int a6165;
+  public int a6166;
+  public int a6167;
+  public int a6168;
+  public int a6169;
+  public int a6170;
+  public int a6171;
+  public int a6172;
+  public int a6173;
+  public int a6174;
+  public int a6175;
+  public int a6176;
+  public int a6177;
+  public int a6178;
+  public int a6179;
+  public int a6180;
+  public int a6181;
+  public int a6182;
+  public int a6183;
+  public int a6184;
+  public int a6185;
+  public int a6186;
+  public int a6187;
+  public int a6188;
+  public int a6189;
+  public int a6190;
+  public int a6191;
+  public int a6192;
+  public int a6193;
+  public int a6194;
+  public int a6195;
+  public int a6196;
+  public int a6197;
+  public int a6198;
+  public int a6199;
+  public int a6200;
+  public int a6201;
+  public int a6202;
+  public int a6203;
+  public int a6204;
+  public int a6205;
+  public int a6206;
+  public int a6207;
+  public int a6208;
+  public int a6209;
+  public int a6210;
+  public int a6211;
+  public int a6212;
+  public int a6213;
+  public int a6214;
+  public int a6215;
+  public int a6216;
+  public int a6217;
+  public int a6218;
+  public int a6219;
+  public int a6220;
+  public int a6221;
+  public int a6222;
+  public int a6223;
+  public int a6224;
+  public int a6225;
+  public int a6226;
+  public int a6227;
+  public int a6228;
+  public int a6229;
+  public int a6230;
+  public int a6231;
+  public int a6232;
+  public int a6233;
+  public int a6234;
+  public int a6235;
+  public int a6236;
+  public int a6237;
+  public int a6238;
+  public int a6239;
+  public int a6240;
+  public int a6241;
+  public int a6242;
+  public int a6243;
+  public int a6244;
+  public int a6245;
+  public int a6246;
+  public int a6247;
+  public int a6248;
+  public int a6249;
+  public int a6250;
+  public int a6251;
+  public int a6252;
+  public int a6253;
+  public int a6254;
+  public int a6255;
+  public int a6256;
+  public int a6257;
+  public int a6258;
+  public int a6259;
+  public int a6260;
+  public int a6261;
+  public int a6262;
+  public int a6263;
+  public int a6264;
+  public int a6265;
+  public int a6266;
+  public int a6267;
+  public int a6268;
+  public int a6269;
+  public int a6270;
+  public int a6271;
+  public int a6272;
+  public int a6273;
+  public int a6274;
+  public int a6275;
+  public int a6276;
+  public int a6277;
+  public int a6278;
+  public int a6279;
+  public int a6280;
+  public int a6281;
+  public int a6282;
+  public int a6283;
+  public int a6284;
+  public int a6285;
+  public int a6286;
+  public int a6287;
+  public int a6288;
+  public int a6289;
+  public int a6290;
+  public int a6291;
+  public int a6292;
+  public int a6293;
+  public int a6294;
+  public int a6295;
+  public int a6296;
+  public int a6297;
+  public int a6298;
+  public int a6299;
+  public int a6300;
+  public int a6301;
+  public int a6302;
+  public int a6303;
+  public int a6304;
+  public int a6305;
+  public int a6306;
+  public int a6307;
+  public int a6308;
+  public int a6309;
+  public int a6310;
+  public int a6311;
+  public int a6312;
+  public int a6313;
+  public int a6314;
+  public int a6315;
+  public int a6316;
+  public int a6317;
+  public int a6318;
+  public int a6319;
+  public int a6320;
+  public int a6321;
+  public int a6322;
+  public int a6323;
+  public int a6324;
+  public int a6325;
+  public int a6326;
+  public int a6327;
+  public int a6328;
+  public int a6329;
+  public int a6330;
+  public int a6331;
+  public int a6332;
+  public int a6333;
+  public int a6334;
+  public int a6335;
+  public int a6336;
+  public int a6337;
+  public int a6338;
+  public int a6339;
+  public int a6340;
+  public int a6341;
+  public int a6342;
+  public int a6343;
+  public int a6344;
+  public int a6345;
+  public int a6346;
+  public int a6347;
+  public int a6348;
+  public int a6349;
+  public int a6350;
+  public int a6351;
+  public int a6352;
+  public int a6353;
+  public int a6354;
+  public int a6355;
+  public int a6356;
+  public int a6357;
+  public int a6358;
+  public int a6359;
+  public int a6360;
+  public int a6361;
+  public int a6362;
+  public int a6363;
+  public int a6364;
+  public int a6365;
+  public int a6366;
+  public int a6367;
+  public int a6368;
+  public int a6369;
+  public int a6370;
+  public int a6371;
+  public int a6372;
+  public int a6373;
+  public int a6374;
+  public int a6375;
+  public int a6376;
+  public int a6377;
+  public int a6378;
+  public int a6379;
+  public int a6380;
+  public int a6381;
+  public int a6382;
+  public int a6383;
+  public int a6384;
+  public int a6385;
+  public int a6386;
+  public int a6387;
+  public int a6388;
+  public int a6389;
+  public int a6390;
+  public int a6391;
+  public int a6392;
+  public int a6393;
+  public int a6394;
+  public int a6395;
+  public int a6396;
+  public int a6397;
+  public int a6398;
+  public int a6399;
+  public int a6400;
+  public int a6401;
+  public int a6402;
+  public int a6403;
+  public int a6404;
+  public int a6405;
+  public int a6406;
+  public int a6407;
+  public int a6408;
+  public int a6409;
+  public int a6410;
+  public int a6411;
+  public int a6412;
+  public int a6413;
+  public int a6414;
+  public int a6415;
+  public int a6416;
+  public int a6417;
+  public int a6418;
+  public int a6419;
+  public int a6420;
+  public int a6421;
+  public int a6422;
+  public int a6423;
+  public int a6424;
+  public int a6425;
+  public int a6426;
+  public int a6427;
+  public int a6428;
+  public int a6429;
+  public int a6430;
+  public int a6431;
+  public int a6432;
+  public int a6433;
+  public int a6434;
+  public int a6435;
+  public int a6436;
+  public int a6437;
+  public int a6438;
+  public int a6439;
+  public int a6440;
+  public int a6441;
+  public int a6442;
+  public int a6443;
+  public int a6444;
+  public int a6445;
+  public int a6446;
+  public int a6447;
+  public int a6448;
+  public int a6449;
+  public int a6450;
+  public int a6451;
+  public int a6452;
+  public int a6453;
+  public int a6454;
+  public int a6455;
+  public int a6456;
+  public int a6457;
+  public int a6458;
+  public int a6459;
+  public int a6460;
+  public int a6461;
+  public int a6462;
+  public int a6463;
+  public int a6464;
+  public int a6465;
+  public int a6466;
+  public int a6467;
+  public int a6468;
+  public int a6469;
+  public int a6470;
+  public int a6471;
+  public int a6472;
+  public int a6473;
+  public int a6474;
+  public int a6475;
+  public int a6476;
+  public int a6477;
+  public int a6478;
+  public int a6479;
+  public int a6480;
+  public int a6481;
+  public int a6482;
+  public int a6483;
+  public int a6484;
+  public int a6485;
+  public int a6486;
+  public int a6487;
+  public int a6488;
+  public int a6489;
+  public int a6490;
+  public int a6491;
+  public int a6492;
+  public int a6493;
+  public int a6494;
+  public int a6495;
+  public int a6496;
+  public int a6497;
+  public int a6498;
+  public int a6499;
+  public int a6500;
+  public int a6501;
+  public int a6502;
+  public int a6503;
+  public int a6504;
+  public int a6505;
+  public int a6506;
+  public int a6507;
+  public int a6508;
+  public int a6509;
+  public int a6510;
+  public int a6511;
+  public int a6512;
+  public int a6513;
+  public int a6514;
+  public int a6515;
+  public int a6516;
+  public int a6517;
+  public int a6518;
+  public int a6519;
+  public int a6520;
+  public int a6521;
+  public int a6522;
+  public int a6523;
+  public int a6524;
+  public int a6525;
+  public int a6526;
+  public int a6527;
+  public int a6528;
+  public int a6529;
+  public int a6530;
+  public int a6531;
+  public int a6532;
+  public int a6533;
+  public int a6534;
+  public int a6535;
+  public int a6536;
+  public int a6537;
+  public int a6538;
+  public int a6539;
+  public int a6540;
+  public int a6541;
+  public int a6542;
+  public int a6543;
+  public int a6544;
+  public int a6545;
+  public int a6546;
+  public int a6547;
+  public int a6548;
+  public int a6549;
+  public int a6550;
+  public int a6551;
+  public int a6552;
+  public int a6553;
+  public int a6554;
+  public int a6555;
+  public int a6556;
+  public int a6557;
+  public int a6558;
+  public int a6559;
+  public int a6560;
+  public int a6561;
+  public int a6562;
+  public int a6563;
+  public int a6564;
+  public int a6565;
+  public int a6566;
+  public int a6567;
+  public int a6568;
+  public int a6569;
+  public int a6570;
+  public int a6571;
+  public int a6572;
+  public int a6573;
+  public int a6574;
+  public int a6575;
+  public int a6576;
+  public int a6577;
+  public int a6578;
+  public int a6579;
+  public int a6580;
+  public int a6581;
+  public int a6582;
+  public int a6583;
+  public int a6584;
+  public int a6585;
+  public int a6586;
+  public int a6587;
+  public int a6588;
+  public int a6589;
+  public int a6590;
+  public int a6591;
+  public int a6592;
+  public int a6593;
+  public int a6594;
+  public int a6595;
+  public int a6596;
+  public int a6597;
+  public int a6598;
+  public int a6599;
+  public int a6600;
+  public int a6601;
+  public int a6602;
+  public int a6603;
+  public int a6604;
+  public int a6605;
+  public int a6606;
+  public int a6607;
+  public int a6608;
+  public int a6609;
+  public int a6610;
+  public int a6611;
+  public int a6612;
+  public int a6613;
+  public int a6614;
+  public int a6615;
+  public int a6616;
+  public int a6617;
+  public int a6618;
+  public int a6619;
+  public int a6620;
+  public int a6621;
+  public int a6622;
+  public int a6623;
+  public int a6624;
+  public int a6625;
+  public int a6626;
+  public int a6627;
+  public int a6628;
+  public int a6629;
+  public int a6630;
+  public int a6631;
+  public int a6632;
+  public int a6633;
+  public int a6634;
+  public int a6635;
+  public int a6636;
+  public int a6637;
+  public int a6638;
+  public int a6639;
+  public int a6640;
+  public int a6641;
+  public int a6642;
+  public int a6643;
+  public int a6644;
+  public int a6645;
+  public int a6646;
+  public int a6647;
+  public int a6648;
+  public int a6649;
+  public int a6650;
+  public int a6651;
+  public int a6652;
+  public int a6653;
+  public int a6654;
+  public int a6655;
+  public int a6656;
+  public int a6657;
+  public int a6658;
+  public int a6659;
+  public int a6660;
+  public int a6661;
+  public int a6662;
+  public int a6663;
+  public int a6664;
+  public int a6665;
+  public int a6666;
+  public int a6667;
+  public int a6668;
+  public int a6669;
+  public int a6670;
+  public int a6671;
+  public int a6672;
+  public int a6673;
+  public int a6674;
+  public int a6675;
+  public int a6676;
+  public int a6677;
+  public int a6678;
+  public int a6679;
+  public int a6680;
+  public int a6681;
+  public int a6682;
+  public int a6683;
+  public int a6684;
+  public int a6685;
+  public int a6686;
+  public int a6687;
+  public int a6688;
+  public int a6689;
+  public int a6690;
+  public int a6691;
+  public int a6692;
+  public int a6693;
+  public int a6694;
+  public int a6695;
+  public int a6696;
+  public int a6697;
+  public int a6698;
+  public int a6699;
+  public int a6700;
+  public int a6701;
+  public int a6702;
+  public int a6703;
+  public int a6704;
+  public int a6705;
+  public int a6706;
+  public int a6707;
+  public int a6708;
+  public int a6709;
+  public int a6710;
+  public int a6711;
+  public int a6712;
+  public int a6713;
+  public int a6714;
+  public int a6715;
+  public int a6716;
+  public int a6717;
+  public int a6718;
+  public int a6719;
+  public int a6720;
+  public int a6721;
+  public int a6722;
+  public int a6723;
+  public int a6724;
+  public int a6725;
+  public int a6726;
+  public int a6727;
+  public int a6728;
+  public int a6729;
+  public int a6730;
+  public int a6731;
+  public int a6732;
+  public int a6733;
+  public int a6734;
+  public int a6735;
+  public int a6736;
+  public int a6737;
+  public int a6738;
+  public int a6739;
+  public int a6740;
+  public int a6741;
+  public int a6742;
+  public int a6743;
+  public int a6744;
+  public int a6745;
+  public int a6746;
+  public int a6747;
+  public int a6748;
+  public int a6749;
+  public int a6750;
+  public int a6751;
+  public int a6752;
+  public int a6753;
+  public int a6754;
+  public int a6755;
+  public int a6756;
+  public int a6757;
+  public int a6758;
+  public int a6759;
+  public int a6760;
+  public int a6761;
+  public int a6762;
+  public int a6763;
+  public int a6764;
+  public int a6765;
+  public int a6766;
+  public int a6767;
+  public int a6768;
+  public int a6769;
+  public int a6770;
+  public int a6771;
+  public int a6772;
+  public int a6773;
+  public int a6774;
+  public int a6775;
+  public int a6776;
+  public int a6777;
+  public int a6778;
+  public int a6779;
+  public int a6780;
+  public int a6781;
+  public int a6782;
+  public int a6783;
+  public int a6784;
+  public int a6785;
+  public int a6786;
+  public int a6787;
+  public int a6788;
+  public int a6789;
+  public int a6790;
+  public int a6791;
+  public int a6792;
+  public int a6793;
+  public int a6794;
+  public int a6795;
+  public int a6796;
+  public int a6797;
+  public int a6798;
+  public int a6799;
+  public int a6800;
+  public int a6801;
+  public int a6802;
+  public int a6803;
+  public int a6804;
+  public int a6805;
+  public int a6806;
+  public int a6807;
+  public int a6808;
+  public int a6809;
+  public int a6810;
+  public int a6811;
+  public int a6812;
+  public int a6813;
+  public int a6814;
+  public int a6815;
+  public int a6816;
+  public int a6817;
+  public int a6818;
+  public int a6819;
+  public int a6820;
+  public int a6821;
+  public int a6822;
+  public int a6823;
+  public int a6824;
+  public int a6825;
+  public int a6826;
+  public int a6827;
+  public int a6828;
+  public int a6829;
+  public int a6830;
+  public int a6831;
+  public int a6832;
+  public int a6833;
+  public int a6834;
+  public int a6835;
+  public int a6836;
+  public int a6837;
+  public int a6838;
+  public int a6839;
+  public int a6840;
+  public int a6841;
+  public int a6842;
+  public int a6843;
+  public int a6844;
+  public int a6845;
+  public int a6846;
+  public int a6847;
+  public int a6848;
+  public int a6849;
+  public int a6850;
+  public int a6851;
+  public int a6852;
+  public int a6853;
+  public int a6854;
+  public int a6855;
+  public int a6856;
+  public int a6857;
+  public int a6858;
+  public int a6859;
+  public int a6860;
+  public int a6861;
+  public int a6862;
+  public int a6863;
+  public int a6864;
+  public int a6865;
+  public int a6866;
+  public int a6867;
+  public int a6868;
+  public int a6869;
+  public int a6870;
+  public int a6871;
+  public int a6872;
+  public int a6873;
+  public int a6874;
+  public int a6875;
+  public int a6876;
+  public int a6877;
+  public int a6878;
+  public int a6879;
+  public int a6880;
+  public int a6881;
+  public int a6882;
+  public int a6883;
+  public int a6884;
+  public int a6885;
+  public int a6886;
+  public int a6887;
+  public int a6888;
+  public int a6889;
+  public int a6890;
+  public int a6891;
+  public int a6892;
+  public int a6893;
+  public int a6894;
+  public int a6895;
+  public int a6896;
+  public int a6897;
+  public int a6898;
+  public int a6899;
+  public int a6900;
+  public int a6901;
+  public int a6902;
+  public int a6903;
+  public int a6904;
+  public int a6905;
+  public int a6906;
+  public int a6907;
+  public int a6908;
+  public int a6909;
+  public int a6910;
+  public int a6911;
+  public int a6912;
+  public int a6913;
+  public int a6914;
+  public int a6915;
+  public int a6916;
+  public int a6917;
+  public int a6918;
+  public int a6919;
+  public int a6920;
+  public int a6921;
+  public int a6922;
+  public int a6923;
+  public int a6924;
+  public int a6925;
+  public int a6926;
+  public int a6927;
+  public int a6928;
+  public int a6929;
+  public int a6930;
+  public int a6931;
+  public int a6932;
+  public int a6933;
+  public int a6934;
+  public int a6935;
+  public int a6936;
+  public int a6937;
+  public int a6938;
+  public int a6939;
+  public int a6940;
+  public int a6941;
+  public int a6942;
+  public int a6943;
+  public int a6944;
+  public int a6945;
+  public int a6946;
+  public int a6947;
+  public int a6948;
+  public int a6949;
+  public int a6950;
+  public int a6951;
+  public int a6952;
+  public int a6953;
+  public int a6954;
+  public int a6955;
+  public int a6956;
+  public int a6957;
+  public int a6958;
+  public int a6959;
+  public int a6960;
+  public int a6961;
+  public int a6962;
+  public int a6963;
+  public int a6964;
+  public int a6965;
+  public int a6966;
+  public int a6967;
+  public int a6968;
+  public int a6969;
+  public int a6970;
+  public int a6971;
+  public int a6972;
+  public int a6973;
+  public int a6974;
+  public int a6975;
+  public int a6976;
+  public int a6977;
+  public int a6978;
+  public int a6979;
+  public int a6980;
+  public int a6981;
+  public int a6982;
+  public int a6983;
+  public int a6984;
+  public int a6985;
+  public int a6986;
+  public int a6987;
+  public int a6988;
+  public int a6989;
+  public int a6990;
+  public int a6991;
+  public int a6992;
+  public int a6993;
+  public int a6994;
+  public int a6995;
+  public int a6996;
+  public int a6997;
+  public int a6998;
+  public int a6999;
+  public int a7000;
+  public int a7001;
+  public int a7002;
+  public int a7003;
+  public int a7004;
+  public int a7005;
+  public int a7006;
+  public int a7007;
+  public int a7008;
+  public int a7009;
+  public int a7010;
+  public int a7011;
+  public int a7012;
+  public int a7013;
+  public int a7014;
+  public int a7015;
+  public int a7016;
+  public int a7017;
+  public int a7018;
+  public int a7019;
+  public int a7020;
+  public int a7021;
+  public int a7022;
+  public int a7023;
+  public int a7024;
+  public int a7025;
+  public int a7026;
+  public int a7027;
+  public int a7028;
+  public int a7029;
+  public int a7030;
+  public int a7031;
+  public int a7032;
+  public int a7033;
+  public int a7034;
+  public int a7035;
+  public int a7036;
+  public int a7037;
+  public int a7038;
+  public int a7039;
+  public int a7040;
+  public int a7041;
+  public int a7042;
+  public int a7043;
+  public int a7044;
+  public int a7045;
+  public int a7046;
+  public int a7047;
+  public int a7048;
+  public int a7049;
+  public int a7050;
+  public int a7051;
+  public int a7052;
+  public int a7053;
+  public int a7054;
+  public int a7055;
+  public int a7056;
+  public int a7057;
+  public int a7058;
+  public int a7059;
+  public int a7060;
+  public int a7061;
+  public int a7062;
+  public int a7063;
+  public int a7064;
+  public int a7065;
+  public int a7066;
+  public int a7067;
+  public int a7068;
+  public int a7069;
+  public int a7070;
+  public int a7071;
+  public int a7072;
+  public int a7073;
+  public int a7074;
+  public int a7075;
+  public int a7076;
+  public int a7077;
+  public int a7078;
+  public int a7079;
+  public int a7080;
+  public int a7081;
+  public int a7082;
+  public int a7083;
+  public int a7084;
+  public int a7085;
+  public int a7086;
+  public int a7087;
+  public int a7088;
+  public int a7089;
+  public int a7090;
+  public int a7091;
+  public int a7092;
+  public int a7093;
+  public int a7094;
+  public int a7095;
+  public int a7096;
+  public int a7097;
+  public int a7098;
+  public int a7099;
+  public int a7100;
+  public int a7101;
+  public int a7102;
+  public int a7103;
+  public int a7104;
+  public int a7105;
+  public int a7106;
+  public int a7107;
+  public int a7108;
+  public int a7109;
+  public int a7110;
+  public int a7111;
+  public int a7112;
+  public int a7113;
+  public int a7114;
+  public int a7115;
+  public int a7116;
+  public int a7117;
+  public int a7118;
+  public int a7119;
+  public int a7120;
+  public int a7121;
+  public int a7122;
+  public int a7123;
+  public int a7124;
+  public int a7125;
+  public int a7126;
+  public int a7127;
+  public int a7128;
+  public int a7129;
+  public int a7130;
+  public int a7131;
+  public int a7132;
+  public int a7133;
+  public int a7134;
+  public int a7135;
+  public int a7136;
+  public int a7137;
+  public int a7138;
+  public int a7139;
+  public int a7140;
+  public int a7141;
+  public int a7142;
+  public int a7143;
+  public int a7144;
+  public int a7145;
+  public int a7146;
+  public int a7147;
+  public int a7148;
+  public int a7149;
+  public int a7150;
+  public int a7151;
+  public int a7152;
+  public int a7153;
+  public int a7154;
+  public int a7155;
+  public int a7156;
+  public int a7157;
+  public int a7158;
+  public int a7159;
+  public int a7160;
+  public int a7161;
+  public int a7162;
+  public int a7163;
+  public int a7164;
+  public int a7165;
+  public int a7166;
+  public int a7167;
+  public int a7168;
+  public int a7169;
+  public int a7170;
+  public int a7171;
+  public int a7172;
+  public int a7173;
+  public int a7174;
+  public int a7175;
+  public int a7176;
+  public int a7177;
+  public int a7178;
+  public int a7179;
+  public int a7180;
+  public int a7181;
+  public int a7182;
+  public int a7183;
+  public int a7184;
+  public int a7185;
+  public int a7186;
+  public int a7187;
+  public int a7188;
+  public int a7189;
+  public int a7190;
+  public int a7191;
+  public int a7192;
+  public int a7193;
+  public int a7194;
+  public int a7195;
+  public int a7196;
+  public int a7197;
+  public int a7198;
+  public int a7199;
+  public int a7200;
+  public int a7201;
+  public int a7202;
+  public int a7203;
+  public int a7204;
+  public int a7205;
+  public int a7206;
+  public int a7207;
+  public int a7208;
+  public int a7209;
+  public int a7210;
+  public int a7211;
+  public int a7212;
+  public int a7213;
+  public int a7214;
+  public int a7215;
+  public int a7216;
+  public int a7217;
+  public int a7218;
+  public int a7219;
+  public int a7220;
+  public int a7221;
+  public int a7222;
+  public int a7223;
+  public int a7224;
+  public int a7225;
+  public int a7226;
+  public int a7227;
+  public int a7228;
+  public int a7229;
+  public int a7230;
+  public int a7231;
+  public int a7232;
+  public int a7233;
+  public int a7234;
+  public int a7235;
+  public int a7236;
+  public int a7237;
+  public int a7238;
+  public int a7239;
+  public int a7240;
+  public int a7241;
+  public int a7242;
+  public int a7243;
+  public int a7244;
+  public int a7245;
+  public int a7246;
+  public int a7247;
+  public int a7248;
+  public int a7249;
+  public int a7250;
+  public int a7251;
+  public int a7252;
+  public int a7253;
+  public int a7254;
+  public int a7255;
+  public int a7256;
+  public int a7257;
+  public int a7258;
+  public int a7259;
+  public int a7260;
+  public int a7261;
+  public int a7262;
+  public int a7263;
+  public int a7264;
+  public int a7265;
+  public int a7266;
+  public int a7267;
+  public int a7268;
+  public int a7269;
+  public int a7270;
+  public int a7271;
+  public int a7272;
+  public int a7273;
+  public int a7274;
+  public int a7275;
+  public int a7276;
+  public int a7277;
+  public int a7278;
+  public int a7279;
+  public int a7280;
+  public int a7281;
+  public int a7282;
+  public int a7283;
+  public int a7284;
+  public int a7285;
+  public int a7286;
+  public int a7287;
+  public int a7288;
+  public int a7289;
+  public int a7290;
+  public int a7291;
+  public int a7292;
+  public int a7293;
+  public int a7294;
+  public int a7295;
+  public int a7296;
+  public int a7297;
+  public int a7298;
+  public int a7299;
+  public int a7300;
+  public int a7301;
+  public int a7302;
+  public int a7303;
+  public int a7304;
+  public int a7305;
+  public int a7306;
+  public int a7307;
+  public int a7308;
+  public int a7309;
+  public int a7310;
+  public int a7311;
+  public int a7312;
+  public int a7313;
+  public int a7314;
+  public int a7315;
+  public int a7316;
+  public int a7317;
+  public int a7318;
+  public int a7319;
+  public int a7320;
+  public int a7321;
+  public int a7322;
+  public int a7323;
+  public int a7324;
+  public int a7325;
+  public int a7326;
+  public int a7327;
+  public int a7328;
+  public int a7329;
+  public int a7330;
+  public int a7331;
+  public int a7332;
+  public int a7333;
+  public int a7334;
+  public int a7335;
+  public int a7336;
+  public int a7337;
+  public int a7338;
+  public int a7339;
+  public int a7340;
+  public int a7341;
+  public int a7342;
+  public int a7343;
+  public int a7344;
+  public int a7345;
+  public int a7346;
+  public int a7347;
+  public int a7348;
+  public int a7349;
+  public int a7350;
+  public int a7351;
+  public int a7352;
+  public int a7353;
+  public int a7354;
+  public int a7355;
+  public int a7356;
+  public int a7357;
+  public int a7358;
+  public int a7359;
+  public int a7360;
+  public int a7361;
+  public int a7362;
+  public int a7363;
+  public int a7364;
+  public int a7365;
+  public int a7366;
+  public int a7367;
+  public int a7368;
+  public int a7369;
+  public int a7370;
+  public int a7371;
+  public int a7372;
+  public int a7373;
+  public int a7374;
+  public int a7375;
+  public int a7376;
+  public int a7377;
+  public int a7378;
+  public int a7379;
+  public int a7380;
+  public int a7381;
+  public int a7382;
+  public int a7383;
+  public int a7384;
+  public int a7385;
+  public int a7386;
+  public int a7387;
+  public int a7388;
+  public int a7389;
+  public int a7390;
+  public int a7391;
+  public int a7392;
+  public int a7393;
+  public int a7394;
+  public int a7395;
+  public int a7396;
+  public int a7397;
+  public int a7398;
+  public int a7399;
+  public int a7400;
+  public int a7401;
+  public int a7402;
+  public int a7403;
+  public int a7404;
+  public int a7405;
+  public int a7406;
+  public int a7407;
+  public int a7408;
+  public int a7409;
+  public int a7410;
+  public int a7411;
+  public int a7412;
+  public int a7413;
+  public int a7414;
+  public int a7415;
+  public int a7416;
+  public int a7417;
+  public int a7418;
+  public int a7419;
+  public int a7420;
+  public int a7421;
+  public int a7422;
+  public int a7423;
+  public int a7424;
+  public int a7425;
+  public int a7426;
+  public int a7427;
+  public int a7428;
+  public int a7429;
+  public int a7430;
+  public int a7431;
+  public int a7432;
+  public int a7433;
+  public int a7434;
+  public int a7435;
+  public int a7436;
+  public int a7437;
+  public int a7438;
+  public int a7439;
+  public int a7440;
+  public int a7441;
+  public int a7442;
+  public int a7443;
+  public int a7444;
+  public int a7445;
+  public int a7446;
+  public int a7447;
+  public int a7448;
+  public int a7449;
+  public int a7450;
+  public int a7451;
+  public int a7452;
+  public int a7453;
+  public int a7454;
+  public int a7455;
+  public int a7456;
+  public int a7457;
+  public int a7458;
+  public int a7459;
+  public int a7460;
+  public int a7461;
+  public int a7462;
+  public int a7463;
+  public int a7464;
+  public int a7465;
+  public int a7466;
+  public int a7467;
+  public int a7468;
+  public int a7469;
+  public int a7470;
+  public int a7471;
+  public int a7472;
+  public int a7473;
+  public int a7474;
+  public int a7475;
+  public int a7476;
+  public int a7477;
+  public int a7478;
+  public int a7479;
+  public int a7480;
+  public int a7481;
+  public int a7482;
+  public int a7483;
+  public int a7484;
+  public int a7485;
+  public int a7486;
+  public int a7487;
+  public int a7488;
+  public int a7489;
+  public int a7490;
+  public int a7491;
+  public int a7492;
+  public int a7493;
+  public int a7494;
+  public int a7495;
+  public int a7496;
+  public int a7497;
+  public int a7498;
+  public int a7499;
+  public int a7500;
+  public int a7501;
+  public int a7502;
+  public int a7503;
+  public int a7504;
+  public int a7505;
+  public int a7506;
+  public int a7507;
+  public int a7508;
+  public int a7509;
+  public int a7510;
+  public int a7511;
+  public int a7512;
+  public int a7513;
+  public int a7514;
+  public int a7515;
+  public int a7516;
+  public int a7517;
+  public int a7518;
+  public int a7519;
+  public int a7520;
+  public int a7521;
+  public int a7522;
+  public int a7523;
+  public int a7524;
+  public int a7525;
+  public int a7526;
+  public int a7527;
+  public int a7528;
+  public int a7529;
+  public int a7530;
+  public int a7531;
+  public int a7532;
+  public int a7533;
+  public int a7534;
+  public int a7535;
+  public int a7536;
+  public int a7537;
+  public int a7538;
+  public int a7539;
+  public int a7540;
+  public int a7541;
+  public int a7542;
+  public int a7543;
+  public int a7544;
+  public int a7545;
+  public int a7546;
+  public int a7547;
+  public int a7548;
+  public int a7549;
+  public int a7550;
+  public int a7551;
+  public int a7552;
+  public int a7553;
+  public int a7554;
+  public int a7555;
+  public int a7556;
+  public int a7557;
+  public int a7558;
+  public int a7559;
+  public int a7560;
+  public int a7561;
+  public int a7562;
+  public int a7563;
+  public int a7564;
+  public int a7565;
+  public int a7566;
+  public int a7567;
+  public int a7568;
+  public int a7569;
+  public int a7570;
+  public int a7571;
+  public int a7572;
+  public int a7573;
+  public int a7574;
+  public int a7575;
+  public int a7576;
+  public int a7577;
+  public int a7578;
+  public int a7579;
+  public int a7580;
+  public int a7581;
+  public int a7582;
+  public int a7583;
+  public int a7584;
+  public int a7585;
+  public int a7586;
+  public int a7587;
+  public int a7588;
+  public int a7589;
+  public int a7590;
+  public int a7591;
+  public int a7592;
+  public int a7593;
+  public int a7594;
+  public int a7595;
+  public int a7596;
+  public int a7597;
+  public int a7598;
+  public int a7599;
+  public int a7600;
+  public int a7601;
+  public int a7602;
+  public int a7603;
+  public int a7604;
+  public int a7605;
+  public int a7606;
+  public int a7607;
+  public int a7608;
+  public int a7609;
+  public int a7610;
+  public int a7611;
+  public int a7612;
+  public int a7613;
+  public int a7614;
+  public int a7615;
+  public int a7616;
+  public int a7617;
+  public int a7618;
+  public int a7619;
+  public int a7620;
+  public int a7621;
+  public int a7622;
+  public int a7623;
+  public int a7624;
+  public int a7625;
+  public int a7626;
+  public int a7627;
+  public int a7628;
+  public int a7629;
+  public int a7630;
+  public int a7631;
+  public int a7632;
+  public int a7633;
+  public int a7634;
+  public int a7635;
+  public int a7636;
+  public int a7637;
+  public int a7638;
+  public int a7639;
+  public int a7640;
+  public int a7641;
+  public int a7642;
+  public int a7643;
+  public int a7644;
+  public int a7645;
+  public int a7646;
+  public int a7647;
+  public int a7648;
+  public int a7649;
+  public int a7650;
+  public int a7651;
+  public int a7652;
+  public int a7653;
+  public int a7654;
+  public int a7655;
+  public int a7656;
+  public int a7657;
+  public int a7658;
+  public int a7659;
+  public int a7660;
+  public int a7661;
+  public int a7662;
+  public int a7663;
+  public int a7664;
+  public int a7665;
+  public int a7666;
+  public int a7667;
+  public int a7668;
+  public int a7669;
+  public int a7670;
+  public int a7671;
+  public int a7672;
+  public int a7673;
+  public int a7674;
+  public int a7675;
+  public int a7676;
+  public int a7677;
+  public int a7678;
+  public int a7679;
+  public int a7680;
+  public int a7681;
+  public int a7682;
+  public int a7683;
+  public int a7684;
+  public int a7685;
+  public int a7686;
+  public int a7687;
+  public int a7688;
+  public int a7689;
+  public int a7690;
+  public int a7691;
+  public int a7692;
+  public int a7693;
+  public int a7694;
+  public int a7695;
+  public int a7696;
+  public int a7697;
+  public int a7698;
+  public int a7699;
+  public int a7700;
+  public int a7701;
+  public int a7702;
+  public int a7703;
+  public int a7704;
+  public int a7705;
+  public int a7706;
+  public int a7707;
+  public int a7708;
+  public int a7709;
+  public int a7710;
+  public int a7711;
+  public int a7712;
+  public int a7713;
+  public int a7714;
+  public int a7715;
+  public int a7716;
+  public int a7717;
+  public int a7718;
+  public int a7719;
+  public int a7720;
+  public int a7721;
+  public int a7722;
+  public int a7723;
+  public int a7724;
+  public int a7725;
+  public int a7726;
+  public int a7727;
+  public int a7728;
+  public int a7729;
+  public int a7730;
+  public int a7731;
+  public int a7732;
+  public int a7733;
+  public int a7734;
+  public int a7735;
+  public int a7736;
+  public int a7737;
+  public int a7738;
+  public int a7739;
+  public int a7740;
+  public int a7741;
+  public int a7742;
+  public int a7743;
+  public int a7744;
+  public int a7745;
+  public int a7746;
+  public int a7747;
+  public int a7748;
+  public int a7749;
+  public int a7750;
+  public int a7751;
+  public int a7752;
+  public int a7753;
+  public int a7754;
+  public int a7755;
+  public int a7756;
+  public int a7757;
+  public int a7758;
+  public int a7759;
+  public int a7760;
+  public int a7761;
+  public int a7762;
+  public int a7763;
+  public int a7764;
+  public int a7765;
+  public int a7766;
+  public int a7767;
+  public int a7768;
+  public int a7769;
+  public int a7770;
+  public int a7771;
+  public int a7772;
+  public int a7773;
+  public int a7774;
+  public int a7775;
+  public int a7776;
+  public int a7777;
+  public int a7778;
+  public int a7779;
+  public int a7780;
+  public int a7781;
+  public int a7782;
+  public int a7783;
+  public int a7784;
+  public int a7785;
+  public int a7786;
+  public int a7787;
+  public int a7788;
+  public int a7789;
+  public int a7790;
+  public int a7791;
+  public int a7792;
+  public int a7793;
+  public int a7794;
+  public int a7795;
+  public int a7796;
+  public int a7797;
+  public int a7798;
+  public int a7799;
+  public int a7800;
+  public int a7801;
+  public int a7802;
+  public int a7803;
+  public int a7804;
+  public int a7805;
+  public int a7806;
+  public int a7807;
+  public int a7808;
+  public int a7809;
+  public int a7810;
+  public int a7811;
+  public int a7812;
+  public int a7813;
+  public int a7814;
+  public int a7815;
+  public int a7816;
+  public int a7817;
+  public int a7818;
+  public int a7819;
+  public int a7820;
+  public int a7821;
+  public int a7822;
+  public int a7823;
+  public int a7824;
+  public int a7825;
+  public int a7826;
+  public int a7827;
+  public int a7828;
+  public int a7829;
+  public int a7830;
+  public int a7831;
+  public int a7832;
+  public int a7833;
+  public int a7834;
+  public int a7835;
+  public int a7836;
+  public int a7837;
+  public int a7838;
+  public int a7839;
+  public int a7840;
+  public int a7841;
+  public int a7842;
+  public int a7843;
+  public int a7844;
+  public int a7845;
+  public int a7846;
+  public int a7847;
+  public int a7848;
+  public int a7849;
+  public int a7850;
+  public int a7851;
+  public int a7852;
+  public int a7853;
+  public int a7854;
+  public int a7855;
+  public int a7856;
+  public int a7857;
+  public int a7858;
+  public int a7859;
+  public int a7860;
+  public int a7861;
+  public int a7862;
+  public int a7863;
+  public int a7864;
+  public int a7865;
+  public int a7866;
+  public int a7867;
+  public int a7868;
+  public int a7869;
+  public int a7870;
+  public int a7871;
+  public int a7872;
+  public int a7873;
+  public int a7874;
+  public int a7875;
+  public int a7876;
+  public int a7877;
+  public int a7878;
+  public int a7879;
+  public int a7880;
+  public int a7881;
+  public int a7882;
+  public int a7883;
+  public int a7884;
+  public int a7885;
+  public int a7886;
+  public int a7887;
+  public int a7888;
+  public int a7889;
+  public int a7890;
+  public int a7891;
+  public int a7892;
+  public int a7893;
+  public int a7894;
+  public int a7895;
+  public int a7896;
+  public int a7897;
+  public int a7898;
+  public int a7899;
+  public int a7900;
+  public int a7901;
+  public int a7902;
+  public int a7903;
+  public int a7904;
+  public int a7905;
+  public int a7906;
+  public int a7907;
+  public int a7908;
+  public int a7909;
+  public int a7910;
+  public int a7911;
+  public int a7912;
+  public int a7913;
+  public int a7914;
+  public int a7915;
+  public int a7916;
+  public int a7917;
+  public int a7918;
+  public int a7919;
+  public int a7920;
+  public int a7921;
+  public int a7922;
+  public int a7923;
+  public int a7924;
+  public int a7925;
+  public int a7926;
+  public int a7927;
+  public int a7928;
+  public int a7929;
+  public int a7930;
+  public int a7931;
+  public int a7932;
+  public int a7933;
+  public int a7934;
+  public int a7935;
+  public int a7936;
+  public int a7937;
+  public int a7938;
+  public int a7939;
+  public int a7940;
+  public int a7941;
+  public int a7942;
+  public int a7943;
+  public int a7944;
+  public int a7945;
+  public int a7946;
+  public int a7947;
+  public int a7948;
+  public int a7949;
+  public int a7950;
+  public int a7951;
+  public int a7952;
+  public int a7953;
+  public int a7954;
+  public int a7955;
+  public int a7956;
+  public int a7957;
+  public int a7958;
+  public int a7959;
+  public int a7960;
+  public int a7961;
+  public int a7962;
+  public int a7963;
+  public int a7964;
+  public int a7965;
+  public int a7966;
+  public int a7967;
+  public int a7968;
+  public int a7969;
+  public int a7970;
+  public int a7971;
+  public int a7972;
+  public int a7973;
+  public int a7974;
+  public int a7975;
+  public int a7976;
+  public int a7977;
+  public int a7978;
+  public int a7979;
+  public int a7980;
+  public int a7981;
+  public int a7982;
+  public int a7983;
+  public int a7984;
+  public int a7985;
+  public int a7986;
+  public int a7987;
+  public int a7988;
+  public int a7989;
+  public int a7990;
+  public int a7991;
+  public int a7992;
+  public int a7993;
+  public int a7994;
+  public int a7995;
+  public int a7996;
+  public int a7997;
+  public int a7998;
+  public int a7999;
+  public int a8000;
+  public int a8001;
+  public int a8002;
+  public int a8003;
+  public int a8004;
+  public int a8005;
+  public int a8006;
+  public int a8007;
+  public int a8008;
+  public int a8009;
+  public int a8010;
+  public int a8011;
+  public int a8012;
+  public int a8013;
+  public int a8014;
+  public int a8015;
+  public int a8016;
+  public int a8017;
+  public int a8018;
+  public int a8019;
+  public int a8020;
+  public int a8021;
+  public int a8022;
+  public int a8023;
+  public int a8024;
+  public int a8025;
+  public int a8026;
+  public int a8027;
+  public int a8028;
+  public int a8029;
+  public int a8030;
+  public int a8031;
+  public int a8032;
+  public int a8033;
+  public int a8034;
+  public int a8035;
+  public int a8036;
+  public int a8037;
+  public int a8038;
+  public int a8039;
+  public int a8040;
+  public int a8041;
+  public int a8042;
+  public int a8043;
+  public int a8044;
+  public int a8045;
+  public int a8046;
+  public int a8047;
+  public int a8048;
+  public int a8049;
+  public int a8050;
+  public int a8051;
+  public int a8052;
+  public int a8053;
+  public int a8054;
+  public int a8055;
+  public int a8056;
+  public int a8057;
+  public int a8058;
+  public int a8059;
+  public int a8060;
+  public int a8061;
+  public int a8062;
+  public int a8063;
+  public int a8064;
+  public int a8065;
+  public int a8066;
+  public int a8067;
+  public int a8068;
+  public int a8069;
+  public int a8070;
+  public int a8071;
+  public int a8072;
+  public int a8073;
+  public int a8074;
+  public int a8075;
+  public int a8076;
+  public int a8077;
+  public int a8078;
+  public int a8079;
+  public int a8080;
+  public int a8081;
+  public int a8082;
+  public int a8083;
+  public int a8084;
+  public int a8085;
+  public int a8086;
+  public int a8087;
+  public int a8088;
+  public int a8089;
+  public int a8090;
+  public int a8091;
+  public int a8092;
+  public int a8093;
+  public int a8094;
+  public int a8095;
+  public int a8096;
+  public int a8097;
+  public int a8098;
+  public int a8099;
+  public int a8100;
+  public int a8101;
+  public int a8102;
+  public int a8103;
+  public int a8104;
+  public int a8105;
+  public int a8106;
+  public int a8107;
+  public int a8108;
+  public int a8109;
+  public int a8110;
+  public int a8111;
+  public int a8112;
+  public int a8113;
+  public int a8114;
+  public int a8115;
+  public int a8116;
+  public int a8117;
+  public int a8118;
+  public int a8119;
+  public int a8120;
+  public int a8121;
+  public int a8122;
+  public int a8123;
+  public int a8124;
+  public int a8125;
+  public int a8126;
+  public int a8127;
+  public int a8128;
+  public int a8129;
+  public int a8130;
+  public int a8131;
+  public int a8132;
+  public int a8133;
+  public int a8134;
+  public int a8135;
+  public int a8136;
+  public int a8137;
+  public int a8138;
+  public int a8139;
+  public int a8140;
+  public int a8141;
+  public int a8142;
+  public int a8143;
+  public int a8144;
+  public int a8145;
+  public int a8146;
+  public int a8147;
+  public int a8148;
+  public int a8149;
+  public int a8150;
+  public int a8151;
+  public int a8152;
+  public int a8153;
+  public int a8154;
+  public int a8155;
+  public int a8156;
+  public int a8157;
+  public int a8158;
+  public int a8159;
+  public int a8160;
+  public int a8161;
+  public int a8162;
+  public int a8163;
+  public int a8164;
+  public int a8165;
+  public int a8166;
+  public int a8167;
+  public int a8168;
+  public int a8169;
+  public int a8170;
+  public int a8171;
+  public int a8172;
+  public int a8173;
+  public int a8174;
+  public int a8175;
+  public int a8176;
+  public int a8177;
+  public int a8178;
+  public int a8179;
+  public int a8180;
+  public int a8181;
+  public int a8182;
+  public int a8183;
+  public int a8184;
+  public int a8185;
+  public int a8186;
+  public int a8187;
+  public int a8188;
+  public int a8189;
+  public int a8190;
+  public int a8191;
+  public int a8192;
+  public int a8193;
+  public int a8194;
+  public int a8195;
+  public int a8196;
+  public int a8197;
+  public int a8198;
+  public int a8199;
+  public int a8200;
+  public int a8201;
+  public int a8202;
+  public int a8203;
+  public int a8204;
+  public int a8205;
+  public int a8206;
+  public int a8207;
+  public int a8208;
+  public int a8209;
+  public int a8210;
+  public int a8211;
+  public int a8212;
+  public int a8213;
+  public int a8214;
+  public int a8215;
+  public int a8216;
+  public int a8217;
+  public int a8218;
+  public int a8219;
+  public int a8220;
+  public int a8221;
+  public int a8222;
+  public int a8223;
+  public int a8224;
+  public int a8225;
+  public int a8226;
+  public int a8227;
+  public int a8228;
+  public int a8229;
+  public int a8230;
+  public int a8231;
+  public int a8232;
+  public int a8233;
+  public int a8234;
+  public int a8235;
+  public int a8236;
+  public int a8237;
+  public int a8238;
+  public int a8239;
+  public int a8240;
+  public int a8241;
+  public int a8242;
+  public int a8243;
+  public int a8244;
+  public int a8245;
+  public int a8246;
+  public int a8247;
+  public int a8248;
+  public int a8249;
+  public int a8250;
+  public int a8251;
+  public int a8252;
+  public int a8253;
+  public int a8254;
+  public int a8255;
+  public int a8256;
+  public int a8257;
+  public int a8258;
+  public int a8259;
+  public int a8260;
+  public int a8261;
+  public int a8262;
+  public int a8263;
+  public int a8264;
+  public int a8265;
+  public int a8266;
+  public int a8267;
+  public int a8268;
+  public int a8269;
+  public int a8270;
+  public int a8271;
+  public int a8272;
+  public int a8273;
+  public int a8274;
+  public int a8275;
+  public int a8276;
+  public int a8277;
+  public int a8278;
+  public int a8279;
+  public int a8280;
+  public int a8281;
+  public int a8282;
+  public int a8283;
+  public int a8284;
+  public int a8285;
+  public int a8286;
+  public int a8287;
+  public int a8288;
+  public int a8289;
+  public int a8290;
+  public int a8291;
+  public int a8292;
+  public int a8293;
+  public int a8294;
+  public int a8295;
+  public int a8296;
+  public int a8297;
+  public int a8298;
+  public int a8299;
+  public int a8300;
+  public int a8301;
+  public int a8302;
+  public int a8303;
+  public int a8304;
+  public int a8305;
+  public int a8306;
+  public int a8307;
+  public int a8308;
+  public int a8309;
+  public int a8310;
+  public int a8311;
+  public int a8312;
+  public int a8313;
+  public int a8314;
+  public int a8315;
+  public int a8316;
+  public int a8317;
+  public int a8318;
+  public int a8319;
+  public int a8320;
+  public int a8321;
+  public int a8322;
+  public int a8323;
+  public int a8324;
+  public int a8325;
+  public int a8326;
+  public int a8327;
+  public int a8328;
+  public int a8329;
+  public int a8330;
+  public int a8331;
+  public int a8332;
+  public int a8333;
+  public int a8334;
+  public int a8335;
+  public int a8336;
+  public int a8337;
+  public int a8338;
+  public int a8339;
+  public int a8340;
+  public int a8341;
+  public int a8342;
+  public int a8343;
+  public int a8344;
+  public int a8345;
+  public int a8346;
+  public int a8347;
+  public int a8348;
+  public int a8349;
+  public int a8350;
+  public int a8351;
+  public int a8352;
+  public int a8353;
+  public int a8354;
+  public int a8355;
+  public int a8356;
+  public int a8357;
+  public int a8358;
+  public int a8359;
+  public int a8360;
+  public int a8361;
+  public int a8362;
+  public int a8363;
+  public int a8364;
+  public int a8365;
+  public int a8366;
+  public int a8367;
+  public int a8368;
+  public int a8369;
+  public int a8370;
+  public int a8371;
+  public int a8372;
+  public int a8373;
+  public int a8374;
+  public int a8375;
+  public int a8376;
+  public int a8377;
+  public int a8378;
+  public int a8379;
+  public int a8380;
+  public int a8381;
+  public int a8382;
+  public int a8383;
+  public int a8384;
+  public int a8385;
+  public int a8386;
+  public int a8387;
+  public int a8388;
+  public int a8389;
+  public int a8390;
+  public int a8391;
+  public int a8392;
+  public int a8393;
+  public int a8394;
+  public int a8395;
+  public int a8396;
+  public int a8397;
+  public int a8398;
+  public int a8399;
+  public int a8400;
+  public int a8401;
+  public int a8402;
+  public int a8403;
+  public int a8404;
+  public int a8405;
+  public int a8406;
+  public int a8407;
+  public int a8408;
+  public int a8409;
+  public int a8410;
+  public int a8411;
+  public int a8412;
+  public int a8413;
+  public int a8414;
+  public int a8415;
+  public int a8416;
+  public int a8417;
+  public int a8418;
+  public int a8419;
+  public int a8420;
+  public int a8421;
+  public int a8422;
+  public int a8423;
+  public int a8424;
+  public int a8425;
+  public int a8426;
+  public int a8427;
+  public int a8428;
+  public int a8429;
+  public int a8430;
+  public int a8431;
+  public int a8432;
+  public int a8433;
+  public int a8434;
+  public int a8435;
+  public int a8436;
+  public int a8437;
+  public int a8438;
+  public int a8439;
+  public int a8440;
+  public int a8441;
+  public int a8442;
+  public int a8443;
+  public int a8444;
+  public int a8445;
+  public int a8446;
+  public int a8447;
+  public int a8448;
+  public int a8449;
+  public int a8450;
+  public int a8451;
+  public int a8452;
+  public int a8453;
+  public int a8454;
+  public int a8455;
+  public int a8456;
+  public int a8457;
+  public int a8458;
+  public int a8459;
+  public int a8460;
+  public int a8461;
+  public int a8462;
+  public int a8463;
+  public int a8464;
+  public int a8465;
+  public int a8466;
+  public int a8467;
+  public int a8468;
+  public int a8469;
+  public int a8470;
+  public int a8471;
+  public int a8472;
+  public int a8473;
+  public int a8474;
+  public int a8475;
+  public int a8476;
+  public int a8477;
+  public int a8478;
+  public int a8479;
+  public int a8480;
+  public int a8481;
+  public int a8482;
+  public int a8483;
+  public int a8484;
+  public int a8485;
+  public int a8486;
+  public int a8487;
+  public int a8488;
+  public int a8489;
+  public int a8490;
+  public int a8491;
+  public int a8492;
+  public int a8493;
+  public int a8494;
+  public int a8495;
+  public int a8496;
+  public int a8497;
+  public int a8498;
+  public int a8499;
+  public int a8500;
+  public int a8501;
+  public int a8502;
+  public int a8503;
+  public int a8504;
+  public int a8505;
+  public int a8506;
+  public int a8507;
+  public int a8508;
+  public int a8509;
+  public int a8510;
+  public int a8511;
+  public int a8512;
+  public int a8513;
+  public int a8514;
+  public int a8515;
+  public int a8516;
+  public int a8517;
+  public int a8518;
+  public int a8519;
+  public int a8520;
+  public int a8521;
+  public int a8522;
+  public int a8523;
+  public int a8524;
+  public int a8525;
+  public int a8526;
+  public int a8527;
+  public int a8528;
+  public int a8529;
+  public int a8530;
+  public int a8531;
+  public int a8532;
+  public int a8533;
+  public int a8534;
+  public int a8535;
+  public int a8536;
+  public int a8537;
+  public int a8538;
+  public int a8539;
+  public int a8540;
+  public int a8541;
+  public int a8542;
+  public int a8543;
+  public int a8544;
+  public int a8545;
+  public int a8546;
+  public int a8547;
+  public int a8548;
+  public int a8549;
+  public int a8550;
+  public int a8551;
+  public int a8552;
+  public int a8553;
+  public int a8554;
+  public int a8555;
+  public int a8556;
+  public int a8557;
+  public int a8558;
+  public int a8559;
+  public int a8560;
+  public int a8561;
+  public int a8562;
+  public int a8563;
+  public int a8564;
+  public int a8565;
+  public int a8566;
+  public int a8567;
+  public int a8568;
+  public int a8569;
+  public int a8570;
+  public int a8571;
+  public int a8572;
+  public int a8573;
+  public int a8574;
+  public int a8575;
+  public int a8576;
+  public int a8577;
+  public int a8578;
+  public int a8579;
+  public int a8580;
+  public int a8581;
+  public int a8582;
+  public int a8583;
+  public int a8584;
+  public int a8585;
+  public int a8586;
+  public int a8587;
+  public int a8588;
+  public int a8589;
+  public int a8590;
+  public int a8591;
+  public int a8592;
+  public int a8593;
+  public int a8594;
+  public int a8595;
+  public int a8596;
+  public int a8597;
+  public int a8598;
+  public int a8599;
+  public int a8600;
+  public int a8601;
+  public int a8602;
+  public int a8603;
+  public int a8604;
+  public int a8605;
+  public int a8606;
+  public int a8607;
+  public int a8608;
+  public int a8609;
+  public int a8610;
+  public int a8611;
+  public int a8612;
+  public int a8613;
+  public int a8614;
+  public int a8615;
+  public int a8616;
+  public int a8617;
+  public int a8618;
+  public int a8619;
+  public int a8620;
+  public int a8621;
+  public int a8622;
+  public int a8623;
+  public int a8624;
+  public int a8625;
+  public int a8626;
+  public int a8627;
+  public int a8628;
+  public int a8629;
+  public int a8630;
+  public int a8631;
+  public int a8632;
+  public int a8633;
+  public int a8634;
+  public int a8635;
+  public int a8636;
+  public int a8637;
+  public int a8638;
+  public int a8639;
+  public int a8640;
+  public int a8641;
+  public int a8642;
+  public int a8643;
+  public int a8644;
+  public int a8645;
+  public int a8646;
+  public int a8647;
+  public int a8648;
+  public int a8649;
+  public int a8650;
+  public int a8651;
+  public int a8652;
+  public int a8653;
+  public int a8654;
+  public int a8655;
+  public int a8656;
+  public int a8657;
+  public int a8658;
+  public int a8659;
+  public int a8660;
+  public int a8661;
+  public int a8662;
+  public int a8663;
+  public int a8664;
+  public int a8665;
+  public int a8666;
+  public int a8667;
+  public int a8668;
+  public int a8669;
+  public int a8670;
+  public int a8671;
+  public int a8672;
+  public int a8673;
+  public int a8674;
+  public int a8675;
+  public int a8676;
+  public int a8677;
+  public int a8678;
+  public int a8679;
+  public int a8680;
+  public int a8681;
+  public int a8682;
+  public int a8683;
+  public int a8684;
+  public int a8685;
+  public int a8686;
+  public int a8687;
+  public int a8688;
+  public int a8689;
+  public int a8690;
+  public int a8691;
+  public int a8692;
+  public int a8693;
+  public int a8694;
+  public int a8695;
+  public int a8696;
+  public int a8697;
+  public int a8698;
+  public int a8699;
+  public int a8700;
+  public int a8701;
+  public int a8702;
+  public int a8703;
+  public int a8704;
+  public int a8705;
+  public int a8706;
+  public int a8707;
+  public int a8708;
+  public int a8709;
+  public int a8710;
+  public int a8711;
+  public int a8712;
+  public int a8713;
+  public int a8714;
+  public int a8715;
+  public int a8716;
+  public int a8717;
+  public int a8718;
+  public int a8719;
+  public int a8720;
+  public int a8721;
+  public int a8722;
+  public int a8723;
+  public int a8724;
+  public int a8725;
+  public int a8726;
+  public int a8727;
+  public int a8728;
+  public int a8729;
+  public int a8730;
+  public int a8731;
+  public int a8732;
+  public int a8733;
+  public int a8734;
+  public int a8735;
+  public int a8736;
+  public int a8737;
+  public int a8738;
+  public int a8739;
+  public int a8740;
+  public int a8741;
+  public int a8742;
+  public int a8743;
+  public int a8744;
+  public int a8745;
+  public int a8746;
+  public int a8747;
+  public int a8748;
+  public int a8749;
+  public int a8750;
+  public int a8751;
+  public int a8752;
+  public int a8753;
+  public int a8754;
+  public int a8755;
+  public int a8756;
+  public int a8757;
+  public int a8758;
+  public int a8759;
+  public int a8760;
+  public int a8761;
+  public int a8762;
+  public int a8763;
+  public int a8764;
+  public int a8765;
+  public int a8766;
+  public int a8767;
+  public int a8768;
+  public int a8769;
+  public int a8770;
+  public int a8771;
+  public int a8772;
+  public int a8773;
+  public int a8774;
+  public int a8775;
+  public int a8776;
+  public int a8777;
+  public int a8778;
+  public int a8779;
+  public int a8780;
+  public int a8781;
+  public int a8782;
+  public int a8783;
+  public int a8784;
+  public int a8785;
+  public int a8786;
+  public int a8787;
+  public int a8788;
+  public int a8789;
+  public int a8790;
+  public int a8791;
+  public int a8792;
+  public int a8793;
+  public int a8794;
+  public int a8795;
+  public int a8796;
+  public int a8797;
+  public int a8798;
+  public int a8799;
+  public int a8800;
+  public int a8801;
+  public int a8802;
+  public int a8803;
+  public int a8804;
+  public int a8805;
+  public int a8806;
+  public int a8807;
+  public int a8808;
+  public int a8809;
+  public int a8810;
+  public int a8811;
+  public int a8812;
+  public int a8813;
+  public int a8814;
+  public int a8815;
+  public int a8816;
+  public int a8817;
+  public int a8818;
+  public int a8819;
+  public int a8820;
+  public int a8821;
+  public int a8822;
+  public int a8823;
+  public int a8824;
+  public int a8825;
+  public int a8826;
+  public int a8827;
+  public int a8828;
+  public int a8829;
+  public int a8830;
+  public int a8831;
+  public int a8832;
+  public int a8833;
+  public int a8834;
+  public int a8835;
+  public int a8836;
+  public int a8837;
+  public int a8838;
+  public int a8839;
+  public int a8840;
+  public int a8841;
+  public int a8842;
+  public int a8843;
+  public int a8844;
+  public int a8845;
+  public int a8846;
+  public int a8847;
+  public int a8848;
+  public int a8849;
+  public int a8850;
+  public int a8851;
+  public int a8852;
+  public int a8853;
+  public int a8854;
+  public int a8855;
+  public int a8856;
+  public int a8857;
+  public int a8858;
+  public int a8859;
+  public int a8860;
+  public int a8861;
+  public int a8862;
+  public int a8863;
+  public int a8864;
+  public int a8865;
+  public int a8866;
+  public int a8867;
+  public int a8868;
+  public int a8869;
+  public int a8870;
+  public int a8871;
+  public int a8872;
+  public int a8873;
+  public int a8874;
+  public int a8875;
+  public int a8876;
+  public int a8877;
+  public int a8878;
+  public int a8879;
+  public int a8880;
+  public int a8881;
+  public int a8882;
+  public int a8883;
+  public int a8884;
+  public int a8885;
+  public int a8886;
+  public int a8887;
+  public int a8888;
+  public int a8889;
+  public int a8890;
+  public int a8891;
+  public int a8892;
+  public int a8893;
+  public int a8894;
+  public int a8895;
+  public int a8896;
+  public int a8897;
+  public int a8898;
+  public int a8899;
+  public int a8900;
+  public int a8901;
+  public int a8902;
+  public int a8903;
+  public int a8904;
+  public int a8905;
+  public int a8906;
+  public int a8907;
+  public int a8908;
+  public int a8909;
+  public int a8910;
+  public int a8911;
+  public int a8912;
+  public int a8913;
+  public int a8914;
+  public int a8915;
+  public int a8916;
+  public int a8917;
+  public int a8918;
+  public int a8919;
+  public int a8920;
+  public int a8921;
+  public int a8922;
+  public int a8923;
+  public int a8924;
+  public int a8925;
+  public int a8926;
+  public int a8927;
+  public int a8928;
+  public int a8929;
+  public int a8930;
+  public int a8931;
+  public int a8932;
+  public int a8933;
+  public int a8934;
+  public int a8935;
+  public int a8936;
+  public int a8937;
+  public int a8938;
+  public int a8939;
+  public int a8940;
+  public int a8941;
+  public int a8942;
+  public int a8943;
+  public int a8944;
+  public int a8945;
+  public int a8946;
+  public int a8947;
+  public int a8948;
+  public int a8949;
+  public int a8950;
+  public int a8951;
+  public int a8952;
+  public int a8953;
+  public int a8954;
+  public int a8955;
+  public int a8956;
+  public int a8957;
+  public int a8958;
+  public int a8959;
+  public int a8960;
+  public int a8961;
+  public int a8962;
+  public int a8963;
+  public int a8964;
+  public int a8965;
+  public int a8966;
+  public int a8967;
+  public int a8968;
+  public int a8969;
+  public int a8970;
+  public int a8971;
+  public int a8972;
+  public int a8973;
+  public int a8974;
+  public int a8975;
+  public int a8976;
+  public int a8977;
+  public int a8978;
+  public int a8979;
+  public int a8980;
+  public int a8981;
+  public int a8982;
+  public int a8983;
+  public int a8984;
+  public int a8985;
+  public int a8986;
+  public int a8987;
+  public int a8988;
+  public int a8989;
+  public int a8990;
+  public int a8991;
+  public int a8992;
+  public int a8993;
+  public int a8994;
+  public int a8995;
+  public int a8996;
+  public int a8997;
+  public int a8998;
+  public int a8999;
+  public int a9000;
+  public int a9001;
+  public int a9002;
+  public int a9003;
+  public int a9004;
+  public int a9005;
+  public int a9006;
+  public int a9007;
+  public int a9008;
+  public int a9009;
+  public int a9010;
+  public int a9011;
+  public int a9012;
+  public int a9013;
+  public int a9014;
+  public int a9015;
+  public int a9016;
+  public int a9017;
+  public int a9018;
+  public int a9019;
+  public int a9020;
+  public int a9021;
+  public int a9022;
+  public int a9023;
+  public int a9024;
+  public int a9025;
+  public int a9026;
+  public int a9027;
+  public int a9028;
+  public int a9029;
+  public int a9030;
+  public int a9031;
+  public int a9032;
+  public int a9033;
+  public int a9034;
+  public int a9035;
+  public int a9036;
+  public int a9037;
+  public int a9038;
+  public int a9039;
+  public int a9040;
+  public int a9041;
+  public int a9042;
+  public int a9043;
+  public int a9044;
+  public int a9045;
+  public int a9046;
+  public int a9047;
+  public int a9048;
+  public int a9049;
+  public int a9050;
+  public int a9051;
+  public int a9052;
+  public int a9053;
+  public int a9054;
+  public int a9055;
+  public int a9056;
+  public int a9057;
+  public int a9058;
+  public int a9059;
+  public int a9060;
+  public int a9061;
+  public int a9062;
+  public int a9063;
+  public int a9064;
+  public int a9065;
+  public int a9066;
+  public int a9067;
+  public int a9068;
+  public int a9069;
+  public int a9070;
+  public int a9071;
+  public int a9072;
+  public int a9073;
+  public int a9074;
+  public int a9075;
+  public int a9076;
+  public int a9077;
+  public int a9078;
+  public int a9079;
+  public int a9080;
+  public int a9081;
+  public int a9082;
+  public int a9083;
+  public int a9084;
+  public int a9085;
+  public int a9086;
+  public int a9087;
+  public int a9088;
+  public int a9089;
+  public int a9090;
+  public int a9091;
+  public int a9092;
+  public int a9093;
+  public int a9094;
+  public int a9095;
+  public int a9096;
+  public int a9097;
+  public int a9098;
+  public int a9099;
+  public int a9100;
+  public int a9101;
+  public int a9102;
+  public int a9103;
+  public int a9104;
+  public int a9105;
+  public int a9106;
+  public int a9107;
+  public int a9108;
+  public int a9109;
+  public int a9110;
+  public int a9111;
+  public int a9112;
+  public int a9113;
+  public int a9114;
+  public int a9115;
+  public int a9116;
+  public int a9117;
+  public int a9118;
+  public int a9119;
+  public int a9120;
+  public int a9121;
+  public int a9122;
+  public int a9123;
+  public int a9124;
+  public int a9125;
+  public int a9126;
+  public int a9127;
+  public int a9128;
+  public int a9129;
+  public int a9130;
+  public int a9131;
+  public int a9132;
+  public int a9133;
+  public int a9134;
+  public int a9135;
+  public int a9136;
+  public int a9137;
+  public int a9138;
+  public int a9139;
+  public int a9140;
+  public int a9141;
+  public int a9142;
+  public int a9143;
+  public int a9144;
+  public int a9145;
+  public int a9146;
+  public int a9147;
+  public int a9148;
+  public int a9149;
+  public int a9150;
+  public int a9151;
+  public int a9152;
+  public int a9153;
+  public int a9154;
+  public int a9155;
+  public int a9156;
+  public int a9157;
+  public int a9158;
+  public int a9159;
+  public int a9160;
+  public int a9161;
+  public int a9162;
+  public int a9163;
+  public int a9164;
+  public int a9165;
+  public int a9166;
+  public int a9167;
+  public int a9168;
+  public int a9169;
+  public int a9170;
+  public int a9171;
+  public int a9172;
+  public int a9173;
+  public int a9174;
+  public int a9175;
+  public int a9176;
+  public int a9177;
+  public int a9178;
+  public int a9179;
+  public int a9180;
+  public int a9181;
+  public int a9182;
+  public int a9183;
+  public int a9184;
+  public int a9185;
+  public int a9186;
+  public int a9187;
+  public int a9188;
+  public int a9189;
+  public int a9190;
+  public int a9191;
+  public int a9192;
+  public int a9193;
+  public int a9194;
+  public int a9195;
+  public int a9196;
+  public int a9197;
+  public int a9198;
+  public int a9199;
+  public int a9200;
+  public int a9201;
+  public int a9202;
+  public int a9203;
+  public int a9204;
+  public int a9205;
+  public int a9206;
+  public int a9207;
+  public int a9208;
+  public int a9209;
+  public int a9210;
+  public int a9211;
+  public int a9212;
+  public int a9213;
+  public int a9214;
+  public int a9215;
+  public int a9216;
+  public int a9217;
+  public int a9218;
+  public int a9219;
+  public int a9220;
+  public int a9221;
+  public int a9222;
+  public int a9223;
+  public int a9224;
+  public int a9225;
+  public int a9226;
+  public int a9227;
+  public int a9228;
+  public int a9229;
+  public int a9230;
+  public int a9231;
+  public int a9232;
+  public int a9233;
+  public int a9234;
+  public int a9235;
+  public int a9236;
+  public int a9237;
+  public int a9238;
+  public int a9239;
+  public int a9240;
+  public int a9241;
+  public int a9242;
+  public int a9243;
+  public int a9244;
+  public int a9245;
+  public int a9246;
+  public int a9247;
+  public int a9248;
+  public int a9249;
+  public int a9250;
+  public int a9251;
+  public int a9252;
+  public int a9253;
+  public int a9254;
+  public int a9255;
+  public int a9256;
+  public int a9257;
+  public int a9258;
+  public int a9259;
+  public int a9260;
+  public int a9261;
+  public int a9262;
+  public int a9263;
+  public int a9264;
+  public int a9265;
+  public int a9266;
+  public int a9267;
+  public int a9268;
+  public int a9269;
+  public int a9270;
+  public int a9271;
+  public int a9272;
+  public int a9273;
+  public int a9274;
+  public int a9275;
+  public int a9276;
+  public int a9277;
+  public int a9278;
+  public int a9279;
+  public int a9280;
+  public int a9281;
+  public int a9282;
+  public int a9283;
+  public int a9284;
+  public int a9285;
+  public int a9286;
+  public int a9287;
+  public int a9288;
+  public int a9289;
+  public int a9290;
+  public int a9291;
+  public int a9292;
+  public int a9293;
+  public int a9294;
+  public int a9295;
+  public int a9296;
+  public int a9297;
+  public int a9298;
+  public int a9299;
+  public int a9300;
+  public int a9301;
+  public int a9302;
+  public int a9303;
+  public int a9304;
+  public int a9305;
+  public int a9306;
+  public int a9307;
+  public int a9308;
+  public int a9309;
+  public int a9310;
+  public int a9311;
+  public int a9312;
+  public int a9313;
+  public int a9314;
+  public int a9315;
+  public int a9316;
+  public int a9317;
+  public int a9318;
+  public int a9319;
+  public int a9320;
+  public int a9321;
+  public int a9322;
+  public int a9323;
+  public int a9324;
+  public int a9325;
+  public int a9326;
+  public int a9327;
+  public int a9328;
+  public int a9329;
+  public int a9330;
+  public int a9331;
+  public int a9332;
+  public int a9333;
+  public int a9334;
+  public int a9335;
+  public int a9336;
+  public int a9337;
+  public int a9338;
+  public int a9339;
+  public int a9340;
+  public int a9341;
+  public int a9342;
+  public int a9343;
+  public int a9344;
+  public int a9345;
+  public int a9346;
+  public int a9347;
+  public int a9348;
+  public int a9349;
+  public int a9350;
+  public int a9351;
+  public int a9352;
+  public int a9353;
+  public int a9354;
+  public int a9355;
+  public int a9356;
+  public int a9357;
+  public int a9358;
+  public int a9359;
+  public int a9360;
+  public int a9361;
+  public int a9362;
+  public int a9363;
+  public int a9364;
+  public int a9365;
+  public int a9366;
+  public int a9367;
+  public int a9368;
+  public int a9369;
+  public int a9370;
+  public int a9371;
+  public int a9372;
+  public int a9373;
+  public int a9374;
+  public int a9375;
+  public int a9376;
+  public int a9377;
+  public int a9378;
+  public int a9379;
+  public int a9380;
+  public int a9381;
+  public int a9382;
+  public int a9383;
+  public int a9384;
+  public int a9385;
+  public int a9386;
+  public int a9387;
+  public int a9388;
+  public int a9389;
+  public int a9390;
+  public int a9391;
+  public int a9392;
+  public int a9393;
+  public int a9394;
+  public int a9395;
+  public int a9396;
+  public int a9397;
+  public int a9398;
+  public int a9399;
+  public int a9400;
+  public int a9401;
+  public int a9402;
+  public int a9403;
+  public int a9404;
+  public int a9405;
+  public int a9406;
+  public int a9407;
+  public int a9408;
+  public int a9409;
+  public int a9410;
+  public int a9411;
+  public int a9412;
+  public int a9413;
+  public int a9414;
+  public int a9415;
+  public int a9416;
+  public int a9417;
+  public int a9418;
+  public int a9419;
+  public int a9420;
+  public int a9421;
+  public int a9422;
+  public int a9423;
+  public int a9424;
+  public int a9425;
+  public int a9426;
+  public int a9427;
+  public int a9428;
+  public int a9429;
+  public int a9430;
+  public int a9431;
+  public int a9432;
+  public int a9433;
+  public int a9434;
+  public int a9435;
+  public int a9436;
+  public int a9437;
+  public int a9438;
+  public int a9439;
+  public int a9440;
+  public int a9441;
+  public int a9442;
+  public int a9443;
+  public int a9444;
+  public int a9445;
+  public int a9446;
+  public int a9447;
+  public int a9448;
+  public int a9449;
+  public int a9450;
+  public int a9451;
+  public int a9452;
+  public int a9453;
+  public int a9454;
+  public int a9455;
+  public int a9456;
+  public int a9457;
+  public int a9458;
+  public int a9459;
+  public int a9460;
+  public int a9461;
+  public int a9462;
+  public int a9463;
+  public int a9464;
+  public int a9465;
+  public int a9466;
+  public int a9467;
+  public int a9468;
+  public int a9469;
+  public int a9470;
+  public int a9471;
+  public int a9472;
+  public int a9473;
+  public int a9474;
+  public int a9475;
+  public int a9476;
+  public int a9477;
+  public int a9478;
+  public int a9479;
+  public int a9480;
+  public int a9481;
+  public int a9482;
+  public int a9483;
+  public int a9484;
+  public int a9485;
+  public int a9486;
+  public int a9487;
+  public int a9488;
+  public int a9489;
+  public int a9490;
+  public int a9491;
+  public int a9492;
+  public int a9493;
+  public int a9494;
+  public int a9495;
+  public int a9496;
+  public int a9497;
+  public int a9498;
+  public int a9499;
+  public int a9500;
+  public int a9501;
+  public int a9502;
+  public int a9503;
+  public int a9504;
+  public int a9505;
+  public int a9506;
+  public int a9507;
+  public int a9508;
+  public int a9509;
+  public int a9510;
+  public int a9511;
+  public int a9512;
+  public int a9513;
+  public int a9514;
+  public int a9515;
+  public int a9516;
+  public int a9517;
+  public int a9518;
+  public int a9519;
+  public int a9520;
+  public int a9521;
+  public int a9522;
+  public int a9523;
+  public int a9524;
+  public int a9525;
+  public int a9526;
+  public int a9527;
+  public int a9528;
+  public int a9529;
+  public int a9530;
+  public int a9531;
+  public int a9532;
+  public int a9533;
+  public int a9534;
+  public int a9535;
+  public int a9536;
+  public int a9537;
+  public int a9538;
+  public int a9539;
+  public int a9540;
+  public int a9541;
+  public int a9542;
+  public int a9543;
+  public int a9544;
+  public int a9545;
+  public int a9546;
+  public int a9547;
+  public int a9548;
+  public int a9549;
+  public int a9550;
+  public int a9551;
+  public int a9552;
+  public int a9553;
+  public int a9554;
+  public int a9555;
+  public int a9556;
+  public int a9557;
+  public int a9558;
+  public int a9559;
+  public int a9560;
+  public int a9561;
+  public int a9562;
+  public int a9563;
+  public int a9564;
+  public int a9565;
+  public int a9566;
+  public int a9567;
+  public int a9568;
+  public int a9569;
+  public int a9570;
+  public int a9571;
+  public int a9572;
+  public int a9573;
+  public int a9574;
+  public int a9575;
+  public int a9576;
+  public int a9577;
+  public int a9578;
+  public int a9579;
+  public int a9580;
+  public int a9581;
+  public int a9582;
+  public int a9583;
+  public int a9584;
+  public int a9585;
+  public int a9586;
+  public int a9587;
+  public int a9588;
+  public int a9589;
+  public int a9590;
+  public int a9591;
+  public int a9592;
+  public int a9593;
+  public int a9594;
+  public int a9595;
+  public int a9596;
+  public int a9597;
+  public int a9598;
+  public int a9599;
+  public int a9600;
+  public int a9601;
+  public int a9602;
+  public int a9603;
+  public int a9604;
+  public int a9605;
+  public int a9606;
+  public int a9607;
+  public int a9608;
+  public int a9609;
+  public int a9610;
+  public int a9611;
+  public int a9612;
+  public int a9613;
+  public int a9614;
+  public int a9615;
+  public int a9616;
+  public int a9617;
+  public int a9618;
+  public int a9619;
+  public int a9620;
+  public int a9621;
+  public int a9622;
+  public int a9623;
+  public int a9624;
+  public int a9625;
+  public int a9626;
+  public int a9627;
+  public int a9628;
+  public int a9629;
+  public int a9630;
+  public int a9631;
+  public int a9632;
+  public int a9633;
+  public int a9634;
+  public int a9635;
+  public int a9636;
+  public int a9637;
+  public int a9638;
+  public int a9639;
+  public int a9640;
+  public int a9641;
+  public int a9642;
+  public int a9643;
+  public int a9644;
+  public int a9645;
+  public int a9646;
+  public int a9647;
+  public int a9648;
+  public int a9649;
+  public int a9650;
+  public int a9651;
+  public int a9652;
+  public int a9653;
+  public int a9654;
+  public int a9655;
+  public int a9656;
+  public int a9657;
+  public int a9658;
+  public int a9659;
+  public int a9660;
+  public int a9661;
+  public int a9662;
+  public int a9663;
+  public int a9664;
+  public int a9665;
+  public int a9666;
+  public int a9667;
+  public int a9668;
+  public int a9669;
+  public int a9670;
+  public int a9671;
+  public int a9672;
+  public int a9673;
+  public int a9674;
+  public int a9675;
+  public int a9676;
+  public int a9677;
+  public int a9678;
+  public int a9679;
+  public int a9680;
+  public int a9681;
+  public int a9682;
+  public int a9683;
+  public int a9684;
+  public int a9685;
+  public int a9686;
+  public int a9687;
+  public int a9688;
+  public int a9689;
+  public int a9690;
+  public int a9691;
+  public int a9692;
+  public int a9693;
+  public int a9694;
+  public int a9695;
+  public int a9696;
+  public int a9697;
+  public int a9698;
+  public int a9699;
+  public int a9700;
+  public int a9701;
+  public int a9702;
+  public int a9703;
+  public int a9704;
+  public int a9705;
+  public int a9706;
+  public int a9707;
+  public int a9708;
+  public int a9709;
+  public int a9710;
+  public int a9711;
+  public int a9712;
+  public int a9713;
+  public int a9714;
+  public int a9715;
+  public int a9716;
+  public int a9717;
+  public int a9718;
+  public int a9719;
+  public int a9720;
+  public int a9721;
+  public int a9722;
+  public int a9723;
+  public int a9724;
+  public int a9725;
+  public int a9726;
+  public int a9727;
+  public int a9728;
+  public int a9729;
+  public int a9730;
+  public int a9731;
+  public int a9732;
+  public int a9733;
+  public int a9734;
+  public int a9735;
+  public int a9736;
+  public int a9737;
+  public int a9738;
+  public int a9739;
+  public int a9740;
+  public int a9741;
+  public int a9742;
+  public int a9743;
+  public int a9744;
+  public int a9745;
+  public int a9746;
+  public int a9747;
+  public int a9748;
+  public int a9749;
+  public int a9750;
+  public int a9751;
+  public int a9752;
+  public int a9753;
+  public int a9754;
+  public int a9755;
+  public int a9756;
+  public int a9757;
+  public int a9758;
+  public int a9759;
+  public int a9760;
+  public int a9761;
+  public int a9762;
+  public int a9763;
+  public int a9764;
+  public int a9765;
+  public int a9766;
+  public int a9767;
+  public int a9768;
+  public int a9769;
+  public int a9770;
+  public int a9771;
+  public int a9772;
+  public int a9773;
+  public int a9774;
+  public int a9775;
+  public int a9776;
+  public int a9777;
+  public int a9778;
+  public int a9779;
+  public int a9780;
+  public int a9781;
+  public int a9782;
+  public int a9783;
+  public int a9784;
+  public int a9785;
+  public int a9786;
+  public int a9787;
+  public int a9788;
+  public int a9789;
+  public int a9790;
+  public int a9791;
+  public int a9792;
+  public int a9793;
+  public int a9794;
+  public int a9795;
+  public int a9796;
+  public int a9797;
+  public int a9798;
+  public int a9799;
+  public int a9800;
+  public int a9801;
+  public int a9802;
+  public int a9803;
+  public int a9804;
+  public int a9805;
+  public int a9806;
+  public int a9807;
+  public int a9808;
+  public int a9809;
+  public int a9810;
+  public int a9811;
+  public int a9812;
+  public int a9813;
+  public int a9814;
+  public int a9815;
+  public int a9816;
+  public int a9817;
+  public int a9818;
+  public int a9819;
+  public int a9820;
+  public int a9821;
+  public int a9822;
+  public int a9823;
+  public int a9824;
+  public int a9825;
+  public int a9826;
+  public int a9827;
+  public int a9828;
+  public int a9829;
+  public int a9830;
+  public int a9831;
+  public int a9832;
+  public int a9833;
+  public int a9834;
+  public int a9835;
+  public int a9836;
+  public int a9837;
+  public int a9838;
+  public int a9839;
+  public int a9840;
+  public int a9841;
+  public int a9842;
+  public int a9843;
+  public int a9844;
+  public int a9845;
+  public int a9846;
+  public int a9847;
+  public int a9848;
+  public int a9849;
+  public int a9850;
+  public int a9851;
+  public int a9852;
+  public int a9853;
+  public int a9854;
+  public int a9855;
+  public int a9856;
+  public int a9857;
+  public int a9858;
+  public int a9859;
+  public int a9860;
+  public int a9861;
+  public int a9862;
+  public int a9863;
+  public int a9864;
+  public int a9865;
+  public int a9866;
+  public int a9867;
+  public int a9868;
+  public int a9869;
+  public int a9870;
+  public int a9871;
+  public int a9872;
+  public int a9873;
+  public int a9874;
+  public int a9875;
+  public int a9876;
+  public int a9877;
+  public int a9878;
+  public int a9879;
+  public int a9880;
+  public int a9881;
+  public int a9882;
+  public int a9883;
+  public int a9884;
+  public int a9885;
+  public int a9886;
+  public int a9887;
+  public int a9888;
+  public int a9889;
+  public int a9890;
+  public int a9891;
+  public int a9892;
+  public int a9893;
+  public int a9894;
+  public int a9895;
+  public int a9896;
+  public int a9897;
+  public int a9898;
+  public int a9899;
+  public int a9900;
+  public int a9901;
+  public int a9902;
+  public int a9903;
+  public int a9904;
+  public int a9905;
+  public int a9906;
+  public int a9907;
+  public int a9908;
+  public int a9909;
+  public int a9910;
+  public int a9911;
+  public int a9912;
+  public int a9913;
+  public int a9914;
+  public int a9915;
+  public int a9916;
+  public int a9917;
+  public int a9918;
+  public int a9919;
+  public int a9920;
+  public int a9921;
+  public int a9922;
+  public int a9923;
+  public int a9924;
+  public int a9925;
+  public int a9926;
+  public int a9927;
+  public int a9928;
+  public int a9929;
+  public int a9930;
+  public int a9931;
+  public int a9932;
+  public int a9933;
+  public int a9934;
+  public int a9935;
+  public int a9936;
+  public int a9937;
+  public int a9938;
+  public int a9939;
+  public int a9940;
+  public int a9941;
+  public int a9942;
+  public int a9943;
+  public int a9944;
+  public int a9945;
+  public int a9946;
+  public int a9947;
+  public int a9948;
+  public int a9949;
+  public int a9950;
+  public int a9951;
+  public int a9952;
+  public int a9953;
+  public int a9954;
+  public int a9955;
+  public int a9956;
+  public int a9957;
+  public int a9958;
+  public int a9959;
+  public int a9960;
+  public int a9961;
+  public int a9962;
+  public int a9963;
+  public int a9964;
+  public int a9965;
+  public int a9966;
+  public int a9967;
+  public int a9968;
+  public int a9969;
+  public int a9970;
+  public int a9971;
+  public int a9972;
+  public int a9973;
+  public int a9974;
+  public int a9975;
+  public int a9976;
+  public int a9977;
+  public int a9978;
+  public int a9979;
+  public int a9980;
+  public int a9981;
+  public int a9982;
+  public int a9983;
+  public int a9984;
+  public int a9985;
+  public int a9986;
+  public int a9987;
+  public int a9988;
+  public int a9989;
+  public int a9990;
+  public int a9991;
+  public int a9992;
+  public int a9993;
+  public int a9994;
+  public int a9995;
+  public int a9996;
+  public int a9997;
+  public int a9998;
+  public int a9999;
+  public int a10000;
+  public int a10001;
+  public int a10002;
+  public int a10003;
+  public int a10004;
+  public int a10005;
+  public int a10006;
+  public int a10007;
+  public int a10008;
+  public int a10009;
+  public int a10010;
+  public int a10011;
+  public int a10012;
+  public int a10013;
+  public int a10014;
+  public int a10015;
+  public int a10016;
+  public int a10017;
+  public int a10018;
+  public int a10019;
+  public int a10020;
+  public int a10021;
+  public int a10022;
+  public int a10023;
+  public int a10024;
+  public int a10025;
+  public int a10026;
+  public int a10027;
+  public int a10028;
+  public int a10029;
+  public int a10030;
+  public int a10031;
+  public int a10032;
+  public int a10033;
+  public int a10034;
+  public int a10035;
+  public int a10036;
+  public int a10037;
+  public int a10038;
+  public int a10039;
+  public int a10040;
+  public int a10041;
+  public int a10042;
+  public int a10043;
+  public int a10044;
+  public int a10045;
+  public int a10046;
+  public int a10047;
+  public int a10048;
+  public int a10049;
+  public int a10050;
+  public int a10051;
+  public int a10052;
+  public int a10053;
+  public int a10054;
+  public int a10055;
+  public int a10056;
+  public int a10057;
+  public int a10058;
+  public int a10059;
+  public int a10060;
+  public int a10061;
+  public int a10062;
+  public int a10063;
+  public int a10064;
+  public int a10065;
+  public int a10066;
+  public int a10067;
+  public int a10068;
+  public int a10069;
+  public int a10070;
+  public int a10071;
+  public int a10072;
+  public int a10073;
+  public int a10074;
+  public int a10075;
+  public int a10076;
+  public int a10077;
+  public int a10078;
+  public int a10079;
+  public int a10080;
+  public int a10081;
+  public int a10082;
+  public int a10083;
+  public int a10084;
+  public int a10085;
+  public int a10086;
+  public int a10087;
+  public int a10088;
+  public int a10089;
+  public int a10090;
+  public int a10091;
+  public int a10092;
+  public int a10093;
+  public int a10094;
+  public int a10095;
+  public int a10096;
+  public int a10097;
+  public int a10098;
+  public int a10099;
+  public int a10100;
+  public int a10101;
+  public int a10102;
+  public int a10103;
+  public int a10104;
+  public int a10105;
+  public int a10106;
+  public int a10107;
+  public int a10108;
+  public int a10109;
+  public int a10110;
+  public int a10111;
+  public int a10112;
+  public int a10113;
+  public int a10114;
+  public int a10115;
+  public int a10116;
+  public int a10117;
+  public int a10118;
+  public int a10119;
+  public int a10120;
+  public int a10121;
+  public int a10122;
+  public int a10123;
+  public int a10124;
+  public int a10125;
+  public int a10126;
+  public int a10127;
+  public int a10128;
+  public int a10129;
+  public int a10130;
+  public int a10131;
+  public int a10132;
+  public int a10133;
+  public int a10134;
+  public int a10135;
+  public int a10136;
+  public int a10137;
+  public int a10138;
+  public int a10139;
+  public int a10140;
+  public int a10141;
+  public int a10142;
+  public int a10143;
+  public int a10144;
+  public int a10145;
+  public int a10146;
+  public int a10147;
+  public int a10148;
+  public int a10149;
+  public int a10150;
+  public int a10151;
+  public int a10152;
+  public int a10153;
+  public int a10154;
+  public int a10155;
+  public int a10156;
+  public int a10157;
+  public int a10158;
+  public int a10159;
+  public int a10160;
+  public int a10161;
+  public int a10162;
+  public int a10163;
+  public int a10164;
+  public int a10165;
+  public int a10166;
+  public int a10167;
+  public int a10168;
+  public int a10169;
+  public int a10170;
+  public int a10171;
+  public int a10172;
+  public int a10173;
+  public int a10174;
+  public int a10175;
+  public int a10176;
+  public int a10177;
+  public int a10178;
+  public int a10179;
+  public int a10180;
+  public int a10181;
+  public int a10182;
+  public int a10183;
+  public int a10184;
+  public int a10185;
+  public int a10186;
+  public int a10187;
+  public int a10188;
+  public int a10189;
+  public int a10190;
+  public int a10191;
+  public int a10192;
+  public int a10193;
+  public int a10194;
+  public int a10195;
+  public int a10196;
+  public int a10197;
+  public int a10198;
+  public int a10199;
+  public int a10200;
+  public int a10201;
+  public int a10202;
+  public int a10203;
+  public int a10204;
+  public int a10205;
+  public int a10206;
+  public int a10207;
+  public int a10208;
+  public int a10209;
+  public int a10210;
+  public int a10211;
+  public int a10212;
+  public int a10213;
+  public int a10214;
+  public int a10215;
+  public int a10216;
+  public int a10217;
+  public int a10218;
+  public int a10219;
+  public int a10220;
+  public int a10221;
+  public int a10222;
+  public int a10223;
+  public int a10224;
+  public int a10225;
+  public int a10226;
+  public int a10227;
+  public int a10228;
+  public int a10229;
+  public int a10230;
+  public int a10231;
+  public int a10232;
+  public int a10233;
+  public int a10234;
+  public int a10235;
+  public int a10236;
+  public int a10237;
+  public int a10238;
+  public int a10239;
+  public int a10240;
+  public int a10241;
+  public int a10242;
+  public int a10243;
+  public int a10244;
+  public int a10245;
+  public int a10246;
+  public int a10247;
+  public int a10248;
+  public int a10249;
+  public int a10250;
+  public int a10251;
+  public int a10252;
+  public int a10253;
+  public int a10254;
+  public int a10255;
+  public int a10256;
+  public int a10257;
+  public int a10258;
+  public int a10259;
+  public int a10260;
+  public int a10261;
+  public int a10262;
+  public int a10263;
+  public int a10264;
+  public int a10265;
+  public int a10266;
+  public int a10267;
+  public int a10268;
+  public int a10269;
+  public int a10270;
+  public int a10271;
+  public int a10272;
+  public int a10273;
+  public int a10274;
+  public int a10275;
+  public int a10276;
+  public int a10277;
+  public int a10278;
+  public int a10279;
+  public int a10280;
+  public int a10281;
+  public int a10282;
+  public int a10283;
+  public int a10284;
+  public int a10285;
+  public int a10286;
+  public int a10287;
+  public int a10288;
+  public int a10289;
+  public int a10290;
+  public int a10291;
+  public int a10292;
+  public int a10293;
+  public int a10294;
+  public int a10295;
+  public int a10296;
+  public int a10297;
+  public int a10298;
+  public int a10299;
+  public int a10300;
+  public int a10301;
+  public int a10302;
+  public int a10303;
+  public int a10304;
+  public int a10305;
+  public int a10306;
+  public int a10307;
+  public int a10308;
+  public int a10309;
+  public int a10310;
+  public int a10311;
+  public int a10312;
+  public int a10313;
+  public int a10314;
+  public int a10315;
+  public int a10316;
+  public int a10317;
+  public int a10318;
+  public int a10319;
+  public int a10320;
+  public int a10321;
+  public int a10322;
+  public int a10323;
+  public int a10324;
+  public int a10325;
+  public int a10326;
+  public int a10327;
+  public int a10328;
+  public int a10329;
+  public int a10330;
+  public int a10331;
+  public int a10332;
+  public int a10333;
+  public int a10334;
+  public int a10335;
+  public int a10336;
+  public int a10337;
+  public int a10338;
+  public int a10339;
+  public int a10340;
+  public int a10341;
+  public int a10342;
+  public int a10343;
+  public int a10344;
+  public int a10345;
+  public int a10346;
+  public int a10347;
+  public int a10348;
+  public int a10349;
+  public int a10350;
+  public int a10351;
+  public int a10352;
+  public int a10353;
+  public int a10354;
+  public int a10355;
+  public int a10356;
+  public int a10357;
+  public int a10358;
+  public int a10359;
+  public int a10360;
+  public int a10361;
+  public int a10362;
+  public int a10363;
+  public int a10364;
+  public int a10365;
+  public int a10366;
+  public int a10367;
+  public int a10368;
+  public int a10369;
+  public int a10370;
+  public int a10371;
+  public int a10372;
+  public int a10373;
+  public int a10374;
+  public int a10375;
+  public int a10376;
+  public int a10377;
+  public int a10378;
+  public int a10379;
+  public int a10380;
+  public int a10381;
+  public int a10382;
+  public int a10383;
+  public int a10384;
+  public int a10385;
+  public int a10386;
+  public int a10387;
+  public int a10388;
+  public int a10389;
+  public int a10390;
+  public int a10391;
+  public int a10392;
+  public int a10393;
+  public int a10394;
+  public int a10395;
+  public int a10396;
+  public int a10397;
+  public int a10398;
+  public int a10399;
+  public int a10400;
+  public int a10401;
+  public int a10402;
+  public int a10403;
+  public int a10404;
+  public int a10405;
+  public int a10406;
+  public int a10407;
+  public int a10408;
+  public int a10409;
+  public int a10410;
+  public int a10411;
+  public int a10412;
+  public int a10413;
+  public int a10414;
+  public int a10415;
+  public int a10416;
+  public int a10417;
+  public int a10418;
+  public int a10419;
+  public int a10420;
+  public int a10421;
+  public int a10422;
+  public int a10423;
+  public int a10424;
+  public int a10425;
+  public int a10426;
+  public int a10427;
+  public int a10428;
+  public int a10429;
+  public int a10430;
+  public int a10431;
+  public int a10432;
+  public int a10433;
+  public int a10434;
+  public int a10435;
+  public int a10436;
+  public int a10437;
+  public int a10438;
+  public int a10439;
+  public int a10440;
+  public int a10441;
+  public int a10442;
+  public int a10443;
+  public int a10444;
+  public int a10445;
+  public int a10446;
+  public int a10447;
+  public int a10448;
+  public int a10449;
+  public int a10450;
+  public int a10451;
+  public int a10452;
+  public int a10453;
+  public int a10454;
+  public int a10455;
+  public int a10456;
+  public int a10457;
+  public int a10458;
+  public int a10459;
+  public int a10460;
+  public int a10461;
+  public int a10462;
+  public int a10463;
+  public int a10464;
+  public int a10465;
+  public int a10466;
+  public int a10467;
+  public int a10468;
+  public int a10469;
+  public int a10470;
+  public int a10471;
+  public int a10472;
+  public int a10473;
+  public int a10474;
+  public int a10475;
+  public int a10476;
+  public int a10477;
+  public int a10478;
+  public int a10479;
+  public int a10480;
+  public int a10481;
+  public int a10482;
+  public int a10483;
+  public int a10484;
+  public int a10485;
+  public int a10486;
+  public int a10487;
+  public int a10488;
+  public int a10489;
+  public int a10490;
+  public int a10491;
+  public int a10492;
+  public int a10493;
+  public int a10494;
+  public int a10495;
+  public int a10496;
+  public int a10497;
+  public int a10498;
+  public int a10499;
+  public int a10500;
+  public int a10501;
+  public int a10502;
+  public int a10503;
+  public int a10504;
+  public int a10505;
+  public int a10506;
+  public int a10507;
+  public int a10508;
+  public int a10509;
+  public int a10510;
+  public int a10511;
+  public int a10512;
+  public int a10513;
+  public int a10514;
+  public int a10515;
+  public int a10516;
+  public int a10517;
+  public int a10518;
+  public int a10519;
+  public int a10520;
+  public int a10521;
+  public int a10522;
+  public int a10523;
+  public int a10524;
+  public int a10525;
+  public int a10526;
+  public int a10527;
+  public int a10528;
+  public int a10529;
+  public int a10530;
+  public int a10531;
+  public int a10532;
+  public int a10533;
+  public int a10534;
+  public int a10535;
+  public int a10536;
+  public int a10537;
+  public int a10538;
+  public int a10539;
+  public int a10540;
+  public int a10541;
+  public int a10542;
+  public int a10543;
+  public int a10544;
+  public int a10545;
+  public int a10546;
+  public int a10547;
+  public int a10548;
+  public int a10549;
+  public int a10550;
+  public int a10551;
+  public int a10552;
+  public int a10553;
+  public int a10554;
+  public int a10555;
+  public int a10556;
+  public int a10557;
+  public int a10558;
+  public int a10559;
+  public int a10560;
+  public int a10561;
+  public int a10562;
+  public int a10563;
+  public int a10564;
+  public int a10565;
+  public int a10566;
+  public int a10567;
+  public int a10568;
+  public int a10569;
+  public int a10570;
+  public int a10571;
+  public int a10572;
+  public int a10573;
+  public int a10574;
+  public int a10575;
+  public int a10576;
+  public int a10577;
+  public int a10578;
+  public int a10579;
+  public int a10580;
+  public int a10581;
+  public int a10582;
+  public int a10583;
+  public int a10584;
+  public int a10585;
+  public int a10586;
+  public int a10587;
+  public int a10588;
+  public int a10589;
+  public int a10590;
+  public int a10591;
+  public int a10592;
+  public int a10593;
+  public int a10594;
+  public int a10595;
+  public int a10596;
+  public int a10597;
+  public int a10598;
+  public int a10599;
+  public int a10600;
+  public int a10601;
+  public int a10602;
+  public int a10603;
+  public int a10604;
+  public int a10605;
+  public int a10606;
+  public int a10607;
+  public int a10608;
+  public int a10609;
+  public int a10610;
+  public int a10611;
+  public int a10612;
+  public int a10613;
+  public int a10614;
+  public int a10615;
+  public int a10616;
+  public int a10617;
+  public int a10618;
+  public int a10619;
+  public int a10620;
+  public int a10621;
+  public int a10622;
+  public int a10623;
+  public int a10624;
+  public int a10625;
+  public int a10626;
+  public int a10627;
+  public int a10628;
+  public int a10629;
+  public int a10630;
+  public int a10631;
+  public int a10632;
+  public int a10633;
+  public int a10634;
+  public int a10635;
+  public int a10636;
+  public int a10637;
+  public int a10638;
+  public int a10639;
+  public int a10640;
+  public int a10641;
+  public int a10642;
+  public int a10643;
+  public int a10644;
+  public int a10645;
+  public int a10646;
+  public int a10647;
+  public int a10648;
+  public int a10649;
+  public int a10650;
+  public int a10651;
+  public int a10652;
+  public int a10653;
+  public int a10654;
+  public int a10655;
+  public int a10656;
+  public int a10657;
+  public int a10658;
+  public int a10659;
+  public int a10660;
+  public int a10661;
+  public int a10662;
+  public int a10663;
+  public int a10664;
+  public int a10665;
+  public int a10666;
+  public int a10667;
+  public int a10668;
+  public int a10669;
+  public int a10670;
+  public int a10671;
+  public int a10672;
+  public int a10673;
+  public int a10674;
+  public int a10675;
+  public int a10676;
+  public int a10677;
+  public int a10678;
+  public int a10679;
+  public int a10680;
+  public int a10681;
+  public int a10682;
+  public int a10683;
+  public int a10684;
+  public int a10685;
+  public int a10686;
+  public int a10687;
+  public int a10688;
+  public int a10689;
+  public int a10690;
+  public int a10691;
+  public int a10692;
+  public int a10693;
+  public int a10694;
+  public int a10695;
+  public int a10696;
+  public int a10697;
+  public int a10698;
+  public int a10699;
+  public int a10700;
+  public int a10701;
+  public int a10702;
+  public int a10703;
+  public int a10704;
+  public int a10705;
+  public int a10706;
+  public int a10707;
+  public int a10708;
+  public int a10709;
+  public int a10710;
+  public int a10711;
+  public int a10712;
+  public int a10713;
+  public int a10714;
+  public int a10715;
+  public int a10716;
+  public int a10717;
+  public int a10718;
+  public int a10719;
+  public int a10720;
+  public int a10721;
+  public int a10722;
+  public int a10723;
+  public int a10724;
+  public int a10725;
+  public int a10726;
+  public int a10727;
+  public int a10728;
+  public int a10729;
+  public int a10730;
+  public int a10731;
+  public int a10732;
+  public int a10733;
+  public int a10734;
+  public int a10735;
+  public int a10736;
+  public int a10737;
+  public int a10738;
+  public int a10739;
+  public int a10740;
+  public int a10741;
+  public int a10742;
+  public int a10743;
+  public int a10744;
+  public int a10745;
+  public int a10746;
+  public int a10747;
+  public int a10748;
+  public int a10749;
+  public int a10750;
+  public int a10751;
+  public int a10752;
+  public int a10753;
+  public int a10754;
+  public int a10755;
+  public int a10756;
+  public int a10757;
+  public int a10758;
+  public int a10759;
+  public int a10760;
+  public int a10761;
+  public int a10762;
+  public int a10763;
+  public int a10764;
+  public int a10765;
+  public int a10766;
+  public int a10767;
+  public int a10768;
+  public int a10769;
+  public int a10770;
+  public int a10771;
+  public int a10772;
+  public int a10773;
+  public int a10774;
+  public int a10775;
+  public int a10776;
+  public int a10777;
+  public int a10778;
+  public int a10779;
+  public int a10780;
+  public int a10781;
+  public int a10782;
+  public int a10783;
+  public int a10784;
+  public int a10785;
+  public int a10786;
+  public int a10787;
+  public int a10788;
+  public int a10789;
+  public int a10790;
+  public int a10791;
+  public int a10792;
+  public int a10793;
+  public int a10794;
+  public int a10795;
+  public int a10796;
+  public int a10797;
+  public int a10798;
+  public int a10799;
+  public int a10800;
+  public int a10801;
+  public int a10802;
+  public int a10803;
+  public int a10804;
+  public int a10805;
+  public int a10806;
+  public int a10807;
+  public int a10808;
+  public int a10809;
+  public int a10810;
+  public int a10811;
+  public int a10812;
+  public int a10813;
+  public int a10814;
+  public int a10815;
+  public int a10816;
+  public int a10817;
+  public int a10818;
+  public int a10819;
+  public int a10820;
+  public int a10821;
+  public int a10822;
+  public int a10823;
+  public int a10824;
+  public int a10825;
+  public int a10826;
+  public int a10827;
+  public int a10828;
+  public int a10829;
+  public int a10830;
+  public int a10831;
+  public int a10832;
+  public int a10833;
+  public int a10834;
+  public int a10835;
+  public int a10836;
+  public int a10837;
+  public int a10838;
+  public int a10839;
+  public int a10840;
+  public int a10841;
+  public int a10842;
+  public int a10843;
+  public int a10844;
+  public int a10845;
+  public int a10846;
+  public int a10847;
+  public int a10848;
+  public int a10849;
+  public int a10850;
+  public int a10851;
+  public int a10852;
+  public int a10853;
+  public int a10854;
+  public int a10855;
+  public int a10856;
+  public int a10857;
+  public int a10858;
+  public int a10859;
+  public int a10860;
+  public int a10861;
+  public int a10862;
+  public int a10863;
+  public int a10864;
+  public int a10865;
+  public int a10866;
+  public int a10867;
+  public int a10868;
+  public int a10869;
+  public int a10870;
+  public int a10871;
+  public int a10872;
+  public int a10873;
+  public int a10874;
+  public int a10875;
+  public int a10876;
+  public int a10877;
+  public int a10878;
+  public int a10879;
+  public int a10880;
+  public int a10881;
+  public int a10882;
+  public int a10883;
+  public int a10884;
+  public int a10885;
+  public int a10886;
+  public int a10887;
+  public int a10888;
+  public int a10889;
+  public int a10890;
+  public int a10891;
+  public int a10892;
+  public int a10893;
+  public int a10894;
+  public int a10895;
+  public int a10896;
+  public int a10897;
+  public int a10898;
+  public int a10899;
+  public int a10900;
+  public int a10901;
+  public int a10902;
+  public int a10903;
+  public int a10904;
+  public int a10905;
+  public int a10906;
+  public int a10907;
+  public int a10908;
+  public int a10909;
+  public int a10910;
+  public int a10911;
+  public int a10912;
+  public int a10913;
+  public int a10914;
+  public int a10915;
+  public int a10916;
+  public int a10917;
+  public int a10918;
+  public int a10919;
+  public int a10920;
+  public int a10921;
+  public int a10922;
+  public int a10923;
+  public int a10924;
+  public int a10925;
+  public int a10926;
+  public int a10927;
+  public int a10928;
+  public int a10929;
+  public int a10930;
+  public int a10931;
+  public int a10932;
+  public int a10933;
+  public int a10934;
+  public int a10935;
+  public int a10936;
+  public int a10937;
+  public int a10938;
+  public int a10939;
+  public int a10940;
+  public int a10941;
+  public int a10942;
+  public int a10943;
+  public int a10944;
+  public int a10945;
+  public int a10946;
+  public int a10947;
+  public int a10948;
+  public int a10949;
+  public int a10950;
+  public int a10951;
+  public int a10952;
+  public int a10953;
+  public int a10954;
+  public int a10955;
+  public int a10956;
+  public int a10957;
+  public int a10958;
+  public int a10959;
+  public int a10960;
+  public int a10961;
+  public int a10962;
+  public int a10963;
+  public int a10964;
+  public int a10965;
+  public int a10966;
+  public int a10967;
+  public int a10968;
+  public int a10969;
+  public int a10970;
+  public int a10971;
+  public int a10972;
+  public int a10973;
+  public int a10974;
+  public int a10975;
+  public int a10976;
+  public int a10977;
+  public int a10978;
+  public int a10979;
+  public int a10980;
+  public int a10981;
+  public int a10982;
+  public int a10983;
+  public int a10984;
+  public int a10985;
+  public int a10986;
+  public int a10987;
+  public int a10988;
+  public int a10989;
+  public int a10990;
+  public int a10991;
+  public int a10992;
+  public int a10993;
+  public int a10994;
+  public int a10995;
+  public int a10996;
+  public int a10997;
+  public int a10998;
+  public int a10999;
+  public int a11000;
+  public int a11001;
+  public int a11002;
+  public int a11003;
+  public int a11004;
+  public int a11005;
+  public int a11006;
+  public int a11007;
+  public int a11008;
+  public int a11009;
+  public int a11010;
+  public int a11011;
+  public int a11012;
+  public int a11013;
+  public int a11014;
+  public int a11015;
+  public int a11016;
+  public int a11017;
+  public int a11018;
+  public int a11019;
+  public int a11020;
+  public int a11021;
+  public int a11022;
+  public int a11023;
+  public int a11024;
+  public int a11025;
+  public int a11026;
+  public int a11027;
+  public int a11028;
+  public int a11029;
+  public int a11030;
+  public int a11031;
+  public int a11032;
+  public int a11033;
+  public int a11034;
+  public int a11035;
+  public int a11036;
+  public int a11037;
+  public int a11038;
+  public int a11039;
+  public int a11040;
+  public int a11041;
+  public int a11042;
+  public int a11043;
+  public int a11044;
+  public int a11045;
+  public int a11046;
+  public int a11047;
+  public int a11048;
+  public int a11049;
+  public int a11050;
+  public int a11051;
+  public int a11052;
+  public int a11053;
+  public int a11054;
+  public int a11055;
+  public int a11056;
+  public int a11057;
+  public int a11058;
+  public int a11059;
+  public int a11060;
+  public int a11061;
+  public int a11062;
+  public int a11063;
+  public int a11064;
+  public int a11065;
+  public int a11066;
+  public int a11067;
+  public int a11068;
+  public int a11069;
+  public int a11070;
+  public int a11071;
+  public int a11072;
+  public int a11073;
+  public int a11074;
+  public int a11075;
+  public int a11076;
+  public int a11077;
+  public int a11078;
+  public int a11079;
+  public int a11080;
+  public int a11081;
+  public int a11082;
+  public int a11083;
+  public int a11084;
+  public int a11085;
+  public int a11086;
+  public int a11087;
+  public int a11088;
+  public int a11089;
+  public int a11090;
+  public int a11091;
+  public int a11092;
+  public int a11093;
+  public int a11094;
+  public int a11095;
+  public int a11096;
+  public int a11097;
+  public int a11098;
+  public int a11099;
+  public int a11100;
+  public int a11101;
+  public int a11102;
+  public int a11103;
+  public int a11104;
+  public int a11105;
+  public int a11106;
+  public int a11107;
+  public int a11108;
+  public int a11109;
+  public int a11110;
+  public int a11111;
+  public int a11112;
+  public int a11113;
+  public int a11114;
+  public int a11115;
+  public int a11116;
+  public int a11117;
+  public int a11118;
+  public int a11119;
+  public int a11120;
+  public int a11121;
+  public int a11122;
+  public int a11123;
+  public int a11124;
+  public int a11125;
+  public int a11126;
+  public int a11127;
+  public int a11128;
+  public int a11129;
+  public int a11130;
+  public int a11131;
+  public int a11132;
+  public int a11133;
+  public int a11134;
+  public int a11135;
+  public int a11136;
+  public int a11137;
+  public int a11138;
+  public int a11139;
+  public int a11140;
+  public int a11141;
+  public int a11142;
+  public int a11143;
+  public int a11144;
+  public int a11145;
+  public int a11146;
+  public int a11147;
+  public int a11148;
+  public int a11149;
+  public int a11150;
+  public int a11151;
+  public int a11152;
+  public int a11153;
+  public int a11154;
+  public int a11155;
+  public int a11156;
+  public int a11157;
+  public int a11158;
+  public int a11159;
+  public int a11160;
+  public int a11161;
+  public int a11162;
+  public int a11163;
+  public int a11164;
+  public int a11165;
+  public int a11166;
+  public int a11167;
+  public int a11168;
+  public int a11169;
+  public int a11170;
+  public int a11171;
+  public int a11172;
+  public int a11173;
+  public int a11174;
+  public int a11175;
+  public int a11176;
+  public int a11177;
+  public int a11178;
+  public int a11179;
+  public int a11180;
+  public int a11181;
+  public int a11182;
+  public int a11183;
+  public int a11184;
+  public int a11185;
+  public int a11186;
+  public int a11187;
+  public int a11188;
+  public int a11189;
+  public int a11190;
+  public int a11191;
+  public int a11192;
+  public int a11193;
+  public int a11194;
+  public int a11195;
+  public int a11196;
+  public int a11197;
+  public int a11198;
+  public int a11199;
+  public int a11200;
+  public int a11201;
+  public int a11202;
+  public int a11203;
+  public int a11204;
+  public int a11205;
+  public int a11206;
+  public int a11207;
+  public int a11208;
+  public int a11209;
+  public int a11210;
+  public int a11211;
+  public int a11212;
+  public int a11213;
+  public int a11214;
+  public int a11215;
+  public int a11216;
+  public int a11217;
+  public int a11218;
+  public int a11219;
+  public int a11220;
+  public int a11221;
+  public int a11222;
+  public int a11223;
+  public int a11224;
+  public int a11225;
+  public int a11226;
+  public int a11227;
+  public int a11228;
+  public int a11229;
+  public int a11230;
+  public int a11231;
+  public int a11232;
+  public int a11233;
+  public int a11234;
+  public int a11235;
+  public int a11236;
+  public int a11237;
+  public int a11238;
+  public int a11239;
+  public int a11240;
+  public int a11241;
+  public int a11242;
+  public int a11243;
+  public int a11244;
+  public int a11245;
+  public int a11246;
+  public int a11247;
+  public int a11248;
+  public int a11249;
+  public int a11250;
+  public int a11251;
+  public int a11252;
+  public int a11253;
+  public int a11254;
+  public int a11255;
+  public int a11256;
+  public int a11257;
+  public int a11258;
+  public int a11259;
+  public int a11260;
+  public int a11261;
+  public int a11262;
+  public int a11263;
+  public int a11264;
+  public int a11265;
+  public int a11266;
+  public int a11267;
+  public int a11268;
+  public int a11269;
+  public int a11270;
+  public int a11271;
+  public int a11272;
+  public int a11273;
+  public int a11274;
+  public int a11275;
+  public int a11276;
+  public int a11277;
+  public int a11278;
+  public int a11279;
+  public int a11280;
+  public int a11281;
+  public int a11282;
+  public int a11283;
+  public int a11284;
+  public int a11285;
+  public int a11286;
+  public int a11287;
+  public int a11288;
+  public int a11289;
+  public int a11290;
+  public int a11291;
+  public int a11292;
+  public int a11293;
+  public int a11294;
+  public int a11295;
+  public int a11296;
+  public int a11297;
+  public int a11298;
+  public int a11299;
+  public int a11300;
+  public int a11301;
+  public int a11302;
+  public int a11303;
+  public int a11304;
+  public int a11305;
+  public int a11306;
+  public int a11307;
+  public int a11308;
+  public int a11309;
+  public int a11310;
+  public int a11311;
+  public int a11312;
+  public int a11313;
+  public int a11314;
+  public int a11315;
+  public int a11316;
+  public int a11317;
+  public int a11318;
+  public int a11319;
+  public int a11320;
+  public int a11321;
+  public int a11322;
+  public int a11323;
+  public int a11324;
+  public int a11325;
+  public int a11326;
+  public int a11327;
+  public int a11328;
+  public int a11329;
+  public int a11330;
+  public int a11331;
+  public int a11332;
+  public int a11333;
+  public int a11334;
+  public int a11335;
+  public int a11336;
+  public int a11337;
+  public int a11338;
+  public int a11339;
+  public int a11340;
+  public int a11341;
+  public int a11342;
+  public int a11343;
+  public int a11344;
+  public int a11345;
+  public int a11346;
+  public int a11347;
+  public int a11348;
+  public int a11349;
+  public int a11350;
+  public int a11351;
+  public int a11352;
+  public int a11353;
+  public int a11354;
+  public int a11355;
+  public int a11356;
+  public int a11357;
+  public int a11358;
+  public int a11359;
+  public int a11360;
+  public int a11361;
+  public int a11362;
+  public int a11363;
+  public int a11364;
+  public int a11365;
+  public int a11366;
+  public int a11367;
+  public int a11368;
+  public int a11369;
+  public int a11370;
+  public int a11371;
+  public int a11372;
+  public int a11373;
+  public int a11374;
+  public int a11375;
+  public int a11376;
+  public int a11377;
+  public int a11378;
+  public int a11379;
+  public int a11380;
+  public int a11381;
+  public int a11382;
+  public int a11383;
+  public int a11384;
+  public int a11385;
+  public int a11386;
+  public int a11387;
+  public int a11388;
+  public int a11389;
+  public int a11390;
+  public int a11391;
+  public int a11392;
+  public int a11393;
+  public int a11394;
+  public int a11395;
+  public int a11396;
+  public int a11397;
+  public int a11398;
+  public int a11399;
+  public int a11400;
+  public int a11401;
+  public int a11402;
+  public int a11403;
+  public int a11404;
+  public int a11405;
+  public int a11406;
+  public int a11407;
+  public int a11408;
+  public int a11409;
+  public int a11410;
+  public int a11411;
+  public int a11412;
+  public int a11413;
+  public int a11414;
+  public int a11415;
+  public int a11416;
+  public int a11417;
+  public int a11418;
+  public int a11419;
+  public int a11420;
+  public int a11421;
+  public int a11422;
+  public int a11423;
+  public int a11424;
+  public int a11425;
+  public int a11426;
+  public int a11427;
+  public int a11428;
+  public int a11429;
+  public int a11430;
+  public int a11431;
+  public int a11432;
+  public int a11433;
+  public int a11434;
+  public int a11435;
+  public int a11436;
+  public int a11437;
+  public int a11438;
+  public int a11439;
+  public int a11440;
+  public int a11441;
+  public int a11442;
+  public int a11443;
+  public int a11444;
+  public int a11445;
+  public int a11446;
+  public int a11447;
+  public int a11448;
+  public int a11449;
+  public int a11450;
+  public int a11451;
+  public int a11452;
+  public int a11453;
+  public int a11454;
+  public int a11455;
+  public int a11456;
+  public int a11457;
+  public int a11458;
+  public int a11459;
+  public int a11460;
+  public int a11461;
+  public int a11462;
+  public int a11463;
+  public int a11464;
+  public int a11465;
+  public int a11466;
+  public int a11467;
+  public int a11468;
+  public int a11469;
+  public int a11470;
+  public int a11471;
+  public int a11472;
+  public int a11473;
+  public int a11474;
+  public int a11475;
+  public int a11476;
+  public int a11477;
+  public int a11478;
+  public int a11479;
+  public int a11480;
+  public int a11481;
+  public int a11482;
+  public int a11483;
+  public int a11484;
+  public int a11485;
+  public int a11486;
+  public int a11487;
+  public int a11488;
+  public int a11489;
+  public int a11490;
+  public int a11491;
+  public int a11492;
+  public int a11493;
+  public int a11494;
+  public int a11495;
+  public int a11496;
+  public int a11497;
+  public int a11498;
+  public int a11499;
+  public int a11500;
+  public int a11501;
+  public int a11502;
+  public int a11503;
+  public int a11504;
+  public int a11505;
+  public int a11506;
+  public int a11507;
+  public int a11508;
+  public int a11509;
+  public int a11510;
+  public int a11511;
+  public int a11512;
+  public int a11513;
+  public int a11514;
+  public int a11515;
+  public int a11516;
+  public int a11517;
+  public int a11518;
+  public int a11519;
+  public int a11520;
+  public int a11521;
+  public int a11522;
+  public int a11523;
+  public int a11524;
+  public int a11525;
+  public int a11526;
+  public int a11527;
+  public int a11528;
+  public int a11529;
+  public int a11530;
+  public int a11531;
+  public int a11532;
+  public int a11533;
+  public int a11534;
+  public int a11535;
+  public int a11536;
+  public int a11537;
+  public int a11538;
+  public int a11539;
+  public int a11540;
+  public int a11541;
+  public int a11542;
+  public int a11543;
+  public int a11544;
+  public int a11545;
+  public int a11546;
+  public int a11547;
+  public int a11548;
+  public int a11549;
+  public int a11550;
+  public int a11551;
+  public int a11552;
+  public int a11553;
+  public int a11554;
+  public int a11555;
+  public int a11556;
+  public int a11557;
+  public int a11558;
+  public int a11559;
+  public int a11560;
+  public int a11561;
+  public int a11562;
+  public int a11563;
+  public int a11564;
+  public int a11565;
+  public int a11566;
+  public int a11567;
+  public int a11568;
+  public int a11569;
+  public int a11570;
+  public int a11571;
+  public int a11572;
+  public int a11573;
+  public int a11574;
+  public int a11575;
+  public int a11576;
+  public int a11577;
+  public int a11578;
+  public int a11579;
+  public int a11580;
+  public int a11581;
+  public int a11582;
+  public int a11583;
+  public int a11584;
+  public int a11585;
+  public int a11586;
+  public int a11587;
+  public int a11588;
+  public int a11589;
+  public int a11590;
+  public int a11591;
+  public int a11592;
+  public int a11593;
+  public int a11594;
+  public int a11595;
+  public int a11596;
+  public int a11597;
+  public int a11598;
+  public int a11599;
+  public int a11600;
+  public int a11601;
+  public int a11602;
+  public int a11603;
+  public int a11604;
+  public int a11605;
+  public int a11606;
+  public int a11607;
+  public int a11608;
+  public int a11609;
+  public int a11610;
+  public int a11611;
+  public int a11612;
+  public int a11613;
+  public int a11614;
+  public int a11615;
+  public int a11616;
+  public int a11617;
+  public int a11618;
+  public int a11619;
+  public int a11620;
+  public int a11621;
+  public int a11622;
+  public int a11623;
+  public int a11624;
+  public int a11625;
+  public int a11626;
+  public int a11627;
+  public int a11628;
+  public int a11629;
+  public int a11630;
+  public int a11631;
+  public int a11632;
+  public int a11633;
+  public int a11634;
+  public int a11635;
+  public int a11636;
+  public int a11637;
+  public int a11638;
+  public int a11639;
+  public int a11640;
+  public int a11641;
+  public int a11642;
+  public int a11643;
+  public int a11644;
+  public int a11645;
+  public int a11646;
+  public int a11647;
+  public int a11648;
+  public int a11649;
+  public int a11650;
+  public int a11651;
+  public int a11652;
+  public int a11653;
+  public int a11654;
+  public int a11655;
+  public int a11656;
+  public int a11657;
+  public int a11658;
+  public int a11659;
+  public int a11660;
+  public int a11661;
+  public int a11662;
+  public int a11663;
+  public int a11664;
+  public int a11665;
+  public int a11666;
+  public int a11667;
+  public int a11668;
+  public int a11669;
+  public int a11670;
+  public int a11671;
+  public int a11672;
+  public int a11673;
+  public int a11674;
+  public int a11675;
+  public int a11676;
+  public int a11677;
+  public int a11678;
+  public int a11679;
+  public int a11680;
+  public int a11681;
+  public int a11682;
+  public int a11683;
+  public int a11684;
+  public int a11685;
+  public int a11686;
+  public int a11687;
+  public int a11688;
+  public int a11689;
+  public int a11690;
+  public int a11691;
+  public int a11692;
+  public int a11693;
+  public int a11694;
+  public int a11695;
+  public int a11696;
+  public int a11697;
+  public int a11698;
+  public int a11699;
+  public int a11700;
+  public int a11701;
+  public int a11702;
+  public int a11703;
+  public int a11704;
+  public int a11705;
+  public int a11706;
+  public int a11707;
+  public int a11708;
+  public int a11709;
+  public int a11710;
+  public int a11711;
+  public int a11712;
+  public int a11713;
+  public int a11714;
+  public int a11715;
+  public int a11716;
+  public int a11717;
+  public int a11718;
+  public int a11719;
+  public int a11720;
+  public int a11721;
+  public int a11722;
+  public int a11723;
+  public int a11724;
+  public int a11725;
+  public int a11726;
+  public int a11727;
+  public int a11728;
+  public int a11729;
+  public int a11730;
+  public int a11731;
+  public int a11732;
+  public int a11733;
+  public int a11734;
+  public int a11735;
+  public int a11736;
+  public int a11737;
+  public int a11738;
+  public int a11739;
+  public int a11740;
+  public int a11741;
+  public int a11742;
+  public int a11743;
+  public int a11744;
+  public int a11745;
+  public int a11746;
+  public int a11747;
+  public int a11748;
+  public int a11749;
+  public int a11750;
+  public int a11751;
+  public int a11752;
+  public int a11753;
+  public int a11754;
+  public int a11755;
+  public int a11756;
+  public int a11757;
+  public int a11758;
+  public int a11759;
+  public int a11760;
+  public int a11761;
+  public int a11762;
+  public int a11763;
+  public int a11764;
+  public int a11765;
+  public int a11766;
+  public int a11767;
+  public int a11768;
+  public int a11769;
+  public int a11770;
+  public int a11771;
+  public int a11772;
+  public int a11773;
+  public int a11774;
+  public int a11775;
+  public int a11776;
+  public int a11777;
+  public int a11778;
+  public int a11779;
+  public int a11780;
+  public int a11781;
+  public int a11782;
+  public int a11783;
+  public int a11784;
+  public int a11785;
+  public int a11786;
+  public int a11787;
+  public int a11788;
+  public int a11789;
+  public int a11790;
+  public int a11791;
+  public int a11792;
+  public int a11793;
+  public int a11794;
+  public int a11795;
+  public int a11796;
+  public int a11797;
+  public int a11798;
+  public int a11799;
+  public int a11800;
+  public int a11801;
+  public int a11802;
+  public int a11803;
+  public int a11804;
+  public int a11805;
+  public int a11806;
+  public int a11807;
+  public int a11808;
+  public int a11809;
+  public int a11810;
+  public int a11811;
+  public int a11812;
+  public int a11813;
+  public int a11814;
+  public int a11815;
+  public int a11816;
+  public int a11817;
+  public int a11818;
+  public int a11819;
+  public int a11820;
+  public int a11821;
+  public int a11822;
+  public int a11823;
+  public int a11824;
+  public int a11825;
+  public int a11826;
+  public int a11827;
+  public int a11828;
+  public int a11829;
+  public int a11830;
+  public int a11831;
+  public int a11832;
+  public int a11833;
+  public int a11834;
+  public int a11835;
+  public int a11836;
+  public int a11837;
+  public int a11838;
+  public int a11839;
+  public int a11840;
+  public int a11841;
+  public int a11842;
+  public int a11843;
+  public int a11844;
+  public int a11845;
+  public int a11846;
+  public int a11847;
+  public int a11848;
+  public int a11849;
+  public int a11850;
+  public int a11851;
+  public int a11852;
+  public int a11853;
+  public int a11854;
+  public int a11855;
+  public int a11856;
+  public int a11857;
+  public int a11858;
+  public int a11859;
+  public int a11860;
+  public int a11861;
+  public int a11862;
+  public int a11863;
+  public int a11864;
+  public int a11865;
+  public int a11866;
+  public int a11867;
+  public int a11868;
+  public int a11869;
+  public int a11870;
+  public int a11871;
+  public int a11872;
+  public int a11873;
+  public int a11874;
+  public int a11875;
+  public int a11876;
+  public int a11877;
+  public int a11878;
+  public int a11879;
+  public int a11880;
+  public int a11881;
+  public int a11882;
+  public int a11883;
+  public int a11884;
+  public int a11885;
+  public int a11886;
+  public int a11887;
+  public int a11888;
+  public int a11889;
+  public int a11890;
+  public int a11891;
+  public int a11892;
+  public int a11893;
+  public int a11894;
+  public int a11895;
+  public int a11896;
+  public int a11897;
+  public int a11898;
+  public int a11899;
+  public int a11900;
+  public int a11901;
+  public int a11902;
+  public int a11903;
+  public int a11904;
+  public int a11905;
+  public int a11906;
+  public int a11907;
+  public int a11908;
+  public int a11909;
+  public int a11910;
+  public int a11911;
+  public int a11912;
+  public int a11913;
+  public int a11914;
+  public int a11915;
+  public int a11916;
+  public int a11917;
+  public int a11918;
+  public int a11919;
+  public int a11920;
+  public int a11921;
+  public int a11922;
+  public int a11923;
+  public int a11924;
+  public int a11925;
+  public int a11926;
+  public int a11927;
+  public int a11928;
+  public int a11929;
+  public int a11930;
+  public int a11931;
+  public int a11932;
+  public int a11933;
+  public int a11934;
+  public int a11935;
+  public int a11936;
+  public int a11937;
+  public int a11938;
+  public int a11939;
+  public int a11940;
+  public int a11941;
+  public int a11942;
+  public int a11943;
+  public int a11944;
+  public int a11945;
+  public int a11946;
+  public int a11947;
+  public int a11948;
+  public int a11949;
+  public int a11950;
+  public int a11951;
+  public int a11952;
+  public int a11953;
+  public int a11954;
+  public int a11955;
+  public int a11956;
+  public int a11957;
+  public int a11958;
+  public int a11959;
+  public int a11960;
+  public int a11961;
+  public int a11962;
+  public int a11963;
+  public int a11964;
+  public int a11965;
+  public int a11966;
+  public int a11967;
+  public int a11968;
+  public int a11969;
+  public int a11970;
+  public int a11971;
+  public int a11972;
+  public int a11973;
+  public int a11974;
+  public int a11975;
+  public int a11976;
+  public int a11977;
+  public int a11978;
+  public int a11979;
+  public int a11980;
+  public int a11981;
+  public int a11982;
+  public int a11983;
+  public int a11984;
+  public int a11985;
+  public int a11986;
+  public int a11987;
+  public int a11988;
+  public int a11989;
+  public int a11990;
+  public int a11991;
+  public int a11992;
+  public int a11993;
+  public int a11994;
+  public int a11995;
+  public int a11996;
+  public int a11997;
+  public int a11998;
+  public int a11999;
+  public int a12000;
+  public int a12001;
+  public int a12002;
+  public int a12003;
+  public int a12004;
+  public int a12005;
+  public int a12006;
+  public int a12007;
+  public int a12008;
+  public int a12009;
+  public int a12010;
+  public int a12011;
+  public int a12012;
+  public int a12013;
+  public int a12014;
+  public int a12015;
+  public int a12016;
+  public int a12017;
+  public int a12018;
+  public int a12019;
+  public int a12020;
+  public int a12021;
+  public int a12022;
+  public int a12023;
+  public int a12024;
+  public int a12025;
+  public int a12026;
+  public int a12027;
+  public int a12028;
+  public int a12029;
+  public int a12030;
+  public int a12031;
+  public int a12032;
+  public int a12033;
+  public int a12034;
+  public int a12035;
+  public int a12036;
+  public int a12037;
+  public int a12038;
+  public int a12039;
+  public int a12040;
+  public int a12041;
+  public int a12042;
+  public int a12043;
+  public int a12044;
+  public int a12045;
+  public int a12046;
+  public int a12047;
+  public int a12048;
+  public int a12049;
+  public int a12050;
+  public int a12051;
+  public int a12052;
+  public int a12053;
+  public int a12054;
+  public int a12055;
+  public int a12056;
+  public int a12057;
+  public int a12058;
+  public int a12059;
+  public int a12060;
+  public int a12061;
+  public int a12062;
+  public int a12063;
+  public int a12064;
+  public int a12065;
+  public int a12066;
+  public int a12067;
+  public int a12068;
+  public int a12069;
+  public int a12070;
+  public int a12071;
+  public int a12072;
+  public int a12073;
+  public int a12074;
+  public int a12075;
+  public int a12076;
+  public int a12077;
+  public int a12078;
+  public int a12079;
+  public int a12080;
+  public int a12081;
+  public int a12082;
+  public int a12083;
+  public int a12084;
+  public int a12085;
+  public int a12086;
+  public int a12087;
+  public int a12088;
+  public int a12089;
+  public int a12090;
+  public int a12091;
+  public int a12092;
+  public int a12093;
+  public int a12094;
+  public int a12095;
+  public int a12096;
+  public int a12097;
+  public int a12098;
+  public int a12099;
+  public int a12100;
+  public int a12101;
+  public int a12102;
+  public int a12103;
+  public int a12104;
+  public int a12105;
+  public int a12106;
+  public int a12107;
+  public int a12108;
+  public int a12109;
+  public int a12110;
+  public int a12111;
+  public int a12112;
+  public int a12113;
+  public int a12114;
+  public int a12115;
+  public int a12116;
+  public int a12117;
+  public int a12118;
+  public int a12119;
+  public int a12120;
+  public int a12121;
+  public int a12122;
+  public int a12123;
+  public int a12124;
+  public int a12125;
+  public int a12126;
+  public int a12127;
+  public int a12128;
+  public int a12129;
+  public int a12130;
+  public int a12131;
+  public int a12132;
+  public int a12133;
+  public int a12134;
+  public int a12135;
+  public int a12136;
+  public int a12137;
+  public int a12138;
+  public int a12139;
+  public int a12140;
+  public int a12141;
+  public int a12142;
+  public int a12143;
+  public int a12144;
+  public int a12145;
+  public int a12146;
+  public int a12147;
+  public int a12148;
+  public int a12149;
+  public int a12150;
+  public int a12151;
+  public int a12152;
+  public int a12153;
+  public int a12154;
+  public int a12155;
+  public int a12156;
+  public int a12157;
+  public int a12158;
+  public int a12159;
+  public int a12160;
+  public int a12161;
+  public int a12162;
+  public int a12163;
+  public int a12164;
+  public int a12165;
+  public int a12166;
+  public int a12167;
+  public int a12168;
+  public int a12169;
+  public int a12170;
+  public int a12171;
+  public int a12172;
+  public int a12173;
+  public int a12174;
+  public int a12175;
+  public int a12176;
+  public int a12177;
+  public int a12178;
+  public int a12179;
+  public int a12180;
+  public int a12181;
+  public int a12182;
+  public int a12183;
+  public int a12184;
+  public int a12185;
+  public int a12186;
+  public int a12187;
+  public int a12188;
+  public int a12189;
+  public int a12190;
+  public int a12191;
+  public int a12192;
+  public int a12193;
+  public int a12194;
+  public int a12195;
+  public int a12196;
+  public int a12197;
+  public int a12198;
+  public int a12199;
+  public int a12200;
+  public int a12201;
+  public int a12202;
+  public int a12203;
+  public int a12204;
+  public int a12205;
+  public int a12206;
+  public int a12207;
+  public int a12208;
+  public int a12209;
+  public int a12210;
+  public int a12211;
+  public int a12212;
+  public int a12213;
+  public int a12214;
+  public int a12215;
+  public int a12216;
+  public int a12217;
+  public int a12218;
+  public int a12219;
+  public int a12220;
+  public int a12221;
+  public int a12222;
+  public int a12223;
+  public int a12224;
+  public int a12225;
+  public int a12226;
+  public int a12227;
+  public int a12228;
+  public int a12229;
+  public int a12230;
+  public int a12231;
+  public int a12232;
+  public int a12233;
+  public int a12234;
+  public int a12235;
+  public int a12236;
+  public int a12237;
+  public int a12238;
+  public int a12239;
+  public int a12240;
+  public int a12241;
+  public int a12242;
+  public int a12243;
+  public int a12244;
+  public int a12245;
+  public int a12246;
+  public int a12247;
+  public int a12248;
+  public int a12249;
+  public int a12250;
+  public int a12251;
+  public int a12252;
+  public int a12253;
+  public int a12254;
+  public int a12255;
+  public int a12256;
+  public int a12257;
+  public int a12258;
+  public int a12259;
+  public int a12260;
+  public int a12261;
+  public int a12262;
+  public int a12263;
+  public int a12264;
+  public int a12265;
+  public int a12266;
+  public int a12267;
+  public int a12268;
+  public int a12269;
+  public int a12270;
+  public int a12271;
+  public int a12272;
+  public int a12273;
+  public int a12274;
+  public int a12275;
+  public int a12276;
+  public int a12277;
+  public int a12278;
+  public int a12279;
+  public int a12280;
+  public int a12281;
+  public int a12282;
+  public int a12283;
+  public int a12284;
+  public int a12285;
+  public int a12286;
+  public int a12287;
+  public int a12288;
+  public int a12289;
+  public int a12290;
+  public int a12291;
+  public int a12292;
+  public int a12293;
+  public int a12294;
+  public int a12295;
+  public int a12296;
+  public int a12297;
+  public int a12298;
+  public int a12299;
+  public int a12300;
+  public int a12301;
+  public int a12302;
+  public int a12303;
+  public int a12304;
+  public int a12305;
+  public int a12306;
+  public int a12307;
+  public int a12308;
+  public int a12309;
+  public int a12310;
+  public int a12311;
+  public int a12312;
+  public int a12313;
+  public int a12314;
+  public int a12315;
+  public int a12316;
+  public int a12317;
+  public int a12318;
+  public int a12319;
+  public int a12320;
+  public int a12321;
+  public int a12322;
+  public int a12323;
+  public int a12324;
+  public int a12325;
+  public int a12326;
+  public int a12327;
+  public int a12328;
+  public int a12329;
+  public int a12330;
+  public int a12331;
+  public int a12332;
+  public int a12333;
+  public int a12334;
+  public int a12335;
+  public int a12336;
+  public int a12337;
+  public int a12338;
+  public int a12339;
+  public int a12340;
+  public int a12341;
+  public int a12342;
+  public int a12343;
+  public int a12344;
+  public int a12345;
+  public int a12346;
+  public int a12347;
+  public int a12348;
+  public int a12349;
+  public int a12350;
+  public int a12351;
+  public int a12352;
+  public int a12353;
+  public int a12354;
+  public int a12355;
+  public int a12356;
+  public int a12357;
+  public int a12358;
+  public int a12359;
+  public int a12360;
+  public int a12361;
+  public int a12362;
+  public int a12363;
+  public int a12364;
+  public int a12365;
+  public int a12366;
+  public int a12367;
+  public int a12368;
+  public int a12369;
+  public int a12370;
+  public int a12371;
+  public int a12372;
+  public int a12373;
+  public int a12374;
+  public int a12375;
+  public int a12376;
+  public int a12377;
+  public int a12378;
+  public int a12379;
+  public int a12380;
+  public int a12381;
+  public int a12382;
+  public int a12383;
+  public int a12384;
+  public int a12385;
+  public int a12386;
+  public int a12387;
+  public int a12388;
+  public int a12389;
+  public int a12390;
+  public int a12391;
+  public int a12392;
+  public int a12393;
+  public int a12394;
+  public int a12395;
+  public int a12396;
+  public int a12397;
+  public int a12398;
+  public int a12399;
+  public int a12400;
+  public int a12401;
+  public int a12402;
+  public int a12403;
+  public int a12404;
+  public int a12405;
+  public int a12406;
+  public int a12407;
+  public int a12408;
+  public int a12409;
+  public int a12410;
+  public int a12411;
+  public int a12412;
+  public int a12413;
+  public int a12414;
+  public int a12415;
+  public int a12416;
+  public int a12417;
+  public int a12418;
+  public int a12419;
+  public int a12420;
+  public int a12421;
+  public int a12422;
+  public int a12423;
+  public int a12424;
+  public int a12425;
+  public int a12426;
+  public int a12427;
+  public int a12428;
+  public int a12429;
+  public int a12430;
+  public int a12431;
+  public int a12432;
+  public int a12433;
+  public int a12434;
+  public int a12435;
+  public int a12436;
+  public int a12437;
+  public int a12438;
+  public int a12439;
+  public int a12440;
+  public int a12441;
+  public int a12442;
+  public int a12443;
+  public int a12444;
+  public int a12445;
+  public int a12446;
+  public int a12447;
+  public int a12448;
+  public int a12449;
+  public int a12450;
+  public int a12451;
+  public int a12452;
+  public int a12453;
+  public int a12454;
+  public int a12455;
+  public int a12456;
+  public int a12457;
+  public int a12458;
+  public int a12459;
+  public int a12460;
+  public int a12461;
+  public int a12462;
+  public int a12463;
+  public int a12464;
+  public int a12465;
+  public int a12466;
+  public int a12467;
+  public int a12468;
+  public int a12469;
+  public int a12470;
+  public int a12471;
+  public int a12472;
+  public int a12473;
+  public int a12474;
+  public int a12475;
+  public int a12476;
+  public int a12477;
+  public int a12478;
+  public int a12479;
+  public int a12480;
+  public int a12481;
+  public int a12482;
+  public int a12483;
+  public int a12484;
+  public int a12485;
+  public int a12486;
+  public int a12487;
+  public int a12488;
+  public int a12489;
+  public int a12490;
+  public int a12491;
+  public int a12492;
+  public int a12493;
+  public int a12494;
+  public int a12495;
+  public int a12496;
+  public int a12497;
+  public int a12498;
+  public int a12499;
+  public int a12500;
+  public int a12501;
+  public int a12502;
+  public int a12503;
+  public int a12504;
+  public int a12505;
+  public int a12506;
+  public int a12507;
+  public int a12508;
+  public int a12509;
+  public int a12510;
+  public int a12511;
+  public int a12512;
+  public int a12513;
+  public int a12514;
+  public int a12515;
+  public int a12516;
+  public int a12517;
+  public int a12518;
+  public int a12519;
+  public int a12520;
+  public int a12521;
+  public int a12522;
+  public int a12523;
+  public int a12524;
+  public int a12525;
+  public int a12526;
+  public int a12527;
+  public int a12528;
+  public int a12529;
+  public int a12530;
+  public int a12531;
+  public int a12532;
+  public int a12533;
+  public int a12534;
+  public int a12535;
+  public int a12536;
+  public int a12537;
+  public int a12538;
+  public int a12539;
+  public int a12540;
+  public int a12541;
+  public int a12542;
+  public int a12543;
+  public int a12544;
+  public int a12545;
+  public int a12546;
+  public int a12547;
+  public int a12548;
+  public int a12549;
+  public int a12550;
+  public int a12551;
+  public int a12552;
+  public int a12553;
+  public int a12554;
+  public int a12555;
+  public int a12556;
+  public int a12557;
+  public int a12558;
+  public int a12559;
+  public int a12560;
+  public int a12561;
+  public int a12562;
+  public int a12563;
+  public int a12564;
+  public int a12565;
+  public int a12566;
+  public int a12567;
+  public int a12568;
+  public int a12569;
+  public int a12570;
+  public int a12571;
+  public int a12572;
+  public int a12573;
+  public int a12574;
+  public int a12575;
+  public int a12576;
+  public int a12577;
+  public int a12578;
+  public int a12579;
+  public int a12580;
+  public int a12581;
+  public int a12582;
+  public int a12583;
+  public int a12584;
+  public int a12585;
+  public int a12586;
+  public int a12587;
+  public int a12588;
+  public int a12589;
+  public int a12590;
+  public int a12591;
+  public int a12592;
+  public int a12593;
+  public int a12594;
+  public int a12595;
+  public int a12596;
+  public int a12597;
+  public int a12598;
+  public int a12599;
+  public int a12600;
+  public int a12601;
+  public int a12602;
+  public int a12603;
+  public int a12604;
+  public int a12605;
+  public int a12606;
+  public int a12607;
+  public int a12608;
+  public int a12609;
+  public int a12610;
+  public int a12611;
+  public int a12612;
+  public int a12613;
+  public int a12614;
+  public int a12615;
+  public int a12616;
+  public int a12617;
+  public int a12618;
+  public int a12619;
+  public int a12620;
+  public int a12621;
+  public int a12622;
+  public int a12623;
+  public int a12624;
+  public int a12625;
+  public int a12626;
+  public int a12627;
+  public int a12628;
+  public int a12629;
+  public int a12630;
+  public int a12631;
+  public int a12632;
+  public int a12633;
+  public int a12634;
+  public int a12635;
+  public int a12636;
+  public int a12637;
+  public int a12638;
+  public int a12639;
+  public int a12640;
+  public int a12641;
+  public int a12642;
+  public int a12643;
+  public int a12644;
+  public int a12645;
+  public int a12646;
+  public int a12647;
+  public int a12648;
+  public int a12649;
+  public int a12650;
+  public int a12651;
+  public int a12652;
+  public int a12653;
+  public int a12654;
+  public int a12655;
+  public int a12656;
+  public int a12657;
+  public int a12658;
+  public int a12659;
+  public int a12660;
+  public int a12661;
+  public int a12662;
+  public int a12663;
+  public int a12664;
+  public int a12665;
+  public int a12666;
+  public int a12667;
+  public int a12668;
+  public int a12669;
+  public int a12670;
+  public int a12671;
+  public int a12672;
+  public int a12673;
+  public int a12674;
+  public int a12675;
+  public int a12676;
+  public int a12677;
+  public int a12678;
+  public int a12679;
+  public int a12680;
+  public int a12681;
+  public int a12682;
+  public int a12683;
+  public int a12684;
+  public int a12685;
+  public int a12686;
+  public int a12687;
+  public int a12688;
+  public int a12689;
+  public int a12690;
+  public int a12691;
+  public int a12692;
+  public int a12693;
+  public int a12694;
+  public int a12695;
+  public int a12696;
+  public int a12697;
+  public int a12698;
+  public int a12699;
+  public int a12700;
+  public int a12701;
+  public int a12702;
+  public int a12703;
+  public int a12704;
+  public int a12705;
+  public int a12706;
+  public int a12707;
+  public int a12708;
+  public int a12709;
+  public int a12710;
+  public int a12711;
+  public int a12712;
+  public int a12713;
+  public int a12714;
+  public int a12715;
+  public int a12716;
+  public int a12717;
+  public int a12718;
+  public int a12719;
+  public int a12720;
+  public int a12721;
+  public int a12722;
+  public int a12723;
+  public int a12724;
+  public int a12725;
+  public int a12726;
+  public int a12727;
+  public int a12728;
+  public int a12729;
+  public int a12730;
+  public int a12731;
+  public int a12732;
+  public int a12733;
+  public int a12734;
+  public int a12735;
+  public int a12736;
+  public int a12737;
+  public int a12738;
+  public int a12739;
+  public int a12740;
+  public int a12741;
+  public int a12742;
+  public int a12743;
+  public int a12744;
+  public int a12745;
+  public int a12746;
+  public int a12747;
+  public int a12748;
+  public int a12749;
+  public int a12750;
+  public int a12751;
+  public int a12752;
+  public int a12753;
+  public int a12754;
+  public int a12755;
+  public int a12756;
+  public int a12757;
+  public int a12758;
+  public int a12759;
+  public int a12760;
+  public int a12761;
+  public int a12762;
+  public int a12763;
+  public int a12764;
+  public int a12765;
+  public int a12766;
+  public int a12767;
+  public int a12768;
+  public int a12769;
+  public int a12770;
+  public int a12771;
+  public int a12772;
+  public int a12773;
+  public int a12774;
+  public int a12775;
+  public int a12776;
+  public int a12777;
+  public int a12778;
+  public int a12779;
+  public int a12780;
+  public int a12781;
+  public int a12782;
+  public int a12783;
+  public int a12784;
+  public int a12785;
+  public int a12786;
+  public int a12787;
+  public int a12788;
+  public int a12789;
+  public int a12790;
+  public int a12791;
+  public int a12792;
+  public int a12793;
+  public int a12794;
+  public int a12795;
+  public int a12796;
+  public int a12797;
+  public int a12798;
+  public int a12799;
+  public int a12800;
+  public int a12801;
+  public int a12802;
+  public int a12803;
+  public int a12804;
+  public int a12805;
+  public int a12806;
+  public int a12807;
+  public int a12808;
+  public int a12809;
+  public int a12810;
+  public int a12811;
+  public int a12812;
+  public int a12813;
+  public int a12814;
+  public int a12815;
+  public int a12816;
+  public int a12817;
+  public int a12818;
+  public int a12819;
+  public int a12820;
+  public int a12821;
+  public int a12822;
+  public int a12823;
+  public int a12824;
+  public int a12825;
+  public int a12826;
+  public int a12827;
+  public int a12828;
+  public int a12829;
+  public int a12830;
+  public int a12831;
+  public int a12832;
+  public int a12833;
+  public int a12834;
+  public int a12835;
+  public int a12836;
+  public int a12837;
+  public int a12838;
+  public int a12839;
+  public int a12840;
+  public int a12841;
+  public int a12842;
+  public int a12843;
+  public int a12844;
+  public int a12845;
+  public int a12846;
+  public int a12847;
+  public int a12848;
+  public int a12849;
+  public int a12850;
+  public int a12851;
+  public int a12852;
+  public int a12853;
+  public int a12854;
+  public int a12855;
+  public int a12856;
+  public int a12857;
+  public int a12858;
+  public int a12859;
+  public int a12860;
+  public int a12861;
+  public int a12862;
+  public int a12863;
+  public int a12864;
+  public int a12865;
+  public int a12866;
+  public int a12867;
+  public int a12868;
+  public int a12869;
+  public int a12870;
+  public int a12871;
+  public int a12872;
+  public int a12873;
+  public int a12874;
+  public int a12875;
+  public int a12876;
+  public int a12877;
+  public int a12878;
+  public int a12879;
+  public int a12880;
+  public int a12881;
+  public int a12882;
+  public int a12883;
+  public int a12884;
+  public int a12885;
+  public int a12886;
+  public int a12887;
+  public int a12888;
+  public int a12889;
+  public int a12890;
+  public int a12891;
+  public int a12892;
+  public int a12893;
+  public int a12894;
+  public int a12895;
+  public int a12896;
+  public int a12897;
+  public int a12898;
+  public int a12899;
+  public int a12900;
+  public int a12901;
+  public int a12902;
+  public int a12903;
+  public int a12904;
+  public int a12905;
+  public int a12906;
+  public int a12907;
+  public int a12908;
+  public int a12909;
+  public int a12910;
+  public int a12911;
+  public int a12912;
+  public int a12913;
+  public int a12914;
+  public int a12915;
+  public int a12916;
+  public int a12917;
+  public int a12918;
+  public int a12919;
+  public int a12920;
+  public int a12921;
+  public int a12922;
+  public int a12923;
+  public int a12924;
+  public int a12925;
+  public int a12926;
+  public int a12927;
+  public int a12928;
+  public int a12929;
+  public int a12930;
+  public int a12931;
+  public int a12932;
+  public int a12933;
+  public int a12934;
+  public int a12935;
+  public int a12936;
+  public int a12937;
+  public int a12938;
+  public int a12939;
+  public int a12940;
+  public int a12941;
+  public int a12942;
+  public int a12943;
+  public int a12944;
+  public int a12945;
+  public int a12946;
+  public int a12947;
+  public int a12948;
+  public int a12949;
+  public int a12950;
+  public int a12951;
+  public int a12952;
+  public int a12953;
+  public int a12954;
+  public int a12955;
+  public int a12956;
+  public int a12957;
+  public int a12958;
+  public int a12959;
+  public int a12960;
+  public int a12961;
+  public int a12962;
+  public int a12963;
+  public int a12964;
+  public int a12965;
+  public int a12966;
+  public int a12967;
+  public int a12968;
+  public int a12969;
+  public int a12970;
+  public int a12971;
+  public int a12972;
+  public int a12973;
+  public int a12974;
+  public int a12975;
+  public int a12976;
+  public int a12977;
+  public int a12978;
+  public int a12979;
+  public int a12980;
+  public int a12981;
+  public int a12982;
+  public int a12983;
+  public int a12984;
+  public int a12985;
+  public int a12986;
+  public int a12987;
+  public int a12988;
+  public int a12989;
+  public int a12990;
+  public int a12991;
+  public int a12992;
+  public int a12993;
+  public int a12994;
+  public int a12995;
+  public int a12996;
+  public int a12997;
+  public int a12998;
+  public int a12999;
+  public int a13000;
+  public int a13001;
+  public int a13002;
+  public int a13003;
+  public int a13004;
+  public int a13005;
+  public int a13006;
+  public int a13007;
+  public int a13008;
+  public int a13009;
+  public int a13010;
+  public int a13011;
+  public int a13012;
+  public int a13013;
+  public int a13014;
+  public int a13015;
+  public int a13016;
+  public int a13017;
+  public int a13018;
+  public int a13019;
+  public int a13020;
+  public int a13021;
+  public int a13022;
+  public int a13023;
+  public int a13024;
+  public int a13025;
+  public int a13026;
+  public int a13027;
+  public int a13028;
+  public int a13029;
+  public int a13030;
+  public int a13031;
+  public int a13032;
+  public int a13033;
+  public int a13034;
+  public int a13035;
+  public int a13036;
+  public int a13037;
+  public int a13038;
+  public int a13039;
+  public int a13040;
+  public int a13041;
+  public int a13042;
+  public int a13043;
+  public int a13044;
+  public int a13045;
+  public int a13046;
+  public int a13047;
+  public int a13048;
+  public int a13049;
+  public int a13050;
+  public int a13051;
+  public int a13052;
+  public int a13053;
+  public int a13054;
+  public int a13055;
+  public int a13056;
+  public int a13057;
+  public int a13058;
+  public int a13059;
+  public int a13060;
+  public int a13061;
+  public int a13062;
+  public int a13063;
+  public int a13064;
+  public int a13065;
+  public int a13066;
+  public int a13067;
+  public int a13068;
+  public int a13069;
+  public int a13070;
+  public int a13071;
+  public int a13072;
+  public int a13073;
+  public int a13074;
+  public int a13075;
+  public int a13076;
+  public int a13077;
+  public int a13078;
+  public int a13079;
+  public int a13080;
+  public int a13081;
+  public int a13082;
+  public int a13083;
+  public int a13084;
+  public int a13085;
+  public int a13086;
+  public int a13087;
+  public int a13088;
+  public int a13089;
+  public int a13090;
+  public int a13091;
+  public int a13092;
+  public int a13093;
+  public int a13094;
+  public int a13095;
+  public int a13096;
+  public int a13097;
+  public int a13098;
+  public int a13099;
+  public int a13100;
+  public int a13101;
+  public int a13102;
+  public int a13103;
+  public int a13104;
+  public int a13105;
+  public int a13106;
+  public int a13107;
+  public int a13108;
+  public int a13109;
+  public int a13110;
+  public int a13111;
+  public int a13112;
+  public int a13113;
+  public int a13114;
+  public int a13115;
+  public int a13116;
+  public int a13117;
+  public int a13118;
+  public int a13119;
+  public int a13120;
+  public int a13121;
+  public int a13122;
+  public int a13123;
+  public int a13124;
+  public int a13125;
+  public int a13126;
+  public int a13127;
+  public int a13128;
+  public int a13129;
+  public int a13130;
+  public int a13131;
+  public int a13132;
+  public int a13133;
+  public int a13134;
+  public int a13135;
+  public int a13136;
+  public int a13137;
+  public int a13138;
+  public int a13139;
+  public int a13140;
+  public int a13141;
+  public int a13142;
+  public int a13143;
+  public int a13144;
+  public int a13145;
+  public int a13146;
+  public int a13147;
+  public int a13148;
+  public int a13149;
+  public int a13150;
+  public int a13151;
+  public int a13152;
+  public int a13153;
+  public int a13154;
+  public int a13155;
+  public int a13156;
+  public int a13157;
+  public int a13158;
+  public int a13159;
+  public int a13160;
+  public int a13161;
+  public int a13162;
+  public int a13163;
+  public int a13164;
+  public int a13165;
+  public int a13166;
+  public int a13167;
+  public int a13168;
+  public int a13169;
+  public int a13170;
+  public int a13171;
+  public int a13172;
+  public int a13173;
+  public int a13174;
+  public int a13175;
+  public int a13176;
+  public int a13177;
+  public int a13178;
+  public int a13179;
+  public int a13180;
+  public int a13181;
+  public int a13182;
+  public int a13183;
+  public int a13184;
+  public int a13185;
+  public int a13186;
+  public int a13187;
+  public int a13188;
+  public int a13189;
+  public int a13190;
+  public int a13191;
+  public int a13192;
+  public int a13193;
+  public int a13194;
+  public int a13195;
+  public int a13196;
+  public int a13197;
+  public int a13198;
+  public int a13199;
+  public int a13200;
+  public int a13201;
+  public int a13202;
+  public int a13203;
+  public int a13204;
+  public int a13205;
+  public int a13206;
+  public int a13207;
+  public int a13208;
+  public int a13209;
+  public int a13210;
+  public int a13211;
+  public int a13212;
+  public int a13213;
+  public int a13214;
+  public int a13215;
+  public int a13216;
+  public int a13217;
+  public int a13218;
+  public int a13219;
+  public int a13220;
+  public int a13221;
+  public int a13222;
+  public int a13223;
+  public int a13224;
+  public int a13225;
+  public int a13226;
+  public int a13227;
+  public int a13228;
+  public int a13229;
+  public int a13230;
+  public int a13231;
+  public int a13232;
+  public int a13233;
+  public int a13234;
+  public int a13235;
+  public int a13236;
+  public int a13237;
+  public int a13238;
+  public int a13239;
+  public int a13240;
+  public int a13241;
+  public int a13242;
+  public int a13243;
+  public int a13244;
+  public int a13245;
+  public int a13246;
+  public int a13247;
+  public int a13248;
+  public int a13249;
+  public int a13250;
+  public int a13251;
+  public int a13252;
+  public int a13253;
+  public int a13254;
+  public int a13255;
+  public int a13256;
+  public int a13257;
+  public int a13258;
+  public int a13259;
+  public int a13260;
+  public int a13261;
+  public int a13262;
+  public int a13263;
+  public int a13264;
+  public int a13265;
+  public int a13266;
+  public int a13267;
+  public int a13268;
+  public int a13269;
+  public int a13270;
+  public int a13271;
+  public int a13272;
+  public int a13273;
+  public int a13274;
+  public int a13275;
+  public int a13276;
+  public int a13277;
+  public int a13278;
+  public int a13279;
+  public int a13280;
+  public int a13281;
+  public int a13282;
+  public int a13283;
+  public int a13284;
+  public int a13285;
+  public int a13286;
+  public int a13287;
+  public int a13288;
+  public int a13289;
+  public int a13290;
+  public int a13291;
+  public int a13292;
+  public int a13293;
+  public int a13294;
+  public int a13295;
+  public int a13296;
+  public int a13297;
+  public int a13298;
+  public int a13299;
+  public int a13300;
+  public int a13301;
+  public int a13302;
+  public int a13303;
+  public int a13304;
+  public int a13305;
+  public int a13306;
+  public int a13307;
+  public int a13308;
+  public int a13309;
+  public int a13310;
+  public int a13311;
+  public int a13312;
+  public int a13313;
+  public int a13314;
+  public int a13315;
+  public int a13316;
+  public int a13317;
+  public int a13318;
+  public int a13319;
+  public int a13320;
+  public int a13321;
+  public int a13322;
+  public int a13323;
+  public int a13324;
+  public int a13325;
+  public int a13326;
+  public int a13327;
+  public int a13328;
+  public int a13329;
+  public int a13330;
+  public int a13331;
+  public int a13332;
+  public int a13333;
+  public int a13334;
+  public int a13335;
+  public int a13336;
+  public int a13337;
+  public int a13338;
+  public int a13339;
+  public int a13340;
+  public int a13341;
+  public int a13342;
+  public int a13343;
+  public int a13344;
+  public int a13345;
+  public int a13346;
+  public int a13347;
+  public int a13348;
+  public int a13349;
+  public int a13350;
+  public int a13351;
+  public int a13352;
+  public int a13353;
+  public int a13354;
+  public int a13355;
+  public int a13356;
+  public int a13357;
+  public int a13358;
+  public int a13359;
+  public int a13360;
+  public int a13361;
+  public int a13362;
+  public int a13363;
+  public int a13364;
+  public int a13365;
+  public int a13366;
+  public int a13367;
+  public int a13368;
+  public int a13369;
+  public int a13370;
+  public int a13371;
+  public int a13372;
+  public int a13373;
+  public int a13374;
+  public int a13375;
+  public int a13376;
+  public int a13377;
+  public int a13378;
+  public int a13379;
+  public int a13380;
+  public int a13381;
+  public int a13382;
+  public int a13383;
+  public int a13384;
+  public int a13385;
+  public int a13386;
+  public int a13387;
+  public int a13388;
+  public int a13389;
+  public int a13390;
+  public int a13391;
+  public int a13392;
+  public int a13393;
+  public int a13394;
+  public int a13395;
+  public int a13396;
+  public int a13397;
+  public int a13398;
+  public int a13399;
+  public int a13400;
+  public int a13401;
+  public int a13402;
+  public int a13403;
+  public int a13404;
+  public int a13405;
+  public int a13406;
+  public int a13407;
+  public int a13408;
+  public int a13409;
+  public int a13410;
+  public int a13411;
+  public int a13412;
+  public int a13413;
+  public int a13414;
+  public int a13415;
+  public int a13416;
+  public int a13417;
+  public int a13418;
+  public int a13419;
+  public int a13420;
+  public int a13421;
+  public int a13422;
+  public int a13423;
+  public int a13424;
+  public int a13425;
+  public int a13426;
+  public int a13427;
+  public int a13428;
+  public int a13429;
+  public int a13430;
+  public int a13431;
+  public int a13432;
+  public int a13433;
+  public int a13434;
+  public int a13435;
+  public int a13436;
+  public int a13437;
+  public int a13438;
+  public int a13439;
+  public int a13440;
+  public int a13441;
+  public int a13442;
+  public int a13443;
+  public int a13444;
+  public int a13445;
+  public int a13446;
+  public int a13447;
+  public int a13448;
+  public int a13449;
+  public int a13450;
+  public int a13451;
+  public int a13452;
+  public int a13453;
+  public int a13454;
+  public int a13455;
+  public int a13456;
+  public int a13457;
+  public int a13458;
+  public int a13459;
+  public int a13460;
+  public int a13461;
+  public int a13462;
+  public int a13463;
+  public int a13464;
+  public int a13465;
+  public int a13466;
+  public int a13467;
+  public int a13468;
+  public int a13469;
+  public int a13470;
+  public int a13471;
+  public int a13472;
+  public int a13473;
+  public int a13474;
+  public int a13475;
+  public int a13476;
+  public int a13477;
+  public int a13478;
+  public int a13479;
+  public int a13480;
+  public int a13481;
+  public int a13482;
+  public int a13483;
+  public int a13484;
+  public int a13485;
+  public int a13486;
+  public int a13487;
+  public int a13488;
+  public int a13489;
+  public int a13490;
+  public int a13491;
+  public int a13492;
+  public int a13493;
+  public int a13494;
+  public int a13495;
+  public int a13496;
+  public int a13497;
+  public int a13498;
+  public int a13499;
+  public int a13500;
+  public int a13501;
+  public int a13502;
+  public int a13503;
+  public int a13504;
+  public int a13505;
+  public int a13506;
+  public int a13507;
+  public int a13508;
+  public int a13509;
+  public int a13510;
+  public int a13511;
+  public int a13512;
+  public int a13513;
+  public int a13514;
+  public int a13515;
+  public int a13516;
+  public int a13517;
+  public int a13518;
+  public int a13519;
+  public int a13520;
+  public int a13521;
+  public int a13522;
+  public int a13523;
+  public int a13524;
+  public int a13525;
+  public int a13526;
+  public int a13527;
+  public int a13528;
+  public int a13529;
+  public int a13530;
+  public int a13531;
+  public int a13532;
+  public int a13533;
+  public int a13534;
+  public int a13535;
+  public int a13536;
+  public int a13537;
+  public int a13538;
+  public int a13539;
+  public int a13540;
+  public int a13541;
+  public int a13542;
+  public int a13543;
+  public int a13544;
+  public int a13545;
+  public int a13546;
+  public int a13547;
+  public int a13548;
+  public int a13549;
+  public int a13550;
+  public int a13551;
+  public int a13552;
+  public int a13553;
+  public int a13554;
+  public int a13555;
+  public int a13556;
+  public int a13557;
+  public int a13558;
+  public int a13559;
+  public int a13560;
+  public int a13561;
+  public int a13562;
+  public int a13563;
+  public int a13564;
+  public int a13565;
+  public int a13566;
+  public int a13567;
+  public int a13568;
+  public int a13569;
+  public int a13570;
+  public int a13571;
+  public int a13572;
+  public int a13573;
+  public int a13574;
+  public int a13575;
+  public int a13576;
+  public int a13577;
+  public int a13578;
+  public int a13579;
+  public int a13580;
+  public int a13581;
+  public int a13582;
+  public int a13583;
+  public int a13584;
+  public int a13585;
+  public int a13586;
+  public int a13587;
+  public int a13588;
+  public int a13589;
+  public int a13590;
+  public int a13591;
+  public int a13592;
+  public int a13593;
+  public int a13594;
+  public int a13595;
+  public int a13596;
+  public int a13597;
+  public int a13598;
+  public int a13599;
+  public int a13600;
+  public int a13601;
+  public int a13602;
+  public int a13603;
+  public int a13604;
+  public int a13605;
+  public int a13606;
+  public int a13607;
+  public int a13608;
+  public int a13609;
+  public int a13610;
+  public int a13611;
+  public int a13612;
+  public int a13613;
+  public int a13614;
+  public int a13615;
+  public int a13616;
+  public int a13617;
+  public int a13618;
+  public int a13619;
+  public int a13620;
+  public int a13621;
+  public int a13622;
+  public int a13623;
+  public int a13624;
+  public int a13625;
+  public int a13626;
+  public int a13627;
+  public int a13628;
+  public int a13629;
+  public int a13630;
+  public int a13631;
+  public int a13632;
+  public int a13633;
+  public int a13634;
+  public int a13635;
+  public int a13636;
+  public int a13637;
+  public int a13638;
+  public int a13639;
+  public int a13640;
+  public int a13641;
+  public int a13642;
+  public int a13643;
+  public int a13644;
+  public int a13645;
+  public int a13646;
+  public int a13647;
+  public int a13648;
+  public int a13649;
+  public int a13650;
+  public int a13651;
+  public int a13652;
+  public int a13653;
+  public int a13654;
+  public int a13655;
+  public int a13656;
+  public int a13657;
+  public int a13658;
+  public int a13659;
+  public int a13660;
+  public int a13661;
+  public int a13662;
+  public int a13663;
+  public int a13664;
+  public int a13665;
+  public int a13666;
+  public int a13667;
+  public int a13668;
+  public int a13669;
+  public int a13670;
+  public int a13671;
+  public int a13672;
+  public int a13673;
+  public int a13674;
+  public int a13675;
+  public int a13676;
+  public int a13677;
+  public int a13678;
+  public int a13679;
+  public int a13680;
+  public int a13681;
+  public int a13682;
+  public int a13683;
+  public int a13684;
+  public int a13685;
+  public int a13686;
+  public int a13687;
+  public int a13688;
+  public int a13689;
+  public int a13690;
+  public int a13691;
+  public int a13692;
+  public int a13693;
+  public int a13694;
+  public int a13695;
+  public int a13696;
+  public int a13697;
+  public int a13698;
+  public int a13699;
+  public int a13700;
+  public int a13701;
+  public int a13702;
+  public int a13703;
+  public int a13704;
+  public int a13705;
+  public int a13706;
+  public int a13707;
+  public int a13708;
+  public int a13709;
+  public int a13710;
+  public int a13711;
+  public int a13712;
+  public int a13713;
+  public int a13714;
+  public int a13715;
+  public int a13716;
+  public int a13717;
+  public int a13718;
+  public int a13719;
+  public int a13720;
+  public int a13721;
+  public int a13722;
+  public int a13723;
+  public int a13724;
+  public int a13725;
+  public int a13726;
+  public int a13727;
+  public int a13728;
+  public int a13729;
+  public int a13730;
+  public int a13731;
+  public int a13732;
+  public int a13733;
+  public int a13734;
+  public int a13735;
+  public int a13736;
+  public int a13737;
+  public int a13738;
+  public int a13739;
+  public int a13740;
+  public int a13741;
+  public int a13742;
+  public int a13743;
+  public int a13744;
+  public int a13745;
+  public int a13746;
+  public int a13747;
+  public int a13748;
+  public int a13749;
+  public int a13750;
+  public int a13751;
+  public int a13752;
+  public int a13753;
+  public int a13754;
+  public int a13755;
+  public int a13756;
+  public int a13757;
+  public int a13758;
+  public int a13759;
+  public int a13760;
+  public int a13761;
+  public int a13762;
+  public int a13763;
+  public int a13764;
+  public int a13765;
+  public int a13766;
+  public int a13767;
+  public int a13768;
+  public int a13769;
+  public int a13770;
+  public int a13771;
+  public int a13772;
+  public int a13773;
+  public int a13774;
+  public int a13775;
+  public int a13776;
+  public int a13777;
+  public int a13778;
+  public int a13779;
+  public int a13780;
+  public int a13781;
+  public int a13782;
+  public int a13783;
+  public int a13784;
+  public int a13785;
+  public int a13786;
+  public int a13787;
+  public int a13788;
+  public int a13789;
+  public int a13790;
+  public int a13791;
+  public int a13792;
+  public int a13793;
+  public int a13794;
+  public int a13795;
+  public int a13796;
+  public int a13797;
+  public int a13798;
+  public int a13799;
+  public int a13800;
+  public int a13801;
+  public int a13802;
+  public int a13803;
+  public int a13804;
+  public int a13805;
+  public int a13806;
+  public int a13807;
+  public int a13808;
+  public int a13809;
+  public int a13810;
+  public int a13811;
+  public int a13812;
+  public int a13813;
+  public int a13814;
+  public int a13815;
+  public int a13816;
+  public int a13817;
+  public int a13818;
+  public int a13819;
+  public int a13820;
+  public int a13821;
+  public int a13822;
+  public int a13823;
+  public int a13824;
+  public int a13825;
+  public int a13826;
+  public int a13827;
+  public int a13828;
+  public int a13829;
+  public int a13830;
+  public int a13831;
+  public int a13832;
+  public int a13833;
+  public int a13834;
+  public int a13835;
+  public int a13836;
+  public int a13837;
+  public int a13838;
+  public int a13839;
+  public int a13840;
+  public int a13841;
+  public int a13842;
+  public int a13843;
+  public int a13844;
+  public int a13845;
+  public int a13846;
+  public int a13847;
+  public int a13848;
+  public int a13849;
+  public int a13850;
+  public int a13851;
+  public int a13852;
+  public int a13853;
+  public int a13854;
+  public int a13855;
+  public int a13856;
+  public int a13857;
+  public int a13858;
+  public int a13859;
+  public int a13860;
+  public int a13861;
+  public int a13862;
+  public int a13863;
+  public int a13864;
+  public int a13865;
+  public int a13866;
+  public int a13867;
+  public int a13868;
+  public int a13869;
+  public int a13870;
+  public int a13871;
+  public int a13872;
+  public int a13873;
+  public int a13874;
+  public int a13875;
+  public int a13876;
+  public int a13877;
+  public int a13878;
+  public int a13879;
+  public int a13880;
+  public int a13881;
+  public int a13882;
+  public int a13883;
+  public int a13884;
+  public int a13885;
+  public int a13886;
+  public int a13887;
+  public int a13888;
+  public int a13889;
+  public int a13890;
+  public int a13891;
+  public int a13892;
+  public int a13893;
+  public int a13894;
+  public int a13895;
+  public int a13896;
+  public int a13897;
+  public int a13898;
+  public int a13899;
+  public int a13900;
+  public int a13901;
+  public int a13902;
+  public int a13903;
+  public int a13904;
+  public int a13905;
+  public int a13906;
+  public int a13907;
+  public int a13908;
+  public int a13909;
+  public int a13910;
+  public int a13911;
+  public int a13912;
+  public int a13913;
+  public int a13914;
+  public int a13915;
+  public int a13916;
+  public int a13917;
+  public int a13918;
+  public int a13919;
+  public int a13920;
+  public int a13921;
+  public int a13922;
+  public int a13923;
+  public int a13924;
+  public int a13925;
+  public int a13926;
+  public int a13927;
+  public int a13928;
+  public int a13929;
+  public int a13930;
+  public int a13931;
+  public int a13932;
+  public int a13933;
+  public int a13934;
+  public int a13935;
+  public int a13936;
+  public int a13937;
+  public int a13938;
+  public int a13939;
+  public int a13940;
+  public int a13941;
+  public int a13942;
+  public int a13943;
+  public int a13944;
+  public int a13945;
+  public int a13946;
+  public int a13947;
+  public int a13948;
+  public int a13949;
+  public int a13950;
+  public int a13951;
+  public int a13952;
+  public int a13953;
+  public int a13954;
+  public int a13955;
+  public int a13956;
+  public int a13957;
+  public int a13958;
+  public int a13959;
+  public int a13960;
+  public int a13961;
+  public int a13962;
+  public int a13963;
+  public int a13964;
+  public int a13965;
+  public int a13966;
+  public int a13967;
+  public int a13968;
+  public int a13969;
+  public int a13970;
+  public int a13971;
+  public int a13972;
+  public int a13973;
+  public int a13974;
+  public int a13975;
+  public int a13976;
+  public int a13977;
+  public int a13978;
+  public int a13979;
+  public int a13980;
+  public int a13981;
+  public int a13982;
+  public int a13983;
+  public int a13984;
+  public int a13985;
+  public int a13986;
+  public int a13987;
+  public int a13988;
+  public int a13989;
+  public int a13990;
+  public int a13991;
+  public int a13992;
+  public int a13993;
+  public int a13994;
+  public int a13995;
+  public int a13996;
+  public int a13997;
+  public int a13998;
+  public int a13999;
+  public int a14000;
+  public int a14001;
+  public int a14002;
+  public int a14003;
+  public int a14004;
+  public int a14005;
+  public int a14006;
+  public int a14007;
+  public int a14008;
+  public int a14009;
+  public int a14010;
+  public int a14011;
+  public int a14012;
+  public int a14013;
+  public int a14014;
+  public int a14015;
+  public int a14016;
+  public int a14017;
+  public int a14018;
+  public int a14019;
+  public int a14020;
+  public int a14021;
+  public int a14022;
+  public int a14023;
+  public int a14024;
+  public int a14025;
+  public int a14026;
+  public int a14027;
+  public int a14028;
+  public int a14029;
+  public int a14030;
+  public int a14031;
+  public int a14032;
+  public int a14033;
+  public int a14034;
+  public int a14035;
+  public int a14036;
+  public int a14037;
+  public int a14038;
+  public int a14039;
+  public int a14040;
+  public int a14041;
+  public int a14042;
+  public int a14043;
+  public int a14044;
+  public int a14045;
+  public int a14046;
+  public int a14047;
+  public int a14048;
+  public int a14049;
+  public int a14050;
+  public int a14051;
+  public int a14052;
+  public int a14053;
+  public int a14054;
+  public int a14055;
+  public int a14056;
+  public int a14057;
+  public int a14058;
+  public int a14059;
+  public int a14060;
+  public int a14061;
+  public int a14062;
+  public int a14063;
+  public int a14064;
+  public int a14065;
+  public int a14066;
+  public int a14067;
+  public int a14068;
+  public int a14069;
+  public int a14070;
+  public int a14071;
+  public int a14072;
+  public int a14073;
+  public int a14074;
+  public int a14075;
+  public int a14076;
+  public int a14077;
+  public int a14078;
+  public int a14079;
+  public int a14080;
+  public int a14081;
+  public int a14082;
+  public int a14083;
+  public int a14084;
+  public int a14085;
+  public int a14086;
+  public int a14087;
+  public int a14088;
+  public int a14089;
+  public int a14090;
+  public int a14091;
+  public int a14092;
+  public int a14093;
+  public int a14094;
+  public int a14095;
+  public int a14096;
+  public int a14097;
+  public int a14098;
+  public int a14099;
+  public int a14100;
+  public int a14101;
+  public int a14102;
+  public int a14103;
+  public int a14104;
+  public int a14105;
+  public int a14106;
+  public int a14107;
+  public int a14108;
+  public int a14109;
+  public int a14110;
+  public int a14111;
+  public int a14112;
+  public int a14113;
+  public int a14114;
+  public int a14115;
+  public int a14116;
+  public int a14117;
+  public int a14118;
+  public int a14119;
+  public int a14120;
+  public int a14121;
+  public int a14122;
+  public int a14123;
+  public int a14124;
+  public int a14125;
+  public int a14126;
+  public int a14127;
+  public int a14128;
+  public int a14129;
+  public int a14130;
+  public int a14131;
+  public int a14132;
+  public int a14133;
+  public int a14134;
+  public int a14135;
+  public int a14136;
+  public int a14137;
+  public int a14138;
+  public int a14139;
+  public int a14140;
+  public int a14141;
+  public int a14142;
+  public int a14143;
+  public int a14144;
+  public int a14145;
+  public int a14146;
+  public int a14147;
+  public int a14148;
+  public int a14149;
+  public int a14150;
+  public int a14151;
+  public int a14152;
+  public int a14153;
+  public int a14154;
+  public int a14155;
+  public int a14156;
+  public int a14157;
+  public int a14158;
+  public int a14159;
+  public int a14160;
+  public int a14161;
+  public int a14162;
+  public int a14163;
+  public int a14164;
+  public int a14165;
+  public int a14166;
+  public int a14167;
+  public int a14168;
+  public int a14169;
+  public int a14170;
+  public int a14171;
+  public int a14172;
+  public int a14173;
+  public int a14174;
+  public int a14175;
+  public int a14176;
+  public int a14177;
+  public int a14178;
+  public int a14179;
+  public int a14180;
+  public int a14181;
+  public int a14182;
+  public int a14183;
+  public int a14184;
+  public int a14185;
+  public int a14186;
+  public int a14187;
+  public int a14188;
+  public int a14189;
+  public int a14190;
+  public int a14191;
+  public int a14192;
+  public int a14193;
+  public int a14194;
+  public int a14195;
+  public int a14196;
+  public int a14197;
+  public int a14198;
+  public int a14199;
+  public int a14200;
+  public int a14201;
+  public int a14202;
+  public int a14203;
+  public int a14204;
+  public int a14205;
+  public int a14206;
+  public int a14207;
+  public int a14208;
+  public int a14209;
+  public int a14210;
+  public int a14211;
+  public int a14212;
+  public int a14213;
+  public int a14214;
+  public int a14215;
+  public int a14216;
+  public int a14217;
+  public int a14218;
+  public int a14219;
+  public int a14220;
+  public int a14221;
+  public int a14222;
+  public int a14223;
+  public int a14224;
+  public int a14225;
+  public int a14226;
+  public int a14227;
+  public int a14228;
+  public int a14229;
+  public int a14230;
+  public int a14231;
+  public int a14232;
+  public int a14233;
+  public int a14234;
+  public int a14235;
+  public int a14236;
+  public int a14237;
+  public int a14238;
+  public int a14239;
+  public int a14240;
+  public int a14241;
+  public int a14242;
+  public int a14243;
+  public int a14244;
+  public int a14245;
+  public int a14246;
+  public int a14247;
+  public int a14248;
+  public int a14249;
+  public int a14250;
+  public int a14251;
+  public int a14252;
+  public int a14253;
+  public int a14254;
+  public int a14255;
+  public int a14256;
+  public int a14257;
+  public int a14258;
+  public int a14259;
+  public int a14260;
+  public int a14261;
+  public int a14262;
+  public int a14263;
+  public int a14264;
+  public int a14265;
+  public int a14266;
+  public int a14267;
+  public int a14268;
+  public int a14269;
+  public int a14270;
+  public int a14271;
+  public int a14272;
+  public int a14273;
+  public int a14274;
+  public int a14275;
+  public int a14276;
+  public int a14277;
+  public int a14278;
+  public int a14279;
+  public int a14280;
+  public int a14281;
+  public int a14282;
+  public int a14283;
+  public int a14284;
+  public int a14285;
+  public int a14286;
+  public int a14287;
+  public int a14288;
+  public int a14289;
+  public int a14290;
+  public int a14291;
+  public int a14292;
+  public int a14293;
+  public int a14294;
+  public int a14295;
+  public int a14296;
+  public int a14297;
+  public int a14298;
+  public int a14299;
+  public int a14300;
+  public int a14301;
+  public int a14302;
+  public int a14303;
+  public int a14304;
+  public int a14305;
+  public int a14306;
+  public int a14307;
+  public int a14308;
+  public int a14309;
+  public int a14310;
+  public int a14311;
+  public int a14312;
+  public int a14313;
+  public int a14314;
+  public int a14315;
+  public int a14316;
+  public int a14317;
+  public int a14318;
+  public int a14319;
+  public int a14320;
+  public int a14321;
+  public int a14322;
+  public int a14323;
+  public int a14324;
+  public int a14325;
+  public int a14326;
+  public int a14327;
+  public int a14328;
+  public int a14329;
+  public int a14330;
+  public int a14331;
+  public int a14332;
+  public int a14333;
+  public int a14334;
+  public int a14335;
+  public int a14336;
+  public int a14337;
+  public int a14338;
+  public int a14339;
+  public int a14340;
+  public int a14341;
+  public int a14342;
+  public int a14343;
+  public int a14344;
+  public int a14345;
+  public int a14346;
+  public int a14347;
+  public int a14348;
+  public int a14349;
+  public int a14350;
+  public int a14351;
+  public int a14352;
+  public int a14353;
+  public int a14354;
+  public int a14355;
+  public int a14356;
+  public int a14357;
+  public int a14358;
+  public int a14359;
+  public int a14360;
+  public int a14361;
+  public int a14362;
+  public int a14363;
+  public int a14364;
+  public int a14365;
+  public int a14366;
+  public int a14367;
+  public int a14368;
+  public int a14369;
+  public int a14370;
+  public int a14371;
+  public int a14372;
+  public int a14373;
+  public int a14374;
+  public int a14375;
+  public int a14376;
+  public int a14377;
+  public int a14378;
+  public int a14379;
+  public int a14380;
+  public int a14381;
+  public int a14382;
+  public int a14383;
+  public int a14384;
+  public int a14385;
+  public int a14386;
+  public int a14387;
+  public int a14388;
+  public int a14389;
+  public int a14390;
+  public int a14391;
+  public int a14392;
+  public int a14393;
+  public int a14394;
+  public int a14395;
+  public int a14396;
+  public int a14397;
+  public int a14398;
+  public int a14399;
+  public int a14400;
+  public int a14401;
+  public int a14402;
+  public int a14403;
+  public int a14404;
+  public int a14405;
+  public int a14406;
+  public int a14407;
+  public int a14408;
+  public int a14409;
+  public int a14410;
+  public int a14411;
+  public int a14412;
+  public int a14413;
+  public int a14414;
+  public int a14415;
+  public int a14416;
+  public int a14417;
+  public int a14418;
+  public int a14419;
+  public int a14420;
+  public int a14421;
+  public int a14422;
+  public int a14423;
+  public int a14424;
+  public int a14425;
+  public int a14426;
+  public int a14427;
+  public int a14428;
+  public int a14429;
+  public int a14430;
+  public int a14431;
+  public int a14432;
+  public int a14433;
+  public int a14434;
+  public int a14435;
+  public int a14436;
+  public int a14437;
+  public int a14438;
+  public int a14439;
+  public int a14440;
+  public int a14441;
+  public int a14442;
+  public int a14443;
+  public int a14444;
+  public int a14445;
+  public int a14446;
+  public int a14447;
+  public int a14448;
+  public int a14449;
+  public int a14450;
+  public int a14451;
+  public int a14452;
+  public int a14453;
+  public int a14454;
+  public int a14455;
+  public int a14456;
+  public int a14457;
+  public int a14458;
+  public int a14459;
+  public int a14460;
+  public int a14461;
+  public int a14462;
+  public int a14463;
+  public int a14464;
+  public int a14465;
+  public int a14466;
+  public int a14467;
+  public int a14468;
+  public int a14469;
+  public int a14470;
+  public int a14471;
+  public int a14472;
+  public int a14473;
+  public int a14474;
+  public int a14475;
+  public int a14476;
+  public int a14477;
+  public int a14478;
+  public int a14479;
+  public int a14480;
+  public int a14481;
+  public int a14482;
+  public int a14483;
+  public int a14484;
+  public int a14485;
+  public int a14486;
+  public int a14487;
+  public int a14488;
+  public int a14489;
+  public int a14490;
+  public int a14491;
+  public int a14492;
+  public int a14493;
+  public int a14494;
+  public int a14495;
+  public int a14496;
+  public int a14497;
+  public int a14498;
+  public int a14499;
+  public int a14500;
+  public int a14501;
+  public int a14502;
+  public int a14503;
+  public int a14504;
+  public int a14505;
+  public int a14506;
+  public int a14507;
+  public int a14508;
+  public int a14509;
+  public int a14510;
+  public int a14511;
+  public int a14512;
+  public int a14513;
+  public int a14514;
+  public int a14515;
+  public int a14516;
+  public int a14517;
+  public int a14518;
+  public int a14519;
+  public int a14520;
+  public int a14521;
+  public int a14522;
+  public int a14523;
+  public int a14524;
+  public int a14525;
+  public int a14526;
+  public int a14527;
+  public int a14528;
+  public int a14529;
+  public int a14530;
+  public int a14531;
+  public int a14532;
+  public int a14533;
+  public int a14534;
+  public int a14535;
+  public int a14536;
+  public int a14537;
+  public int a14538;
+  public int a14539;
+  public int a14540;
+  public int a14541;
+  public int a14542;
+  public int a14543;
+  public int a14544;
+  public int a14545;
+  public int a14546;
+  public int a14547;
+  public int a14548;
+  public int a14549;
+  public int a14550;
+  public int a14551;
+  public int a14552;
+  public int a14553;
+  public int a14554;
+  public int a14555;
+  public int a14556;
+  public int a14557;
+  public int a14558;
+  public int a14559;
+  public int a14560;
+  public int a14561;
+  public int a14562;
+  public int a14563;
+  public int a14564;
+  public int a14565;
+  public int a14566;
+  public int a14567;
+  public int a14568;
+  public int a14569;
+  public int a14570;
+  public int a14571;
+  public int a14572;
+  public int a14573;
+  public int a14574;
+  public int a14575;
+  public int a14576;
+  public int a14577;
+  public int a14578;
+  public int a14579;
+  public int a14580;
+  public int a14581;
+  public int a14582;
+  public int a14583;
+  public int a14584;
+  public int a14585;
+  public int a14586;
+  public int a14587;
+  public int a14588;
+  public int a14589;
+  public int a14590;
+  public int a14591;
+  public int a14592;
+  public int a14593;
+  public int a14594;
+  public int a14595;
+  public int a14596;
+  public int a14597;
+  public int a14598;
+  public int a14599;
+  public int a14600;
+  public int a14601;
+  public int a14602;
+  public int a14603;
+  public int a14604;
+  public int a14605;
+  public int a14606;
+  public int a14607;
+  public int a14608;
+  public int a14609;
+  public int a14610;
+  public int a14611;
+  public int a14612;
+  public int a14613;
+  public int a14614;
+  public int a14615;
+  public int a14616;
+  public int a14617;
+  public int a14618;
+  public int a14619;
+  public int a14620;
+  public int a14621;
+  public int a14622;
+  public int a14623;
+  public int a14624;
+  public int a14625;
+  public int a14626;
+  public int a14627;
+  public int a14628;
+  public int a14629;
+  public int a14630;
+  public int a14631;
+  public int a14632;
+  public int a14633;
+  public int a14634;
+  public int a14635;
+  public int a14636;
+  public int a14637;
+  public int a14638;
+  public int a14639;
+  public int a14640;
+  public int a14641;
+  public int a14642;
+  public int a14643;
+  public int a14644;
+  public int a14645;
+  public int a14646;
+  public int a14647;
+  public int a14648;
+  public int a14649;
+  public int a14650;
+  public int a14651;
+  public int a14652;
+  public int a14653;
+  public int a14654;
+  public int a14655;
+  public int a14656;
+  public int a14657;
+  public int a14658;
+  public int a14659;
+  public int a14660;
+  public int a14661;
+  public int a14662;
+  public int a14663;
+  public int a14664;
+  public int a14665;
+  public int a14666;
+  public int a14667;
+  public int a14668;
+  public int a14669;
+  public int a14670;
+  public int a14671;
+  public int a14672;
+  public int a14673;
+  public int a14674;
+  public int a14675;
+  public int a14676;
+  public int a14677;
+  public int a14678;
+  public int a14679;
+  public int a14680;
+  public int a14681;
+  public int a14682;
+  public int a14683;
+  public int a14684;
+  public int a14685;
+  public int a14686;
+  public int a14687;
+  public int a14688;
+  public int a14689;
+  public int a14690;
+  public int a14691;
+  public int a14692;
+  public int a14693;
+  public int a14694;
+  public int a14695;
+  public int a14696;
+  public int a14697;
+  public int a14698;
+  public int a14699;
+  public int a14700;
+  public int a14701;
+  public int a14702;
+  public int a14703;
+  public int a14704;
+  public int a14705;
+  public int a14706;
+  public int a14707;
+  public int a14708;
+  public int a14709;
+  public int a14710;
+  public int a14711;
+  public int a14712;
+  public int a14713;
+  public int a14714;
+  public int a14715;
+  public int a14716;
+  public int a14717;
+  public int a14718;
+  public int a14719;
+  public int a14720;
+  public int a14721;
+  public int a14722;
+  public int a14723;
+  public int a14724;
+  public int a14725;
+  public int a14726;
+  public int a14727;
+  public int a14728;
+  public int a14729;
+  public int a14730;
+  public int a14731;
+  public int a14732;
+  public int a14733;
+  public int a14734;
+  public int a14735;
+  public int a14736;
+  public int a14737;
+  public int a14738;
+  public int a14739;
+  public int a14740;
+  public int a14741;
+  public int a14742;
+  public int a14743;
+  public int a14744;
+  public int a14745;
+  public int a14746;
+  public int a14747;
+  public int a14748;
+  public int a14749;
+  public int a14750;
+  public int a14751;
+  public int a14752;
+  public int a14753;
+  public int a14754;
+  public int a14755;
+  public int a14756;
+  public int a14757;
+  public int a14758;
+  public int a14759;
+  public int a14760;
+  public int a14761;
+  public int a14762;
+  public int a14763;
+  public int a14764;
+  public int a14765;
+  public int a14766;
+  public int a14767;
+  public int a14768;
+  public int a14769;
+  public int a14770;
+  public int a14771;
+  public int a14772;
+  public int a14773;
+  public int a14774;
+  public int a14775;
+  public int a14776;
+  public int a14777;
+  public int a14778;
+  public int a14779;
+  public int a14780;
+  public int a14781;
+  public int a14782;
+  public int a14783;
+  public int a14784;
+  public int a14785;
+  public int a14786;
+  public int a14787;
+  public int a14788;
+  public int a14789;
+  public int a14790;
+  public int a14791;
+  public int a14792;
+  public int a14793;
+  public int a14794;
+  public int a14795;
+  public int a14796;
+  public int a14797;
+  public int a14798;
+  public int a14799;
+  public int a14800;
+  public int a14801;
+  public int a14802;
+  public int a14803;
+  public int a14804;
+  public int a14805;
+  public int a14806;
+  public int a14807;
+  public int a14808;
+  public int a14809;
+  public int a14810;
+  public int a14811;
+  public int a14812;
+  public int a14813;
+  public int a14814;
+  public int a14815;
+  public int a14816;
+  public int a14817;
+  public int a14818;
+  public int a14819;
+  public int a14820;
+  public int a14821;
+  public int a14822;
+  public int a14823;
+  public int a14824;
+  public int a14825;
+  public int a14826;
+  public int a14827;
+  public int a14828;
+  public int a14829;
+  public int a14830;
+  public int a14831;
+  public int a14832;
+  public int a14833;
+  public int a14834;
+  public int a14835;
+  public int a14836;
+  public int a14837;
+  public int a14838;
+  public int a14839;
+  public int a14840;
+  public int a14841;
+  public int a14842;
+  public int a14843;
+  public int a14844;
+  public int a14845;
+  public int a14846;
+  public int a14847;
+  public int a14848;
+  public int a14849;
+  public int a14850;
+  public int a14851;
+  public int a14852;
+  public int a14853;
+  public int a14854;
+  public int a14855;
+  public int a14856;
+  public int a14857;
+  public int a14858;
+  public int a14859;
+  public int a14860;
+  public int a14861;
+  public int a14862;
+  public int a14863;
+  public int a14864;
+  public int a14865;
+  public int a14866;
+  public int a14867;
+  public int a14868;
+  public int a14869;
+  public int a14870;
+  public int a14871;
+  public int a14872;
+  public int a14873;
+  public int a14874;
+  public int a14875;
+  public int a14876;
+  public int a14877;
+  public int a14878;
+  public int a14879;
+  public int a14880;
+  public int a14881;
+  public int a14882;
+  public int a14883;
+  public int a14884;
+  public int a14885;
+  public int a14886;
+  public int a14887;
+  public int a14888;
+  public int a14889;
+  public int a14890;
+  public int a14891;
+  public int a14892;
+  public int a14893;
+  public int a14894;
+  public int a14895;
+  public int a14896;
+  public int a14897;
+  public int a14898;
+  public int a14899;
+  public int a14900;
+  public int a14901;
+  public int a14902;
+  public int a14903;
+  public int a14904;
+  public int a14905;
+  public int a14906;
+  public int a14907;
+  public int a14908;
+  public int a14909;
+  public int a14910;
+  public int a14911;
+  public int a14912;
+  public int a14913;
+  public int a14914;
+  public int a14915;
+  public int a14916;
+  public int a14917;
+  public int a14918;
+  public int a14919;
+  public int a14920;
+  public int a14921;
+  public int a14922;
+  public int a14923;
+  public int a14924;
+  public int a14925;
+  public int a14926;
+  public int a14927;
+  public int a14928;
+  public int a14929;
+  public int a14930;
+  public int a14931;
+  public int a14932;
+  public int a14933;
+  public int a14934;
+  public int a14935;
+  public int a14936;
+  public int a14937;
+  public int a14938;
+  public int a14939;
+  public int a14940;
+  public int a14941;
+  public int a14942;
+  public int a14943;
+  public int a14944;
+  public int a14945;
+  public int a14946;
+  public int a14947;
+  public int a14948;
+  public int a14949;
+  public int a14950;
+  public int a14951;
+  public int a14952;
+  public int a14953;
+  public int a14954;
+  public int a14955;
+  public int a14956;
+  public int a14957;
+  public int a14958;
+  public int a14959;
+  public int a14960;
+  public int a14961;
+  public int a14962;
+  public int a14963;
+  public int a14964;
+  public int a14965;
+  public int a14966;
+  public int a14967;
+  public int a14968;
+  public int a14969;
+  public int a14970;
+  public int a14971;
+  public int a14972;
+  public int a14973;
+  public int a14974;
+  public int a14975;
+  public int a14976;
+  public int a14977;
+  public int a14978;
+  public int a14979;
+  public int a14980;
+  public int a14981;
+  public int a14982;
+  public int a14983;
+  public int a14984;
+  public int a14985;
+  public int a14986;
+  public int a14987;
+  public int a14988;
+  public int a14989;
+  public int a14990;
+  public int a14991;
+  public int a14992;
+  public int a14993;
+  public int a14994;
+  public int a14995;
+  public int a14996;
+  public int a14997;
+  public int a14998;
+  public int a14999;
+  public int a15000;
+  public int a15001;
+  public int a15002;
+  public int a15003;
+  public int a15004;
+  public int a15005;
+  public int a15006;
+  public int a15007;
+  public int a15008;
+  public int a15009;
+  public int a15010;
+  public int a15011;
+  public int a15012;
+  public int a15013;
+  public int a15014;
+  public int a15015;
+  public int a15016;
+  public int a15017;
+  public int a15018;
+  public int a15019;
+  public int a15020;
+  public int a15021;
+  public int a15022;
+  public int a15023;
+  public int a15024;
+  public int a15025;
+  public int a15026;
+  public int a15027;
+  public int a15028;
+  public int a15029;
+  public int a15030;
+  public int a15031;
+  public int a15032;
+  public int a15033;
+  public int a15034;
+  public int a15035;
+  public int a15036;
+  public int a15037;
+  public int a15038;
+  public int a15039;
+  public int a15040;
+  public int a15041;
+  public int a15042;
+  public int a15043;
+  public int a15044;
+  public int a15045;
+  public int a15046;
+  public int a15047;
+  public int a15048;
+  public int a15049;
+  public int a15050;
+  public int a15051;
+  public int a15052;
+  public int a15053;
+  public int a15054;
+  public int a15055;
+  public int a15056;
+  public int a15057;
+  public int a15058;
+  public int a15059;
+  public int a15060;
+  public int a15061;
+  public int a15062;
+  public int a15063;
+  public int a15064;
+  public int a15065;
+  public int a15066;
+  public int a15067;
+  public int a15068;
+  public int a15069;
+  public int a15070;
+  public int a15071;
+  public int a15072;
+  public int a15073;
+  public int a15074;
+  public int a15075;
+  public int a15076;
+  public int a15077;
+  public int a15078;
+  public int a15079;
+  public int a15080;
+  public int a15081;
+  public int a15082;
+  public int a15083;
+  public int a15084;
+  public int a15085;
+  public int a15086;
+  public int a15087;
+  public int a15088;
+  public int a15089;
+  public int a15090;
+  public int a15091;
+  public int a15092;
+  public int a15093;
+  public int a15094;
+  public int a15095;
+  public int a15096;
+  public int a15097;
+  public int a15098;
+  public int a15099;
+  public int a15100;
+  public int a15101;
+  public int a15102;
+  public int a15103;
+  public int a15104;
+  public int a15105;
+  public int a15106;
+  public int a15107;
+  public int a15108;
+  public int a15109;
+  public int a15110;
+  public int a15111;
+  public int a15112;
+  public int a15113;
+  public int a15114;
+  public int a15115;
+  public int a15116;
+  public int a15117;
+  public int a15118;
+  public int a15119;
+  public int a15120;
+  public int a15121;
+  public int a15122;
+  public int a15123;
+  public int a15124;
+  public int a15125;
+  public int a15126;
+  public int a15127;
+  public int a15128;
+  public int a15129;
+  public int a15130;
+  public int a15131;
+  public int a15132;
+  public int a15133;
+  public int a15134;
+  public int a15135;
+  public int a15136;
+  public int a15137;
+  public int a15138;
+  public int a15139;
+  public int a15140;
+  public int a15141;
+  public int a15142;
+  public int a15143;
+  public int a15144;
+  public int a15145;
+  public int a15146;
+  public int a15147;
+  public int a15148;
+  public int a15149;
+  public int a15150;
+  public int a15151;
+  public int a15152;
+  public int a15153;
+  public int a15154;
+  public int a15155;
+  public int a15156;
+  public int a15157;
+  public int a15158;
+  public int a15159;
+  public int a15160;
+  public int a15161;
+  public int a15162;
+  public int a15163;
+  public int a15164;
+  public int a15165;
+  public int a15166;
+  public int a15167;
+  public int a15168;
+  public int a15169;
+  public int a15170;
+  public int a15171;
+  public int a15172;
+  public int a15173;
+  public int a15174;
+  public int a15175;
+  public int a15176;
+  public int a15177;
+  public int a15178;
+  public int a15179;
+  public int a15180;
+  public int a15181;
+  public int a15182;
+  public int a15183;
+  public int a15184;
+  public int a15185;
+  public int a15186;
+  public int a15187;
+  public int a15188;
+  public int a15189;
+  public int a15190;
+  public int a15191;
+  public int a15192;
+  public int a15193;
+  public int a15194;
+  public int a15195;
+  public int a15196;
+  public int a15197;
+  public int a15198;
+  public int a15199;
+  public int a15200;
+  public int a15201;
+  public int a15202;
+  public int a15203;
+  public int a15204;
+  public int a15205;
+  public int a15206;
+  public int a15207;
+  public int a15208;
+  public int a15209;
+  public int a15210;
+  public int a15211;
+  public int a15212;
+  public int a15213;
+  public int a15214;
+  public int a15215;
+  public int a15216;
+  public int a15217;
+  public int a15218;
+  public int a15219;
+  public int a15220;
+  public int a15221;
+  public int a15222;
+  public int a15223;
+  public int a15224;
+  public int a15225;
+  public int a15226;
+  public int a15227;
+  public int a15228;
+  public int a15229;
+  public int a15230;
+  public int a15231;
+  public int a15232;
+  public int a15233;
+  public int a15234;
+  public int a15235;
+  public int a15236;
+  public int a15237;
+  public int a15238;
+  public int a15239;
+  public int a15240;
+  public int a15241;
+  public int a15242;
+  public int a15243;
+  public int a15244;
+  public int a15245;
+  public int a15246;
+  public int a15247;
+  public int a15248;
+  public int a15249;
+  public int a15250;
+  public int a15251;
+  public int a15252;
+  public int a15253;
+  public int a15254;
+  public int a15255;
+  public int a15256;
+  public int a15257;
+  public int a15258;
+  public int a15259;
+  public int a15260;
+  public int a15261;
+  public int a15262;
+  public int a15263;
+  public int a15264;
+  public int a15265;
+  public int a15266;
+  public int a15267;
+  public int a15268;
+  public int a15269;
+  public int a15270;
+  public int a15271;
+  public int a15272;
+  public int a15273;
+  public int a15274;
+  public int a15275;
+  public int a15276;
+  public int a15277;
+  public int a15278;
+  public int a15279;
+  public int a15280;
+  public int a15281;
+  public int a15282;
+  public int a15283;
+  public int a15284;
+  public int a15285;
+  public int a15286;
+  public int a15287;
+  public int a15288;
+  public int a15289;
+  public int a15290;
+  public int a15291;
+  public int a15292;
+  public int a15293;
+  public int a15294;
+  public int a15295;
+  public int a15296;
+  public int a15297;
+  public int a15298;
+  public int a15299;
+  public int a15300;
+  public int a15301;
+  public int a15302;
+  public int a15303;
+  public int a15304;
+  public int a15305;
+  public int a15306;
+  public int a15307;
+  public int a15308;
+  public int a15309;
+  public int a15310;
+  public int a15311;
+  public int a15312;
+  public int a15313;
+  public int a15314;
+  public int a15315;
+  public int a15316;
+  public int a15317;
+  public int a15318;
+  public int a15319;
+  public int a15320;
+  public int a15321;
+  public int a15322;
+  public int a15323;
+  public int a15324;
+  public int a15325;
+  public int a15326;
+  public int a15327;
+  public int a15328;
+  public int a15329;
+  public int a15330;
+  public int a15331;
+  public int a15332;
+  public int a15333;
+  public int a15334;
+  public int a15335;
+  public int a15336;
+  public int a15337;
+  public int a15338;
+  public int a15339;
+  public int a15340;
+  public int a15341;
+  public int a15342;
+  public int a15343;
+  public int a15344;
+  public int a15345;
+  public int a15346;
+  public int a15347;
+  public int a15348;
+  public int a15349;
+  public int a15350;
+  public int a15351;
+  public int a15352;
+  public int a15353;
+  public int a15354;
+  public int a15355;
+  public int a15356;
+  public int a15357;
+  public int a15358;
+  public int a15359;
+  public int a15360;
+  public int a15361;
+  public int a15362;
+  public int a15363;
+  public int a15364;
+  public int a15365;
+  public int a15366;
+  public int a15367;
+  public int a15368;
+  public int a15369;
+  public int a15370;
+  public int a15371;
+  public int a15372;
+  public int a15373;
+  public int a15374;
+  public int a15375;
+  public int a15376;
+  public int a15377;
+  public int a15378;
+  public int a15379;
+  public int a15380;
+  public int a15381;
+  public int a15382;
+  public int a15383;
+  public int a15384;
+  public int a15385;
+  public int a15386;
+  public int a15387;
+  public int a15388;
+  public int a15389;
+  public int a15390;
+  public int a15391;
+  public int a15392;
+  public int a15393;
+  public int a15394;
+  public int a15395;
+  public int a15396;
+  public int a15397;
+  public int a15398;
+  public int a15399;
+  public int a15400;
+  public int a15401;
+  public int a15402;
+  public int a15403;
+  public int a15404;
+  public int a15405;
+  public int a15406;
+  public int a15407;
+  public int a15408;
+  public int a15409;
+  public int a15410;
+  public int a15411;
+  public int a15412;
+  public int a15413;
+  public int a15414;
+  public int a15415;
+  public int a15416;
+  public int a15417;
+  public int a15418;
+  public int a15419;
+  public int a15420;
+  public int a15421;
+  public int a15422;
+  public int a15423;
+  public int a15424;
+  public int a15425;
+  public int a15426;
+  public int a15427;
+  public int a15428;
+  public int a15429;
+  public int a15430;
+  public int a15431;
+  public int a15432;
+  public int a15433;
+  public int a15434;
+  public int a15435;
+  public int a15436;
+  public int a15437;
+  public int a15438;
+  public int a15439;
+  public int a15440;
+  public int a15441;
+  public int a15442;
+  public int a15443;
+  public int a15444;
+  public int a15445;
+  public int a15446;
+  public int a15447;
+  public int a15448;
+  public int a15449;
+  public int a15450;
+  public int a15451;
+  public int a15452;
+  public int a15453;
+  public int a15454;
+  public int a15455;
+  public int a15456;
+  public int a15457;
+  public int a15458;
+  public int a15459;
+  public int a15460;
+  public int a15461;
+  public int a15462;
+  public int a15463;
+  public int a15464;
+  public int a15465;
+  public int a15466;
+  public int a15467;
+  public int a15468;
+  public int a15469;
+  public int a15470;
+  public int a15471;
+  public int a15472;
+  public int a15473;
+  public int a15474;
+  public int a15475;
+  public int a15476;
+  public int a15477;
+  public int a15478;
+  public int a15479;
+  public int a15480;
+  public int a15481;
+  public int a15482;
+  public int a15483;
+  public int a15484;
+  public int a15485;
+  public int a15486;
+  public int a15487;
+  public int a15488;
+  public int a15489;
+  public int a15490;
+  public int a15491;
+  public int a15492;
+  public int a15493;
+  public int a15494;
+  public int a15495;
+  public int a15496;
+  public int a15497;
+  public int a15498;
+  public int a15499;
+  public int a15500;
+  public int a15501;
+  public int a15502;
+  public int a15503;
+  public int a15504;
+  public int a15505;
+  public int a15506;
+  public int a15507;
+  public int a15508;
+  public int a15509;
+  public int a15510;
+  public int a15511;
+  public int a15512;
+  public int a15513;
+  public int a15514;
+  public int a15515;
+  public int a15516;
+  public int a15517;
+  public int a15518;
+  public int a15519;
+  public int a15520;
+  public int a15521;
+  public int a15522;
+  public int a15523;
+  public int a15524;
+  public int a15525;
+  public int a15526;
+  public int a15527;
+  public int a15528;
+  public int a15529;
+  public int a15530;
+  public int a15531;
+  public int a15532;
+  public int a15533;
+  public int a15534;
+  public int a15535;
+  public int a15536;
+  public int a15537;
+  public int a15538;
+  public int a15539;
+  public int a15540;
+  public int a15541;
+  public int a15542;
+  public int a15543;
+  public int a15544;
+  public int a15545;
+  public int a15546;
+  public int a15547;
+  public int a15548;
+  public int a15549;
+  public int a15550;
+  public int a15551;
+  public int a15552;
+  public int a15553;
+  public int a15554;
+  public int a15555;
+  public int a15556;
+  public int a15557;
+  public int a15558;
+  public int a15559;
+  public int a15560;
+  public int a15561;
+  public int a15562;
+  public int a15563;
+  public int a15564;
+  public int a15565;
+  public int a15566;
+  public int a15567;
+  public int a15568;
+  public int a15569;
+  public int a15570;
+  public int a15571;
+  public int a15572;
+  public int a15573;
+  public int a15574;
+  public int a15575;
+  public int a15576;
+  public int a15577;
+  public int a15578;
+  public int a15579;
+  public int a15580;
+  public int a15581;
+  public int a15582;
+  public int a15583;
+  public int a15584;
+  public int a15585;
+  public int a15586;
+  public int a15587;
+  public int a15588;
+  public int a15589;
+  public int a15590;
+  public int a15591;
+  public int a15592;
+  public int a15593;
+  public int a15594;
+  public int a15595;
+  public int a15596;
+  public int a15597;
+  public int a15598;
+  public int a15599;
+  public int a15600;
+  public int a15601;
+  public int a15602;
+  public int a15603;
+  public int a15604;
+  public int a15605;
+  public int a15606;
+  public int a15607;
+  public int a15608;
+  public int a15609;
+  public int a15610;
+  public int a15611;
+  public int a15612;
+  public int a15613;
+  public int a15614;
+  public int a15615;
+  public int a15616;
+  public int a15617;
+  public int a15618;
+  public int a15619;
+  public int a15620;
+  public int a15621;
+  public int a15622;
+  public int a15623;
+  public int a15624;
+  public int a15625;
+  public int a15626;
+  public int a15627;
+  public int a15628;
+  public int a15629;
+  public int a15630;
+  public int a15631;
+  public int a15632;
+  public int a15633;
+  public int a15634;
+  public int a15635;
+  public int a15636;
+  public int a15637;
+  public int a15638;
+  public int a15639;
+  public int a15640;
+  public int a15641;
+  public int a15642;
+  public int a15643;
+  public int a15644;
+  public int a15645;
+  public int a15646;
+  public int a15647;
+  public int a15648;
+  public int a15649;
+  public int a15650;
+  public int a15651;
+  public int a15652;
+  public int a15653;
+  public int a15654;
+  public int a15655;
+  public int a15656;
+  public int a15657;
+  public int a15658;
+  public int a15659;
+  public int a15660;
+  public int a15661;
+  public int a15662;
+  public int a15663;
+  public int a15664;
+  public int a15665;
+  public int a15666;
+  public int a15667;
+  public int a15668;
+  public int a15669;
+  public int a15670;
+  public int a15671;
+  public int a15672;
+  public int a15673;
+  public int a15674;
+  public int a15675;
+  public int a15676;
+  public int a15677;
+  public int a15678;
+  public int a15679;
+  public int a15680;
+  public int a15681;
+  public int a15682;
+  public int a15683;
+  public int a15684;
+  public int a15685;
+  public int a15686;
+  public int a15687;
+  public int a15688;
+  public int a15689;
+  public int a15690;
+  public int a15691;
+  public int a15692;
+  public int a15693;
+  public int a15694;
+  public int a15695;
+  public int a15696;
+  public int a15697;
+  public int a15698;
+  public int a15699;
+  public int a15700;
+  public int a15701;
+  public int a15702;
+  public int a15703;
+  public int a15704;
+  public int a15705;
+  public int a15706;
+  public int a15707;
+  public int a15708;
+  public int a15709;
+  public int a15710;
+  public int a15711;
+  public int a15712;
+  public int a15713;
+  public int a15714;
+  public int a15715;
+  public int a15716;
+  public int a15717;
+  public int a15718;
+  public int a15719;
+  public int a15720;
+  public int a15721;
+  public int a15722;
+  public int a15723;
+  public int a15724;
+  public int a15725;
+  public int a15726;
+  public int a15727;
+  public int a15728;
+  public int a15729;
+  public int a15730;
+  public int a15731;
+  public int a15732;
+  public int a15733;
+  public int a15734;
+  public int a15735;
+  public int a15736;
+  public int a15737;
+  public int a15738;
+  public int a15739;
+  public int a15740;
+  public int a15741;
+  public int a15742;
+  public int a15743;
+  public int a15744;
+  public int a15745;
+  public int a15746;
+  public int a15747;
+  public int a15748;
+  public int a15749;
+  public int a15750;
+  public int a15751;
+  public int a15752;
+  public int a15753;
+  public int a15754;
+  public int a15755;
+  public int a15756;
+  public int a15757;
+  public int a15758;
+  public int a15759;
+  public int a15760;
+  public int a15761;
+  public int a15762;
+  public int a15763;
+  public int a15764;
+  public int a15765;
+  public int a15766;
+  public int a15767;
+  public int a15768;
+  public int a15769;
+  public int a15770;
+  public int a15771;
+  public int a15772;
+  public int a15773;
+  public int a15774;
+  public int a15775;
+  public int a15776;
+  public int a15777;
+  public int a15778;
+  public int a15779;
+  public int a15780;
+  public int a15781;
+  public int a15782;
+  public int a15783;
+  public int a15784;
+  public int a15785;
+  public int a15786;
+  public int a15787;
+  public int a15788;
+  public int a15789;
+  public int a15790;
+  public int a15791;
+  public int a15792;
+  public int a15793;
+  public int a15794;
+  public int a15795;
+  public int a15796;
+  public int a15797;
+  public int a15798;
+  public int a15799;
+  public int a15800;
+  public int a15801;
+  public int a15802;
+  public int a15803;
+  public int a15804;
+  public int a15805;
+  public int a15806;
+  public int a15807;
+  public int a15808;
+  public int a15809;
+  public int a15810;
+  public int a15811;
+  public int a15812;
+  public int a15813;
+  public int a15814;
+  public int a15815;
+  public int a15816;
+  public int a15817;
+  public int a15818;
+  public int a15819;
+  public int a15820;
+  public int a15821;
+  public int a15822;
+  public int a15823;
+  public int a15824;
+  public int a15825;
+  public int a15826;
+  public int a15827;
+  public int a15828;
+  public int a15829;
+  public int a15830;
+  public int a15831;
+  public int a15832;
+  public int a15833;
+  public int a15834;
+  public int a15835;
+  public int a15836;
+  public int a15837;
+  public int a15838;
+  public int a15839;
+  public int a15840;
+  public int a15841;
+  public int a15842;
+  public int a15843;
+  public int a15844;
+  public int a15845;
+  public int a15846;
+  public int a15847;
+  public int a15848;
+  public int a15849;
+  public int a15850;
+  public int a15851;
+  public int a15852;
+  public int a15853;
+  public int a15854;
+  public int a15855;
+  public int a15856;
+  public int a15857;
+  public int a15858;
+  public int a15859;
+  public int a15860;
+  public int a15861;
+  public int a15862;
+  public int a15863;
+  public int a15864;
+  public int a15865;
+  public int a15866;
+  public int a15867;
+  public int a15868;
+  public int a15869;
+  public int a15870;
+  public int a15871;
+  public int a15872;
+  public int a15873;
+  public int a15874;
+  public int a15875;
+  public int a15876;
+  public int a15877;
+  public int a15878;
+  public int a15879;
+  public int a15880;
+  public int a15881;
+  public int a15882;
+  public int a15883;
+  public int a15884;
+  public int a15885;
+  public int a15886;
+  public int a15887;
+  public int a15888;
+  public int a15889;
+  public int a15890;
+  public int a15891;
+  public int a15892;
+  public int a15893;
+  public int a15894;
+  public int a15895;
+  public int a15896;
+  public int a15897;
+  public int a15898;
+  public int a15899;
+  public int a15900;
+  public int a15901;
+  public int a15902;
+  public int a15903;
+  public int a15904;
+  public int a15905;
+  public int a15906;
+  public int a15907;
+  public int a15908;
+  public int a15909;
+  public int a15910;
+  public int a15911;
+  public int a15912;
+  public int a15913;
+  public int a15914;
+  public int a15915;
+  public int a15916;
+  public int a15917;
+  public int a15918;
+  public int a15919;
+  public int a15920;
+  public int a15921;
+  public int a15922;
+  public int a15923;
+  public int a15924;
+  public int a15925;
+  public int a15926;
+  public int a15927;
+  public int a15928;
+  public int a15929;
+  public int a15930;
+  public int a15931;
+  public int a15932;
+  public int a15933;
+  public int a15934;
+  public int a15935;
+  public int a15936;
+  public int a15937;
+  public int a15938;
+  public int a15939;
+  public int a15940;
+  public int a15941;
+  public int a15942;
+  public int a15943;
+  public int a15944;
+  public int a15945;
+  public int a15946;
+  public int a15947;
+  public int a15948;
+  public int a15949;
+  public int a15950;
+  public int a15951;
+  public int a15952;
+  public int a15953;
+  public int a15954;
+  public int a15955;
+  public int a15956;
+  public int a15957;
+  public int a15958;
+  public int a15959;
+  public int a15960;
+  public int a15961;
+  public int a15962;
+  public int a15963;
+  public int a15964;
+  public int a15965;
+  public int a15966;
+  public int a15967;
+  public int a15968;
+  public int a15969;
+  public int a15970;
+  public int a15971;
+  public int a15972;
+  public int a15973;
+  public int a15974;
+  public int a15975;
+  public int a15976;
+  public int a15977;
+  public int a15978;
+  public int a15979;
+  public int a15980;
+  public int a15981;
+  public int a15982;
+  public int a15983;
+  public int a15984;
+  public int a15985;
+  public int a15986;
+  public int a15987;
+  public int a15988;
+  public int a15989;
+  public int a15990;
+  public int a15991;
+  public int a15992;
+  public int a15993;
+  public int a15994;
+  public int a15995;
+  public int a15996;
+  public int a15997;
+  public int a15998;
+  public int a15999;
+  public int a16000;
+  public int a16001;
+  public int a16002;
+  public int a16003;
+  public int a16004;
+  public int a16005;
+  public int a16006;
+  public int a16007;
+  public int a16008;
+  public int a16009;
+  public int a16010;
+  public int a16011;
+  public int a16012;
+  public int a16013;
+  public int a16014;
+  public int a16015;
+  public int a16016;
+  public int a16017;
+  public int a16018;
+  public int a16019;
+  public int a16020;
+  public int a16021;
+  public int a16022;
+  public int a16023;
+  public int a16024;
+  public int a16025;
+  public int a16026;
+  public int a16027;
+  public int a16028;
+  public int a16029;
+  public int a16030;
+  public int a16031;
+  public int a16032;
+  public int a16033;
+  public int a16034;
+  public int a16035;
+  public int a16036;
+  public int a16037;
+  public int a16038;
+  public int a16039;
+  public int a16040;
+  public int a16041;
+  public int a16042;
+  public int a16043;
+  public int a16044;
+  public int a16045;
+  public int a16046;
+  public int a16047;
+  public int a16048;
+  public int a16049;
+  public int a16050;
+  public int a16051;
+  public int a16052;
+  public int a16053;
+  public int a16054;
+  public int a16055;
+  public int a16056;
+  public int a16057;
+  public int a16058;
+  public int a16059;
+  public int a16060;
+  public int a16061;
+  public int a16062;
+  public int a16063;
+  public int a16064;
+  public int a16065;
+  public int a16066;
+  public int a16067;
+  public int a16068;
+  public int a16069;
+  public int a16070;
+  public int a16071;
+  public int a16072;
+  public int a16073;
+  public int a16074;
+  public int a16075;
+  public int a16076;
+  public int a16077;
+  public int a16078;
+  public int a16079;
+  public int a16080;
+  public int a16081;
+  public int a16082;
+  public int a16083;
+  public int a16084;
+  public int a16085;
+  public int a16086;
+  public int a16087;
+  public int a16088;
+  public int a16089;
+  public int a16090;
+  public int a16091;
+  public int a16092;
+  public int a16093;
+  public int a16094;
+  public int a16095;
+  public int a16096;
+  public int a16097;
+  public int a16098;
+  public int a16099;
+  public int a16100;
+  public int a16101;
+  public int a16102;
+  public int a16103;
+  public int a16104;
+  public int a16105;
+  public int a16106;
+  public int a16107;
+  public int a16108;
+  public int a16109;
+  public int a16110;
+  public int a16111;
+  public int a16112;
+  public int a16113;
+  public int a16114;
+  public int a16115;
+  public int a16116;
+  public int a16117;
+  public int a16118;
+  public int a16119;
+  public int a16120;
+  public int a16121;
+  public int a16122;
+  public int a16123;
+  public int a16124;
+  public int a16125;
+  public int a16126;
+  public int a16127;
+  public int a16128;
+  public int a16129;
+  public int a16130;
+  public int a16131;
+  public int a16132;
+  public int a16133;
+  public int a16134;
+  public int a16135;
+  public int a16136;
+  public int a16137;
+  public int a16138;
+  public int a16139;
+  public int a16140;
+  public int a16141;
+  public int a16142;
+  public int a16143;
+  public int a16144;
+  public int a16145;
+  public int a16146;
+  public int a16147;
+  public int a16148;
+  public int a16149;
+  public int a16150;
+  public int a16151;
+  public int a16152;
+  public int a16153;
+  public int a16154;
+  public int a16155;
+  public int a16156;
+  public int a16157;
+  public int a16158;
+  public int a16159;
+  public int a16160;
+  public int a16161;
+  public int a16162;
+  public int a16163;
+  public int a16164;
+  public int a16165;
+  public int a16166;
+  public int a16167;
+  public int a16168;
+  public int a16169;
+  public int a16170;
+  public int a16171;
+  public int a16172;
+  public int a16173;
+  public int a16174;
+  public int a16175;
+  public int a16176;
+  public int a16177;
+  public int a16178;
+  public int a16179;
+  public int a16180;
+  public int a16181;
+  public int a16182;
+  public int a16183;
+  public int a16184;
+  public int a16185;
+  public int a16186;
+  public int a16187;
+  public int a16188;
+  public int a16189;
+  public int a16190;
+  public int a16191;
+  public int a16192;
+  public int a16193;
+  public int a16194;
+  public int a16195;
+  public int a16196;
+  public int a16197;
+  public int a16198;
+  public int a16199;
+  public int a16200;
+  public int a16201;
+  public int a16202;
+  public int a16203;
+  public int a16204;
+  public int a16205;
+  public int a16206;
+  public int a16207;
+  public int a16208;
+  public int a16209;
+  public int a16210;
+  public int a16211;
+  public int a16212;
+  public int a16213;
+  public int a16214;
+  public int a16215;
+  public int a16216;
+  public int a16217;
+  public int a16218;
+  public int a16219;
+  public int a16220;
+  public int a16221;
+  public int a16222;
+  public int a16223;
+  public int a16224;
+  public int a16225;
+  public int a16226;
+  public int a16227;
+  public int a16228;
+  public int a16229;
+  public int a16230;
+  public int a16231;
+  public int a16232;
+  public int a16233;
+  public int a16234;
+  public int a16235;
+  public int a16236;
+  public int a16237;
+  public int a16238;
+  public int a16239;
+  public int a16240;
+  public int a16241;
+  public int a16242;
+  public int a16243;
+  public int a16244;
+  public int a16245;
+  public int a16246;
+  public int a16247;
+  public int a16248;
+  public int a16249;
+  public int a16250;
+  public int a16251;
+  public int a16252;
+  public int a16253;
+  public int a16254;
+  public int a16255;
+  public int a16256;
+  public int a16257;
+  public int a16258;
+  public int a16259;
+  public int a16260;
+  public int a16261;
+  public int a16262;
+  public int a16263;
+  public int a16264;
+  public int a16265;
+  public int a16266;
+  public int a16267;
+  public int a16268;
+  public int a16269;
+  public int a16270;
+  public int a16271;
+  public int a16272;
+  public int a16273;
+  public int a16274;
+  public int a16275;
+  public int a16276;
+  public int a16277;
+  public int a16278;
+  public int a16279;
+  public int a16280;
+  public int a16281;
+  public int a16282;
+  public int a16283;
+  public int a16284;
+  public int a16285;
+  public int a16286;
+  public int a16287;
+  public int a16288;
+  public int a16289;
+  public int a16290;
+  public int a16291;
+  public int a16292;
+  public int a16293;
+  public int a16294;
+  public int a16295;
+  public int a16296;
+  public int a16297;
+  public int a16298;
+  public int a16299;
+  public int a16300;
+  public int a16301;
+  public int a16302;
+  public int a16303;
+  public int a16304;
+  public int a16305;
+  public int a16306;
+  public int a16307;
+  public int a16308;
+  public int a16309;
+  public int a16310;
+  public int a16311;
+  public int a16312;
+  public int a16313;
+  public int a16314;
+  public int a16315;
+  public int a16316;
+  public int a16317;
+  public int a16318;
+  public int a16319;
+  public int a16320;
+  public int a16321;
+  public int a16322;
+  public int a16323;
+  public int a16324;
+  public int a16325;
+  public int a16326;
+  public int a16327;
+  public int a16328;
+  public int a16329;
+  public int a16330;
+  public int a16331;
+  public int a16332;
+  public int a16333;
+  public int a16334;
+  public int a16335;
+  public int a16336;
+  public int a16337;
+  public int a16338;
+  public int a16339;
+  public int a16340;
+  public int a16341;
+  public int a16342;
+  public int a16343;
+  public int a16344;
+  public int a16345;
+  public int a16346;
+  public int a16347;
+  public int a16348;
+  public int a16349;
+  public int a16350;
+  public int a16351;
+  public int a16352;
+  public int a16353;
+  public int a16354;
+  public int a16355;
+  public int a16356;
+  public int a16357;
+  public int a16358;
+  public int a16359;
+  public int a16360;
+  public int a16361;
+  public int a16362;
+  public int a16363;
+  public int a16364;
+  public int a16365;
+  public int a16366;
+  public int a16367;
+  public int a16368;
+  public int a16369;
+  public int a16370;
+  public int a16371;
+  public int a16372;
+  public int a16373;
+  public int a16374;
+  public int a16375;
+  public int a16376;
+  public int a16377;
+  public int a16378;
+  public int a16379;
+  public int a16380;
+  public int a16381;
+  public int a16382;
+  public int a16383;
+  public int a16384;
+  public int a16385;
+  public int a16386;
+  public int a16387;
+  public int a16388;
+  public int a16389;
+  public int a16390;
+  public int a16391;
+  public int a16392;
+  public int a16393;
+  public int a16394;
+  public int a16395;
+  public int a16396;
+  public int a16397;
+  public int a16398;
+  public int a16399;
+  public int a16400;
+  public int a16401;
+  public int a16402;
+  public int a16403;
+  public int a16404;
+  public int a16405;
+  public int a16406;
+  public int a16407;
+  public int a16408;
+  public int a16409;
+  public int a16410;
+  public int a16411;
+  public int a16412;
+  public int a16413;
+  public int a16414;
+  public int a16415;
+  public int a16416;
+  public int a16417;
+  public int a16418;
+  public int a16419;
+  public int a16420;
+  public int a16421;
+  public int a16422;
+  public int a16423;
+  public int a16424;
+  public int a16425;
+  public int a16426;
+  public int a16427;
+  public int a16428;
+  public int a16429;
+  public int a16430;
+  public int a16431;
+  public int a16432;
+  public int a16433;
+  public int a16434;
+  public int a16435;
+  public int a16436;
+  public int a16437;
+  public int a16438;
+  public int a16439;
+  public int a16440;
+  public int a16441;
+  public int a16442;
+  public int a16443;
+  public int a16444;
+  public int a16445;
+  public int a16446;
+  public int a16447;
+  public int a16448;
+  public int a16449;
+  public int a16450;
+  public int a16451;
+  public int a16452;
+  public int a16453;
+  public int a16454;
+  public int a16455;
+  public int a16456;
+  public int a16457;
+  public int a16458;
+  public int a16459;
+  public int a16460;
+  public int a16461;
+  public int a16462;
+  public int a16463;
+  public int a16464;
+  public int a16465;
+  public int a16466;
+  public int a16467;
+  public int a16468;
+  public int a16469;
+  public int a16470;
+  public int a16471;
+  public int a16472;
+  public int a16473;
+  public int a16474;
+  public int a16475;
+  public int a16476;
+  public int a16477;
+  public int a16478;
+  public int a16479;
+  public int a16480;
+  public int a16481;
+  public int a16482;
+  public int a16483;
+  public int a16484;
+  public int a16485;
+  public int a16486;
+  public int a16487;
+  public int a16488;
+  public int a16489;
+  public int a16490;
+  public int a16491;
+  public int a16492;
+  public int a16493;
+  public int a16494;
+  public int a16495;
+  public int a16496;
+  public int a16497;
+  public int a16498;
+  public int a16499;
+  public int a16500;
+  public int a16501;
+  public int a16502;
+  public int a16503;
+  public int a16504;
+  public int a16505;
+  public int a16506;
+  public int a16507;
+  public int a16508;
+  public int a16509;
+  public int a16510;
+  public int a16511;
+  public int a16512;
+  public int a16513;
+  public int a16514;
+  public int a16515;
+  public int a16516;
+  public int a16517;
+  public int a16518;
+  public int a16519;
+  public int a16520;
+  public int a16521;
+  public int a16522;
+  public int a16523;
+  public int a16524;
+  public int a16525;
+  public int a16526;
+  public int a16527;
+  public int a16528;
+  public int a16529;
+  public int a16530;
+  public int a16531;
+  public int a16532;
+  public int a16533;
+  public int a16534;
+  public int a16535;
+  public int a16536;
+  public int a16537;
+  public int a16538;
+  public int a16539;
+  public int a16540;
+  public int a16541;
+  public int a16542;
+  public int a16543;
+  public int a16544;
+  public int a16545;
+  public int a16546;
+  public int a16547;
+  public int a16548;
+  public int a16549;
+  public int a16550;
+  public int a16551;
+  public int a16552;
+  public int a16553;
+  public int a16554;
+  public int a16555;
+  public int a16556;
+  public int a16557;
+  public int a16558;
+  public int a16559;
+  public int a16560;
+  public int a16561;
+  public int a16562;
+  public int a16563;
+  public int a16564;
+  public int a16565;
+  public int a16566;
+  public int a16567;
+  public int a16568;
+  public int a16569;
+  public int a16570;
+  public int a16571;
+  public int a16572;
+  public int a16573;
+  public int a16574;
+  public int a16575;
+  public int a16576;
+  public int a16577;
+  public int a16578;
+  public int a16579;
+  public int a16580;
+  public int a16581;
+  public int a16582;
+  public int a16583;
+  public int a16584;
+  public int a16585;
+  public int a16586;
+  public int a16587;
+  public int a16588;
+  public int a16589;
+  public int a16590;
+  public int a16591;
+  public int a16592;
+  public int a16593;
+  public int a16594;
+  public int a16595;
+  public int a16596;
+  public int a16597;
+  public int a16598;
+  public int a16599;
+  public int a16600;
+  public int a16601;
+  public int a16602;
+  public int a16603;
+  public int a16604;
+  public int a16605;
+  public int a16606;
+  public int a16607;
+  public int a16608;
+  public int a16609;
+  public int a16610;
+  public int a16611;
+  public int a16612;
+  public int a16613;
+  public int a16614;
+  public int a16615;
+  public int a16616;
+  public int a16617;
+  public int a16618;
+  public int a16619;
+  public int a16620;
+  public int a16621;
+  public int a16622;
+  public int a16623;
+  public int a16624;
+  public int a16625;
+  public int a16626;
+  public int a16627;
+  public int a16628;
+  public int a16629;
+  public int a16630;
+  public int a16631;
+  public int a16632;
+  public int a16633;
+  public int a16634;
+  public int a16635;
+  public int a16636;
+  public int a16637;
+  public int a16638;
+  public int a16639;
+  public int a16640;
+  public int a16641;
+  public int a16642;
+  public int a16643;
+  public int a16644;
+  public int a16645;
+  public int a16646;
+  public int a16647;
+  public int a16648;
+  public int a16649;
+  public int a16650;
+  public int a16651;
+  public int a16652;
+  public int a16653;
+  public int a16654;
+  public int a16655;
+  public int a16656;
+  public int a16657;
+  public int a16658;
+  public int a16659;
+  public int a16660;
+  public int a16661;
+  public int a16662;
+  public int a16663;
+  public int a16664;
+  public int a16665;
+  public int a16666;
+  public int a16667;
+  public int a16668;
+  public int a16669;
+  public int a16670;
+  public int a16671;
+  public int a16672;
+  public int a16673;
+  public int a16674;
+  public int a16675;
+  public int a16676;
+  public int a16677;
+  public int a16678;
+  public int a16679;
+  public int a16680;
+  public int a16681;
+  public int a16682;
+  public int a16683;
+  public int a16684;
+  public int a16685;
+  public int a16686;
+  public int a16687;
+  public int a16688;
+  public int a16689;
+  public int a16690;
+  public int a16691;
+  public int a16692;
+  public int a16693;
+  public int a16694;
+  public int a16695;
+  public int a16696;
+  public int a16697;
+  public int a16698;
+  public int a16699;
+  public int a16700;
+  public int a16701;
+  public int a16702;
+  public int a16703;
+  public int a16704;
+  public int a16705;
+  public int a16706;
+  public int a16707;
+  public int a16708;
+  public int a16709;
+  public int a16710;
+  public int a16711;
+  public int a16712;
+  public int a16713;
+  public int a16714;
+  public int a16715;
+  public int a16716;
+  public int a16717;
+  public int a16718;
+  public int a16719;
+  public int a16720;
+  public int a16721;
+  public int a16722;
+  public int a16723;
+  public int a16724;
+  public int a16725;
+  public int a16726;
+  public int a16727;
+  public int a16728;
+  public int a16729;
+  public int a16730;
+  public int a16731;
+  public int a16732;
+  public int a16733;
+  public int a16734;
+  public int a16735;
+  public int a16736;
+  public int a16737;
+  public int a16738;
+  public int a16739;
+  public int a16740;
+  public int a16741;
+  public int a16742;
+  public int a16743;
+  public int a16744;
+  public int a16745;
+  public int a16746;
+  public int a16747;
+  public int a16748;
+  public int a16749;
+  public int a16750;
+  public int a16751;
+  public int a16752;
+  public int a16753;
+  public int a16754;
+  public int a16755;
+  public int a16756;
+  public int a16757;
+  public int a16758;
+  public int a16759;
+  public int a16760;
+  public int a16761;
+  public int a16762;
+  public int a16763;
+  public int a16764;
+  public int a16765;
+  public int a16766;
+  public int a16767;
+  public int a16768;
+  public int a16769;
+  public int a16770;
+  public int a16771;
+  public int a16772;
+  public int a16773;
+  public int a16774;
+  public int a16775;
+  public int a16776;
+  public int a16777;
+  public int a16778;
+  public int a16779;
+  public int a16780;
+  public int a16781;
+  public int a16782;
+  public int a16783;
+  public int a16784;
+  public int a16785;
+  public int a16786;
+  public int a16787;
+  public int a16788;
+  public int a16789;
+  public int a16790;
+  public int a16791;
+  public int a16792;
+  public int a16793;
+  public int a16794;
+  public int a16795;
+  public int a16796;
+  public int a16797;
+  public int a16798;
+  public int a16799;
+  public int a16800;
+  public int a16801;
+  public int a16802;
+  public int a16803;
+  public int a16804;
+  public int a16805;
+  public int a16806;
+  public int a16807;
+  public int a16808;
+  public int a16809;
+  public int a16810;
+  public int a16811;
+  public int a16812;
+  public int a16813;
+  public int a16814;
+  public int a16815;
+  public int a16816;
+  public int a16817;
+  public int a16818;
+  public int a16819;
+  public int a16820;
+  public int a16821;
+  public int a16822;
+  public int a16823;
+  public int a16824;
+  public int a16825;
+  public int a16826;
+  public int a16827;
+  public int a16828;
+  public int a16829;
+  public int a16830;
+  public int a16831;
+  public int a16832;
+  public int a16833;
+  public int a16834;
+  public int a16835;
+  public int a16836;
+  public int a16837;
+  public int a16838;
+  public int a16839;
+  public int a16840;
+  public int a16841;
+  public int a16842;
+  public int a16843;
+  public int a16844;
+  public int a16845;
+  public int a16846;
+  public int a16847;
+  public int a16848;
+  public int a16849;
+  public int a16850;
+  public int a16851;
+  public int a16852;
+  public int a16853;
+  public int a16854;
+  public int a16855;
+  public int a16856;
+  public int a16857;
+  public int a16858;
+  public int a16859;
+  public int a16860;
+  public int a16861;
+  public int a16862;
+  public int a16863;
+  public int a16864;
+  public int a16865;
+  public int a16866;
+  public int a16867;
+  public int a16868;
+  public int a16869;
+  public int a16870;
+  public int a16871;
+  public int a16872;
+  public int a16873;
+  public int a16874;
+  public int a16875;
+  public int a16876;
+  public int a16877;
+  public int a16878;
+  public int a16879;
+  public int a16880;
+  public int a16881;
+  public int a16882;
+  public int a16883;
+  public int a16884;
+  public int a16885;
+  public int a16886;
+  public int a16887;
+  public int a16888;
+  public int a16889;
+  public int a16890;
+  public int a16891;
+  public int a16892;
+  public int a16893;
+  public int a16894;
+  public int a16895;
+  public int a16896;
+  public int a16897;
+  public int a16898;
+  public int a16899;
+  public int a16900;
+  public int a16901;
+  public int a16902;
+  public int a16903;
+  public int a16904;
+  public int a16905;
+  public int a16906;
+  public int a16907;
+  public int a16908;
+  public int a16909;
+  public int a16910;
+  public int a16911;
+  public int a16912;
+  public int a16913;
+  public int a16914;
+  public int a16915;
+  public int a16916;
+  public int a16917;
+  public int a16918;
+  public int a16919;
+  public int a16920;
+  public int a16921;
+  public int a16922;
+  public int a16923;
+  public int a16924;
+  public int a16925;
+  public int a16926;
+  public int a16927;
+  public int a16928;
+  public int a16929;
+  public int a16930;
+  public int a16931;
+  public int a16932;
+  public int a16933;
+  public int a16934;
+  public int a16935;
+  public int a16936;
+  public int a16937;
+  public int a16938;
+  public int a16939;
+  public int a16940;
+  public int a16941;
+  public int a16942;
+  public int a16943;
+  public int a16944;
+  public int a16945;
+  public int a16946;
+  public int a16947;
+  public int a16948;
+  public int a16949;
+  public int a16950;
+  public int a16951;
+  public int a16952;
+  public int a16953;
+  public int a16954;
+  public int a16955;
+  public int a16956;
+  public int a16957;
+  public int a16958;
+  public int a16959;
+  public int a16960;
+  public int a16961;
+  public int a16962;
+  public int a16963;
+  public int a16964;
+  public int a16965;
+  public int a16966;
+  public int a16967;
+  public int a16968;
+  public int a16969;
+  public int a16970;
+  public int a16971;
+  public int a16972;
+  public int a16973;
+  public int a16974;
+  public int a16975;
+  public int a16976;
+  public int a16977;
+  public int a16978;
+  public int a16979;
+  public int a16980;
+  public int a16981;
+  public int a16982;
+  public int a16983;
+  public int a16984;
+  public int a16985;
+  public int a16986;
+  public int a16987;
+  public int a16988;
+  public int a16989;
+  public int a16990;
+  public int a16991;
+  public int a16992;
+  public int a16993;
+  public int a16994;
+  public int a16995;
+  public int a16996;
+  public int a16997;
+  public int a16998;
+  public int a16999;
+  public int a17000;
+  public int a17001;
+  public int a17002;
+  public int a17003;
+  public int a17004;
+  public int a17005;
+  public int a17006;
+  public int a17007;
+  public int a17008;
+  public int a17009;
+  public int a17010;
+  public int a17011;
+  public int a17012;
+  public int a17013;
+  public int a17014;
+  public int a17015;
+  public int a17016;
+  public int a17017;
+  public int a17018;
+  public int a17019;
+  public int a17020;
+  public int a17021;
+  public int a17022;
+  public int a17023;
+  public int a17024;
+  public int a17025;
+  public int a17026;
+  public int a17027;
+  public int a17028;
+  public int a17029;
+  public int a17030;
+  public int a17031;
+  public int a17032;
+  public int a17033;
+  public int a17034;
+  public int a17035;
+  public int a17036;
+  public int a17037;
+  public int a17038;
+  public int a17039;
+  public int a17040;
+  public int a17041;
+  public int a17042;
+  public int a17043;
+  public int a17044;
+  public int a17045;
+  public int a17046;
+  public int a17047;
+  public int a17048;
+  public int a17049;
+  public int a17050;
+  public int a17051;
+  public int a17052;
+  public int a17053;
+  public int a17054;
+  public int a17055;
+  public int a17056;
+  public int a17057;
+  public int a17058;
+  public int a17059;
+  public int a17060;
+  public int a17061;
+  public int a17062;
+  public int a17063;
+  public int a17064;
+  public int a17065;
+  public int a17066;
+  public int a17067;
+  public int a17068;
+  public int a17069;
+  public int a17070;
+  public int a17071;
+  public int a17072;
+  public int a17073;
+  public int a17074;
+  public int a17075;
+  public int a17076;
+  public int a17077;
+  public int a17078;
+  public int a17079;
+  public int a17080;
+  public int a17081;
+  public int a17082;
+  public int a17083;
+  public int a17084;
+  public int a17085;
+  public int a17086;
+  public int a17087;
+  public int a17088;
+  public int a17089;
+  public int a17090;
+  public int a17091;
+  public int a17092;
+  public int a17093;
+  public int a17094;
+  public int a17095;
+  public int a17096;
+  public int a17097;
+  public int a17098;
+  public int a17099;
+  public int a17100;
+  public int a17101;
+  public int a17102;
+  public int a17103;
+  public int a17104;
+  public int a17105;
+  public int a17106;
+  public int a17107;
+  public int a17108;
+  public int a17109;
+  public int a17110;
+  public int a17111;
+  public int a17112;
+  public int a17113;
+  public int a17114;
+  public int a17115;
+  public int a17116;
+  public int a17117;
+  public int a17118;
+  public int a17119;
+  public int a17120;
+  public int a17121;
+  public int a17122;
+  public int a17123;
+  public int a17124;
+  public int a17125;
+  public int a17126;
+  public int a17127;
+  public int a17128;
+  public int a17129;
+  public int a17130;
+  public int a17131;
+  public int a17132;
+  public int a17133;
+  public int a17134;
+  public int a17135;
+  public int a17136;
+  public int a17137;
+  public int a17138;
+  public int a17139;
+  public int a17140;
+  public int a17141;
+  public int a17142;
+  public int a17143;
+  public int a17144;
+  public int a17145;
+  public int a17146;
+  public int a17147;
+  public int a17148;
+  public int a17149;
+  public int a17150;
+  public int a17151;
+  public int a17152;
+  public int a17153;
+  public int a17154;
+  public int a17155;
+  public int a17156;
+  public int a17157;
+  public int a17158;
+  public int a17159;
+  public int a17160;
+  public int a17161;
+  public int a17162;
+  public int a17163;
+  public int a17164;
+  public int a17165;
+  public int a17166;
+  public int a17167;
+  public int a17168;
+  public int a17169;
+  public int a17170;
+  public int a17171;
+  public int a17172;
+  public int a17173;
+  public int a17174;
+  public int a17175;
+  public int a17176;
+  public int a17177;
+  public int a17178;
+  public int a17179;
+  public int a17180;
+  public int a17181;
+  public int a17182;
+  public int a17183;
+  public int a17184;
+  public int a17185;
+  public int a17186;
+  public int a17187;
+  public int a17188;
+  public int a17189;
+  public int a17190;
+  public int a17191;
+  public int a17192;
+  public int a17193;
+  public int a17194;
+  public int a17195;
+  public int a17196;
+  public int a17197;
+  public int a17198;
+  public int a17199;
+  public int a17200;
+  public int a17201;
+  public int a17202;
+  public int a17203;
+  public int a17204;
+  public int a17205;
+  public int a17206;
+  public int a17207;
+  public int a17208;
+  public int a17209;
+  public int a17210;
+  public int a17211;
+  public int a17212;
+  public int a17213;
+  public int a17214;
+  public int a17215;
+  public int a17216;
+  public int a17217;
+  public int a17218;
+  public int a17219;
+  public int a17220;
+  public int a17221;
+  public int a17222;
+  public int a17223;
+  public int a17224;
+  public int a17225;
+  public int a17226;
+  public int a17227;
+  public int a17228;
+  public int a17229;
+  public int a17230;
+  public int a17231;
+  public int a17232;
+  public int a17233;
+  public int a17234;
+  public int a17235;
+  public int a17236;
+  public int a17237;
+  public int a17238;
+  public int a17239;
+  public int a17240;
+  public int a17241;
+  public int a17242;
+  public int a17243;
+  public int a17244;
+  public int a17245;
+  public int a17246;
+  public int a17247;
+  public int a17248;
+  public int a17249;
+  public int a17250;
+  public int a17251;
+  public int a17252;
+  public int a17253;
+  public int a17254;
+  public int a17255;
+  public int a17256;
+  public int a17257;
+  public int a17258;
+  public int a17259;
+  public int a17260;
+  public int a17261;
+  public int a17262;
+  public int a17263;
+  public int a17264;
+  public int a17265;
+  public int a17266;
+  public int a17267;
+  public int a17268;
+  public int a17269;
+  public int a17270;
+  public int a17271;
+  public int a17272;
+  public int a17273;
+  public int a17274;
+  public int a17275;
+  public int a17276;
+  public int a17277;
+  public int a17278;
+  public int a17279;
+  public int a17280;
+  public int a17281;
+  public int a17282;
+  public int a17283;
+  public int a17284;
+  public int a17285;
+  public int a17286;
+  public int a17287;
+  public int a17288;
+  public int a17289;
+  public int a17290;
+  public int a17291;
+  public int a17292;
+  public int a17293;
+  public int a17294;
+  public int a17295;
+  public int a17296;
+  public int a17297;
+  public int a17298;
+  public int a17299;
+  public int a17300;
+  public int a17301;
+  public int a17302;
+  public int a17303;
+  public int a17304;
+  public int a17305;
+  public int a17306;
+  public int a17307;
+  public int a17308;
+  public int a17309;
+  public int a17310;
+  public int a17311;
+  public int a17312;
+  public int a17313;
+  public int a17314;
+  public int a17315;
+  public int a17316;
+  public int a17317;
+  public int a17318;
+  public int a17319;
+  public int a17320;
+  public int a17321;
+  public int a17322;
+  public int a17323;
+  public int a17324;
+  public int a17325;
+  public int a17326;
+  public int a17327;
+  public int a17328;
+  public int a17329;
+  public int a17330;
+  public int a17331;
+  public int a17332;
+  public int a17333;
+  public int a17334;
+  public int a17335;
+  public int a17336;
+  public int a17337;
+  public int a17338;
+  public int a17339;
+  public int a17340;
+  public int a17341;
+  public int a17342;
+  public int a17343;
+  public int a17344;
+  public int a17345;
+  public int a17346;
+  public int a17347;
+  public int a17348;
+  public int a17349;
+  public int a17350;
+  public int a17351;
+  public int a17352;
+  public int a17353;
+  public int a17354;
+  public int a17355;
+  public int a17356;
+  public int a17357;
+  public int a17358;
+  public int a17359;
+  public int a17360;
+  public int a17361;
+  public int a17362;
+  public int a17363;
+  public int a17364;
+  public int a17365;
+  public int a17366;
+  public int a17367;
+  public int a17368;
+  public int a17369;
+  public int a17370;
+  public int a17371;
+  public int a17372;
+  public int a17373;
+  public int a17374;
+  public int a17375;
+  public int a17376;
+  public int a17377;
+  public int a17378;
+  public int a17379;
+  public int a17380;
+  public int a17381;
+  public int a17382;
+  public int a17383;
+  public int a17384;
+  public int a17385;
+  public int a17386;
+  public int a17387;
+  public int a17388;
+  public int a17389;
+  public int a17390;
+  public int a17391;
+  public int a17392;
+  public int a17393;
+  public int a17394;
+  public int a17395;
+  public int a17396;
+  public int a17397;
+  public int a17398;
+  public int a17399;
+  public int a17400;
+  public int a17401;
+  public int a17402;
+  public int a17403;
+  public int a17404;
+  public int a17405;
+  public int a17406;
+  public int a17407;
+  public int a17408;
+  public int a17409;
+  public int a17410;
+  public int a17411;
+  public int a17412;
+  public int a17413;
+  public int a17414;
+  public int a17415;
+  public int a17416;
+  public int a17417;
+  public int a17418;
+  public int a17419;
+  public int a17420;
+  public int a17421;
+  public int a17422;
+  public int a17423;
+  public int a17424;
+  public int a17425;
+  public int a17426;
+  public int a17427;
+  public int a17428;
+  public int a17429;
+  public int a17430;
+  public int a17431;
+  public int a17432;
+  public int a17433;
+  public int a17434;
+  public int a17435;
+  public int a17436;
+  public int a17437;
+  public int a17438;
+  public int a17439;
+  public int a17440;
+  public int a17441;
+  public int a17442;
+  public int a17443;
+  public int a17444;
+  public int a17445;
+  public int a17446;
+  public int a17447;
+  public int a17448;
+  public int a17449;
+  public int a17450;
+  public int a17451;
+  public int a17452;
+  public int a17453;
+  public int a17454;
+  public int a17455;
+  public int a17456;
+  public int a17457;
+  public int a17458;
+  public int a17459;
+  public int a17460;
+  public int a17461;
+  public int a17462;
+  public int a17463;
+  public int a17464;
+  public int a17465;
+  public int a17466;
+  public int a17467;
+  public int a17468;
+  public int a17469;
+  public int a17470;
+  public int a17471;
+  public int a17472;
+  public int a17473;
+  public int a17474;
+  public int a17475;
+  public int a17476;
+  public int a17477;
+  public int a17478;
+  public int a17479;
+  public int a17480;
+  public int a17481;
+  public int a17482;
+  public int a17483;
+  public int a17484;
+  public int a17485;
+  public int a17486;
+  public int a17487;
+  public int a17488;
+  public int a17489;
+  public int a17490;
+  public int a17491;
+  public int a17492;
+  public int a17493;
+  public int a17494;
+  public int a17495;
+  public int a17496;
+  public int a17497;
+  public int a17498;
+  public int a17499;
+  public int a17500;
+  public int a17501;
+  public int a17502;
+  public int a17503;
+  public int a17504;
+  public int a17505;
+  public int a17506;
+  public int a17507;
+  public int a17508;
+  public int a17509;
+  public int a17510;
+  public int a17511;
+  public int a17512;
+  public int a17513;
+  public int a17514;
+  public int a17515;
+  public int a17516;
+  public int a17517;
+  public int a17518;
+  public int a17519;
+  public int a17520;
+  public int a17521;
+  public int a17522;
+  public int a17523;
+  public int a17524;
+  public int a17525;
+  public int a17526;
+  public int a17527;
+  public int a17528;
+  public int a17529;
+  public int a17530;
+  public int a17531;
+  public int a17532;
+  public int a17533;
+  public int a17534;
+  public int a17535;
+  public int a17536;
+  public int a17537;
+  public int a17538;
+  public int a17539;
+  public int a17540;
+  public int a17541;
+  public int a17542;
+  public int a17543;
+  public int a17544;
+  public int a17545;
+  public int a17546;
+  public int a17547;
+  public int a17548;
+  public int a17549;
+  public int a17550;
+  public int a17551;
+  public int a17552;
+  public int a17553;
+  public int a17554;
+  public int a17555;
+  public int a17556;
+  public int a17557;
+  public int a17558;
+  public int a17559;
+  public int a17560;
+  public int a17561;
+  public int a17562;
+  public int a17563;
+  public int a17564;
+  public int a17565;
+  public int a17566;
+  public int a17567;
+  public int a17568;
+  public int a17569;
+  public int a17570;
+  public int a17571;
+  public int a17572;
+  public int a17573;
+  public int a17574;
+  public int a17575;
+  public int a17576;
+  public int a17577;
+  public int a17578;
+  public int a17579;
+  public int a17580;
+  public int a17581;
+  public int a17582;
+  public int a17583;
+  public int a17584;
+  public int a17585;
+  public int a17586;
+  public int a17587;
+  public int a17588;
+  public int a17589;
+  public int a17590;
+  public int a17591;
+  public int a17592;
+  public int a17593;
+  public int a17594;
+  public int a17595;
+  public int a17596;
+  public int a17597;
+  public int a17598;
+  public int a17599;
+  public int a17600;
+  public int a17601;
+  public int a17602;
+  public int a17603;
+  public int a17604;
+  public int a17605;
+  public int a17606;
+  public int a17607;
+  public int a17608;
+  public int a17609;
+  public int a17610;
+  public int a17611;
+  public int a17612;
+  public int a17613;
+  public int a17614;
+  public int a17615;
+  public int a17616;
+  public int a17617;
+  public int a17618;
+  public int a17619;
+  public int a17620;
+  public int a17621;
+  public int a17622;
+  public int a17623;
+  public int a17624;
+  public int a17625;
+  public int a17626;
+  public int a17627;
+  public int a17628;
+  public int a17629;
+  public int a17630;
+  public int a17631;
+  public int a17632;
+  public int a17633;
+  public int a17634;
+  public int a17635;
+  public int a17636;
+  public int a17637;
+  public int a17638;
+  public int a17639;
+  public int a17640;
+  public int a17641;
+  public int a17642;
+  public int a17643;
+  public int a17644;
+  public int a17645;
+  public int a17646;
+  public int a17647;
+  public int a17648;
+  public int a17649;
+  public int a17650;
+  public int a17651;
+  public int a17652;
+  public int a17653;
+  public int a17654;
+  public int a17655;
+  public int a17656;
+  public int a17657;
+  public int a17658;
+  public int a17659;
+  public int a17660;
+  public int a17661;
+  public int a17662;
+  public int a17663;
+  public int a17664;
+  public int a17665;
+  public int a17666;
+  public int a17667;
+  public int a17668;
+  public int a17669;
+  public int a17670;
+  public int a17671;
+  public int a17672;
+  public int a17673;
+  public int a17674;
+  public int a17675;
+  public int a17676;
+  public int a17677;
+  public int a17678;
+  public int a17679;
+  public int a17680;
+  public int a17681;
+  public int a17682;
+  public int a17683;
+  public int a17684;
+  public int a17685;
+  public int a17686;
+  public int a17687;
+  public int a17688;
+  public int a17689;
+  public int a17690;
+  public int a17691;
+  public int a17692;
+  public int a17693;
+  public int a17694;
+  public int a17695;
+  public int a17696;
+  public int a17697;
+  public int a17698;
+  public int a17699;
+  public int a17700;
+  public int a17701;
+  public int a17702;
+  public int a17703;
+  public int a17704;
+  public int a17705;
+  public int a17706;
+  public int a17707;
+  public int a17708;
+  public int a17709;
+  public int a17710;
+  public int a17711;
+  public int a17712;
+  public int a17713;
+  public int a17714;
+  public int a17715;
+  public int a17716;
+  public int a17717;
+  public int a17718;
+  public int a17719;
+  public int a17720;
+  public int a17721;
+  public int a17722;
+  public int a17723;
+  public int a17724;
+  public int a17725;
+  public int a17726;
+  public int a17727;
+  public int a17728;
+  public int a17729;
+  public int a17730;
+  public int a17731;
+  public int a17732;
+  public int a17733;
+  public int a17734;
+  public int a17735;
+  public int a17736;
+  public int a17737;
+  public int a17738;
+  public int a17739;
+  public int a17740;
+  public int a17741;
+  public int a17742;
+  public int a17743;
+  public int a17744;
+  public int a17745;
+  public int a17746;
+  public int a17747;
+  public int a17748;
+  public int a17749;
+  public int a17750;
+  public int a17751;
+  public int a17752;
+  public int a17753;
+  public int a17754;
+  public int a17755;
+  public int a17756;
+  public int a17757;
+  public int a17758;
+  public int a17759;
+  public int a17760;
+  public int a17761;
+  public int a17762;
+  public int a17763;
+  public int a17764;
+  public int a17765;
+  public int a17766;
+  public int a17767;
+  public int a17768;
+  public int a17769;
+  public int a17770;
+  public int a17771;
+  public int a17772;
+  public int a17773;
+  public int a17774;
+  public int a17775;
+  public int a17776;
+  public int a17777;
+  public int a17778;
+  public int a17779;
+  public int a17780;
+  public int a17781;
+  public int a17782;
+  public int a17783;
+  public int a17784;
+  public int a17785;
+  public int a17786;
+  public int a17787;
+  public int a17788;
+  public int a17789;
+  public int a17790;
+  public int a17791;
+  public int a17792;
+  public int a17793;
+  public int a17794;
+  public int a17795;
+  public int a17796;
+  public int a17797;
+  public int a17798;
+  public int a17799;
+  public int a17800;
+  public int a17801;
+  public int a17802;
+  public int a17803;
+  public int a17804;
+  public int a17805;
+  public int a17806;
+  public int a17807;
+  public int a17808;
+  public int a17809;
+  public int a17810;
+  public int a17811;
+  public int a17812;
+  public int a17813;
+  public int a17814;
+  public int a17815;
+  public int a17816;
+  public int a17817;
+  public int a17818;
+  public int a17819;
+  public int a17820;
+  public int a17821;
+  public int a17822;
+  public int a17823;
+  public int a17824;
+  public int a17825;
+  public int a17826;
+  public int a17827;
+  public int a17828;
+  public int a17829;
+  public int a17830;
+  public int a17831;
+  public int a17832;
+  public int a17833;
+  public int a17834;
+  public int a17835;
+  public int a17836;
+  public int a17837;
+  public int a17838;
+  public int a17839;
+  public int a17840;
+  public int a17841;
+  public int a17842;
+  public int a17843;
+  public int a17844;
+  public int a17845;
+  public int a17846;
+  public int a17847;
+  public int a17848;
+  public int a17849;
+  public int a17850;
+  public int a17851;
+  public int a17852;
+  public int a17853;
+  public int a17854;
+  public int a17855;
+  public int a17856;
+  public int a17857;
+  public int a17858;
+  public int a17859;
+  public int a17860;
+  public int a17861;
+  public int a17862;
+  public int a17863;
+  public int a17864;
+  public int a17865;
+  public int a17866;
+  public int a17867;
+  public int a17868;
+  public int a17869;
+  public int a17870;
+  public int a17871;
+  public int a17872;
+  public int a17873;
+  public int a17874;
+  public int a17875;
+  public int a17876;
+  public int a17877;
+  public int a17878;
+  public int a17879;
+  public int a17880;
+  public int a17881;
+  public int a17882;
+  public int a17883;
+  public int a17884;
+  public int a17885;
+  public int a17886;
+  public int a17887;
+  public int a17888;
+  public int a17889;
+  public int a17890;
+  public int a17891;
+  public int a17892;
+  public int a17893;
+  public int a17894;
+  public int a17895;
+  public int a17896;
+  public int a17897;
+  public int a17898;
+  public int a17899;
+  public int a17900;
+  public int a17901;
+  public int a17902;
+  public int a17903;
+  public int a17904;
+  public int a17905;
+  public int a17906;
+  public int a17907;
+  public int a17908;
+  public int a17909;
+  public int a17910;
+  public int a17911;
+  public int a17912;
+  public int a17913;
+  public int a17914;
+  public int a17915;
+  public int a17916;
+  public int a17917;
+  public int a17918;
+  public int a17919;
+  public int a17920;
+  public int a17921;
+  public int a17922;
+  public int a17923;
+  public int a17924;
+  public int a17925;
+  public int a17926;
+  public int a17927;
+  public int a17928;
+  public int a17929;
+  public int a17930;
+  public int a17931;
+  public int a17932;
+  public int a17933;
+  public int a17934;
+  public int a17935;
+  public int a17936;
+  public int a17937;
+  public int a17938;
+  public int a17939;
+  public int a17940;
+  public int a17941;
+  public int a17942;
+  public int a17943;
+  public int a17944;
+  public int a17945;
+  public int a17946;
+  public int a17947;
+  public int a17948;
+  public int a17949;
+  public int a17950;
+  public int a17951;
+  public int a17952;
+  public int a17953;
+  public int a17954;
+  public int a17955;
+  public int a17956;
+  public int a17957;
+  public int a17958;
+  public int a17959;
+  public int a17960;
+  public int a17961;
+  public int a17962;
+  public int a17963;
+  public int a17964;
+  public int a17965;
+  public int a17966;
+  public int a17967;
+  public int a17968;
+  public int a17969;
+  public int a17970;
+  public int a17971;
+  public int a17972;
+  public int a17973;
+  public int a17974;
+  public int a17975;
+  public int a17976;
+  public int a17977;
+  public int a17978;
+  public int a17979;
+  public int a17980;
+  public int a17981;
+  public int a17982;
+  public int a17983;
+  public int a17984;
+  public int a17985;
+  public int a17986;
+  public int a17987;
+  public int a17988;
+  public int a17989;
+  public int a17990;
+  public int a17991;
+  public int a17992;
+  public int a17993;
+  public int a17994;
+  public int a17995;
+  public int a17996;
+  public int a17997;
+  public int a17998;
+  public int a17999;
+  public int a18000;
+  public int a18001;
+  public int a18002;
+  public int a18003;
+  public int a18004;
+  public int a18005;
+  public int a18006;
+  public int a18007;
+  public int a18008;
+  public int a18009;
+  public int a18010;
+  public int a18011;
+  public int a18012;
+  public int a18013;
+  public int a18014;
+  public int a18015;
+  public int a18016;
+  public int a18017;
+  public int a18018;
+  public int a18019;
+  public int a18020;
+  public int a18021;
+  public int a18022;
+  public int a18023;
+  public int a18024;
+  public int a18025;
+  public int a18026;
+  public int a18027;
+  public int a18028;
+  public int a18029;
+  public int a18030;
+  public int a18031;
+  public int a18032;
+  public int a18033;
+  public int a18034;
+  public int a18035;
+  public int a18036;
+  public int a18037;
+  public int a18038;
+  public int a18039;
+  public int a18040;
+  public int a18041;
+  public int a18042;
+  public int a18043;
+  public int a18044;
+  public int a18045;
+  public int a18046;
+  public int a18047;
+  public int a18048;
+  public int a18049;
+  public int a18050;
+  public int a18051;
+  public int a18052;
+  public int a18053;
+  public int a18054;
+  public int a18055;
+  public int a18056;
+  public int a18057;
+  public int a18058;
+  public int a18059;
+  public int a18060;
+  public int a18061;
+  public int a18062;
+  public int a18063;
+  public int a18064;
+  public int a18065;
+  public int a18066;
+  public int a18067;
+  public int a18068;
+  public int a18069;
+  public int a18070;
+  public int a18071;
+  public int a18072;
+  public int a18073;
+  public int a18074;
+  public int a18075;
+  public int a18076;
+  public int a18077;
+  public int a18078;
+  public int a18079;
+  public int a18080;
+  public int a18081;
+  public int a18082;
+  public int a18083;
+  public int a18084;
+  public int a18085;
+  public int a18086;
+  public int a18087;
+  public int a18088;
+  public int a18089;
+  public int a18090;
+  public int a18091;
+  public int a18092;
+  public int a18093;
+  public int a18094;
+  public int a18095;
+  public int a18096;
+  public int a18097;
+  public int a18098;
+  public int a18099;
+  public int a18100;
+  public int a18101;
+  public int a18102;
+  public int a18103;
+  public int a18104;
+  public int a18105;
+  public int a18106;
+  public int a18107;
+  public int a18108;
+  public int a18109;
+  public int a18110;
+  public int a18111;
+  public int a18112;
+  public int a18113;
+  public int a18114;
+  public int a18115;
+  public int a18116;
+  public int a18117;
+  public int a18118;
+  public int a18119;
+  public int a18120;
+  public int a18121;
+  public int a18122;
+  public int a18123;
+  public int a18124;
+  public int a18125;
+  public int a18126;
+  public int a18127;
+  public int a18128;
+  public int a18129;
+  public int a18130;
+  public int a18131;
+  public int a18132;
+  public int a18133;
+  public int a18134;
+  public int a18135;
+  public int a18136;
+  public int a18137;
+  public int a18138;
+  public int a18139;
+  public int a18140;
+  public int a18141;
+  public int a18142;
+  public int a18143;
+  public int a18144;
+  public int a18145;
+  public int a18146;
+  public int a18147;
+  public int a18148;
+  public int a18149;
+  public int a18150;
+  public int a18151;
+  public int a18152;
+  public int a18153;
+  public int a18154;
+  public int a18155;
+  public int a18156;
+  public int a18157;
+  public int a18158;
+  public int a18159;
+  public int a18160;
+  public int a18161;
+  public int a18162;
+  public int a18163;
+  public int a18164;
+  public int a18165;
+  public int a18166;
+  public int a18167;
+  public int a18168;
+  public int a18169;
+  public int a18170;
+  public int a18171;
+  public int a18172;
+  public int a18173;
+  public int a18174;
+  public int a18175;
+  public int a18176;
+  public int a18177;
+  public int a18178;
+  public int a18179;
+  public int a18180;
+  public int a18181;
+  public int a18182;
+  public int a18183;
+  public int a18184;
+  public int a18185;
+  public int a18186;
+  public int a18187;
+  public int a18188;
+  public int a18189;
+  public int a18190;
+  public int a18191;
+  public int a18192;
+  public int a18193;
+  public int a18194;
+  public int a18195;
+  public int a18196;
+  public int a18197;
+  public int a18198;
+  public int a18199;
+  public int a18200;
+  public int a18201;
+  public int a18202;
+  public int a18203;
+  public int a18204;
+  public int a18205;
+  public int a18206;
+  public int a18207;
+  public int a18208;
+  public int a18209;
+  public int a18210;
+  public int a18211;
+  public int a18212;
+  public int a18213;
+  public int a18214;
+  public int a18215;
+  public int a18216;
+  public int a18217;
+  public int a18218;
+  public int a18219;
+  public int a18220;
+  public int a18221;
+  public int a18222;
+  public int a18223;
+  public int a18224;
+  public int a18225;
+  public int a18226;
+  public int a18227;
+  public int a18228;
+  public int a18229;
+  public int a18230;
+  public int a18231;
+  public int a18232;
+  public int a18233;
+  public int a18234;
+  public int a18235;
+  public int a18236;
+  public int a18237;
+  public int a18238;
+  public int a18239;
+  public int a18240;
+  public int a18241;
+  public int a18242;
+  public int a18243;
+  public int a18244;
+  public int a18245;
+  public int a18246;
+  public int a18247;
+  public int a18248;
+  public int a18249;
+  public int a18250;
+  public int a18251;
+  public int a18252;
+  public int a18253;
+  public int a18254;
+  public int a18255;
+  public int a18256;
+  public int a18257;
+  public int a18258;
+  public int a18259;
+  public int a18260;
+  public int a18261;
+  public int a18262;
+  public int a18263;
+  public int a18264;
+  public int a18265;
+  public int a18266;
+  public int a18267;
+  public int a18268;
+  public int a18269;
+  public int a18270;
+  public int a18271;
+  public int a18272;
+  public int a18273;
+  public int a18274;
+  public int a18275;
+  public int a18276;
+  public int a18277;
+  public int a18278;
+  public int a18279;
+  public int a18280;
+  public int a18281;
+  public int a18282;
+  public int a18283;
+  public int a18284;
+  public int a18285;
+  public int a18286;
+  public int a18287;
+  public int a18288;
+  public int a18289;
+  public int a18290;
+  public int a18291;
+  public int a18292;
+  public int a18293;
+  public int a18294;
+  public int a18295;
+  public int a18296;
+  public int a18297;
+  public int a18298;
+  public int a18299;
+  public int a18300;
+  public int a18301;
+  public int a18302;
+  public int a18303;
+  public int a18304;
+  public int a18305;
+  public int a18306;
+  public int a18307;
+  public int a18308;
+  public int a18309;
+  public int a18310;
+  public int a18311;
+  public int a18312;
+  public int a18313;
+  public int a18314;
+  public int a18315;
+  public int a18316;
+  public int a18317;
+  public int a18318;
+  public int a18319;
+  public int a18320;
+  public int a18321;
+  public int a18322;
+  public int a18323;
+  public int a18324;
+  public int a18325;
+  public int a18326;
+  public int a18327;
+  public int a18328;
+  public int a18329;
+  public int a18330;
+  public int a18331;
+  public int a18332;
+  public int a18333;
+  public int a18334;
+  public int a18335;
+  public int a18336;
+  public int a18337;
+  public int a18338;
+  public int a18339;
+  public int a18340;
+  public int a18341;
+  public int a18342;
+  public int a18343;
+  public int a18344;
+  public int a18345;
+  public int a18346;
+  public int a18347;
+  public int a18348;
+  public int a18349;
+  public int a18350;
+  public int a18351;
+  public int a18352;
+  public int a18353;
+  public int a18354;
+  public int a18355;
+  public int a18356;
+  public int a18357;
+  public int a18358;
+  public int a18359;
+  public int a18360;
+  public int a18361;
+  public int a18362;
+  public int a18363;
+  public int a18364;
+  public int a18365;
+  public int a18366;
+  public int a18367;
+  public int a18368;
+  public int a18369;
+  public int a18370;
+  public int a18371;
+  public int a18372;
+  public int a18373;
+  public int a18374;
+  public int a18375;
+  public int a18376;
+  public int a18377;
+  public int a18378;
+  public int a18379;
+  public int a18380;
+  public int a18381;
+  public int a18382;
+  public int a18383;
+  public int a18384;
+  public int a18385;
+  public int a18386;
+  public int a18387;
+  public int a18388;
+  public int a18389;
+  public int a18390;
+  public int a18391;
+  public int a18392;
+  public int a18393;
+  public int a18394;
+  public int a18395;
+  public int a18396;
+  public int a18397;
+  public int a18398;
+  public int a18399;
+  public int a18400;
+  public int a18401;
+  public int a18402;
+  public int a18403;
+  public int a18404;
+  public int a18405;
+  public int a18406;
+  public int a18407;
+  public int a18408;
+  public int a18409;
+  public int a18410;
+  public int a18411;
+  public int a18412;
+  public int a18413;
+  public int a18414;
+  public int a18415;
+  public int a18416;
+  public int a18417;
+  public int a18418;
+  public int a18419;
+  public int a18420;
+  public int a18421;
+  public int a18422;
+  public int a18423;
+  public int a18424;
+  public int a18425;
+  public int a18426;
+  public int a18427;
+  public int a18428;
+  public int a18429;
+  public int a18430;
+  public int a18431;
+  public int a18432;
+  public int a18433;
+  public int a18434;
+  public int a18435;
+  public int a18436;
+  public int a18437;
+  public int a18438;
+  public int a18439;
+  public int a18440;
+  public int a18441;
+  public int a18442;
+  public int a18443;
+  public int a18444;
+  public int a18445;
+  public int a18446;
+  public int a18447;
+  public int a18448;
+  public int a18449;
+  public int a18450;
+  public int a18451;
+  public int a18452;
+  public int a18453;
+  public int a18454;
+  public int a18455;
+  public int a18456;
+  public int a18457;
+  public int a18458;
+  public int a18459;
+  public int a18460;
+  public int a18461;
+  public int a18462;
+  public int a18463;
+  public int a18464;
+  public int a18465;
+  public int a18466;
+  public int a18467;
+  public int a18468;
+  public int a18469;
+  public int a18470;
+  public int a18471;
+  public int a18472;
+  public int a18473;
+  public int a18474;
+  public int a18475;
+  public int a18476;
+  public int a18477;
+  public int a18478;
+  public int a18479;
+  public int a18480;
+  public int a18481;
+  public int a18482;
+  public int a18483;
+  public int a18484;
+  public int a18485;
+  public int a18486;
+  public int a18487;
+  public int a18488;
+  public int a18489;
+  public int a18490;
+  public int a18491;
+  public int a18492;
+  public int a18493;
+  public int a18494;
+  public int a18495;
+  public int a18496;
+  public int a18497;
+  public int a18498;
+  public int a18499;
+  public int a18500;
+  public int a18501;
+  public int a18502;
+  public int a18503;
+  public int a18504;
+  public int a18505;
+  public int a18506;
+  public int a18507;
+  public int a18508;
+  public int a18509;
+  public int a18510;
+  public int a18511;
+  public int a18512;
+  public int a18513;
+  public int a18514;
+  public int a18515;
+  public int a18516;
+  public int a18517;
+  public int a18518;
+  public int a18519;
+  public int a18520;
+  public int a18521;
+  public int a18522;
+  public int a18523;
+  public int a18524;
+  public int a18525;
+  public int a18526;
+  public int a18527;
+  public int a18528;
+  public int a18529;
+  public int a18530;
+  public int a18531;
+  public int a18532;
+  public int a18533;
+  public int a18534;
+  public int a18535;
+  public int a18536;
+  public int a18537;
+  public int a18538;
+  public int a18539;
+  public int a18540;
+  public int a18541;
+  public int a18542;
+  public int a18543;
+  public int a18544;
+  public int a18545;
+  public int a18546;
+  public int a18547;
+  public int a18548;
+  public int a18549;
+  public int a18550;
+  public int a18551;
+  public int a18552;
+  public int a18553;
+  public int a18554;
+  public int a18555;
+  public int a18556;
+  public int a18557;
+  public int a18558;
+  public int a18559;
+  public int a18560;
+  public int a18561;
+  public int a18562;
+  public int a18563;
+  public int a18564;
+  public int a18565;
+  public int a18566;
+  public int a18567;
+  public int a18568;
+  public int a18569;
+  public int a18570;
+  public int a18571;
+  public int a18572;
+  public int a18573;
+  public int a18574;
+  public int a18575;
+  public int a18576;
+  public int a18577;
+  public int a18578;
+  public int a18579;
+  public int a18580;
+  public int a18581;
+  public int a18582;
+  public int a18583;
+  public int a18584;
+  public int a18585;
+  public int a18586;
+  public int a18587;
+  public int a18588;
+  public int a18589;
+  public int a18590;
+  public int a18591;
+  public int a18592;
+  public int a18593;
+  public int a18594;
+  public int a18595;
+  public int a18596;
+  public int a18597;
+  public int a18598;
+  public int a18599;
+  public int a18600;
+  public int a18601;
+  public int a18602;
+  public int a18603;
+  public int a18604;
+  public int a18605;
+  public int a18606;
+  public int a18607;
+  public int a18608;
+  public int a18609;
+  public int a18610;
+  public int a18611;
+  public int a18612;
+  public int a18613;
+  public int a18614;
+  public int a18615;
+  public int a18616;
+  public int a18617;
+  public int a18618;
+  public int a18619;
+  public int a18620;
+  public int a18621;
+  public int a18622;
+  public int a18623;
+  public int a18624;
+  public int a18625;
+  public int a18626;
+  public int a18627;
+  public int a18628;
+  public int a18629;
+  public int a18630;
+  public int a18631;
+  public int a18632;
+  public int a18633;
+  public int a18634;
+  public int a18635;
+  public int a18636;
+  public int a18637;
+  public int a18638;
+  public int a18639;
+  public int a18640;
+  public int a18641;
+  public int a18642;
+  public int a18643;
+  public int a18644;
+  public int a18645;
+  public int a18646;
+  public int a18647;
+  public int a18648;
+  public int a18649;
+  public int a18650;
+  public int a18651;
+  public int a18652;
+  public int a18653;
+  public int a18654;
+  public int a18655;
+  public int a18656;
+  public int a18657;
+  public int a18658;
+  public int a18659;
+  public int a18660;
+  public int a18661;
+  public int a18662;
+  public int a18663;
+  public int a18664;
+  public int a18665;
+  public int a18666;
+  public int a18667;
+  public int a18668;
+  public int a18669;
+  public int a18670;
+  public int a18671;
+  public int a18672;
+  public int a18673;
+  public int a18674;
+  public int a18675;
+  public int a18676;
+  public int a18677;
+  public int a18678;
+  public int a18679;
+  public int a18680;
+  public int a18681;
+  public int a18682;
+  public int a18683;
+  public int a18684;
+  public int a18685;
+  public int a18686;
+  public int a18687;
+  public int a18688;
+  public int a18689;
+  public int a18690;
+  public int a18691;
+  public int a18692;
+  public int a18693;
+  public int a18694;
+  public int a18695;
+  public int a18696;
+  public int a18697;
+  public int a18698;
+  public int a18699;
+  public int a18700;
+  public int a18701;
+  public int a18702;
+  public int a18703;
+  public int a18704;
+  public int a18705;
+  public int a18706;
+  public int a18707;
+  public int a18708;
+  public int a18709;
+  public int a18710;
+  public int a18711;
+  public int a18712;
+  public int a18713;
+  public int a18714;
+  public int a18715;
+  public int a18716;
+  public int a18717;
+  public int a18718;
+  public int a18719;
+  public int a18720;
+  public int a18721;
+  public int a18722;
+  public int a18723;
+  public int a18724;
+  public int a18725;
+  public int a18726;
+  public int a18727;
+  public int a18728;
+  public int a18729;
+  public int a18730;
+  public int a18731;
+  public int a18732;
+  public int a18733;
+  public int a18734;
+  public int a18735;
+  public int a18736;
+  public int a18737;
+  public int a18738;
+  public int a18739;
+  public int a18740;
+  public int a18741;
+  public int a18742;
+  public int a18743;
+  public int a18744;
+  public int a18745;
+  public int a18746;
+  public int a18747;
+  public int a18748;
+  public int a18749;
+  public int a18750;
+  public int a18751;
+  public int a18752;
+  public int a18753;
+  public int a18754;
+  public int a18755;
+  public int a18756;
+  public int a18757;
+  public int a18758;
+  public int a18759;
+  public int a18760;
+  public int a18761;
+  public int a18762;
+  public int a18763;
+  public int a18764;
+  public int a18765;
+  public int a18766;
+  public int a18767;
+  public int a18768;
+  public int a18769;
+  public int a18770;
+  public int a18771;
+  public int a18772;
+  public int a18773;
+  public int a18774;
+  public int a18775;
+  public int a18776;
+  public int a18777;
+  public int a18778;
+  public int a18779;
+  public int a18780;
+  public int a18781;
+  public int a18782;
+  public int a18783;
+  public int a18784;
+  public int a18785;
+  public int a18786;
+  public int a18787;
+  public int a18788;
+  public int a18789;
+  public int a18790;
+  public int a18791;
+  public int a18792;
+  public int a18793;
+  public int a18794;
+  public int a18795;
+  public int a18796;
+  public int a18797;
+  public int a18798;
+  public int a18799;
+  public int a18800;
+  public int a18801;
+  public int a18802;
+  public int a18803;
+  public int a18804;
+  public int a18805;
+  public int a18806;
+  public int a18807;
+  public int a18808;
+  public int a18809;
+  public int a18810;
+  public int a18811;
+  public int a18812;
+  public int a18813;
+  public int a18814;
+  public int a18815;
+  public int a18816;
+  public int a18817;
+  public int a18818;
+  public int a18819;
+  public int a18820;
+  public int a18821;
+  public int a18822;
+  public int a18823;
+  public int a18824;
+  public int a18825;
+  public int a18826;
+  public int a18827;
+  public int a18828;
+  public int a18829;
+  public int a18830;
+  public int a18831;
+  public int a18832;
+  public int a18833;
+  public int a18834;
+  public int a18835;
+  public int a18836;
+  public int a18837;
+  public int a18838;
+  public int a18839;
+  public int a18840;
+  public int a18841;
+  public int a18842;
+  public int a18843;
+  public int a18844;
+  public int a18845;
+  public int a18846;
+  public int a18847;
+  public int a18848;
+  public int a18849;
+  public int a18850;
+  public int a18851;
+  public int a18852;
+  public int a18853;
+  public int a18854;
+  public int a18855;
+  public int a18856;
+  public int a18857;
+  public int a18858;
+  public int a18859;
+  public int a18860;
+  public int a18861;
+  public int a18862;
+  public int a18863;
+  public int a18864;
+  public int a18865;
+  public int a18866;
+  public int a18867;
+  public int a18868;
+  public int a18869;
+  public int a18870;
+  public int a18871;
+  public int a18872;
+  public int a18873;
+  public int a18874;
+  public int a18875;
+  public int a18876;
+  public int a18877;
+  public int a18878;
+  public int a18879;
+  public int a18880;
+  public int a18881;
+  public int a18882;
+  public int a18883;
+  public int a18884;
+  public int a18885;
+  public int a18886;
+  public int a18887;
+  public int a18888;
+  public int a18889;
+  public int a18890;
+  public int a18891;
+  public int a18892;
+  public int a18893;
+  public int a18894;
+  public int a18895;
+  public int a18896;
+  public int a18897;
+  public int a18898;
+  public int a18899;
+  public int a18900;
+  public int a18901;
+  public int a18902;
+  public int a18903;
+  public int a18904;
+  public int a18905;
+  public int a18906;
+  public int a18907;
+  public int a18908;
+  public int a18909;
+  public int a18910;
+  public int a18911;
+  public int a18912;
+  public int a18913;
+  public int a18914;
+  public int a18915;
+  public int a18916;
+  public int a18917;
+  public int a18918;
+  public int a18919;
+  public int a18920;
+  public int a18921;
+  public int a18922;
+  public int a18923;
+  public int a18924;
+  public int a18925;
+  public int a18926;
+  public int a18927;
+  public int a18928;
+  public int a18929;
+  public int a18930;
+  public int a18931;
+  public int a18932;
+  public int a18933;
+  public int a18934;
+  public int a18935;
+  public int a18936;
+  public int a18937;
+  public int a18938;
+  public int a18939;
+  public int a18940;
+  public int a18941;
+  public int a18942;
+  public int a18943;
+  public int a18944;
+  public int a18945;
+  public int a18946;
+  public int a18947;
+  public int a18948;
+  public int a18949;
+  public int a18950;
+  public int a18951;
+  public int a18952;
+  public int a18953;
+  public int a18954;
+  public int a18955;
+  public int a18956;
+  public int a18957;
+  public int a18958;
+  public int a18959;
+  public int a18960;
+  public int a18961;
+  public int a18962;
+  public int a18963;
+  public int a18964;
+  public int a18965;
+  public int a18966;
+  public int a18967;
+  public int a18968;
+  public int a18969;
+  public int a18970;
+  public int a18971;
+  public int a18972;
+  public int a18973;
+  public int a18974;
+  public int a18975;
+  public int a18976;
+  public int a18977;
+  public int a18978;
+  public int a18979;
+  public int a18980;
+  public int a18981;
+  public int a18982;
+  public int a18983;
+  public int a18984;
+  public int a18985;
+  public int a18986;
+  public int a18987;
+  public int a18988;
+  public int a18989;
+  public int a18990;
+  public int a18991;
+  public int a18992;
+  public int a18993;
+  public int a18994;
+  public int a18995;
+  public int a18996;
+  public int a18997;
+  public int a18998;
+  public int a18999;
+  public int a19000;
+  public int a19001;
+  public int a19002;
+  public int a19003;
+  public int a19004;
+  public int a19005;
+  public int a19006;
+  public int a19007;
+  public int a19008;
+  public int a19009;
+  public int a19010;
+  public int a19011;
+  public int a19012;
+  public int a19013;
+  public int a19014;
+  public int a19015;
+  public int a19016;
+  public int a19017;
+  public int a19018;
+  public int a19019;
+  public int a19020;
+  public int a19021;
+  public int a19022;
+  public int a19023;
+  public int a19024;
+  public int a19025;
+  public int a19026;
+  public int a19027;
+  public int a19028;
+  public int a19029;
+  public int a19030;
+  public int a19031;
+  public int a19032;
+  public int a19033;
+  public int a19034;
+  public int a19035;
+  public int a19036;
+  public int a19037;
+  public int a19038;
+  public int a19039;
+  public int a19040;
+  public int a19041;
+  public int a19042;
+  public int a19043;
+  public int a19044;
+  public int a19045;
+  public int a19046;
+  public int a19047;
+  public int a19048;
+  public int a19049;
+  public int a19050;
+  public int a19051;
+  public int a19052;
+  public int a19053;
+  public int a19054;
+  public int a19055;
+  public int a19056;
+  public int a19057;
+  public int a19058;
+  public int a19059;
+  public int a19060;
+  public int a19061;
+  public int a19062;
+  public int a19063;
+  public int a19064;
+  public int a19065;
+  public int a19066;
+  public int a19067;
+  public int a19068;
+  public int a19069;
+  public int a19070;
+  public int a19071;
+  public int a19072;
+  public int a19073;
+  public int a19074;
+  public int a19075;
+  public int a19076;
+  public int a19077;
+  public int a19078;
+  public int a19079;
+  public int a19080;
+  public int a19081;
+  public int a19082;
+  public int a19083;
+  public int a19084;
+  public int a19085;
+  public int a19086;
+  public int a19087;
+  public int a19088;
+  public int a19089;
+  public int a19090;
+  public int a19091;
+  public int a19092;
+  public int a19093;
+  public int a19094;
+  public int a19095;
+  public int a19096;
+  public int a19097;
+  public int a19098;
+  public int a19099;
+  public int a19100;
+  public int a19101;
+  public int a19102;
+  public int a19103;
+  public int a19104;
+  public int a19105;
+  public int a19106;
+  public int a19107;
+  public int a19108;
+  public int a19109;
+  public int a19110;
+  public int a19111;
+  public int a19112;
+  public int a19113;
+  public int a19114;
+  public int a19115;
+  public int a19116;
+  public int a19117;
+  public int a19118;
+  public int a19119;
+  public int a19120;
+  public int a19121;
+  public int a19122;
+  public int a19123;
+  public int a19124;
+  public int a19125;
+  public int a19126;
+  public int a19127;
+  public int a19128;
+  public int a19129;
+  public int a19130;
+  public int a19131;
+  public int a19132;
+  public int a19133;
+  public int a19134;
+  public int a19135;
+  public int a19136;
+  public int a19137;
+  public int a19138;
+  public int a19139;
+  public int a19140;
+  public int a19141;
+  public int a19142;
+  public int a19143;
+  public int a19144;
+  public int a19145;
+  public int a19146;
+  public int a19147;
+  public int a19148;
+  public int a19149;
+  public int a19150;
+  public int a19151;
+  public int a19152;
+  public int a19153;
+  public int a19154;
+  public int a19155;
+  public int a19156;
+  public int a19157;
+  public int a19158;
+  public int a19159;
+  public int a19160;
+  public int a19161;
+  public int a19162;
+  public int a19163;
+  public int a19164;
+  public int a19165;
+  public int a19166;
+  public int a19167;
+  public int a19168;
+  public int a19169;
+  public int a19170;
+  public int a19171;
+  public int a19172;
+  public int a19173;
+  public int a19174;
+  public int a19175;
+  public int a19176;
+  public int a19177;
+  public int a19178;
+  public int a19179;
+  public int a19180;
+  public int a19181;
+  public int a19182;
+  public int a19183;
+  public int a19184;
+  public int a19185;
+  public int a19186;
+  public int a19187;
+  public int a19188;
+  public int a19189;
+  public int a19190;
+  public int a19191;
+  public int a19192;
+  public int a19193;
+  public int a19194;
+  public int a19195;
+  public int a19196;
+  public int a19197;
+  public int a19198;
+  public int a19199;
+  public int a19200;
+  public int a19201;
+  public int a19202;
+  public int a19203;
+  public int a19204;
+  public int a19205;
+  public int a19206;
+  public int a19207;
+  public int a19208;
+  public int a19209;
+  public int a19210;
+  public int a19211;
+  public int a19212;
+  public int a19213;
+  public int a19214;
+  public int a19215;
+  public int a19216;
+  public int a19217;
+  public int a19218;
+  public int a19219;
+  public int a19220;
+  public int a19221;
+  public int a19222;
+  public int a19223;
+  public int a19224;
+  public int a19225;
+  public int a19226;
+  public int a19227;
+  public int a19228;
+  public int a19229;
+  public int a19230;
+  public int a19231;
+  public int a19232;
+  public int a19233;
+  public int a19234;
+  public int a19235;
+  public int a19236;
+  public int a19237;
+  public int a19238;
+  public int a19239;
+  public int a19240;
+  public int a19241;
+  public int a19242;
+  public int a19243;
+  public int a19244;
+  public int a19245;
+  public int a19246;
+  public int a19247;
+  public int a19248;
+  public int a19249;
+  public int a19250;
+  public int a19251;
+  public int a19252;
+  public int a19253;
+  public int a19254;
+  public int a19255;
+  public int a19256;
+  public int a19257;
+  public int a19258;
+  public int a19259;
+  public int a19260;
+  public int a19261;
+  public int a19262;
+  public int a19263;
+  public int a19264;
+  public int a19265;
+  public int a19266;
+  public int a19267;
+  public int a19268;
+  public int a19269;
+  public int a19270;
+  public int a19271;
+  public int a19272;
+  public int a19273;
+  public int a19274;
+  public int a19275;
+  public int a19276;
+  public int a19277;
+  public int a19278;
+  public int a19279;
+  public int a19280;
+  public int a19281;
+  public int a19282;
+  public int a19283;
+  public int a19284;
+  public int a19285;
+  public int a19286;
+  public int a19287;
+  public int a19288;
+  public int a19289;
+  public int a19290;
+  public int a19291;
+  public int a19292;
+  public int a19293;
+  public int a19294;
+  public int a19295;
+  public int a19296;
+  public int a19297;
+  public int a19298;
+  public int a19299;
+  public int a19300;
+  public int a19301;
+  public int a19302;
+  public int a19303;
+  public int a19304;
+  public int a19305;
+  public int a19306;
+  public int a19307;
+  public int a19308;
+  public int a19309;
+  public int a19310;
+  public int a19311;
+  public int a19312;
+  public int a19313;
+  public int a19314;
+  public int a19315;
+  public int a19316;
+  public int a19317;
+  public int a19318;
+  public int a19319;
+  public int a19320;
+  public int a19321;
+  public int a19322;
+  public int a19323;
+  public int a19324;
+  public int a19325;
+  public int a19326;
+  public int a19327;
+  public int a19328;
+  public int a19329;
+  public int a19330;
+  public int a19331;
+  public int a19332;
+  public int a19333;
+  public int a19334;
+  public int a19335;
+  public int a19336;
+  public int a19337;
+  public int a19338;
+  public int a19339;
+  public int a19340;
+  public int a19341;
+  public int a19342;
+  public int a19343;
+  public int a19344;
+  public int a19345;
+  public int a19346;
+  public int a19347;
+  public int a19348;
+  public int a19349;
+  public int a19350;
+  public int a19351;
+  public int a19352;
+  public int a19353;
+  public int a19354;
+  public int a19355;
+  public int a19356;
+  public int a19357;
+  public int a19358;
+  public int a19359;
+  public int a19360;
+  public int a19361;
+  public int a19362;
+  public int a19363;
+  public int a19364;
+  public int a19365;
+  public int a19366;
+  public int a19367;
+  public int a19368;
+  public int a19369;
+  public int a19370;
+  public int a19371;
+  public int a19372;
+  public int a19373;
+  public int a19374;
+  public int a19375;
+  public int a19376;
+  public int a19377;
+  public int a19378;
+  public int a19379;
+  public int a19380;
+  public int a19381;
+  public int a19382;
+  public int a19383;
+  public int a19384;
+  public int a19385;
+  public int a19386;
+  public int a19387;
+  public int a19388;
+  public int a19389;
+  public int a19390;
+  public int a19391;
+  public int a19392;
+  public int a19393;
+  public int a19394;
+  public int a19395;
+  public int a19396;
+  public int a19397;
+  public int a19398;
+  public int a19399;
+  public int a19400;
+  public int a19401;
+  public int a19402;
+  public int a19403;
+  public int a19404;
+  public int a19405;
+  public int a19406;
+  public int a19407;
+  public int a19408;
+  public int a19409;
+  public int a19410;
+  public int a19411;
+  public int a19412;
+  public int a19413;
+  public int a19414;
+  public int a19415;
+  public int a19416;
+  public int a19417;
+  public int a19418;
+  public int a19419;
+  public int a19420;
+  public int a19421;
+  public int a19422;
+  public int a19423;
+  public int a19424;
+  public int a19425;
+  public int a19426;
+  public int a19427;
+  public int a19428;
+  public int a19429;
+  public int a19430;
+  public int a19431;
+  public int a19432;
+  public int a19433;
+  public int a19434;
+  public int a19435;
+  public int a19436;
+  public int a19437;
+  public int a19438;
+  public int a19439;
+  public int a19440;
+  public int a19441;
+  public int a19442;
+  public int a19443;
+  public int a19444;
+  public int a19445;
+  public int a19446;
+  public int a19447;
+  public int a19448;
+  public int a19449;
+  public int a19450;
+  public int a19451;
+  public int a19452;
+  public int a19453;
+  public int a19454;
+  public int a19455;
+  public int a19456;
+  public int a19457;
+  public int a19458;
+  public int a19459;
+  public int a19460;
+  public int a19461;
+  public int a19462;
+  public int a19463;
+  public int a19464;
+  public int a19465;
+  public int a19466;
+  public int a19467;
+  public int a19468;
+  public int a19469;
+  public int a19470;
+  public int a19471;
+  public int a19472;
+  public int a19473;
+  public int a19474;
+  public int a19475;
+  public int a19476;
+  public int a19477;
+  public int a19478;
+  public int a19479;
+  public int a19480;
+  public int a19481;
+  public int a19482;
+  public int a19483;
+  public int a19484;
+  public int a19485;
+  public int a19486;
+  public int a19487;
+  public int a19488;
+  public int a19489;
+  public int a19490;
+  public int a19491;
+  public int a19492;
+  public int a19493;
+  public int a19494;
+  public int a19495;
+  public int a19496;
+  public int a19497;
+  public int a19498;
+  public int a19499;
+  public int a19500;
+  public int a19501;
+  public int a19502;
+  public int a19503;
+  public int a19504;
+  public int a19505;
+  public int a19506;
+  public int a19507;
+  public int a19508;
+  public int a19509;
+  public int a19510;
+  public int a19511;
+  public int a19512;
+  public int a19513;
+  public int a19514;
+  public int a19515;
+  public int a19516;
+  public int a19517;
+  public int a19518;
+  public int a19519;
+  public int a19520;
+  public int a19521;
+  public int a19522;
+  public int a19523;
+  public int a19524;
+  public int a19525;
+  public int a19526;
+  public int a19527;
+  public int a19528;
+  public int a19529;
+  public int a19530;
+  public int a19531;
+  public int a19532;
+  public int a19533;
+  public int a19534;
+  public int a19535;
+  public int a19536;
+  public int a19537;
+  public int a19538;
+  public int a19539;
+  public int a19540;
+  public int a19541;
+  public int a19542;
+  public int a19543;
+  public int a19544;
+  public int a19545;
+  public int a19546;
+  public int a19547;
+  public int a19548;
+  public int a19549;
+  public int a19550;
+  public int a19551;
+  public int a19552;
+  public int a19553;
+  public int a19554;
+  public int a19555;
+  public int a19556;
+  public int a19557;
+  public int a19558;
+  public int a19559;
+  public int a19560;
+  public int a19561;
+  public int a19562;
+  public int a19563;
+  public int a19564;
+  public int a19565;
+  public int a19566;
+  public int a19567;
+  public int a19568;
+  public int a19569;
+  public int a19570;
+  public int a19571;
+  public int a19572;
+  public int a19573;
+  public int a19574;
+  public int a19575;
+  public int a19576;
+  public int a19577;
+  public int a19578;
+  public int a19579;
+  public int a19580;
+  public int a19581;
+  public int a19582;
+  public int a19583;
+  public int a19584;
+  public int a19585;
+  public int a19586;
+  public int a19587;
+  public int a19588;
+  public int a19589;
+  public int a19590;
+  public int a19591;
+  public int a19592;
+  public int a19593;
+  public int a19594;
+  public int a19595;
+  public int a19596;
+  public int a19597;
+  public int a19598;
+  public int a19599;
+  public int a19600;
+  public int a19601;
+  public int a19602;
+  public int a19603;
+  public int a19604;
+  public int a19605;
+  public int a19606;
+  public int a19607;
+  public int a19608;
+  public int a19609;
+  public int a19610;
+  public int a19611;
+  public int a19612;
+  public int a19613;
+  public int a19614;
+  public int a19615;
+  public int a19616;
+  public int a19617;
+  public int a19618;
+  public int a19619;
+  public int a19620;
+  public int a19621;
+  public int a19622;
+  public int a19623;
+  public int a19624;
+  public int a19625;
+  public int a19626;
+  public int a19627;
+  public int a19628;
+  public int a19629;
+  public int a19630;
+  public int a19631;
+  public int a19632;
+  public int a19633;
+  public int a19634;
+  public int a19635;
+  public int a19636;
+  public int a19637;
+  public int a19638;
+  public int a19639;
+  public int a19640;
+  public int a19641;
+  public int a19642;
+  public int a19643;
+  public int a19644;
+  public int a19645;
+  public int a19646;
+  public int a19647;
+  public int a19648;
+  public int a19649;
+  public int a19650;
+  public int a19651;
+  public int a19652;
+  public int a19653;
+  public int a19654;
+  public int a19655;
+  public int a19656;
+  public int a19657;
+  public int a19658;
+  public int a19659;
+  public int a19660;
+  public int a19661;
+  public int a19662;
+  public int a19663;
+  public int a19664;
+  public int a19665;
+  public int a19666;
+  public int a19667;
+  public int a19668;
+  public int a19669;
+  public int a19670;
+  public int a19671;
+  public int a19672;
+  public int a19673;
+  public int a19674;
+  public int a19675;
+  public int a19676;
+  public int a19677;
+  public int a19678;
+  public int a19679;
+  public int a19680;
+  public int a19681;
+  public int a19682;
+  public int a19683;
+  public int a19684;
+  public int a19685;
+  public int a19686;
+  public int a19687;
+  public int a19688;
+  public int a19689;
+  public int a19690;
+  public int a19691;
+  public int a19692;
+  public int a19693;
+  public int a19694;
+  public int a19695;
+  public int a19696;
+  public int a19697;
+  public int a19698;
+  public int a19699;
+  public int a19700;
+  public int a19701;
+  public int a19702;
+  public int a19703;
+  public int a19704;
+  public int a19705;
+  public int a19706;
+  public int a19707;
+  public int a19708;
+  public int a19709;
+  public int a19710;
+  public int a19711;
+  public int a19712;
+  public int a19713;
+  public int a19714;
+  public int a19715;
+  public int a19716;
+  public int a19717;
+  public int a19718;
+  public int a19719;
+  public int a19720;
+  public int a19721;
+  public int a19722;
+  public int a19723;
+  public int a19724;
+  public int a19725;
+  public int a19726;
+  public int a19727;
+  public int a19728;
+  public int a19729;
+  public int a19730;
+  public int a19731;
+  public int a19732;
+  public int a19733;
+  public int a19734;
+  public int a19735;
+  public int a19736;
+  public int a19737;
+  public int a19738;
+  public int a19739;
+  public int a19740;
+  public int a19741;
+  public int a19742;
+  public int a19743;
+  public int a19744;
+  public int a19745;
+  public int a19746;
+  public int a19747;
+  public int a19748;
+  public int a19749;
+  public int a19750;
+  public int a19751;
+  public int a19752;
+  public int a19753;
+  public int a19754;
+  public int a19755;
+  public int a19756;
+  public int a19757;
+  public int a19758;
+  public int a19759;
+  public int a19760;
+  public int a19761;
+  public int a19762;
+  public int a19763;
+  public int a19764;
+  public int a19765;
+  public int a19766;
+  public int a19767;
+  public int a19768;
+  public int a19769;
+  public int a19770;
+  public int a19771;
+  public int a19772;
+  public int a19773;
+  public int a19774;
+  public int a19775;
+  public int a19776;
+  public int a19777;
+  public int a19778;
+  public int a19779;
+  public int a19780;
+  public int a19781;
+  public int a19782;
+  public int a19783;
+  public int a19784;
+  public int a19785;
+  public int a19786;
+  public int a19787;
+  public int a19788;
+  public int a19789;
+  public int a19790;
+  public int a19791;
+  public int a19792;
+  public int a19793;
+  public int a19794;
+  public int a19795;
+  public int a19796;
+  public int a19797;
+  public int a19798;
+  public int a19799;
+  public int a19800;
+  public int a19801;
+  public int a19802;
+  public int a19803;
+  public int a19804;
+  public int a19805;
+  public int a19806;
+  public int a19807;
+  public int a19808;
+  public int a19809;
+  public int a19810;
+  public int a19811;
+  public int a19812;
+  public int a19813;
+  public int a19814;
+  public int a19815;
+  public int a19816;
+  public int a19817;
+  public int a19818;
+  public int a19819;
+  public int a19820;
+  public int a19821;
+  public int a19822;
+  public int a19823;
+  public int a19824;
+  public int a19825;
+  public int a19826;
+  public int a19827;
+  public int a19828;
+  public int a19829;
+  public int a19830;
+  public int a19831;
+  public int a19832;
+  public int a19833;
+  public int a19834;
+  public int a19835;
+  public int a19836;
+  public int a19837;
+  public int a19838;
+  public int a19839;
+  public int a19840;
+  public int a19841;
+  public int a19842;
+  public int a19843;
+  public int a19844;
+  public int a19845;
+  public int a19846;
+  public int a19847;
+  public int a19848;
+  public int a19849;
+  public int a19850;
+  public int a19851;
+  public int a19852;
+  public int a19853;
+  public int a19854;
+  public int a19855;
+  public int a19856;
+  public int a19857;
+  public int a19858;
+  public int a19859;
+  public int a19860;
+  public int a19861;
+  public int a19862;
+  public int a19863;
+  public int a19864;
+  public int a19865;
+  public int a19866;
+  public int a19867;
+  public int a19868;
+  public int a19869;
+  public int a19870;
+  public int a19871;
+  public int a19872;
+  public int a19873;
+  public int a19874;
+  public int a19875;
+  public int a19876;
+  public int a19877;
+  public int a19878;
+  public int a19879;
+  public int a19880;
+  public int a19881;
+  public int a19882;
+  public int a19883;
+  public int a19884;
+  public int a19885;
+  public int a19886;
+  public int a19887;
+  public int a19888;
+  public int a19889;
+  public int a19890;
+  public int a19891;
+  public int a19892;
+  public int a19893;
+  public int a19894;
+  public int a19895;
+  public int a19896;
+  public int a19897;
+  public int a19898;
+  public int a19899;
+  public int a19900;
+  public int a19901;
+  public int a19902;
+  public int a19903;
+  public int a19904;
+  public int a19905;
+  public int a19906;
+  public int a19907;
+  public int a19908;
+  public int a19909;
+  public int a19910;
+  public int a19911;
+  public int a19912;
+  public int a19913;
+  public int a19914;
+  public int a19915;
+  public int a19916;
+  public int a19917;
+  public int a19918;
+  public int a19919;
+  public int a19920;
+  public int a19921;
+  public int a19922;
+  public int a19923;
+  public int a19924;
+  public int a19925;
+  public int a19926;
+  public int a19927;
+  public int a19928;
+  public int a19929;
+  public int a19930;
+  public int a19931;
+  public int a19932;
+  public int a19933;
+  public int a19934;
+  public int a19935;
+  public int a19936;
+  public int a19937;
+  public int a19938;
+  public int a19939;
+  public int a19940;
+  public int a19941;
+  public int a19942;
+  public int a19943;
+  public int a19944;
+  public int a19945;
+  public int a19946;
+  public int a19947;
+  public int a19948;
+  public int a19949;
+  public int a19950;
+  public int a19951;
+  public int a19952;
+  public int a19953;
+  public int a19954;
+  public int a19955;
+  public int a19956;
+  public int a19957;
+  public int a19958;
+  public int a19959;
+  public int a19960;
+  public int a19961;
+  public int a19962;
+  public int a19963;
+  public int a19964;
+  public int a19965;
+  public int a19966;
+  public int a19967;
+  public int a19968;
+  public int a19969;
+  public int a19970;
+  public int a19971;
+  public int a19972;
+  public int a19973;
+  public int a19974;
+  public int a19975;
+  public int a19976;
+  public int a19977;
+  public int a19978;
+  public int a19979;
+  public int a19980;
+  public int a19981;
+  public int a19982;
+  public int a19983;
+  public int a19984;
+  public int a19985;
+  public int a19986;
+  public int a19987;
+  public int a19988;
+  public int a19989;
+  public int a19990;
+  public int a19991;
+  public int a19992;
+  public int a19993;
+  public int a19994;
+  public int a19995;
+  public int a19996;
+  public int a19997;
+  public int a19998;
+  public int a19999;
+  public int a20000;
+  public int a20001;
+  public int a20002;
+  public int a20003;
+  public int a20004;
+  public int a20005;
+  public int a20006;
+  public int a20007;
+  public int a20008;
+  public int a20009;
+  public int a20010;
+  public int a20011;
+  public int a20012;
+  public int a20013;
+  public int a20014;
+  public int a20015;
+  public int a20016;
+  public int a20017;
+  public int a20018;
+  public int a20019;
+  public int a20020;
+  public int a20021;
+  public int a20022;
+  public int a20023;
+  public int a20024;
+  public int a20025;
+  public int a20026;
+  public int a20027;
+  public int a20028;
+  public int a20029;
+  public int a20030;
+  public int a20031;
+  public int a20032;
+  public int a20033;
+  public int a20034;
+  public int a20035;
+  public int a20036;
+  public int a20037;
+  public int a20038;
+  public int a20039;
+  public int a20040;
+  public int a20041;
+  public int a20042;
+  public int a20043;
+  public int a20044;
+  public int a20045;
+  public int a20046;
+  public int a20047;
+  public int a20048;
+  public int a20049;
+  public int a20050;
+  public int a20051;
+  public int a20052;
+  public int a20053;
+  public int a20054;
+  public int a20055;
+  public int a20056;
+  public int a20057;
+  public int a20058;
+  public int a20059;
+  public int a20060;
+  public int a20061;
+  public int a20062;
+  public int a20063;
+  public int a20064;
+  public int a20065;
+  public int a20066;
+  public int a20067;
+  public int a20068;
+  public int a20069;
+  public int a20070;
+  public int a20071;
+  public int a20072;
+  public int a20073;
+  public int a20074;
+  public int a20075;
+  public int a20076;
+  public int a20077;
+  public int a20078;
+  public int a20079;
+  public int a20080;
+  public int a20081;
+  public int a20082;
+  public int a20083;
+  public int a20084;
+  public int a20085;
+  public int a20086;
+  public int a20087;
+  public int a20088;
+  public int a20089;
+  public int a20090;
+  public int a20091;
+  public int a20092;
+  public int a20093;
+  public int a20094;
+  public int a20095;
+  public int a20096;
+  public int a20097;
+  public int a20098;
+  public int a20099;
+  public int a20100;
+  public int a20101;
+  public int a20102;
+  public int a20103;
+  public int a20104;
+  public int a20105;
+  public int a20106;
+  public int a20107;
+  public int a20108;
+  public int a20109;
+  public int a20110;
+  public int a20111;
+  public int a20112;
+  public int a20113;
+  public int a20114;
+  public int a20115;
+  public int a20116;
+  public int a20117;
+  public int a20118;
+  public int a20119;
+  public int a20120;
+  public int a20121;
+  public int a20122;
+  public int a20123;
+  public int a20124;
+  public int a20125;
+  public int a20126;
+  public int a20127;
+  public int a20128;
+  public int a20129;
+  public int a20130;
+  public int a20131;
+  public int a20132;
+  public int a20133;
+  public int a20134;
+  public int a20135;
+  public int a20136;
+  public int a20137;
+  public int a20138;
+  public int a20139;
+  public int a20140;
+  public int a20141;
+  public int a20142;
+  public int a20143;
+  public int a20144;
+  public int a20145;
+  public int a20146;
+  public int a20147;
+  public int a20148;
+  public int a20149;
+  public int a20150;
+  public int a20151;
+  public int a20152;
+  public int a20153;
+  public int a20154;
+  public int a20155;
+  public int a20156;
+  public int a20157;
+  public int a20158;
+  public int a20159;
+  public int a20160;
+  public int a20161;
+  public int a20162;
+  public int a20163;
+  public int a20164;
+  public int a20165;
+  public int a20166;
+  public int a20167;
+  public int a20168;
+  public int a20169;
+  public int a20170;
+  public int a20171;
+  public int a20172;
+  public int a20173;
+  public int a20174;
+  public int a20175;
+  public int a20176;
+  public int a20177;
+  public int a20178;
+  public int a20179;
+  public int a20180;
+  public int a20181;
+  public int a20182;
+  public int a20183;
+  public int a20184;
+  public int a20185;
+  public int a20186;
+  public int a20187;
+  public int a20188;
+  public int a20189;
+  public int a20190;
+  public int a20191;
+  public int a20192;
+  public int a20193;
+  public int a20194;
+  public int a20195;
+  public int a20196;
+  public int a20197;
+  public int a20198;
+  public int a20199;
+  public int a20200;
+  public int a20201;
+  public int a20202;
+  public int a20203;
+  public int a20204;
+  public int a20205;
+  public int a20206;
+  public int a20207;
+  public int a20208;
+  public int a20209;
+  public int a20210;
+  public int a20211;
+  public int a20212;
+  public int a20213;
+  public int a20214;
+  public int a20215;
+  public int a20216;
+  public int a20217;
+  public int a20218;
+  public int a20219;
+  public int a20220;
+  public int a20221;
+  public int a20222;
+  public int a20223;
+  public int a20224;
+  public int a20225;
+  public int a20226;
+  public int a20227;
+  public int a20228;
+  public int a20229;
+  public int a20230;
+  public int a20231;
+  public int a20232;
+  public int a20233;
+  public int a20234;
+  public int a20235;
+  public int a20236;
+  public int a20237;
+  public int a20238;
+  public int a20239;
+  public int a20240;
+  public int a20241;
+  public int a20242;
+  public int a20243;
+  public int a20244;
+  public int a20245;
+  public int a20246;
+  public int a20247;
+  public int a20248;
+  public int a20249;
+  public int a20250;
+  public int a20251;
+  public int a20252;
+  public int a20253;
+  public int a20254;
+  public int a20255;
+  public int a20256;
+  public int a20257;
+  public int a20258;
+  public int a20259;
+  public int a20260;
+  public int a20261;
+  public int a20262;
+  public int a20263;
+  public int a20264;
+  public int a20265;
+  public int a20266;
+  public int a20267;
+  public int a20268;
+  public int a20269;
+  public int a20270;
+  public int a20271;
+  public int a20272;
+  public int a20273;
+  public int a20274;
+  public int a20275;
+  public int a20276;
+  public int a20277;
+  public int a20278;
+  public int a20279;
+  public int a20280;
+  public int a20281;
+  public int a20282;
+  public int a20283;
+  public int a20284;
+  public int a20285;
+  public int a20286;
+  public int a20287;
+  public int a20288;
+  public int a20289;
+  public int a20290;
+  public int a20291;
+  public int a20292;
+  public int a20293;
+  public int a20294;
+  public int a20295;
+  public int a20296;
+  public int a20297;
+  public int a20298;
+  public int a20299;
+  public int a20300;
+  public int a20301;
+  public int a20302;
+  public int a20303;
+  public int a20304;
+  public int a20305;
+  public int a20306;
+  public int a20307;
+  public int a20308;
+  public int a20309;
+  public int a20310;
+  public int a20311;
+  public int a20312;
+  public int a20313;
+  public int a20314;
+  public int a20315;
+  public int a20316;
+  public int a20317;
+  public int a20318;
+  public int a20319;
+  public int a20320;
+  public int a20321;
+  public int a20322;
+  public int a20323;
+  public int a20324;
+  public int a20325;
+  public int a20326;
+  public int a20327;
+  public int a20328;
+  public int a20329;
+  public int a20330;
+  public int a20331;
+  public int a20332;
+  public int a20333;
+  public int a20334;
+  public int a20335;
+  public int a20336;
+  public int a20337;
+  public int a20338;
+  public int a20339;
+  public int a20340;
+  public int a20341;
+  public int a20342;
+  public int a20343;
+  public int a20344;
+  public int a20345;
+  public int a20346;
+  public int a20347;
+  public int a20348;
+  public int a20349;
+  public int a20350;
+  public int a20351;
+  public int a20352;
+  public int a20353;
+  public int a20354;
+  public int a20355;
+  public int a20356;
+  public int a20357;
+  public int a20358;
+  public int a20359;
+  public int a20360;
+  public int a20361;
+  public int a20362;
+  public int a20363;
+  public int a20364;
+  public int a20365;
+  public int a20366;
+  public int a20367;
+  public int a20368;
+  public int a20369;
+  public int a20370;
+  public int a20371;
+  public int a20372;
+  public int a20373;
+  public int a20374;
+  public int a20375;
+  public int a20376;
+  public int a20377;
+  public int a20378;
+  public int a20379;
+  public int a20380;
+  public int a20381;
+  public int a20382;
+  public int a20383;
+  public int a20384;
+  public int a20385;
+  public int a20386;
+  public int a20387;
+  public int a20388;
+  public int a20389;
+  public int a20390;
+  public int a20391;
+  public int a20392;
+  public int a20393;
+  public int a20394;
+  public int a20395;
+  public int a20396;
+  public int a20397;
+  public int a20398;
+  public int a20399;
+  public int a20400;
+  public int a20401;
+  public int a20402;
+  public int a20403;
+  public int a20404;
+  public int a20405;
+  public int a20406;
+  public int a20407;
+  public int a20408;
+  public int a20409;
+  public int a20410;
+  public int a20411;
+  public int a20412;
+  public int a20413;
+  public int a20414;
+  public int a20415;
+  public int a20416;
+  public int a20417;
+  public int a20418;
+  public int a20419;
+  public int a20420;
+  public int a20421;
+  public int a20422;
+  public int a20423;
+  public int a20424;
+  public int a20425;
+  public int a20426;
+  public int a20427;
+  public int a20428;
+  public int a20429;
+  public int a20430;
+  public int a20431;
+  public int a20432;
+  public int a20433;
+  public int a20434;
+  public int a20435;
+  public int a20436;
+  public int a20437;
+  public int a20438;
+  public int a20439;
+  public int a20440;
+  public int a20441;
+  public int a20442;
+  public int a20443;
+  public int a20444;
+  public int a20445;
+  public int a20446;
+  public int a20447;
+  public int a20448;
+  public int a20449;
+  public int a20450;
+  public int a20451;
+  public int a20452;
+  public int a20453;
+  public int a20454;
+  public int a20455;
+  public int a20456;
+  public int a20457;
+  public int a20458;
+  public int a20459;
+  public int a20460;
+  public int a20461;
+  public int a20462;
+  public int a20463;
+  public int a20464;
+  public int a20465;
+  public int a20466;
+  public int a20467;
+  public int a20468;
+  public int a20469;
+  public int a20470;
+  public int a20471;
+  public int a20472;
+  public int a20473;
+  public int a20474;
+  public int a20475;
+  public int a20476;
+  public int a20477;
+  public int a20478;
+  public int a20479;
+  public int a20480;
+  public int a20481;
+  public int a20482;
+  public int a20483;
+  public int a20484;
+  public int a20485;
+  public int a20486;
+  public int a20487;
+  public int a20488;
+  public int a20489;
+  public int a20490;
+  public int a20491;
+  public int a20492;
+  public int a20493;
+  public int a20494;
+  public int a20495;
+  public int a20496;
+  public int a20497;
+  public int a20498;
+  public int a20499;
+  public int a20500;
+  public int a20501;
+  public int a20502;
+  public int a20503;
+  public int a20504;
+  public int a20505;
+  public int a20506;
+  public int a20507;
+  public int a20508;
+  public int a20509;
+  public int a20510;
+  public int a20511;
+  public int a20512;
+  public int a20513;
+  public int a20514;
+  public int a20515;
+  public int a20516;
+  public int a20517;
+  public int a20518;
+  public int a20519;
+  public int a20520;
+  public int a20521;
+  public int a20522;
+  public int a20523;
+  public int a20524;
+  public int a20525;
+  public int a20526;
+  public int a20527;
+  public int a20528;
+  public int a20529;
+  public int a20530;
+  public int a20531;
+  public int a20532;
+  public int a20533;
+  public int a20534;
+  public int a20535;
+  public int a20536;
+  public int a20537;
+  public int a20538;
+  public int a20539;
+  public int a20540;
+  public int a20541;
+  public int a20542;
+  public int a20543;
+  public int a20544;
+  public int a20545;
+  public int a20546;
+  public int a20547;
+  public int a20548;
+  public int a20549;
+  public int a20550;
+  public int a20551;
+  public int a20552;
+  public int a20553;
+  public int a20554;
+  public int a20555;
+  public int a20556;
+  public int a20557;
+  public int a20558;
+  public int a20559;
+  public int a20560;
+  public int a20561;
+  public int a20562;
+  public int a20563;
+  public int a20564;
+  public int a20565;
+  public int a20566;
+  public int a20567;
+  public int a20568;
+  public int a20569;
+  public int a20570;
+  public int a20571;
+  public int a20572;
+  public int a20573;
+  public int a20574;
+  public int a20575;
+  public int a20576;
+  public int a20577;
+  public int a20578;
+  public int a20579;
+  public int a20580;
+  public int a20581;
+  public int a20582;
+  public int a20583;
+  public int a20584;
+  public int a20585;
+  public int a20586;
+  public int a20587;
+  public int a20588;
+  public int a20589;
+  public int a20590;
+  public int a20591;
+  public int a20592;
+  public int a20593;
+  public int a20594;
+  public int a20595;
+  public int a20596;
+  public int a20597;
+  public int a20598;
+  public int a20599;
+  public int a20600;
+  public int a20601;
+  public int a20602;
+  public int a20603;
+  public int a20604;
+  public int a20605;
+  public int a20606;
+  public int a20607;
+  public int a20608;
+  public int a20609;
+  public int a20610;
+  public int a20611;
+  public int a20612;
+  public int a20613;
+  public int a20614;
+  public int a20615;
+  public int a20616;
+  public int a20617;
+  public int a20618;
+  public int a20619;
+  public int a20620;
+  public int a20621;
+  public int a20622;
+  public int a20623;
+  public int a20624;
+  public int a20625;
+  public int a20626;
+  public int a20627;
+  public int a20628;
+  public int a20629;
+  public int a20630;
+  public int a20631;
+  public int a20632;
+  public int a20633;
+  public int a20634;
+  public int a20635;
+  public int a20636;
+  public int a20637;
+  public int a20638;
+  public int a20639;
+  public int a20640;
+  public int a20641;
+  public int a20642;
+  public int a20643;
+  public int a20644;
+  public int a20645;
+  public int a20646;
+  public int a20647;
+  public int a20648;
+  public int a20649;
+  public int a20650;
+  public int a20651;
+  public int a20652;
+  public int a20653;
+  public int a20654;
+  public int a20655;
+  public int a20656;
+  public int a20657;
+  public int a20658;
+  public int a20659;
+  public int a20660;
+  public int a20661;
+  public int a20662;
+  public int a20663;
+  public int a20664;
+  public int a20665;
+  public int a20666;
+  public int a20667;
+  public int a20668;
+  public int a20669;
+  public int a20670;
+  public int a20671;
+  public int a20672;
+  public int a20673;
+  public int a20674;
+  public int a20675;
+  public int a20676;
+  public int a20677;
+  public int a20678;
+  public int a20679;
+  public int a20680;
+  public int a20681;
+  public int a20682;
+  public int a20683;
+  public int a20684;
+  public int a20685;
+  public int a20686;
+  public int a20687;
+  public int a20688;
+  public int a20689;
+  public int a20690;
+  public int a20691;
+  public int a20692;
+  public int a20693;
+  public int a20694;
+  public int a20695;
+  public int a20696;
+  public int a20697;
+  public int a20698;
+  public int a20699;
+  public int a20700;
+  public int a20701;
+  public int a20702;
+  public int a20703;
+  public int a20704;
+  public int a20705;
+  public int a20706;
+  public int a20707;
+  public int a20708;
+  public int a20709;
+  public int a20710;
+  public int a20711;
+  public int a20712;
+  public int a20713;
+  public int a20714;
+  public int a20715;
+  public int a20716;
+  public int a20717;
+  public int a20718;
+  public int a20719;
+  public int a20720;
+  public int a20721;
+  public int a20722;
+  public int a20723;
+  public int a20724;
+  public int a20725;
+  public int a20726;
+  public int a20727;
+  public int a20728;
+  public int a20729;
+  public int a20730;
+  public int a20731;
+  public int a20732;
+  public int a20733;
+  public int a20734;
+  public int a20735;
+  public int a20736;
+  public int a20737;
+  public int a20738;
+  public int a20739;
+  public int a20740;
+  public int a20741;
+  public int a20742;
+  public int a20743;
+  public int a20744;
+  public int a20745;
+  public int a20746;
+  public int a20747;
+  public int a20748;
+  public int a20749;
+  public int a20750;
+  public int a20751;
+  public int a20752;
+  public int a20753;
+  public int a20754;
+  public int a20755;
+  public int a20756;
+  public int a20757;
+  public int a20758;
+  public int a20759;
+  public int a20760;
+  public int a20761;
+  public int a20762;
+  public int a20763;
+  public int a20764;
+  public int a20765;
+  public int a20766;
+  public int a20767;
+  public int a20768;
+  public int a20769;
+  public int a20770;
+  public int a20771;
+  public int a20772;
+  public int a20773;
+  public int a20774;
+  public int a20775;
+  public int a20776;
+  public int a20777;
+  public int a20778;
+  public int a20779;
+  public int a20780;
+  public int a20781;
+  public int a20782;
+  public int a20783;
+  public int a20784;
+  public int a20785;
+  public int a20786;
+  public int a20787;
+  public int a20788;
+  public int a20789;
+  public int a20790;
+  public int a20791;
+  public int a20792;
+  public int a20793;
+  public int a20794;
+  public int a20795;
+  public int a20796;
+  public int a20797;
+  public int a20798;
+  public int a20799;
+  public int a20800;
+  public int a20801;
+  public int a20802;
+  public int a20803;
+  public int a20804;
+  public int a20805;
+  public int a20806;
+  public int a20807;
+  public int a20808;
+  public int a20809;
+  public int a20810;
+  public int a20811;
+  public int a20812;
+  public int a20813;
+  public int a20814;
+  public int a20815;
+  public int a20816;
+  public int a20817;
+  public int a20818;
+  public int a20819;
+  public int a20820;
+  public int a20821;
+  public int a20822;
+  public int a20823;
+  public int a20824;
+  public int a20825;
+  public int a20826;
+  public int a20827;
+  public int a20828;
+  public int a20829;
+  public int a20830;
+  public int a20831;
+  public int a20832;
+  public int a20833;
+  public int a20834;
+  public int a20835;
+  public int a20836;
+  public int a20837;
+  public int a20838;
+  public int a20839;
+  public int a20840;
+  public int a20841;
+  public int a20842;
+  public int a20843;
+  public int a20844;
+  public int a20845;
+  public int a20846;
+  public int a20847;
+  public int a20848;
+  public int a20849;
+  public int a20850;
+  public int a20851;
+  public int a20852;
+  public int a20853;
+  public int a20854;
+  public int a20855;
+  public int a20856;
+  public int a20857;
+  public int a20858;
+  public int a20859;
+  public int a20860;
+  public int a20861;
+  public int a20862;
+  public int a20863;
+  public int a20864;
+  public int a20865;
+  public int a20866;
+  public int a20867;
+  public int a20868;
+  public int a20869;
+  public int a20870;
+  public int a20871;
+  public int a20872;
+  public int a20873;
+  public int a20874;
+  public int a20875;
+  public int a20876;
+  public int a20877;
+  public int a20878;
+  public int a20879;
+  public int a20880;
+  public int a20881;
+  public int a20882;
+  public int a20883;
+  public int a20884;
+  public int a20885;
+  public int a20886;
+  public int a20887;
+  public int a20888;
+  public int a20889;
+  public int a20890;
+  public int a20891;
+  public int a20892;
+  public int a20893;
+  public int a20894;
+  public int a20895;
+  public int a20896;
+  public int a20897;
+  public int a20898;
+  public int a20899;
+  public int a20900;
+  public int a20901;
+  public int a20902;
+  public int a20903;
+  public int a20904;
+  public int a20905;
+  public int a20906;
+  public int a20907;
+  public int a20908;
+  public int a20909;
+  public int a20910;
+  public int a20911;
+  public int a20912;
+  public int a20913;
+  public int a20914;
+  public int a20915;
+  public int a20916;
+  public int a20917;
+  public int a20918;
+  public int a20919;
+  public int a20920;
+  public int a20921;
+  public int a20922;
+  public int a20923;
+  public int a20924;
+  public int a20925;
+  public int a20926;
+  public int a20927;
+  public int a20928;
+  public int a20929;
+  public int a20930;
+  public int a20931;
+  public int a20932;
+  public int a20933;
+  public int a20934;
+  public int a20935;
+  public int a20936;
+  public int a20937;
+  public int a20938;
+  public int a20939;
+  public int a20940;
+  public int a20941;
+  public int a20942;
+  public int a20943;
+  public int a20944;
+  public int a20945;
+  public int a20946;
+  public int a20947;
+  public int a20948;
+  public int a20949;
+  public int a20950;
+  public int a20951;
+  public int a20952;
+  public int a20953;
+  public int a20954;
+  public int a20955;
+  public int a20956;
+  public int a20957;
+  public int a20958;
+  public int a20959;
+  public int a20960;
+  public int a20961;
+  public int a20962;
+  public int a20963;
+  public int a20964;
+  public int a20965;
+  public int a20966;
+  public int a20967;
+  public int a20968;
+  public int a20969;
+  public int a20970;
+  public int a20971;
+  public int a20972;
+  public int a20973;
+  public int a20974;
+  public int a20975;
+  public int a20976;
+  public int a20977;
+  public int a20978;
+  public int a20979;
+  public int a20980;
+  public int a20981;
+  public int a20982;
+  public int a20983;
+  public int a20984;
+  public int a20985;
+  public int a20986;
+  public int a20987;
+  public int a20988;
+  public int a20989;
+  public int a20990;
+  public int a20991;
+  public int a20992;
+  public int a20993;
+  public int a20994;
+  public int a20995;
+  public int a20996;
+  public int a20997;
+  public int a20998;
+  public int a20999;
+  public int a21000;
+  public int a21001;
+  public int a21002;
+  public int a21003;
+  public int a21004;
+  public int a21005;
+  public int a21006;
+  public int a21007;
+  public int a21008;
+  public int a21009;
+  public int a21010;
+  public int a21011;
+  public int a21012;
+  public int a21013;
+  public int a21014;
+  public int a21015;
+  public int a21016;
+  public int a21017;
+  public int a21018;
+  public int a21019;
+  public int a21020;
+  public int a21021;
+  public int a21022;
+  public int a21023;
+  public int a21024;
+  public int a21025;
+  public int a21026;
+  public int a21027;
+  public int a21028;
+  public int a21029;
+  public int a21030;
+  public int a21031;
+  public int a21032;
+  public int a21033;
+  public int a21034;
+  public int a21035;
+  public int a21036;
+  public int a21037;
+  public int a21038;
+  public int a21039;
+  public int a21040;
+  public int a21041;
+  public int a21042;
+  public int a21043;
+  public int a21044;
+  public int a21045;
+  public int a21046;
+  public int a21047;
+  public int a21048;
+  public int a21049;
+  public int a21050;
+  public int a21051;
+  public int a21052;
+  public int a21053;
+  public int a21054;
+  public int a21055;
+  public int a21056;
+  public int a21057;
+  public int a21058;
+  public int a21059;
+  public int a21060;
+  public int a21061;
+  public int a21062;
+  public int a21063;
+  public int a21064;
+  public int a21065;
+  public int a21066;
+  public int a21067;
+  public int a21068;
+  public int a21069;
+  public int a21070;
+  public int a21071;
+  public int a21072;
+  public int a21073;
+  public int a21074;
+  public int a21075;
+  public int a21076;
+  public int a21077;
+  public int a21078;
+  public int a21079;
+  public int a21080;
+  public int a21081;
+  public int a21082;
+  public int a21083;
+  public int a21084;
+  public int a21085;
+  public int a21086;
+  public int a21087;
+  public int a21088;
+  public int a21089;
+  public int a21090;
+  public int a21091;
+  public int a21092;
+  public int a21093;
+  public int a21094;
+  public int a21095;
+  public int a21096;
+  public int a21097;
+  public int a21098;
+  public int a21099;
+  public int a21100;
+  public int a21101;
+  public int a21102;
+  public int a21103;
+  public int a21104;
+  public int a21105;
+  public int a21106;
+  public int a21107;
+  public int a21108;
+  public int a21109;
+  public int a21110;
+  public int a21111;
+  public int a21112;
+  public int a21113;
+  public int a21114;
+  public int a21115;
+  public int a21116;
+  public int a21117;
+  public int a21118;
+  public int a21119;
+  public int a21120;
+  public int a21121;
+  public int a21122;
+  public int a21123;
+  public int a21124;
+  public int a21125;
+  public int a21126;
+  public int a21127;
+  public int a21128;
+  public int a21129;
+  public int a21130;
+  public int a21131;
+  public int a21132;
+  public int a21133;
+  public int a21134;
+  public int a21135;
+  public int a21136;
+  public int a21137;
+  public int a21138;
+  public int a21139;
+  public int a21140;
+  public int a21141;
+  public int a21142;
+  public int a21143;
+  public int a21144;
+  public int a21145;
+  public int a21146;
+  public int a21147;
+  public int a21148;
+  public int a21149;
+  public int a21150;
+  public int a21151;
+  public int a21152;
+  public int a21153;
+  public int a21154;
+  public int a21155;
+  public int a21156;
+  public int a21157;
+  public int a21158;
+  public int a21159;
+  public int a21160;
+  public int a21161;
+  public int a21162;
+  public int a21163;
+  public int a21164;
+  public int a21165;
+  public int a21166;
+  public int a21167;
+  public int a21168;
+  public int a21169;
+  public int a21170;
+  public int a21171;
+  public int a21172;
+  public int a21173;
+  public int a21174;
+  public int a21175;
+  public int a21176;
+  public int a21177;
+  public int a21178;
+  public int a21179;
+  public int a21180;
+  public int a21181;
+  public int a21182;
+  public int a21183;
+  public int a21184;
+  public int a21185;
+  public int a21186;
+  public int a21187;
+  public int a21188;
+  public int a21189;
+  public int a21190;
+  public int a21191;
+  public int a21192;
+  public int a21193;
+  public int a21194;
+  public int a21195;
+  public int a21196;
+  public int a21197;
+  public int a21198;
+  public int a21199;
+  public int a21200;
+  public int a21201;
+  public int a21202;
+  public int a21203;
+  public int a21204;
+  public int a21205;
+  public int a21206;
+  public int a21207;
+  public int a21208;
+  public int a21209;
+  public int a21210;
+  public int a21211;
+  public int a21212;
+  public int a21213;
+  public int a21214;
+  public int a21215;
+  public int a21216;
+  public int a21217;
+  public int a21218;
+  public int a21219;
+  public int a21220;
+  public int a21221;
+  public int a21222;
+  public int a21223;
+  public int a21224;
+  public int a21225;
+  public int a21226;
+  public int a21227;
+  public int a21228;
+  public int a21229;
+  public int a21230;
+  public int a21231;
+  public int a21232;
+  public int a21233;
+  public int a21234;
+  public int a21235;
+  public int a21236;
+  public int a21237;
+  public int a21238;
+  public int a21239;
+  public int a21240;
+  public int a21241;
+  public int a21242;
+  public int a21243;
+  public int a21244;
+  public int a21245;
+  public int a21246;
+  public int a21247;
+  public int a21248;
+  public int a21249;
+  public int a21250;
+  public int a21251;
+  public int a21252;
+  public int a21253;
+  public int a21254;
+  public int a21255;
+  public int a21256;
+  public int a21257;
+  public int a21258;
+  public int a21259;
+  public int a21260;
+  public int a21261;
+  public int a21262;
+  public int a21263;
+  public int a21264;
+  public int a21265;
+  public int a21266;
+  public int a21267;
+  public int a21268;
+  public int a21269;
+  public int a21270;
+  public int a21271;
+  public int a21272;
+  public int a21273;
+  public int a21274;
+  public int a21275;
+  public int a21276;
+  public int a21277;
+  public int a21278;
+  public int a21279;
+  public int a21280;
+  public int a21281;
+  public int a21282;
+  public int a21283;
+  public int a21284;
+  public int a21285;
+  public int a21286;
+  public int a21287;
+  public int a21288;
+  public int a21289;
+  public int a21290;
+  public int a21291;
+  public int a21292;
+  public int a21293;
+  public int a21294;
+  public int a21295;
+  public int a21296;
+  public int a21297;
+  public int a21298;
+  public int a21299;
+  public int a21300;
+  public int a21301;
+  public int a21302;
+  public int a21303;
+  public int a21304;
+  public int a21305;
+  public int a21306;
+  public int a21307;
+  public int a21308;
+  public int a21309;
+  public int a21310;
+  public int a21311;
+  public int a21312;
+  public int a21313;
+  public int a21314;
+  public int a21315;
+  public int a21316;
+  public int a21317;
+  public int a21318;
+  public int a21319;
+  public int a21320;
+  public int a21321;
+  public int a21322;
+  public int a21323;
+  public int a21324;
+  public int a21325;
+  public int a21326;
+  public int a21327;
+  public int a21328;
+  public int a21329;
+  public int a21330;
+  public int a21331;
+  public int a21332;
+  public int a21333;
+  public int a21334;
+  public int a21335;
+  public int a21336;
+  public int a21337;
+  public int a21338;
+  public int a21339;
+  public int a21340;
+  public int a21341;
+  public int a21342;
+  public int a21343;
+  public int a21344;
+  public int a21345;
+  public int a21346;
+  public int a21347;
+  public int a21348;
+  public int a21349;
+  public int a21350;
+  public int a21351;
+  public int a21352;
+  public int a21353;
+  public int a21354;
+  public int a21355;
+  public int a21356;
+  public int a21357;
+  public int a21358;
+  public int a21359;
+  public int a21360;
+  public int a21361;
+  public int a21362;
+  public int a21363;
+  public int a21364;
+  public int a21365;
+  public int a21366;
+  public int a21367;
+  public int a21368;
+  public int a21369;
+  public int a21370;
+  public int a21371;
+  public int a21372;
+  public int a21373;
+  public int a21374;
+  public int a21375;
+  public int a21376;
+  public int a21377;
+  public int a21378;
+  public int a21379;
+  public int a21380;
+  public int a21381;
+  public int a21382;
+  public int a21383;
+  public int a21384;
+  public int a21385;
+  public int a21386;
+  public int a21387;
+  public int a21388;
+  public int a21389;
+  public int a21390;
+  public int a21391;
+  public int a21392;
+  public int a21393;
+  public int a21394;
+  public int a21395;
+  public int a21396;
+  public int a21397;
+  public int a21398;
+  public int a21399;
+  public int a21400;
+  public int a21401;
+  public int a21402;
+  public int a21403;
+  public int a21404;
+  public int a21405;
+  public int a21406;
+  public int a21407;
+  public int a21408;
+  public int a21409;
+  public int a21410;
+  public int a21411;
+  public int a21412;
+  public int a21413;
+  public int a21414;
+  public int a21415;
+  public int a21416;
+  public int a21417;
+  public int a21418;
+  public int a21419;
+  public int a21420;
+  public int a21421;
+  public int a21422;
+  public int a21423;
+  public int a21424;
+  public int a21425;
+  public int a21426;
+  public int a21427;
+  public int a21428;
+  public int a21429;
+  public int a21430;
+  public int a21431;
+  public int a21432;
+  public int a21433;
+  public int a21434;
+  public int a21435;
+  public int a21436;
+  public int a21437;
+  public int a21438;
+  public int a21439;
+  public int a21440;
+  public int a21441;
+  public int a21442;
+  public int a21443;
+  public int a21444;
+  public int a21445;
+  public int a21446;
+  public int a21447;
+  public int a21448;
+  public int a21449;
+  public int a21450;
+  public int a21451;
+  public int a21452;
+  public int a21453;
+  public int a21454;
+  public int a21455;
+  public int a21456;
+  public int a21457;
+  public int a21458;
+  public int a21459;
+  public int a21460;
+  public int a21461;
+  public int a21462;
+  public int a21463;
+  public int a21464;
+  public int a21465;
+  public int a21466;
+  public int a21467;
+  public int a21468;
+  public int a21469;
+  public int a21470;
+  public int a21471;
+  public int a21472;
+  public int a21473;
+  public int a21474;
+  public int a21475;
+  public int a21476;
+  public int a21477;
+  public int a21478;
+  public int a21479;
+  public int a21480;
+  public int a21481;
+  public int a21482;
+  public int a21483;
+  public int a21484;
+  public int a21485;
+  public int a21486;
+  public int a21487;
+  public int a21488;
+  public int a21489;
+  public int a21490;
+  public int a21491;
+  public int a21492;
+  public int a21493;
+  public int a21494;
+  public int a21495;
+  public int a21496;
+  public int a21497;
+  public int a21498;
+  public int a21499;
+  public int a21500;
+  public int a21501;
+  public int a21502;
+  public int a21503;
+  public int a21504;
+  public int a21505;
+  public int a21506;
+  public int a21507;
+  public int a21508;
+  public int a21509;
+  public int a21510;
+  public int a21511;
+  public int a21512;
+  public int a21513;
+  public int a21514;
+  public int a21515;
+  public int a21516;
+  public int a21517;
+  public int a21518;
+  public int a21519;
+  public int a21520;
+  public int a21521;
+  public int a21522;
+  public int a21523;
+  public int a21524;
+  public int a21525;
+  public int a21526;
+  public int a21527;
+  public int a21528;
+  public int a21529;
+  public int a21530;
+  public int a21531;
+  public int a21532;
+  public int a21533;
+  public int a21534;
+  public int a21535;
+  public int a21536;
+  public int a21537;
+  public int a21538;
+  public int a21539;
+  public int a21540;
+  public int a21541;
+  public int a21542;
+  public int a21543;
+  public int a21544;
+  public int a21545;
+  public int a21546;
+  public int a21547;
+  public int a21548;
+  public int a21549;
+  public int a21550;
+  public int a21551;
+  public int a21552;
+  public int a21553;
+  public int a21554;
+  public int a21555;
+  public int a21556;
+  public int a21557;
+  public int a21558;
+  public int a21559;
+  public int a21560;
+  public int a21561;
+  public int a21562;
+  public int a21563;
+  public int a21564;
+  public int a21565;
+  public int a21566;
+  public int a21567;
+  public int a21568;
+  public int a21569;
+  public int a21570;
+  public int a21571;
+  public int a21572;
+  public int a21573;
+  public int a21574;
+  public int a21575;
+  public int a21576;
+  public int a21577;
+  public int a21578;
+  public int a21579;
+  public int a21580;
+  public int a21581;
+  public int a21582;
+  public int a21583;
+  public int a21584;
+  public int a21585;
+  public int a21586;
+  public int a21587;
+  public int a21588;
+  public int a21589;
+  public int a21590;
+  public int a21591;
+  public int a21592;
+  public int a21593;
+  public int a21594;
+  public int a21595;
+  public int a21596;
+  public int a21597;
+  public int a21598;
+  public int a21599;
+  public int a21600;
+  public int a21601;
+  public int a21602;
+  public int a21603;
+  public int a21604;
+  public int a21605;
+  public int a21606;
+  public int a21607;
+  public int a21608;
+  public int a21609;
+  public int a21610;
+  public int a21611;
+  public int a21612;
+  public int a21613;
+  public int a21614;
+  public int a21615;
+  public int a21616;
+  public int a21617;
+  public int a21618;
+  public int a21619;
+  public int a21620;
+  public int a21621;
+  public int a21622;
+  public int a21623;
+  public int a21624;
+  public int a21625;
+  public int a21626;
+  public int a21627;
+  public int a21628;
+  public int a21629;
+  public int a21630;
+  public int a21631;
+  public int a21632;
+  public int a21633;
+  public int a21634;
+  public int a21635;
+  public int a21636;
+  public int a21637;
+  public int a21638;
+  public int a21639;
+  public int a21640;
+  public int a21641;
+  public int a21642;
+  public int a21643;
+  public int a21644;
+  public int a21645;
+  public int a21646;
+  public int a21647;
+  public int a21648;
+  public int a21649;
+  public int a21650;
+  public int a21651;
+  public int a21652;
+  public int a21653;
+  public int a21654;
+  public int a21655;
+  public int a21656;
+  public int a21657;
+  public int a21658;
+  public int a21659;
+  public int a21660;
+  public int a21661;
+  public int a21662;
+  public int a21663;
+  public int a21664;
+  public int a21665;
+  public int a21666;
+  public int a21667;
+  public int a21668;
+  public int a21669;
+  public int a21670;
+  public int a21671;
+  public int a21672;
+  public int a21673;
+  public int a21674;
+  public int a21675;
+  public int a21676;
+  public int a21677;
+  public int a21678;
+  public int a21679;
+  public int a21680;
+  public int a21681;
+  public int a21682;
+  public int a21683;
+  public int a21684;
+  public int a21685;
+  public int a21686;
+  public int a21687;
+  public int a21688;
+  public int a21689;
+  public int a21690;
+  public int a21691;
+  public int a21692;
+  public int a21693;
+  public int a21694;
+  public int a21695;
+  public int a21696;
+  public int a21697;
+  public int a21698;
+  public int a21699;
+  public int a21700;
+  public int a21701;
+  public int a21702;
+  public int a21703;
+  public int a21704;
+  public int a21705;
+  public int a21706;
+  public int a21707;
+  public int a21708;
+  public int a21709;
+  public int a21710;
+  public int a21711;
+  public int a21712;
+  public int a21713;
+  public int a21714;
+  public int a21715;
+  public int a21716;
+  public int a21717;
+  public int a21718;
+  public int a21719;
+  public int a21720;
+  public int a21721;
+  public int a21722;
+  public int a21723;
+  public int a21724;
+  public int a21725;
+  public int a21726;
+  public int a21727;
+  public int a21728;
+  public int a21729;
+  public int a21730;
+  public int a21731;
+  public int a21732;
+  public int a21733;
+  public int a21734;
+  public int a21735;
+  public int a21736;
+  public int a21737;
+  public int a21738;
+  public int a21739;
+  public int a21740;
+  public int a21741;
+  public int a21742;
+  public int a21743;
+  public int a21744;
+  public int a21745;
+  public int a21746;
+  public int a21747;
+  public int a21748;
+  public int a21749;
+  public int a21750;
+  public int a21751;
+  public int a21752;
+  public int a21753;
+  public int a21754;
+  public int a21755;
+  public int a21756;
+  public int a21757;
+  public int a21758;
+  public int a21759;
+  public int a21760;
+  public int a21761;
+  public int a21762;
+  public int a21763;
+  public int a21764;
+  public int a21765;
+  public int a21766;
+  public int a21767;
+  public int a21768;
+  public int a21769;
+  public int a21770;
+  public int a21771;
+  public int a21772;
+  public int a21773;
+  public int a21774;
+  public int a21775;
+  public int a21776;
+  public int a21777;
+  public int a21778;
+  public int a21779;
+  public int a21780;
+  public int a21781;
+  public int a21782;
+  public int a21783;
+  public int a21784;
+  public int a21785;
+  public int a21786;
+  public int a21787;
+  public int a21788;
+  public int a21789;
+  public int a21790;
+  public int a21791;
+  public int a21792;
+  public int a21793;
+  public int a21794;
+  public int a21795;
+  public int a21796;
+  public int a21797;
+  public int a21798;
+  public int a21799;
+  public int a21800;
+  public int a21801;
+  public int a21802;
+  public int a21803;
+  public int a21804;
+  public int a21805;
+  public int a21806;
+  public int a21807;
+  public int a21808;
+  public int a21809;
+  public int a21810;
+  public int a21811;
+  public int a21812;
+  public int a21813;
+  public int a21814;
+  public int a21815;
+  public int a21816;
+  public int a21817;
+  public int a21818;
+  public int a21819;
+  public int a21820;
+  public int a21821;
+  public int a21822;
+  public int a21823;
+  public int a21824;
+  public int a21825;
+  public int a21826;
+  public int a21827;
+  public int a21828;
+  public int a21829;
+  public int a21830;
+  public int a21831;
+  public int a21832;
+  public int a21833;
+  public int a21834;
+  public int a21835;
+  public int a21836;
+  public int a21837;
+  public int a21838;
+  public int a21839;
+  public int a21840;
+  public int a21841;
+  public int a21842;
+  public int a21843;
+  public int a21844;
+  public int a21845;
+  public int a21846;
+  public int a21847;
+  public int a21848;
+  public int a21849;
+  public int a21850;
+  public int a21851;
+  public int a21852;
+  public int a21853;
+  public int a21854;
+  public int a21855;
+  public int a21856;
+  public int a21857;
+  public int a21858;
+  public int a21859;
+  public int a21860;
+  public int a21861;
+  public int a21862;
+  public int a21863;
+  public int a21864;
+  public int a21865;
+  public int a21866;
+  public int a21867;
+  public int a21868;
+  public int a21869;
+  public int a21870;
+  public int a21871;
+  public int a21872;
+  public int a21873;
+  public int a21874;
+  public int a21875;
+  public int a21876;
+  public int a21877;
+  public int a21878;
+  public int a21879;
+  public int a21880;
+  public int a21881;
+  public int a21882;
+  public int a21883;
+  public int a21884;
+  public int a21885;
+  public int a21886;
+  public int a21887;
+  public int a21888;
+  public int a21889;
+  public int a21890;
+  public int a21891;
+  public int a21892;
+  public int a21893;
+  public int a21894;
+  public int a21895;
+  public int a21896;
+  public int a21897;
+  public int a21898;
+  public int a21899;
+  public int a21900;
+  public int a21901;
+  public int a21902;
+  public int a21903;
+  public int a21904;
+  public int a21905;
+  public int a21906;
+  public int a21907;
+  public int a21908;
+  public int a21909;
+  public int a21910;
+  public int a21911;
+  public int a21912;
+  public int a21913;
+  public int a21914;
+  public int a21915;
+  public int a21916;
+  public int a21917;
+  public int a21918;
+  public int a21919;
+  public int a21920;
+  public int a21921;
+  public int a21922;
+  public int a21923;
+  public int a21924;
+  public int a21925;
+  public int a21926;
+  public int a21927;
+  public int a21928;
+  public int a21929;
+  public int a21930;
+  public int a21931;
+  public int a21932;
+  public int a21933;
+  public int a21934;
+  public int a21935;
+  public int a21936;
+  public int a21937;
+  public int a21938;
+  public int a21939;
+  public int a21940;
+  public int a21941;
+  public int a21942;
+  public int a21943;
+  public int a21944;
+  public int a21945;
+  public int a21946;
+  public int a21947;
+  public int a21948;
+  public int a21949;
+  public int a21950;
+  public int a21951;
+  public int a21952;
+  public int a21953;
+  public int a21954;
+  public int a21955;
+  public int a21956;
+  public int a21957;
+  public int a21958;
+  public int a21959;
+  public int a21960;
+  public int a21961;
+  public int a21962;
+  public int a21963;
+  public int a21964;
+  public int a21965;
+  public int a21966;
+  public int a21967;
+  public int a21968;
+  public int a21969;
+  public int a21970;
+  public int a21971;
+  public int a21972;
+  public int a21973;
+  public int a21974;
+  public int a21975;
+  public int a21976;
+  public int a21977;
+  public int a21978;
+  public int a21979;
+  public int a21980;
+  public int a21981;
+  public int a21982;
+  public int a21983;
+  public int a21984;
+  public int a21985;
+  public int a21986;
+  public int a21987;
+  public int a21988;
+  public int a21989;
+  public int a21990;
+  public int a21991;
+  public int a21992;
+  public int a21993;
+  public int a21994;
+  public int a21995;
+  public int a21996;
+  public int a21997;
+  public int a21998;
+  public int a21999;
+  public int a22000;
+  public int a22001;
+  public int a22002;
+  public int a22003;
+  public int a22004;
+  public int a22005;
+  public int a22006;
+  public int a22007;
+  public int a22008;
+  public int a22009;
+  public int a22010;
+  public int a22011;
+  public int a22012;
+  public int a22013;
+  public int a22014;
+  public int a22015;
+  public int a22016;
+  public int a22017;
+  public int a22018;
+  public int a22019;
+  public int a22020;
+  public int a22021;
+  public int a22022;
+  public int a22023;
+  public int a22024;
+  public int a22025;
+  public int a22026;
+  public int a22027;
+  public int a22028;
+  public int a22029;
+  public int a22030;
+  public int a22031;
+  public int a22032;
+  public int a22033;
+  public int a22034;
+  public int a22035;
+  public int a22036;
+  public int a22037;
+  public int a22038;
+  public int a22039;
+  public int a22040;
+  public int a22041;
+  public int a22042;
+  public int a22043;
+  public int a22044;
+  public int a22045;
+  public int a22046;
+  public int a22047;
+  public int a22048;
+  public int a22049;
+  public int a22050;
+  public int a22051;
+  public int a22052;
+  public int a22053;
+  public int a22054;
+  public int a22055;
+  public int a22056;
+  public int a22057;
+  public int a22058;
+  public int a22059;
+  public int a22060;
+  public int a22061;
+  public int a22062;
+  public int a22063;
+  public int a22064;
+  public int a22065;
+  public int a22066;
+  public int a22067;
+  public int a22068;
+  public int a22069;
+  public int a22070;
+  public int a22071;
+  public int a22072;
+  public int a22073;
+  public int a22074;
+  public int a22075;
+  public int a22076;
+  public int a22077;
+  public int a22078;
+  public int a22079;
+  public int a22080;
+  public int a22081;
+  public int a22082;
+  public int a22083;
+  public int a22084;
+  public int a22085;
+  public int a22086;
+  public int a22087;
+  public int a22088;
+  public int a22089;
+  public int a22090;
+  public int a22091;
+  public int a22092;
+  public int a22093;
+  public int a22094;
+  public int a22095;
+  public int a22096;
+  public int a22097;
+  public int a22098;
+  public int a22099;
+  public int a22100;
+  public int a22101;
+  public int a22102;
+  public int a22103;
+  public int a22104;
+  public int a22105;
+  public int a22106;
+  public int a22107;
+  public int a22108;
+  public int a22109;
+  public int a22110;
+  public int a22111;
+  public int a22112;
+  public int a22113;
+  public int a22114;
+  public int a22115;
+  public int a22116;
+  public int a22117;
+  public int a22118;
+  public int a22119;
+  public int a22120;
+  public int a22121;
+  public int a22122;
+  public int a22123;
+  public int a22124;
+  public int a22125;
+  public int a22126;
+  public int a22127;
+  public int a22128;
+  public int a22129;
+  public int a22130;
+  public int a22131;
+  public int a22132;
+  public int a22133;
+  public int a22134;
+  public int a22135;
+  public int a22136;
+  public int a22137;
+  public int a22138;
+  public int a22139;
+  public int a22140;
+  public int a22141;
+  public int a22142;
+  public int a22143;
+  public int a22144;
+  public int a22145;
+  public int a22146;
+  public int a22147;
+  public int a22148;
+  public int a22149;
+  public int a22150;
+  public int a22151;
+  public int a22152;
+  public int a22153;
+  public int a22154;
+  public int a22155;
+  public int a22156;
+  public int a22157;
+  public int a22158;
+  public int a22159;
+  public int a22160;
+  public int a22161;
+  public int a22162;
+  public int a22163;
+  public int a22164;
+  public int a22165;
+  public int a22166;
+  public int a22167;
+  public int a22168;
+  public int a22169;
+  public int a22170;
+  public int a22171;
+  public int a22172;
+  public int a22173;
+  public int a22174;
+  public int a22175;
+  public int a22176;
+  public int a22177;
+  public int a22178;
+  public int a22179;
+  public int a22180;
+  public int a22181;
+  public int a22182;
+  public int a22183;
+  public int a22184;
+  public int a22185;
+  public int a22186;
+  public int a22187;
+  public int a22188;
+  public int a22189;
+  public int a22190;
+  public int a22191;
+  public int a22192;
+  public int a22193;
+  public int a22194;
+  public int a22195;
+  public int a22196;
+  public int a22197;
+  public int a22198;
+  public int a22199;
+  public int a22200;
+  public int a22201;
+  public int a22202;
+  public int a22203;
+  public int a22204;
+  public int a22205;
+  public int a22206;
+  public int a22207;
+  public int a22208;
+  public int a22209;
+  public int a22210;
+  public int a22211;
+  public int a22212;
+  public int a22213;
+  public int a22214;
+  public int a22215;
+  public int a22216;
+  public int a22217;
+  public int a22218;
+  public int a22219;
+  public int a22220;
+  public int a22221;
+  public int a22222;
+  public int a22223;
+  public int a22224;
+  public int a22225;
+  public int a22226;
+  public int a22227;
+  public int a22228;
+  public int a22229;
+  public int a22230;
+  public int a22231;
+  public int a22232;
+  public int a22233;
+  public int a22234;
+  public int a22235;
+  public int a22236;
+  public int a22237;
+  public int a22238;
+  public int a22239;
+  public int a22240;
+  public int a22241;
+  public int a22242;
+  public int a22243;
+  public int a22244;
+  public int a22245;
+  public int a22246;
+  public int a22247;
+  public int a22248;
+  public int a22249;
+  public int a22250;
+  public int a22251;
+  public int a22252;
+  public int a22253;
+  public int a22254;
+  public int a22255;
+  public int a22256;
+  public int a22257;
+  public int a22258;
+  public int a22259;
+  public int a22260;
+  public int a22261;
+  public int a22262;
+  public int a22263;
+  public int a22264;
+  public int a22265;
+  public int a22266;
+  public int a22267;
+  public int a22268;
+  public int a22269;
+  public int a22270;
+  public int a22271;
+  public int a22272;
+  public int a22273;
+  public int a22274;
+  public int a22275;
+  public int a22276;
+  public int a22277;
+  public int a22278;
+  public int a22279;
+  public int a22280;
+  public int a22281;
+  public int a22282;
+  public int a22283;
+  public int a22284;
+  public int a22285;
+  public int a22286;
+  public int a22287;
+  public int a22288;
+  public int a22289;
+  public int a22290;
+  public int a22291;
+  public int a22292;
+  public int a22293;
+  public int a22294;
+  public int a22295;
+  public int a22296;
+  public int a22297;
+  public int a22298;
+  public int a22299;
+  public int a22300;
+  public int a22301;
+  public int a22302;
+  public int a22303;
+  public int a22304;
+  public int a22305;
+  public int a22306;
+  public int a22307;
+  public int a22308;
+  public int a22309;
+  public int a22310;
+  public int a22311;
+  public int a22312;
+  public int a22313;
+  public int a22314;
+  public int a22315;
+  public int a22316;
+  public int a22317;
+  public int a22318;
+  public int a22319;
+  public int a22320;
+  public int a22321;
+  public int a22322;
+  public int a22323;
+  public int a22324;
+  public int a22325;
+  public int a22326;
+  public int a22327;
+  public int a22328;
+  public int a22329;
+  public int a22330;
+  public int a22331;
+  public int a22332;
+  public int a22333;
+  public int a22334;
+  public int a22335;
+  public int a22336;
+  public int a22337;
+  public int a22338;
+  public int a22339;
+  public int a22340;
+  public int a22341;
+  public int a22342;
+  public int a22343;
+  public int a22344;
+  public int a22345;
+  public int a22346;
+  public int a22347;
+  public int a22348;
+  public int a22349;
+  public int a22350;
+  public int a22351;
+  public int a22352;
+  public int a22353;
+  public int a22354;
+  public int a22355;
+  public int a22356;
+  public int a22357;
+  public int a22358;
+  public int a22359;
+  public int a22360;
+  public int a22361;
+  public int a22362;
+  public int a22363;
+  public int a22364;
+  public int a22365;
+  public int a22366;
+  public int a22367;
+  public int a22368;
+  public int a22369;
+  public int a22370;
+  public int a22371;
+  public int a22372;
+  public int a22373;
+  public int a22374;
+  public int a22375;
+  public int a22376;
+  public int a22377;
+  public int a22378;
+  public int a22379;
+  public int a22380;
+  public int a22381;
+  public int a22382;
+  public int a22383;
+  public int a22384;
+  public int a22385;
+  public int a22386;
+  public int a22387;
+  public int a22388;
+  public int a22389;
+  public int a22390;
+  public int a22391;
+  public int a22392;
+  public int a22393;
+  public int a22394;
+  public int a22395;
+  public int a22396;
+  public int a22397;
+  public int a22398;
+  public int a22399;
+  public int a22400;
+  public int a22401;
+  public int a22402;
+  public int a22403;
+  public int a22404;
+  public int a22405;
+  public int a22406;
+  public int a22407;
+  public int a22408;
+  public int a22409;
+  public int a22410;
+  public int a22411;
+  public int a22412;
+  public int a22413;
+  public int a22414;
+  public int a22415;
+  public int a22416;
+  public int a22417;
+  public int a22418;
+  public int a22419;
+  public int a22420;
+  public int a22421;
+  public int a22422;
+  public int a22423;
+  public int a22424;
+  public int a22425;
+  public int a22426;
+  public int a22427;
+  public int a22428;
+  public int a22429;
+  public int a22430;
+  public int a22431;
+  public int a22432;
+  public int a22433;
+  public int a22434;
+  public int a22435;
+  public int a22436;
+  public int a22437;
+  public int a22438;
+  public int a22439;
+  public int a22440;
+  public int a22441;
+  public int a22442;
+  public int a22443;
+  public int a22444;
+  public int a22445;
+  public int a22446;
+  public int a22447;
+  public int a22448;
+  public int a22449;
+  public int a22450;
+  public int a22451;
+  public int a22452;
+  public int a22453;
+  public int a22454;
+  public int a22455;
+  public int a22456;
+  public int a22457;
+  public int a22458;
+  public int a22459;
+  public int a22460;
+  public int a22461;
+  public int a22462;
+  public int a22463;
+  public int a22464;
+  public int a22465;
+  public int a22466;
+  public int a22467;
+  public int a22468;
+  public int a22469;
+  public int a22470;
+  public int a22471;
+  public int a22472;
+  public int a22473;
+  public int a22474;
+  public int a22475;
+  public int a22476;
+  public int a22477;
+  public int a22478;
+  public int a22479;
+  public int a22480;
+  public int a22481;
+  public int a22482;
+  public int a22483;
+  public int a22484;
+  public int a22485;
+  public int a22486;
+  public int a22487;
+  public int a22488;
+  public int a22489;
+  public int a22490;
+  public int a22491;
+  public int a22492;
+  public int a22493;
+  public int a22494;
+  public int a22495;
+  public int a22496;
+  public int a22497;
+  public int a22498;
+  public int a22499;
+  public int a22500;
+  public int a22501;
+  public int a22502;
+  public int a22503;
+  public int a22504;
+  public int a22505;
+  public int a22506;
+  public int a22507;
+  public int a22508;
+  public int a22509;
+  public int a22510;
+  public int a22511;
+  public int a22512;
+  public int a22513;
+  public int a22514;
+  public int a22515;
+  public int a22516;
+  public int a22517;
+  public int a22518;
+  public int a22519;
+  public int a22520;
+  public int a22521;
+  public int a22522;
+  public int a22523;
+  public int a22524;
+  public int a22525;
+  public int a22526;
+  public int a22527;
+  public int a22528;
+  public int a22529;
+  public int a22530;
+  public int a22531;
+  public int a22532;
+  public int a22533;
+  public int a22534;
+  public int a22535;
+  public int a22536;
+  public int a22537;
+  public int a22538;
+  public int a22539;
+  public int a22540;
+  public int a22541;
+  public int a22542;
+  public int a22543;
+  public int a22544;
+  public int a22545;
+  public int a22546;
+  public int a22547;
+  public int a22548;
+  public int a22549;
+  public int a22550;
+  public int a22551;
+  public int a22552;
+  public int a22553;
+  public int a22554;
+  public int a22555;
+  public int a22556;
+  public int a22557;
+  public int a22558;
+  public int a22559;
+  public int a22560;
+  public int a22561;
+  public int a22562;
+  public int a22563;
+  public int a22564;
+  public int a22565;
+  public int a22566;
+  public int a22567;
+  public int a22568;
+  public int a22569;
+  public int a22570;
+  public int a22571;
+  public int a22572;
+  public int a22573;
+  public int a22574;
+  public int a22575;
+  public int a22576;
+  public int a22577;
+  public int a22578;
+  public int a22579;
+  public int a22580;
+  public int a22581;
+  public int a22582;
+  public int a22583;
+  public int a22584;
+  public int a22585;
+  public int a22586;
+  public int a22587;
+  public int a22588;
+  public int a22589;
+  public int a22590;
+  public int a22591;
+  public int a22592;
+  public int a22593;
+  public int a22594;
+  public int a22595;
+  public int a22596;
+  public int a22597;
+  public int a22598;
+  public int a22599;
+  public int a22600;
+  public int a22601;
+  public int a22602;
+  public int a22603;
+  public int a22604;
+  public int a22605;
+  public int a22606;
+  public int a22607;
+  public int a22608;
+  public int a22609;
+  public int a22610;
+  public int a22611;
+  public int a22612;
+  public int a22613;
+  public int a22614;
+  public int a22615;
+  public int a22616;
+  public int a22617;
+  public int a22618;
+  public int a22619;
+  public int a22620;
+  public int a22621;
+  public int a22622;
+  public int a22623;
+  public int a22624;
+  public int a22625;
+  public int a22626;
+  public int a22627;
+  public int a22628;
+  public int a22629;
+  public int a22630;
+  public int a22631;
+  public int a22632;
+  public int a22633;
+  public int a22634;
+  public int a22635;
+  public int a22636;
+  public int a22637;
+  public int a22638;
+  public int a22639;
+  public int a22640;
+  public int a22641;
+  public int a22642;
+  public int a22643;
+  public int a22644;
+  public int a22645;
+  public int a22646;
+  public int a22647;
+  public int a22648;
+  public int a22649;
+  public int a22650;
+  public int a22651;
+  public int a22652;
+  public int a22653;
+  public int a22654;
+  public int a22655;
+  public int a22656;
+  public int a22657;
+  public int a22658;
+  public int a22659;
+  public int a22660;
+  public int a22661;
+  public int a22662;
+  public int a22663;
+  public int a22664;
+  public int a22665;
+  public int a22666;
+  public int a22667;
+  public int a22668;
+  public int a22669;
+  public int a22670;
+  public int a22671;
+  public int a22672;
+  public int a22673;
+  public int a22674;
+  public int a22675;
+  public int a22676;
+  public int a22677;
+  public int a22678;
+  public int a22679;
+  public int a22680;
+  public int a22681;
+  public int a22682;
+  public int a22683;
+  public int a22684;
+  public int a22685;
+  public int a22686;
+  public int a22687;
+  public int a22688;
+  public int a22689;
+  public int a22690;
+  public int a22691;
+  public int a22692;
+  public int a22693;
+  public int a22694;
+  public int a22695;
+  public int a22696;
+  public int a22697;
+  public int a22698;
+  public int a22699;
+  public int a22700;
+  public int a22701;
+  public int a22702;
+  public int a22703;
+  public int a22704;
+  public int a22705;
+  public int a22706;
+  public int a22707;
+  public int a22708;
+  public int a22709;
+  public int a22710;
+  public int a22711;
+  public int a22712;
+  public int a22713;
+  public int a22714;
+  public int a22715;
+  public int a22716;
+  public int a22717;
+  public int a22718;
+  public int a22719;
+  public int a22720;
+  public int a22721;
+  public int a22722;
+  public int a22723;
+  public int a22724;
+  public int a22725;
+  public int a22726;
+  public int a22727;
+  public int a22728;
+  public int a22729;
+  public int a22730;
+  public int a22731;
+  public int a22732;
+  public int a22733;
+  public int a22734;
+  public int a22735;
+  public int a22736;
+  public int a22737;
+  public int a22738;
+  public int a22739;
+  public int a22740;
+  public int a22741;
+  public int a22742;
+  public int a22743;
+  public int a22744;
+  public int a22745;
+  public int a22746;
+  public int a22747;
+  public int a22748;
+  public int a22749;
+  public int a22750;
+  public int a22751;
+  public int a22752;
+  public int a22753;
+  public int a22754;
+  public int a22755;
+  public int a22756;
+  public int a22757;
+  public int a22758;
+  public int a22759;
+  public int a22760;
+  public int a22761;
+  public int a22762;
+  public int a22763;
+  public int a22764;
+  public int a22765;
+  public int a22766;
+  public int a22767;
+  public int a22768;
+  public int a22769;
+  public int a22770;
+  public int a22771;
+  public int a22772;
+  public int a22773;
+  public int a22774;
+  public int a22775;
+  public int a22776;
+  public int a22777;
+  public int a22778;
+  public int a22779;
+  public int a22780;
+  public int a22781;
+  public int a22782;
+  public int a22783;
+  public int a22784;
+  public int a22785;
+  public int a22786;
+  public int a22787;
+  public int a22788;
+  public int a22789;
+  public int a22790;
+  public int a22791;
+  public int a22792;
+  public int a22793;
+  public int a22794;
+  public int a22795;
+  public int a22796;
+  public int a22797;
+  public int a22798;
+  public int a22799;
+  public int a22800;
+  public int a22801;
+  public int a22802;
+  public int a22803;
+  public int a22804;
+  public int a22805;
+  public int a22806;
+  public int a22807;
+  public int a22808;
+  public int a22809;
+  public int a22810;
+  public int a22811;
+  public int a22812;
+  public int a22813;
+  public int a22814;
+  public int a22815;
+  public int a22816;
+  public int a22817;
+  public int a22818;
+  public int a22819;
+  public int a22820;
+  public int a22821;
+  public int a22822;
+  public int a22823;
+  public int a22824;
+  public int a22825;
+  public int a22826;
+  public int a22827;
+  public int a22828;
+  public int a22829;
+  public int a22830;
+  public int a22831;
+  public int a22832;
+  public int a22833;
+  public int a22834;
+  public int a22835;
+  public int a22836;
+  public int a22837;
+  public int a22838;
+  public int a22839;
+  public int a22840;
+  public int a22841;
+  public int a22842;
+  public int a22843;
+  public int a22844;
+  public int a22845;
+  public int a22846;
+  public int a22847;
+  public int a22848;
+  public int a22849;
+  public int a22850;
+  public int a22851;
+  public int a22852;
+  public int a22853;
+  public int a22854;
+  public int a22855;
+  public int a22856;
+  public int a22857;
+  public int a22858;
+  public int a22859;
+  public int a22860;
+  public int a22861;
+  public int a22862;
+  public int a22863;
+  public int a22864;
+  public int a22865;
+  public int a22866;
+  public int a22867;
+  public int a22868;
+  public int a22869;
+  public int a22870;
+  public int a22871;
+  public int a22872;
+  public int a22873;
+  public int a22874;
+  public int a22875;
+  public int a22876;
+  public int a22877;
+  public int a22878;
+  public int a22879;
+  public int a22880;
+  public int a22881;
+  public int a22882;
+  public int a22883;
+  public int a22884;
+  public int a22885;
+  public int a22886;
+  public int a22887;
+  public int a22888;
+  public int a22889;
+  public int a22890;
+  public int a22891;
+  public int a22892;
+  public int a22893;
+  public int a22894;
+  public int a22895;
+  public int a22896;
+  public int a22897;
+  public int a22898;
+  public int a22899;
+  public int a22900;
+  public int a22901;
+  public int a22902;
+  public int a22903;
+  public int a22904;
+  public int a22905;
+  public int a22906;
+  public int a22907;
+  public int a22908;
+  public int a22909;
+  public int a22910;
+  public int a22911;
+  public int a22912;
+  public int a22913;
+  public int a22914;
+  public int a22915;
+  public int a22916;
+  public int a22917;
+  public int a22918;
+  public int a22919;
+  public int a22920;
+  public int a22921;
+  public int a22922;
+  public int a22923;
+  public int a22924;
+  public int a22925;
+  public int a22926;
+  public int a22927;
+  public int a22928;
+  public int a22929;
+  public int a22930;
+  public int a22931;
+  public int a22932;
+  public int a22933;
+  public int a22934;
+  public int a22935;
+  public int a22936;
+  public int a22937;
+  public int a22938;
+  public int a22939;
+  public int a22940;
+  public int a22941;
+  public int a22942;
+  public int a22943;
+  public int a22944;
+  public int a22945;
+  public int a22946;
+  public int a22947;
+  public int a22948;
+  public int a22949;
+  public int a22950;
+  public int a22951;
+  public int a22952;
+  public int a22953;
+  public int a22954;
+  public int a22955;
+  public int a22956;
+  public int a22957;
+  public int a22958;
+  public int a22959;
+  public int a22960;
+  public int a22961;
+  public int a22962;
+  public int a22963;
+  public int a22964;
+  public int a22965;
+  public int a22966;
+  public int a22967;
+  public int a22968;
+  public int a22969;
+  public int a22970;
+  public int a22971;
+  public int a22972;
+  public int a22973;
+  public int a22974;
+  public int a22975;
+  public int a22976;
+  public int a22977;
+  public int a22978;
+  public int a22979;
+  public int a22980;
+  public int a22981;
+  public int a22982;
+  public int a22983;
+  public int a22984;
+  public int a22985;
+  public int a22986;
+  public int a22987;
+  public int a22988;
+  public int a22989;
+  public int a22990;
+  public int a22991;
+  public int a22992;
+  public int a22993;
+  public int a22994;
+  public int a22995;
+  public int a22996;
+  public int a22997;
+  public int a22998;
+  public int a22999;
+  public int a23000;
+  public int a23001;
+  public int a23002;
+  public int a23003;
+  public int a23004;
+  public int a23005;
+  public int a23006;
+  public int a23007;
+  public int a23008;
+  public int a23009;
+  public int a23010;
+  public int a23011;
+  public int a23012;
+  public int a23013;
+  public int a23014;
+  public int a23015;
+  public int a23016;
+  public int a23017;
+  public int a23018;
+  public int a23019;
+  public int a23020;
+  public int a23021;
+  public int a23022;
+  public int a23023;
+  public int a23024;
+  public int a23025;
+  public int a23026;
+  public int a23027;
+  public int a23028;
+  public int a23029;
+  public int a23030;
+  public int a23031;
+  public int a23032;
+  public int a23033;
+  public int a23034;
+  public int a23035;
+  public int a23036;
+  public int a23037;
+  public int a23038;
+  public int a23039;
+  public int a23040;
+  public int a23041;
+  public int a23042;
+  public int a23043;
+  public int a23044;
+  public int a23045;
+  public int a23046;
+  public int a23047;
+  public int a23048;
+  public int a23049;
+  public int a23050;
+  public int a23051;
+  public int a23052;
+  public int a23053;
+  public int a23054;
+  public int a23055;
+  public int a23056;
+  public int a23057;
+  public int a23058;
+  public int a23059;
+  public int a23060;
+  public int a23061;
+  public int a23062;
+  public int a23063;
+  public int a23064;
+  public int a23065;
+  public int a23066;
+  public int a23067;
+  public int a23068;
+  public int a23069;
+  public int a23070;
+  public int a23071;
+  public int a23072;
+  public int a23073;
+  public int a23074;
+  public int a23075;
+  public int a23076;
+  public int a23077;
+  public int a23078;
+  public int a23079;
+  public int a23080;
+  public int a23081;
+  public int a23082;
+  public int a23083;
+  public int a23084;
+  public int a23085;
+  public int a23086;
+  public int a23087;
+  public int a23088;
+  public int a23089;
+  public int a23090;
+  public int a23091;
+  public int a23092;
+  public int a23093;
+  public int a23094;
+  public int a23095;
+  public int a23096;
+  public int a23097;
+  public int a23098;
+  public int a23099;
+  public int a23100;
+  public int a23101;
+  public int a23102;
+  public int a23103;
+  public int a23104;
+  public int a23105;
+  public int a23106;
+  public int a23107;
+  public int a23108;
+  public int a23109;
+  public int a23110;
+  public int a23111;
+  public int a23112;
+  public int a23113;
+  public int a23114;
+  public int a23115;
+  public int a23116;
+  public int a23117;
+  public int a23118;
+  public int a23119;
+  public int a23120;
+  public int a23121;
+  public int a23122;
+  public int a23123;
+  public int a23124;
+  public int a23125;
+  public int a23126;
+  public int a23127;
+  public int a23128;
+  public int a23129;
+  public int a23130;
+  public int a23131;
+  public int a23132;
+  public int a23133;
+  public int a23134;
+  public int a23135;
+  public int a23136;
+  public int a23137;
+  public int a23138;
+  public int a23139;
+  public int a23140;
+  public int a23141;
+  public int a23142;
+  public int a23143;
+  public int a23144;
+  public int a23145;
+  public int a23146;
+  public int a23147;
+  public int a23148;
+  public int a23149;
+  public int a23150;
+  public int a23151;
+  public int a23152;
+  public int a23153;
+  public int a23154;
+  public int a23155;
+  public int a23156;
+  public int a23157;
+  public int a23158;
+  public int a23159;
+  public int a23160;
+  public int a23161;
+  public int a23162;
+  public int a23163;
+  public int a23164;
+  public int a23165;
+  public int a23166;
+  public int a23167;
+  public int a23168;
+  public int a23169;
+  public int a23170;
+  public int a23171;
+  public int a23172;
+  public int a23173;
+  public int a23174;
+  public int a23175;
+  public int a23176;
+  public int a23177;
+  public int a23178;
+  public int a23179;
+  public int a23180;
+  public int a23181;
+  public int a23182;
+  public int a23183;
+  public int a23184;
+  public int a23185;
+  public int a23186;
+  public int a23187;
+  public int a23188;
+  public int a23189;
+  public int a23190;
+  public int a23191;
+  public int a23192;
+  public int a23193;
+  public int a23194;
+  public int a23195;
+  public int a23196;
+  public int a23197;
+  public int a23198;
+  public int a23199;
+  public int a23200;
+  public int a23201;
+  public int a23202;
+  public int a23203;
+  public int a23204;
+  public int a23205;
+  public int a23206;
+  public int a23207;
+  public int a23208;
+  public int a23209;
+  public int a23210;
+  public int a23211;
+  public int a23212;
+  public int a23213;
+  public int a23214;
+  public int a23215;
+  public int a23216;
+  public int a23217;
+  public int a23218;
+  public int a23219;
+  public int a23220;
+  public int a23221;
+  public int a23222;
+  public int a23223;
+  public int a23224;
+  public int a23225;
+  public int a23226;
+  public int a23227;
+  public int a23228;
+  public int a23229;
+  public int a23230;
+  public int a23231;
+  public int a23232;
+  public int a23233;
+  public int a23234;
+  public int a23235;
+  public int a23236;
+  public int a23237;
+  public int a23238;
+  public int a23239;
+  public int a23240;
+  public int a23241;
+  public int a23242;
+  public int a23243;
+  public int a23244;
+  public int a23245;
+  public int a23246;
+  public int a23247;
+  public int a23248;
+  public int a23249;
+  public int a23250;
+  public int a23251;
+  public int a23252;
+  public int a23253;
+  public int a23254;
+  public int a23255;
+  public int a23256;
+  public int a23257;
+  public int a23258;
+  public int a23259;
+  public int a23260;
+  public int a23261;
+  public int a23262;
+  public int a23263;
+  public int a23264;
+  public int a23265;
+  public int a23266;
+  public int a23267;
+  public int a23268;
+  public int a23269;
+  public int a23270;
+  public int a23271;
+  public int a23272;
+  public int a23273;
+  public int a23274;
+  public int a23275;
+  public int a23276;
+  public int a23277;
+  public int a23278;
+  public int a23279;
+  public int a23280;
+  public int a23281;
+  public int a23282;
+  public int a23283;
+  public int a23284;
+  public int a23285;
+  public int a23286;
+  public int a23287;
+  public int a23288;
+  public int a23289;
+  public int a23290;
+  public int a23291;
+  public int a23292;
+  public int a23293;
+  public int a23294;
+  public int a23295;
+  public int a23296;
+  public int a23297;
+  public int a23298;
+  public int a23299;
+  public int a23300;
+  public int a23301;
+  public int a23302;
+  public int a23303;
+  public int a23304;
+  public int a23305;
+  public int a23306;
+  public int a23307;
+  public int a23308;
+  public int a23309;
+  public int a23310;
+  public int a23311;
+  public int a23312;
+  public int a23313;
+  public int a23314;
+  public int a23315;
+  public int a23316;
+  public int a23317;
+  public int a23318;
+  public int a23319;
+  public int a23320;
+  public int a23321;
+  public int a23322;
+  public int a23323;
+  public int a23324;
+  public int a23325;
+  public int a23326;
+  public int a23327;
+  public int a23328;
+  public int a23329;
+  public int a23330;
+  public int a23331;
+  public int a23332;
+  public int a23333;
+  public int a23334;
+  public int a23335;
+  public int a23336;
+  public int a23337;
+  public int a23338;
+  public int a23339;
+  public int a23340;
+  public int a23341;
+  public int a23342;
+  public int a23343;
+  public int a23344;
+  public int a23345;
+  public int a23346;
+  public int a23347;
+  public int a23348;
+  public int a23349;
+  public int a23350;
+  public int a23351;
+  public int a23352;
+  public int a23353;
+  public int a23354;
+  public int a23355;
+  public int a23356;
+  public int a23357;
+  public int a23358;
+  public int a23359;
+  public int a23360;
+  public int a23361;
+  public int a23362;
+  public int a23363;
+  public int a23364;
+  public int a23365;
+  public int a23366;
+  public int a23367;
+  public int a23368;
+  public int a23369;
+  public int a23370;
+  public int a23371;
+  public int a23372;
+  public int a23373;
+  public int a23374;
+  public int a23375;
+  public int a23376;
+  public int a23377;
+  public int a23378;
+  public int a23379;
+  public int a23380;
+  public int a23381;
+  public int a23382;
+  public int a23383;
+  public int a23384;
+  public int a23385;
+  public int a23386;
+  public int a23387;
+  public int a23388;
+  public int a23389;
+  public int a23390;
+  public int a23391;
+  public int a23392;
+  public int a23393;
+  public int a23394;
+  public int a23395;
+  public int a23396;
+  public int a23397;
+  public int a23398;
+  public int a23399;
+  public int a23400;
+  public int a23401;
+  public int a23402;
+  public int a23403;
+  public int a23404;
+  public int a23405;
+  public int a23406;
+  public int a23407;
+  public int a23408;
+  public int a23409;
+  public int a23410;
+  public int a23411;
+  public int a23412;
+  public int a23413;
+  public int a23414;
+  public int a23415;
+  public int a23416;
+  public int a23417;
+  public int a23418;
+  public int a23419;
+  public int a23420;
+  public int a23421;
+  public int a23422;
+  public int a23423;
+  public int a23424;
+  public int a23425;
+  public int a23426;
+  public int a23427;
+  public int a23428;
+  public int a23429;
+  public int a23430;
+  public int a23431;
+  public int a23432;
+  public int a23433;
+  public int a23434;
+  public int a23435;
+  public int a23436;
+  public int a23437;
+  public int a23438;
+  public int a23439;
+  public int a23440;
+  public int a23441;
+  public int a23442;
+  public int a23443;
+  public int a23444;
+  public int a23445;
+  public int a23446;
+  public int a23447;
+  public int a23448;
+  public int a23449;
+  public int a23450;
+  public int a23451;
+  public int a23452;
+  public int a23453;
+  public int a23454;
+  public int a23455;
+  public int a23456;
+  public int a23457;
+  public int a23458;
+  public int a23459;
+  public int a23460;
+  public int a23461;
+  public int a23462;
+  public int a23463;
+  public int a23464;
+  public int a23465;
+  public int a23466;
+  public int a23467;
+  public int a23468;
+  public int a23469;
+  public int a23470;
+  public int a23471;
+  public int a23472;
+  public int a23473;
+  public int a23474;
+  public int a23475;
+  public int a23476;
+  public int a23477;
+  public int a23478;
+  public int a23479;
+  public int a23480;
+  public int a23481;
+  public int a23482;
+  public int a23483;
+  public int a23484;
+  public int a23485;
+  public int a23486;
+  public int a23487;
+  public int a23488;
+  public int a23489;
+  public int a23490;
+  public int a23491;
+  public int a23492;
+  public int a23493;
+  public int a23494;
+  public int a23495;
+  public int a23496;
+  public int a23497;
+  public int a23498;
+  public int a23499;
+  public int a23500;
+  public int a23501;
+  public int a23502;
+  public int a23503;
+  public int a23504;
+  public int a23505;
+  public int a23506;
+  public int a23507;
+  public int a23508;
+  public int a23509;
+  public int a23510;
+  public int a23511;
+  public int a23512;
+  public int a23513;
+  public int a23514;
+  public int a23515;
+  public int a23516;
+  public int a23517;
+  public int a23518;
+  public int a23519;
+  public int a23520;
+  public int a23521;
+  public int a23522;
+  public int a23523;
+  public int a23524;
+  public int a23525;
+  public int a23526;
+  public int a23527;
+  public int a23528;
+  public int a23529;
+  public int a23530;
+  public int a23531;
+  public int a23532;
+  public int a23533;
+  public int a23534;
+  public int a23535;
+  public int a23536;
+  public int a23537;
+  public int a23538;
+  public int a23539;
+  public int a23540;
+  public int a23541;
+  public int a23542;
+  public int a23543;
+  public int a23544;
+  public int a23545;
+  public int a23546;
+  public int a23547;
+  public int a23548;
+  public int a23549;
+  public int a23550;
+  public int a23551;
+  public int a23552;
+  public int a23553;
+  public int a23554;
+  public int a23555;
+  public int a23556;
+  public int a23557;
+  public int a23558;
+  public int a23559;
+  public int a23560;
+  public int a23561;
+  public int a23562;
+  public int a23563;
+  public int a23564;
+  public int a23565;
+  public int a23566;
+  public int a23567;
+  public int a23568;
+  public int a23569;
+  public int a23570;
+  public int a23571;
+  public int a23572;
+  public int a23573;
+  public int a23574;
+  public int a23575;
+  public int a23576;
+  public int a23577;
+  public int a23578;
+  public int a23579;
+  public int a23580;
+  public int a23581;
+  public int a23582;
+  public int a23583;
+  public int a23584;
+  public int a23585;
+  public int a23586;
+  public int a23587;
+  public int a23588;
+  public int a23589;
+  public int a23590;
+  public int a23591;
+  public int a23592;
+  public int a23593;
+  public int a23594;
+  public int a23595;
+  public int a23596;
+  public int a23597;
+  public int a23598;
+  public int a23599;
+  public int a23600;
+  public int a23601;
+  public int a23602;
+  public int a23603;
+  public int a23604;
+  public int a23605;
+  public int a23606;
+  public int a23607;
+  public int a23608;
+  public int a23609;
+  public int a23610;
+  public int a23611;
+  public int a23612;
+  public int a23613;
+  public int a23614;
+  public int a23615;
+  public int a23616;
+  public int a23617;
+  public int a23618;
+  public int a23619;
+  public int a23620;
+  public int a23621;
+  public int a23622;
+  public int a23623;
+  public int a23624;
+  public int a23625;
+  public int a23626;
+  public int a23627;
+  public int a23628;
+  public int a23629;
+  public int a23630;
+  public int a23631;
+  public int a23632;
+  public int a23633;
+  public int a23634;
+  public int a23635;
+  public int a23636;
+  public int a23637;
+  public int a23638;
+  public int a23639;
+  public int a23640;
+  public int a23641;
+  public int a23642;
+  public int a23643;
+  public int a23644;
+  public int a23645;
+  public int a23646;
+  public int a23647;
+  public int a23648;
+  public int a23649;
+  public int a23650;
+  public int a23651;
+  public int a23652;
+  public int a23653;
+  public int a23654;
+  public int a23655;
+  public int a23656;
+  public int a23657;
+  public int a23658;
+  public int a23659;
+  public int a23660;
+  public int a23661;
+  public int a23662;
+  public int a23663;
+  public int a23664;
+  public int a23665;
+  public int a23666;
+  public int a23667;
+  public int a23668;
+  public int a23669;
+  public int a23670;
+  public int a23671;
+  public int a23672;
+  public int a23673;
+  public int a23674;
+  public int a23675;
+  public int a23676;
+  public int a23677;
+  public int a23678;
+  public int a23679;
+  public int a23680;
+  public int a23681;
+  public int a23682;
+  public int a23683;
+  public int a23684;
+  public int a23685;
+  public int a23686;
+  public int a23687;
+  public int a23688;
+  public int a23689;
+  public int a23690;
+  public int a23691;
+  public int a23692;
+  public int a23693;
+  public int a23694;
+  public int a23695;
+  public int a23696;
+  public int a23697;
+  public int a23698;
+  public int a23699;
+  public int a23700;
+  public int a23701;
+  public int a23702;
+  public int a23703;
+  public int a23704;
+  public int a23705;
+  public int a23706;
+  public int a23707;
+  public int a23708;
+  public int a23709;
+  public int a23710;
+  public int a23711;
+  public int a23712;
+  public int a23713;
+  public int a23714;
+  public int a23715;
+  public int a23716;
+  public int a23717;
+  public int a23718;
+  public int a23719;
+  public int a23720;
+  public int a23721;
+  public int a23722;
+  public int a23723;
+  public int a23724;
+  public int a23725;
+  public int a23726;
+  public int a23727;
+  public int a23728;
+  public int a23729;
+  public int a23730;
+  public int a23731;
+  public int a23732;
+  public int a23733;
+  public int a23734;
+  public int a23735;
+  public int a23736;
+  public int a23737;
+  public int a23738;
+  public int a23739;
+  public int a23740;
+  public int a23741;
+  public int a23742;
+  public int a23743;
+  public int a23744;
+  public int a23745;
+  public int a23746;
+  public int a23747;
+  public int a23748;
+  public int a23749;
+  public int a23750;
+  public int a23751;
+  public int a23752;
+  public int a23753;
+  public int a23754;
+  public int a23755;
+  public int a23756;
+  public int a23757;
+  public int a23758;
+  public int a23759;
+  public int a23760;
+  public int a23761;
+  public int a23762;
+  public int a23763;
+  public int a23764;
+  public int a23765;
+  public int a23766;
+  public int a23767;
+  public int a23768;
+  public int a23769;
+  public int a23770;
+  public int a23771;
+  public int a23772;
+  public int a23773;
+  public int a23774;
+  public int a23775;
+  public int a23776;
+  public int a23777;
+  public int a23778;
+  public int a23779;
+  public int a23780;
+  public int a23781;
+  public int a23782;
+  public int a23783;
+  public int a23784;
+  public int a23785;
+  public int a23786;
+  public int a23787;
+  public int a23788;
+  public int a23789;
+  public int a23790;
+  public int a23791;
+  public int a23792;
+  public int a23793;
+  public int a23794;
+  public int a23795;
+  public int a23796;
+  public int a23797;
+  public int a23798;
+  public int a23799;
+  public int a23800;
+  public int a23801;
+  public int a23802;
+  public int a23803;
+  public int a23804;
+  public int a23805;
+  public int a23806;
+  public int a23807;
+  public int a23808;
+  public int a23809;
+  public int a23810;
+  public int a23811;
+  public int a23812;
+  public int a23813;
+  public int a23814;
+  public int a23815;
+  public int a23816;
+  public int a23817;
+  public int a23818;
+  public int a23819;
+  public int a23820;
+  public int a23821;
+  public int a23822;
+  public int a23823;
+  public int a23824;
+  public int a23825;
+  public int a23826;
+  public int a23827;
+  public int a23828;
+  public int a23829;
+  public int a23830;
+  public int a23831;
+  public int a23832;
+  public int a23833;
+  public int a23834;
+  public int a23835;
+  public int a23836;
+  public int a23837;
+  public int a23838;
+  public int a23839;
+  public int a23840;
+  public int a23841;
+  public int a23842;
+  public int a23843;
+  public int a23844;
+  public int a23845;
+  public int a23846;
+  public int a23847;
+  public int a23848;
+  public int a23849;
+  public int a23850;
+  public int a23851;
+  public int a23852;
+  public int a23853;
+  public int a23854;
+  public int a23855;
+  public int a23856;
+  public int a23857;
+  public int a23858;
+  public int a23859;
+  public int a23860;
+  public int a23861;
+  public int a23862;
+  public int a23863;
+  public int a23864;
+  public int a23865;
+  public int a23866;
+  public int a23867;
+  public int a23868;
+  public int a23869;
+  public int a23870;
+  public int a23871;
+  public int a23872;
+  public int a23873;
+  public int a23874;
+  public int a23875;
+  public int a23876;
+  public int a23877;
+  public int a23878;
+  public int a23879;
+  public int a23880;
+  public int a23881;
+  public int a23882;
+  public int a23883;
+  public int a23884;
+  public int a23885;
+  public int a23886;
+  public int a23887;
+  public int a23888;
+  public int a23889;
+  public int a23890;
+  public int a23891;
+  public int a23892;
+  public int a23893;
+  public int a23894;
+  public int a23895;
+  public int a23896;
+  public int a23897;
+  public int a23898;
+  public int a23899;
+  public int a23900;
+  public int a23901;
+  public int a23902;
+  public int a23903;
+  public int a23904;
+  public int a23905;
+  public int a23906;
+  public int a23907;
+  public int a23908;
+  public int a23909;
+  public int a23910;
+  public int a23911;
+  public int a23912;
+  public int a23913;
+  public int a23914;
+  public int a23915;
+  public int a23916;
+  public int a23917;
+  public int a23918;
+  public int a23919;
+  public int a23920;
+  public int a23921;
+  public int a23922;
+  public int a23923;
+  public int a23924;
+  public int a23925;
+  public int a23926;
+  public int a23927;
+  public int a23928;
+  public int a23929;
+  public int a23930;
+  public int a23931;
+  public int a23932;
+  public int a23933;
+  public int a23934;
+  public int a23935;
+  public int a23936;
+  public int a23937;
+  public int a23938;
+  public int a23939;
+  public int a23940;
+  public int a23941;
+  public int a23942;
+  public int a23943;
+  public int a23944;
+  public int a23945;
+  public int a23946;
+  public int a23947;
+  public int a23948;
+  public int a23949;
+  public int a23950;
+  public int a23951;
+  public int a23952;
+  public int a23953;
+  public int a23954;
+  public int a23955;
+  public int a23956;
+  public int a23957;
+  public int a23958;
+  public int a23959;
+  public int a23960;
+  public int a23961;
+  public int a23962;
+  public int a23963;
+  public int a23964;
+  public int a23965;
+  public int a23966;
+  public int a23967;
+  public int a23968;
+  public int a23969;
+  public int a23970;
+  public int a23971;
+  public int a23972;
+  public int a23973;
+  public int a23974;
+  public int a23975;
+  public int a23976;
+  public int a23977;
+  public int a23978;
+  public int a23979;
+  public int a23980;
+  public int a23981;
+  public int a23982;
+  public int a23983;
+  public int a23984;
+  public int a23985;
+  public int a23986;
+  public int a23987;
+  public int a23988;
+  public int a23989;
+  public int a23990;
+  public int a23991;
+  public int a23992;
+  public int a23993;
+  public int a23994;
+  public int a23995;
+  public int a23996;
+  public int a23997;
+  public int a23998;
+  public int a23999;
+  public int a24000;
+  public int a24001;
+  public int a24002;
+  public int a24003;
+  public int a24004;
+  public int a24005;
+  public int a24006;
+  public int a24007;
+  public int a24008;
+  public int a24009;
+  public int a24010;
+  public int a24011;
+  public int a24012;
+  public int a24013;
+  public int a24014;
+  public int a24015;
+  public int a24016;
+  public int a24017;
+  public int a24018;
+  public int a24019;
+  public int a24020;
+  public int a24021;
+  public int a24022;
+  public int a24023;
+  public int a24024;
+  public int a24025;
+  public int a24026;
+  public int a24027;
+  public int a24028;
+  public int a24029;
+  public int a24030;
+  public int a24031;
+  public int a24032;
+  public int a24033;
+  public int a24034;
+  public int a24035;
+  public int a24036;
+  public int a24037;
+  public int a24038;
+  public int a24039;
+  public int a24040;
+  public int a24041;
+  public int a24042;
+  public int a24043;
+  public int a24044;
+  public int a24045;
+  public int a24046;
+  public int a24047;
+  public int a24048;
+  public int a24049;
+  public int a24050;
+  public int a24051;
+  public int a24052;
+  public int a24053;
+  public int a24054;
+  public int a24055;
+  public int a24056;
+  public int a24057;
+  public int a24058;
+  public int a24059;
+  public int a24060;
+  public int a24061;
+  public int a24062;
+  public int a24063;
+  public int a24064;
+  public int a24065;
+  public int a24066;
+  public int a24067;
+  public int a24068;
+  public int a24069;
+  public int a24070;
+  public int a24071;
+  public int a24072;
+  public int a24073;
+  public int a24074;
+  public int a24075;
+  public int a24076;
+  public int a24077;
+  public int a24078;
+  public int a24079;
+  public int a24080;
+  public int a24081;
+  public int a24082;
+  public int a24083;
+  public int a24084;
+  public int a24085;
+  public int a24086;
+  public int a24087;
+  public int a24088;
+  public int a24089;
+  public int a24090;
+  public int a24091;
+  public int a24092;
+  public int a24093;
+  public int a24094;
+  public int a24095;
+  public int a24096;
+  public int a24097;
+  public int a24098;
+  public int a24099;
+  public int a24100;
+  public int a24101;
+  public int a24102;
+  public int a24103;
+  public int a24104;
+  public int a24105;
+  public int a24106;
+  public int a24107;
+  public int a24108;
+  public int a24109;
+  public int a24110;
+  public int a24111;
+  public int a24112;
+  public int a24113;
+  public int a24114;
+  public int a24115;
+  public int a24116;
+  public int a24117;
+  public int a24118;
+  public int a24119;
+  public int a24120;
+  public int a24121;
+  public int a24122;
+  public int a24123;
+  public int a24124;
+  public int a24125;
+  public int a24126;
+  public int a24127;
+  public int a24128;
+  public int a24129;
+  public int a24130;
+  public int a24131;
+  public int a24132;
+  public int a24133;
+  public int a24134;
+  public int a24135;
+  public int a24136;
+  public int a24137;
+  public int a24138;
+  public int a24139;
+  public int a24140;
+  public int a24141;
+  public int a24142;
+  public int a24143;
+  public int a24144;
+  public int a24145;
+  public int a24146;
+  public int a24147;
+  public int a24148;
+  public int a24149;
+  public int a24150;
+  public int a24151;
+  public int a24152;
+  public int a24153;
+  public int a24154;
+  public int a24155;
+  public int a24156;
+  public int a24157;
+  public int a24158;
+  public int a24159;
+  public int a24160;
+  public int a24161;
+  public int a24162;
+  public int a24163;
+  public int a24164;
+  public int a24165;
+  public int a24166;
+  public int a24167;
+  public int a24168;
+  public int a24169;
+  public int a24170;
+  public int a24171;
+  public int a24172;
+  public int a24173;
+  public int a24174;
+  public int a24175;
+  public int a24176;
+  public int a24177;
+  public int a24178;
+  public int a24179;
+  public int a24180;
+  public int a24181;
+  public int a24182;
+  public int a24183;
+  public int a24184;
+  public int a24185;
+  public int a24186;
+  public int a24187;
+  public int a24188;
+  public int a24189;
+  public int a24190;
+  public int a24191;
+  public int a24192;
+  public int a24193;
+  public int a24194;
+  public int a24195;
+  public int a24196;
+  public int a24197;
+  public int a24198;
+  public int a24199;
+  public int a24200;
+  public int a24201;
+  public int a24202;
+  public int a24203;
+  public int a24204;
+  public int a24205;
+  public int a24206;
+  public int a24207;
+  public int a24208;
+  public int a24209;
+  public int a24210;
+  public int a24211;
+  public int a24212;
+  public int a24213;
+  public int a24214;
+  public int a24215;
+  public int a24216;
+  public int a24217;
+  public int a24218;
+  public int a24219;
+  public int a24220;
+  public int a24221;
+  public int a24222;
+  public int a24223;
+  public int a24224;
+  public int a24225;
+  public int a24226;
+  public int a24227;
+  public int a24228;
+  public int a24229;
+  public int a24230;
+  public int a24231;
+  public int a24232;
+  public int a24233;
+  public int a24234;
+  public int a24235;
+  public int a24236;
+  public int a24237;
+  public int a24238;
+  public int a24239;
+  public int a24240;
+  public int a24241;
+  public int a24242;
+  public int a24243;
+  public int a24244;
+  public int a24245;
+  public int a24246;
+  public int a24247;
+  public int a24248;
+  public int a24249;
+  public int a24250;
+  public int a24251;
+  public int a24252;
+  public int a24253;
+  public int a24254;
+  public int a24255;
+  public int a24256;
+  public int a24257;
+  public int a24258;
+  public int a24259;
+  public int a24260;
+  public int a24261;
+  public int a24262;
+  public int a24263;
+  public int a24264;
+  public int a24265;
+  public int a24266;
+  public int a24267;
+  public int a24268;
+  public int a24269;
+  public int a24270;
+  public int a24271;
+  public int a24272;
+  public int a24273;
+  public int a24274;
+  public int a24275;
+  public int a24276;
+  public int a24277;
+  public int a24278;
+  public int a24279;
+  public int a24280;
+  public int a24281;
+  public int a24282;
+  public int a24283;
+  public int a24284;
+  public int a24285;
+  public int a24286;
+  public int a24287;
+  public int a24288;
+  public int a24289;
+  public int a24290;
+  public int a24291;
+  public int a24292;
+  public int a24293;
+  public int a24294;
+  public int a24295;
+  public int a24296;
+  public int a24297;
+  public int a24298;
+  public int a24299;
+  public int a24300;
+  public int a24301;
+  public int a24302;
+  public int a24303;
+  public int a24304;
+  public int a24305;
+  public int a24306;
+  public int a24307;
+  public int a24308;
+  public int a24309;
+  public int a24310;
+  public int a24311;
+  public int a24312;
+  public int a24313;
+  public int a24314;
+  public int a24315;
+  public int a24316;
+  public int a24317;
+  public int a24318;
+  public int a24319;
+  public int a24320;
+  public int a24321;
+  public int a24322;
+  public int a24323;
+  public int a24324;
+  public int a24325;
+  public int a24326;
+  public int a24327;
+  public int a24328;
+  public int a24329;
+  public int a24330;
+  public int a24331;
+  public int a24332;
+  public int a24333;
+  public int a24334;
+  public int a24335;
+  public int a24336;
+  public int a24337;
+  public int a24338;
+  public int a24339;
+  public int a24340;
+  public int a24341;
+  public int a24342;
+  public int a24343;
+  public int a24344;
+  public int a24345;
+  public int a24346;
+  public int a24347;
+  public int a24348;
+  public int a24349;
+  public int a24350;
+  public int a24351;
+  public int a24352;
+  public int a24353;
+  public int a24354;
+  public int a24355;
+  public int a24356;
+  public int a24357;
+  public int a24358;
+  public int a24359;
+  public int a24360;
+  public int a24361;
+  public int a24362;
+  public int a24363;
+  public int a24364;
+  public int a24365;
+  public int a24366;
+  public int a24367;
+  public int a24368;
+  public int a24369;
+  public int a24370;
+  public int a24371;
+  public int a24372;
+  public int a24373;
+  public int a24374;
+  public int a24375;
+  public int a24376;
+  public int a24377;
+  public int a24378;
+  public int a24379;
+  public int a24380;
+  public int a24381;
+  public int a24382;
+  public int a24383;
+  public int a24384;
+  public int a24385;
+  public int a24386;
+  public int a24387;
+  public int a24388;
+  public int a24389;
+  public int a24390;
+  public int a24391;
+  public int a24392;
+  public int a24393;
+  public int a24394;
+  public int a24395;
+  public int a24396;
+  public int a24397;
+  public int a24398;
+  public int a24399;
+  public int a24400;
+  public int a24401;
+  public int a24402;
+  public int a24403;
+  public int a24404;
+  public int a24405;
+  public int a24406;
+  public int a24407;
+  public int a24408;
+  public int a24409;
+  public int a24410;
+  public int a24411;
+  public int a24412;
+  public int a24413;
+  public int a24414;
+  public int a24415;
+  public int a24416;
+  public int a24417;
+  public int a24418;
+  public int a24419;
+  public int a24420;
+  public int a24421;
+  public int a24422;
+  public int a24423;
+  public int a24424;
+  public int a24425;
+  public int a24426;
+  public int a24427;
+  public int a24428;
+  public int a24429;
+  public int a24430;
+  public int a24431;
+  public int a24432;
+  public int a24433;
+  public int a24434;
+  public int a24435;
+  public int a24436;
+  public int a24437;
+  public int a24438;
+  public int a24439;
+  public int a24440;
+  public int a24441;
+  public int a24442;
+  public int a24443;
+  public int a24444;
+  public int a24445;
+  public int a24446;
+  public int a24447;
+  public int a24448;
+  public int a24449;
+  public int a24450;
+  public int a24451;
+  public int a24452;
+  public int a24453;
+  public int a24454;
+  public int a24455;
+  public int a24456;
+  public int a24457;
+  public int a24458;
+  public int a24459;
+  public int a24460;
+  public int a24461;
+  public int a24462;
+  public int a24463;
+  public int a24464;
+  public int a24465;
+  public int a24466;
+  public int a24467;
+  public int a24468;
+  public int a24469;
+  public int a24470;
+  public int a24471;
+  public int a24472;
+  public int a24473;
+  public int a24474;
+  public int a24475;
+  public int a24476;
+  public int a24477;
+  public int a24478;
+  public int a24479;
+  public int a24480;
+  public int a24481;
+  public int a24482;
+  public int a24483;
+  public int a24484;
+  public int a24485;
+  public int a24486;
+  public int a24487;
+  public int a24488;
+  public int a24489;
+  public int a24490;
+  public int a24491;
+  public int a24492;
+  public int a24493;
+  public int a24494;
+  public int a24495;
+  public int a24496;
+  public int a24497;
+  public int a24498;
+  public int a24499;
+  public int a24500;
+  public int a24501;
+  public int a24502;
+  public int a24503;
+  public int a24504;
+  public int a24505;
+  public int a24506;
+  public int a24507;
+  public int a24508;
+  public int a24509;
+  public int a24510;
+  public int a24511;
+  public int a24512;
+  public int a24513;
+  public int a24514;
+  public int a24515;
+  public int a24516;
+  public int a24517;
+  public int a24518;
+  public int a24519;
+  public int a24520;
+  public int a24521;
+  public int a24522;
+  public int a24523;
+  public int a24524;
+  public int a24525;
+  public int a24526;
+  public int a24527;
+  public int a24528;
+  public int a24529;
+  public int a24530;
+  public int a24531;
+  public int a24532;
+  public int a24533;
+  public int a24534;
+  public int a24535;
+  public int a24536;
+  public int a24537;
+  public int a24538;
+  public int a24539;
+  public int a24540;
+  public int a24541;
+  public int a24542;
+  public int a24543;
+  public int a24544;
+  public int a24545;
+  public int a24546;
+  public int a24547;
+  public int a24548;
+  public int a24549;
+  public int a24550;
+  public int a24551;
+  public int a24552;
+  public int a24553;
+  public int a24554;
+  public int a24555;
+  public int a24556;
+  public int a24557;
+  public int a24558;
+  public int a24559;
+  public int a24560;
+  public int a24561;
+  public int a24562;
+  public int a24563;
+  public int a24564;
+  public int a24565;
+  public int a24566;
+  public int a24567;
+  public int a24568;
+  public int a24569;
+  public int a24570;
+  public int a24571;
+  public int a24572;
+  public int a24573;
+  public int a24574;
+  public int a24575;
+  public int a24576;
+  public int a24577;
+  public int a24578;
+  public int a24579;
+  public int a24580;
+  public int a24581;
+  public int a24582;
+  public int a24583;
+  public int a24584;
+  public int a24585;
+  public int a24586;
+  public int a24587;
+  public int a24588;
+  public int a24589;
+  public int a24590;
+  public int a24591;
+  public int a24592;
+  public int a24593;
+  public int a24594;
+  public int a24595;
+  public int a24596;
+  public int a24597;
+  public int a24598;
+  public int a24599;
+  public int a24600;
+  public int a24601;
+  public int a24602;
+  public int a24603;
+  public int a24604;
+  public int a24605;
+  public int a24606;
+  public int a24607;
+  public int a24608;
+  public int a24609;
+  public int a24610;
+  public int a24611;
+  public int a24612;
+  public int a24613;
+  public int a24614;
+  public int a24615;
+  public int a24616;
+  public int a24617;
+  public int a24618;
+  public int a24619;
+  public int a24620;
+  public int a24621;
+  public int a24622;
+  public int a24623;
+  public int a24624;
+  public int a24625;
+  public int a24626;
+  public int a24627;
+  public int a24628;
+  public int a24629;
+  public int a24630;
+  public int a24631;
+  public int a24632;
+  public int a24633;
+  public int a24634;
+  public int a24635;
+  public int a24636;
+  public int a24637;
+  public int a24638;
+  public int a24639;
+  public int a24640;
+  public int a24641;
+  public int a24642;
+  public int a24643;
+  public int a24644;
+  public int a24645;
+  public int a24646;
+  public int a24647;
+  public int a24648;
+  public int a24649;
+  public int a24650;
+  public int a24651;
+  public int a24652;
+  public int a24653;
+  public int a24654;
+  public int a24655;
+  public int a24656;
+  public int a24657;
+  public int a24658;
+  public int a24659;
+  public int a24660;
+  public int a24661;
+  public int a24662;
+  public int a24663;
+  public int a24664;
+  public int a24665;
+  public int a24666;
+  public int a24667;
+  public int a24668;
+  public int a24669;
+  public int a24670;
+  public int a24671;
+  public int a24672;
+  public int a24673;
+  public int a24674;
+  public int a24675;
+  public int a24676;
+  public int a24677;
+  public int a24678;
+  public int a24679;
+  public int a24680;
+  public int a24681;
+  public int a24682;
+  public int a24683;
+  public int a24684;
+  public int a24685;
+  public int a24686;
+  public int a24687;
+  public int a24688;
+  public int a24689;
+  public int a24690;
+  public int a24691;
+  public int a24692;
+  public int a24693;
+  public int a24694;
+  public int a24695;
+  public int a24696;
+  public int a24697;
+  public int a24698;
+  public int a24699;
+  public int a24700;
+  public int a24701;
+  public int a24702;
+  public int a24703;
+  public int a24704;
+  public int a24705;
+  public int a24706;
+  public int a24707;
+  public int a24708;
+  public int a24709;
+  public int a24710;
+  public int a24711;
+  public int a24712;
+  public int a24713;
+  public int a24714;
+  public int a24715;
+  public int a24716;
+  public int a24717;
+  public int a24718;
+  public int a24719;
+  public int a24720;
+  public int a24721;
+  public int a24722;
+  public int a24723;
+  public int a24724;
+  public int a24725;
+  public int a24726;
+  public int a24727;
+  public int a24728;
+  public int a24729;
+  public int a24730;
+  public int a24731;
+  public int a24732;
+  public int a24733;
+  public int a24734;
+  public int a24735;
+  public int a24736;
+  public int a24737;
+  public int a24738;
+  public int a24739;
+  public int a24740;
+  public int a24741;
+  public int a24742;
+  public int a24743;
+  public int a24744;
+  public int a24745;
+  public int a24746;
+  public int a24747;
+  public int a24748;
+  public int a24749;
+  public int a24750;
+  public int a24751;
+  public int a24752;
+  public int a24753;
+  public int a24754;
+  public int a24755;
+  public int a24756;
+  public int a24757;
+  public int a24758;
+  public int a24759;
+  public int a24760;
+  public int a24761;
+  public int a24762;
+  public int a24763;
+  public int a24764;
+  public int a24765;
+  public int a24766;
+  public int a24767;
+  public int a24768;
+  public int a24769;
+  public int a24770;
+  public int a24771;
+  public int a24772;
+  public int a24773;
+  public int a24774;
+  public int a24775;
+  public int a24776;
+  public int a24777;
+  public int a24778;
+  public int a24779;
+  public int a24780;
+  public int a24781;
+  public int a24782;
+  public int a24783;
+  public int a24784;
+  public int a24785;
+  public int a24786;
+  public int a24787;
+  public int a24788;
+  public int a24789;
+  public int a24790;
+  public int a24791;
+  public int a24792;
+  public int a24793;
+  public int a24794;
+  public int a24795;
+  public int a24796;
+  public int a24797;
+  public int a24798;
+  public int a24799;
+  public int a24800;
+  public int a24801;
+  public int a24802;
+  public int a24803;
+  public int a24804;
+  public int a24805;
+  public int a24806;
+  public int a24807;
+  public int a24808;
+  public int a24809;
+  public int a24810;
+  public int a24811;
+  public int a24812;
+  public int a24813;
+  public int a24814;
+  public int a24815;
+  public int a24816;
+  public int a24817;
+  public int a24818;
+  public int a24819;
+  public int a24820;
+  public int a24821;
+  public int a24822;
+  public int a24823;
+  public int a24824;
+  public int a24825;
+  public int a24826;
+  public int a24827;
+  public int a24828;
+  public int a24829;
+  public int a24830;
+  public int a24831;
+  public int a24832;
+  public int a24833;
+  public int a24834;
+  public int a24835;
+  public int a24836;
+  public int a24837;
+  public int a24838;
+  public int a24839;
+  public int a24840;
+  public int a24841;
+  public int a24842;
+  public int a24843;
+  public int a24844;
+  public int a24845;
+  public int a24846;
+  public int a24847;
+  public int a24848;
+  public int a24849;
+  public int a24850;
+  public int a24851;
+  public int a24852;
+  public int a24853;
+  public int a24854;
+  public int a24855;
+  public int a24856;
+  public int a24857;
+  public int a24858;
+  public int a24859;
+  public int a24860;
+  public int a24861;
+  public int a24862;
+  public int a24863;
+  public int a24864;
+  public int a24865;
+  public int a24866;
+  public int a24867;
+  public int a24868;
+  public int a24869;
+  public int a24870;
+  public int a24871;
+  public int a24872;
+  public int a24873;
+  public int a24874;
+  public int a24875;
+  public int a24876;
+  public int a24877;
+  public int a24878;
+  public int a24879;
+  public int a24880;
+  public int a24881;
+  public int a24882;
+  public int a24883;
+  public int a24884;
+  public int a24885;
+  public int a24886;
+  public int a24887;
+  public int a24888;
+  public int a24889;
+  public int a24890;
+  public int a24891;
+  public int a24892;
+  public int a24893;
+  public int a24894;
+  public int a24895;
+  public int a24896;
+  public int a24897;
+  public int a24898;
+  public int a24899;
+  public int a24900;
+  public int a24901;
+  public int a24902;
+  public int a24903;
+  public int a24904;
+  public int a24905;
+  public int a24906;
+  public int a24907;
+  public int a24908;
+  public int a24909;
+  public int a24910;
+  public int a24911;
+  public int a24912;
+  public int a24913;
+  public int a24914;
+  public int a24915;
+  public int a24916;
+  public int a24917;
+  public int a24918;
+  public int a24919;
+  public int a24920;
+  public int a24921;
+  public int a24922;
+  public int a24923;
+  public int a24924;
+  public int a24925;
+  public int a24926;
+  public int a24927;
+  public int a24928;
+  public int a24929;
+  public int a24930;
+  public int a24931;
+  public int a24932;
+  public int a24933;
+  public int a24934;
+  public int a24935;
+  public int a24936;
+  public int a24937;
+  public int a24938;
+  public int a24939;
+  public int a24940;
+  public int a24941;
+  public int a24942;
+  public int a24943;
+  public int a24944;
+  public int a24945;
+  public int a24946;
+  public int a24947;
+  public int a24948;
+  public int a24949;
+  public int a24950;
+  public int a24951;
+  public int a24952;
+  public int a24953;
+  public int a24954;
+  public int a24955;
+  public int a24956;
+  public int a24957;
+  public int a24958;
+  public int a24959;
+  public int a24960;
+  public int a24961;
+  public int a24962;
+  public int a24963;
+  public int a24964;
+  public int a24965;
+  public int a24966;
+  public int a24967;
+  public int a24968;
+  public int a24969;
+  public int a24970;
+  public int a24971;
+  public int a24972;
+  public int a24973;
+  public int a24974;
+  public int a24975;
+  public int a24976;
+  public int a24977;
+  public int a24978;
+  public int a24979;
+  public int a24980;
+  public int a24981;
+  public int a24982;
+  public int a24983;
+  public int a24984;
+  public int a24985;
+  public int a24986;
+  public int a24987;
+  public int a24988;
+  public int a24989;
+  public int a24990;
+  public int a24991;
+  public int a24992;
+  public int a24993;
+  public int a24994;
+  public int a24995;
+  public int a24996;
+  public int a24997;
+  public int a24998;
+  public int a24999;
+  public int a25000;
+  public int a25001;
+  public int a25002;
+  public int a25003;
+  public int a25004;
+  public int a25005;
+  public int a25006;
+  public int a25007;
+  public int a25008;
+  public int a25009;
+  public int a25010;
+  public int a25011;
+  public int a25012;
+  public int a25013;
+  public int a25014;
+  public int a25015;
+  public int a25016;
+  public int a25017;
+  public int a25018;
+  public int a25019;
+  public int a25020;
+  public int a25021;
+  public int a25022;
+  public int a25023;
+  public int a25024;
+  public int a25025;
+  public int a25026;
+  public int a25027;
+  public int a25028;
+  public int a25029;
+  public int a25030;
+  public int a25031;
+  public int a25032;
+  public int a25033;
+  public int a25034;
+  public int a25035;
+  public int a25036;
+  public int a25037;
+  public int a25038;
+  public int a25039;
+  public int a25040;
+  public int a25041;
+  public int a25042;
+  public int a25043;
+  public int a25044;
+  public int a25045;
+  public int a25046;
+  public int a25047;
+  public int a25048;
+  public int a25049;
+  public int a25050;
+  public int a25051;
+  public int a25052;
+  public int a25053;
+  public int a25054;
+  public int a25055;
+  public int a25056;
+  public int a25057;
+  public int a25058;
+  public int a25059;
+  public int a25060;
+  public int a25061;
+  public int a25062;
+  public int a25063;
+  public int a25064;
+  public int a25065;
+  public int a25066;
+  public int a25067;
+  public int a25068;
+  public int a25069;
+  public int a25070;
+  public int a25071;
+  public int a25072;
+  public int a25073;
+  public int a25074;
+  public int a25075;
+  public int a25076;
+  public int a25077;
+  public int a25078;
+  public int a25079;
+  public int a25080;
+  public int a25081;
+  public int a25082;
+  public int a25083;
+  public int a25084;
+  public int a25085;
+  public int a25086;
+  public int a25087;
+  public int a25088;
+  public int a25089;
+  public int a25090;
+  public int a25091;
+  public int a25092;
+  public int a25093;
+  public int a25094;
+  public int a25095;
+  public int a25096;
+  public int a25097;
+  public int a25098;
+  public int a25099;
+  public int a25100;
+  public int a25101;
+  public int a25102;
+  public int a25103;
+  public int a25104;
+  public int a25105;
+  public int a25106;
+  public int a25107;
+  public int a25108;
+  public int a25109;
+  public int a25110;
+  public int a25111;
+  public int a25112;
+  public int a25113;
+  public int a25114;
+  public int a25115;
+  public int a25116;
+  public int a25117;
+  public int a25118;
+  public int a25119;
+  public int a25120;
+  public int a25121;
+  public int a25122;
+  public int a25123;
+  public int a25124;
+  public int a25125;
+  public int a25126;
+  public int a25127;
+  public int a25128;
+  public int a25129;
+  public int a25130;
+  public int a25131;
+  public int a25132;
+  public int a25133;
+  public int a25134;
+  public int a25135;
+  public int a25136;
+  public int a25137;
+  public int a25138;
+  public int a25139;
+  public int a25140;
+  public int a25141;
+  public int a25142;
+  public int a25143;
+  public int a25144;
+  public int a25145;
+  public int a25146;
+  public int a25147;
+  public int a25148;
+  public int a25149;
+  public int a25150;
+  public int a25151;
+  public int a25152;
+  public int a25153;
+  public int a25154;
+  public int a25155;
+  public int a25156;
+  public int a25157;
+  public int a25158;
+  public int a25159;
+  public int a25160;
+  public int a25161;
+  public int a25162;
+  public int a25163;
+  public int a25164;
+  public int a25165;
+  public int a25166;
+  public int a25167;
+  public int a25168;
+  public int a25169;
+  public int a25170;
+  public int a25171;
+  public int a25172;
+  public int a25173;
+  public int a25174;
+  public int a25175;
+  public int a25176;
+  public int a25177;
+  public int a25178;
+  public int a25179;
+  public int a25180;
+  public int a25181;
+  public int a25182;
+  public int a25183;
+  public int a25184;
+  public int a25185;
+  public int a25186;
+  public int a25187;
+  public int a25188;
+  public int a25189;
+  public int a25190;
+  public int a25191;
+  public int a25192;
+  public int a25193;
+  public int a25194;
+  public int a25195;
+  public int a25196;
+  public int a25197;
+  public int a25198;
+  public int a25199;
+  public int a25200;
+  public int a25201;
+  public int a25202;
+  public int a25203;
+  public int a25204;
+  public int a25205;
+  public int a25206;
+  public int a25207;
+  public int a25208;
+  public int a25209;
+  public int a25210;
+  public int a25211;
+  public int a25212;
+  public int a25213;
+  public int a25214;
+  public int a25215;
+  public int a25216;
+  public int a25217;
+  public int a25218;
+  public int a25219;
+  public int a25220;
+  public int a25221;
+  public int a25222;
+  public int a25223;
+  public int a25224;
+  public int a25225;
+  public int a25226;
+  public int a25227;
+  public int a25228;
+  public int a25229;
+  public int a25230;
+  public int a25231;
+  public int a25232;
+  public int a25233;
+  public int a25234;
+  public int a25235;
+  public int a25236;
+  public int a25237;
+  public int a25238;
+  public int a25239;
+  public int a25240;
+  public int a25241;
+  public int a25242;
+  public int a25243;
+  public int a25244;
+  public int a25245;
+  public int a25246;
+  public int a25247;
+  public int a25248;
+  public int a25249;
+  public int a25250;
+  public int a25251;
+  public int a25252;
+  public int a25253;
+  public int a25254;
+  public int a25255;
+  public int a25256;
+  public int a25257;
+  public int a25258;
+  public int a25259;
+  public int a25260;
+  public int a25261;
+  public int a25262;
+  public int a25263;
+  public int a25264;
+  public int a25265;
+  public int a25266;
+  public int a25267;
+  public int a25268;
+  public int a25269;
+  public int a25270;
+  public int a25271;
+  public int a25272;
+  public int a25273;
+  public int a25274;
+  public int a25275;
+  public int a25276;
+  public int a25277;
+  public int a25278;
+  public int a25279;
+  public int a25280;
+  public int a25281;
+  public int a25282;
+  public int a25283;
+  public int a25284;
+  public int a25285;
+  public int a25286;
+  public int a25287;
+  public int a25288;
+  public int a25289;
+  public int a25290;
+  public int a25291;
+  public int a25292;
+  public int a25293;
+  public int a25294;
+  public int a25295;
+  public int a25296;
+  public int a25297;
+  public int a25298;
+  public int a25299;
+  public int a25300;
+  public int a25301;
+  public int a25302;
+  public int a25303;
+  public int a25304;
+  public int a25305;
+  public int a25306;
+  public int a25307;
+  public int a25308;
+  public int a25309;
+  public int a25310;
+  public int a25311;
+  public int a25312;
+  public int a25313;
+  public int a25314;
+  public int a25315;
+  public int a25316;
+  public int a25317;
+  public int a25318;
+  public int a25319;
+  public int a25320;
+  public int a25321;
+  public int a25322;
+  public int a25323;
+  public int a25324;
+  public int a25325;
+  public int a25326;
+  public int a25327;
+  public int a25328;
+  public int a25329;
+  public int a25330;
+  public int a25331;
+  public int a25332;
+  public int a25333;
+  public int a25334;
+  public int a25335;
+  public int a25336;
+  public int a25337;
+  public int a25338;
+  public int a25339;
+  public int a25340;
+  public int a25341;
+  public int a25342;
+  public int a25343;
+  public int a25344;
+  public int a25345;
+  public int a25346;
+  public int a25347;
+  public int a25348;
+  public int a25349;
+  public int a25350;
+  public int a25351;
+  public int a25352;
+  public int a25353;
+  public int a25354;
+  public int a25355;
+  public int a25356;
+  public int a25357;
+  public int a25358;
+  public int a25359;
+  public int a25360;
+  public int a25361;
+  public int a25362;
+  public int a25363;
+  public int a25364;
+  public int a25365;
+  public int a25366;
+  public int a25367;
+  public int a25368;
+  public int a25369;
+  public int a25370;
+  public int a25371;
+  public int a25372;
+  public int a25373;
+  public int a25374;
+  public int a25375;
+  public int a25376;
+  public int a25377;
+  public int a25378;
+  public int a25379;
+  public int a25380;
+  public int a25381;
+  public int a25382;
+  public int a25383;
+  public int a25384;
+  public int a25385;
+  public int a25386;
+  public int a25387;
+  public int a25388;
+  public int a25389;
+  public int a25390;
+  public int a25391;
+  public int a25392;
+  public int a25393;
+  public int a25394;
+  public int a25395;
+  public int a25396;
+  public int a25397;
+  public int a25398;
+  public int a25399;
+  public int a25400;
+  public int a25401;
+  public int a25402;
+  public int a25403;
+  public int a25404;
+  public int a25405;
+  public int a25406;
+  public int a25407;
+  public int a25408;
+  public int a25409;
+  public int a25410;
+  public int a25411;
+  public int a25412;
+  public int a25413;
+  public int a25414;
+  public int a25415;
+  public int a25416;
+  public int a25417;
+  public int a25418;
+  public int a25419;
+  public int a25420;
+  public int a25421;
+  public int a25422;
+  public int a25423;
+  public int a25424;
+  public int a25425;
+  public int a25426;
+  public int a25427;
+  public int a25428;
+  public int a25429;
+  public int a25430;
+  public int a25431;
+  public int a25432;
+  public int a25433;
+  public int a25434;
+  public int a25435;
+  public int a25436;
+  public int a25437;
+  public int a25438;
+  public int a25439;
+  public int a25440;
+  public int a25441;
+  public int a25442;
+  public int a25443;
+  public int a25444;
+  public int a25445;
+  public int a25446;
+  public int a25447;
+  public int a25448;
+  public int a25449;
+  public int a25450;
+  public int a25451;
+  public int a25452;
+  public int a25453;
+  public int a25454;
+  public int a25455;
+  public int a25456;
+  public int a25457;
+  public int a25458;
+  public int a25459;
+  public int a25460;
+  public int a25461;
+  public int a25462;
+  public int a25463;
+  public int a25464;
+  public int a25465;
+  public int a25466;
+  public int a25467;
+  public int a25468;
+  public int a25469;
+  public int a25470;
+  public int a25471;
+  public int a25472;
+  public int a25473;
+  public int a25474;
+  public int a25475;
+  public int a25476;
+  public int a25477;
+  public int a25478;
+  public int a25479;
+  public int a25480;
+  public int a25481;
+  public int a25482;
+  public int a25483;
+  public int a25484;
+  public int a25485;
+  public int a25486;
+  public int a25487;
+  public int a25488;
+  public int a25489;
+  public int a25490;
+  public int a25491;
+  public int a25492;
+  public int a25493;
+  public int a25494;
+  public int a25495;
+  public int a25496;
+  public int a25497;
+  public int a25498;
+  public int a25499;
+  public int a25500;
+  public int a25501;
+  public int a25502;
+  public int a25503;
+  public int a25504;
+  public int a25505;
+  public int a25506;
+  public int a25507;
+  public int a25508;
+  public int a25509;
+  public int a25510;
+  public int a25511;
+  public int a25512;
+  public int a25513;
+  public int a25514;
+  public int a25515;
+  public int a25516;
+  public int a25517;
+  public int a25518;
+  public int a25519;
+  public int a25520;
+  public int a25521;
+  public int a25522;
+  public int a25523;
+  public int a25524;
+  public int a25525;
+  public int a25526;
+  public int a25527;
+  public int a25528;
+  public int a25529;
+  public int a25530;
+  public int a25531;
+  public int a25532;
+  public int a25533;
+  public int a25534;
+  public int a25535;
+  public int a25536;
+  public int a25537;
+  public int a25538;
+  public int a25539;
+  public int a25540;
+  public int a25541;
+  public int a25542;
+  public int a25543;
+  public int a25544;
+  public int a25545;
+  public int a25546;
+  public int a25547;
+  public int a25548;
+  public int a25549;
+  public int a25550;
+  public int a25551;
+  public int a25552;
+  public int a25553;
+  public int a25554;
+  public int a25555;
+  public int a25556;
+  public int a25557;
+  public int a25558;
+  public int a25559;
+  public int a25560;
+  public int a25561;
+  public int a25562;
+  public int a25563;
+  public int a25564;
+  public int a25565;
+  public int a25566;
+  public int a25567;
+  public int a25568;
+  public int a25569;
+  public int a25570;
+  public int a25571;
+  public int a25572;
+  public int a25573;
+  public int a25574;
+  public int a25575;
+  public int a25576;
+  public int a25577;
+  public int a25578;
+  public int a25579;
+  public int a25580;
+  public int a25581;
+  public int a25582;
+  public int a25583;
+  public int a25584;
+  public int a25585;
+  public int a25586;
+  public int a25587;
+  public int a25588;
+  public int a25589;
+  public int a25590;
+  public int a25591;
+  public int a25592;
+  public int a25593;
+  public int a25594;
+  public int a25595;
+  public int a25596;
+  public int a25597;
+  public int a25598;
+  public int a25599;
+  public int a25600;
+  public int a25601;
+  public int a25602;
+  public int a25603;
+  public int a25604;
+  public int a25605;
+  public int a25606;
+  public int a25607;
+  public int a25608;
+  public int a25609;
+  public int a25610;
+  public int a25611;
+  public int a25612;
+  public int a25613;
+  public int a25614;
+  public int a25615;
+  public int a25616;
+  public int a25617;
+  public int a25618;
+  public int a25619;
+  public int a25620;
+  public int a25621;
+  public int a25622;
+  public int a25623;
+  public int a25624;
+  public int a25625;
+  public int a25626;
+  public int a25627;
+  public int a25628;
+  public int a25629;
+  public int a25630;
+  public int a25631;
+  public int a25632;
+  public int a25633;
+  public int a25634;
+  public int a25635;
+  public int a25636;
+  public int a25637;
+  public int a25638;
+  public int a25639;
+  public int a25640;
+  public int a25641;
+  public int a25642;
+  public int a25643;
+  public int a25644;
+  public int a25645;
+  public int a25646;
+  public int a25647;
+  public int a25648;
+  public int a25649;
+  public int a25650;
+  public int a25651;
+  public int a25652;
+  public int a25653;
+  public int a25654;
+  public int a25655;
+  public int a25656;
+  public int a25657;
+  public int a25658;
+  public int a25659;
+  public int a25660;
+  public int a25661;
+  public int a25662;
+  public int a25663;
+  public int a25664;
+  public int a25665;
+  public int a25666;
+  public int a25667;
+  public int a25668;
+  public int a25669;
+  public int a25670;
+  public int a25671;
+  public int a25672;
+  public int a25673;
+  public int a25674;
+  public int a25675;
+  public int a25676;
+  public int a25677;
+  public int a25678;
+  public int a25679;
+  public int a25680;
+  public int a25681;
+  public int a25682;
+  public int a25683;
+  public int a25684;
+  public int a25685;
+  public int a25686;
+  public int a25687;
+  public int a25688;
+  public int a25689;
+  public int a25690;
+  public int a25691;
+  public int a25692;
+  public int a25693;
+  public int a25694;
+  public int a25695;
+  public int a25696;
+  public int a25697;
+  public int a25698;
+  public int a25699;
+  public int a25700;
+  public int a25701;
+  public int a25702;
+  public int a25703;
+  public int a25704;
+  public int a25705;
+  public int a25706;
+  public int a25707;
+  public int a25708;
+  public int a25709;
+  public int a25710;
+  public int a25711;
+  public int a25712;
+  public int a25713;
+  public int a25714;
+  public int a25715;
+  public int a25716;
+  public int a25717;
+  public int a25718;
+  public int a25719;
+  public int a25720;
+  public int a25721;
+  public int a25722;
+  public int a25723;
+  public int a25724;
+  public int a25725;
+  public int a25726;
+  public int a25727;
+  public int a25728;
+  public int a25729;
+  public int a25730;
+  public int a25731;
+  public int a25732;
+  public int a25733;
+  public int a25734;
+  public int a25735;
+  public int a25736;
+  public int a25737;
+  public int a25738;
+  public int a25739;
+  public int a25740;
+  public int a25741;
+  public int a25742;
+  public int a25743;
+  public int a25744;
+  public int a25745;
+  public int a25746;
+  public int a25747;
+  public int a25748;
+  public int a25749;
+  public int a25750;
+  public int a25751;
+  public int a25752;
+  public int a25753;
+  public int a25754;
+  public int a25755;
+  public int a25756;
+  public int a25757;
+  public int a25758;
+  public int a25759;
+  public int a25760;
+  public int a25761;
+  public int a25762;
+  public int a25763;
+  public int a25764;
+  public int a25765;
+  public int a25766;
+  public int a25767;
+  public int a25768;
+  public int a25769;
+  public int a25770;
+  public int a25771;
+  public int a25772;
+  public int a25773;
+  public int a25774;
+  public int a25775;
+  public int a25776;
+  public int a25777;
+  public int a25778;
+  public int a25779;
+  public int a25780;
+  public int a25781;
+  public int a25782;
+  public int a25783;
+  public int a25784;
+  public int a25785;
+  public int a25786;
+  public int a25787;
+  public int a25788;
+  public int a25789;
+  public int a25790;
+  public int a25791;
+  public int a25792;
+  public int a25793;
+  public int a25794;
+  public int a25795;
+  public int a25796;
+  public int a25797;
+  public int a25798;
+  public int a25799;
+  public int a25800;
+  public int a25801;
+  public int a25802;
+  public int a25803;
+  public int a25804;
+  public int a25805;
+  public int a25806;
+  public int a25807;
+  public int a25808;
+  public int a25809;
+  public int a25810;
+  public int a25811;
+  public int a25812;
+  public int a25813;
+  public int a25814;
+  public int a25815;
+  public int a25816;
+  public int a25817;
+  public int a25818;
+  public int a25819;
+  public int a25820;
+  public int a25821;
+  public int a25822;
+  public int a25823;
+  public int a25824;
+  public int a25825;
+  public int a25826;
+  public int a25827;
+  public int a25828;
+  public int a25829;
+  public int a25830;
+  public int a25831;
+  public int a25832;
+  public int a25833;
+  public int a25834;
+  public int a25835;
+  public int a25836;
+  public int a25837;
+  public int a25838;
+  public int a25839;
+  public int a25840;
+  public int a25841;
+  public int a25842;
+  public int a25843;
+  public int a25844;
+  public int a25845;
+  public int a25846;
+  public int a25847;
+  public int a25848;
+  public int a25849;
+  public int a25850;
+  public int a25851;
+  public int a25852;
+  public int a25853;
+  public int a25854;
+  public int a25855;
+  public int a25856;
+  public int a25857;
+  public int a25858;
+  public int a25859;
+  public int a25860;
+  public int a25861;
+  public int a25862;
+  public int a25863;
+  public int a25864;
+  public int a25865;
+  public int a25866;
+  public int a25867;
+  public int a25868;
+  public int a25869;
+  public int a25870;
+  public int a25871;
+  public int a25872;
+  public int a25873;
+  public int a25874;
+  public int a25875;
+  public int a25876;
+  public int a25877;
+  public int a25878;
+  public int a25879;
+  public int a25880;
+  public int a25881;
+  public int a25882;
+  public int a25883;
+  public int a25884;
+  public int a25885;
+  public int a25886;
+  public int a25887;
+  public int a25888;
+  public int a25889;
+  public int a25890;
+  public int a25891;
+  public int a25892;
+  public int a25893;
+  public int a25894;
+  public int a25895;
+  public int a25896;
+  public int a25897;
+  public int a25898;
+  public int a25899;
+  public int a25900;
+  public int a25901;
+  public int a25902;
+  public int a25903;
+  public int a25904;
+  public int a25905;
+  public int a25906;
+  public int a25907;
+  public int a25908;
+  public int a25909;
+  public int a25910;
+  public int a25911;
+  public int a25912;
+  public int a25913;
+  public int a25914;
+  public int a25915;
+  public int a25916;
+  public int a25917;
+  public int a25918;
+  public int a25919;
+  public int a25920;
+  public int a25921;
+  public int a25922;
+  public int a25923;
+  public int a25924;
+  public int a25925;
+  public int a25926;
+  public int a25927;
+  public int a25928;
+  public int a25929;
+  public int a25930;
+  public int a25931;
+  public int a25932;
+  public int a25933;
+  public int a25934;
+  public int a25935;
+  public int a25936;
+  public int a25937;
+  public int a25938;
+  public int a25939;
+  public int a25940;
+  public int a25941;
+  public int a25942;
+  public int a25943;
+  public int a25944;
+  public int a25945;
+  public int a25946;
+  public int a25947;
+  public int a25948;
+  public int a25949;
+  public int a25950;
+  public int a25951;
+  public int a25952;
+  public int a25953;
+  public int a25954;
+  public int a25955;
+  public int a25956;
+  public int a25957;
+  public int a25958;
+  public int a25959;
+  public int a25960;
+  public int a25961;
+  public int a25962;
+  public int a25963;
+  public int a25964;
+  public int a25965;
+  public int a25966;
+  public int a25967;
+  public int a25968;
+  public int a25969;
+  public int a25970;
+  public int a25971;
+  public int a25972;
+  public int a25973;
+  public int a25974;
+  public int a25975;
+  public int a25976;
+  public int a25977;
+  public int a25978;
+  public int a25979;
+  public int a25980;
+  public int a25981;
+  public int a25982;
+  public int a25983;
+  public int a25984;
+  public int a25985;
+  public int a25986;
+  public int a25987;
+  public int a25988;
+  public int a25989;
+  public int a25990;
+  public int a25991;
+  public int a25992;
+  public int a25993;
+  public int a25994;
+  public int a25995;
+  public int a25996;
+  public int a25997;
+  public int a25998;
+  public int a25999;
+  public int a26000;
+  public int a26001;
+  public int a26002;
+  public int a26003;
+  public int a26004;
+  public int a26005;
+  public int a26006;
+  public int a26007;
+  public int a26008;
+  public int a26009;
+  public int a26010;
+  public int a26011;
+  public int a26012;
+  public int a26013;
+  public int a26014;
+  public int a26015;
+  public int a26016;
+  public int a26017;
+  public int a26018;
+  public int a26019;
+  public int a26020;
+  public int a26021;
+  public int a26022;
+  public int a26023;
+  public int a26024;
+  public int a26025;
+  public int a26026;
+  public int a26027;
+  public int a26028;
+  public int a26029;
+  public int a26030;
+  public int a26031;
+  public int a26032;
+  public int a26033;
+  public int a26034;
+  public int a26035;
+  public int a26036;
+  public int a26037;
+  public int a26038;
+  public int a26039;
+  public int a26040;
+  public int a26041;
+  public int a26042;
+  public int a26043;
+  public int a26044;
+  public int a26045;
+  public int a26046;
+  public int a26047;
+  public int a26048;
+  public int a26049;
+  public int a26050;
+  public int a26051;
+  public int a26052;
+  public int a26053;
+  public int a26054;
+  public int a26055;
+  public int a26056;
+  public int a26057;
+  public int a26058;
+  public int a26059;
+  public int a26060;
+  public int a26061;
+  public int a26062;
+  public int a26063;
+  public int a26064;
+  public int a26065;
+  public int a26066;
+  public int a26067;
+  public int a26068;
+  public int a26069;
+  public int a26070;
+  public int a26071;
+  public int a26072;
+  public int a26073;
+  public int a26074;
+  public int a26075;
+  public int a26076;
+  public int a26077;
+  public int a26078;
+  public int a26079;
+  public int a26080;
+  public int a26081;
+  public int a26082;
+  public int a26083;
+  public int a26084;
+  public int a26085;
+  public int a26086;
+  public int a26087;
+  public int a26088;
+  public int a26089;
+  public int a26090;
+  public int a26091;
+  public int a26092;
+  public int a26093;
+  public int a26094;
+  public int a26095;
+  public int a26096;
+  public int a26097;
+  public int a26098;
+  public int a26099;
+  public int a26100;
+  public int a26101;
+  public int a26102;
+  public int a26103;
+  public int a26104;
+  public int a26105;
+  public int a26106;
+  public int a26107;
+  public int a26108;
+  public int a26109;
+  public int a26110;
+  public int a26111;
+  public int a26112;
+  public int a26113;
+  public int a26114;
+  public int a26115;
+  public int a26116;
+  public int a26117;
+  public int a26118;
+  public int a26119;
+  public int a26120;
+  public int a26121;
+  public int a26122;
+  public int a26123;
+  public int a26124;
+  public int a26125;
+  public int a26126;
+  public int a26127;
+  public int a26128;
+  public int a26129;
+  public int a26130;
+  public int a26131;
+  public int a26132;
+  public int a26133;
+  public int a26134;
+  public int a26135;
+  public int a26136;
+  public int a26137;
+  public int a26138;
+  public int a26139;
+  public int a26140;
+  public int a26141;
+  public int a26142;
+  public int a26143;
+  public int a26144;
+  public int a26145;
+  public int a26146;
+  public int a26147;
+  public int a26148;
+  public int a26149;
+  public int a26150;
+  public int a26151;
+  public int a26152;
+  public int a26153;
+  public int a26154;
+  public int a26155;
+  public int a26156;
+  public int a26157;
+  public int a26158;
+  public int a26159;
+  public int a26160;
+  public int a26161;
+  public int a26162;
+  public int a26163;
+  public int a26164;
+  public int a26165;
+  public int a26166;
+  public int a26167;
+  public int a26168;
+  public int a26169;
+  public int a26170;
+  public int a26171;
+  public int a26172;
+  public int a26173;
+  public int a26174;
+  public int a26175;
+  public int a26176;
+  public int a26177;
+  public int a26178;
+  public int a26179;
+  public int a26180;
+  public int a26181;
+  public int a26182;
+  public int a26183;
+  public int a26184;
+  public int a26185;
+  public int a26186;
+  public int a26187;
+  public int a26188;
+  public int a26189;
+  public int a26190;
+  public int a26191;
+  public int a26192;
+  public int a26193;
+  public int a26194;
+  public int a26195;
+  public int a26196;
+  public int a26197;
+  public int a26198;
+  public int a26199;
+  public int a26200;
+  public int a26201;
+  public int a26202;
+  public int a26203;
+  public int a26204;
+  public int a26205;
+  public int a26206;
+  public int a26207;
+  public int a26208;
+  public int a26209;
+  public int a26210;
+  public int a26211;
+  public int a26212;
+  public int a26213;
+  public int a26214;
+  public int a26215;
+  public int a26216;
+  public int a26217;
+  public int a26218;
+  public int a26219;
+  public int a26220;
+  public int a26221;
+  public int a26222;
+  public int a26223;
+  public int a26224;
+  public int a26225;
+  public int a26226;
+  public int a26227;
+  public int a26228;
+  public int a26229;
+  public int a26230;
+  public int a26231;
+  public int a26232;
+  public int a26233;
+  public int a26234;
+  public int a26235;
+  public int a26236;
+  public int a26237;
+  public int a26238;
+  public int a26239;
+  public int a26240;
+  public int a26241;
+  public int a26242;
+  public int a26243;
+  public int a26244;
+  public int a26245;
+  public int a26246;
+  public int a26247;
+  public int a26248;
+  public int a26249;
+  public int a26250;
+  public int a26251;
+  public int a26252;
+  public int a26253;
+  public int a26254;
+  public int a26255;
+  public int a26256;
+  public int a26257;
+  public int a26258;
+  public int a26259;
+  public int a26260;
+  public int a26261;
+  public int a26262;
+  public int a26263;
+  public int a26264;
+  public int a26265;
+  public int a26266;
+  public int a26267;
+  public int a26268;
+  public int a26269;
+  public int a26270;
+  public int a26271;
+  public int a26272;
+  public int a26273;
+  public int a26274;
+  public int a26275;
+  public int a26276;
+  public int a26277;
+  public int a26278;
+  public int a26279;
+  public int a26280;
+  public int a26281;
+  public int a26282;
+  public int a26283;
+  public int a26284;
+  public int a26285;
+  public int a26286;
+  public int a26287;
+  public int a26288;
+  public int a26289;
+  public int a26290;
+  public int a26291;
+  public int a26292;
+  public int a26293;
+  public int a26294;
+  public int a26295;
+  public int a26296;
+  public int a26297;
+  public int a26298;
+  public int a26299;
+  public int a26300;
+  public int a26301;
+  public int a26302;
+  public int a26303;
+  public int a26304;
+  public int a26305;
+  public int a26306;
+  public int a26307;
+  public int a26308;
+  public int a26309;
+  public int a26310;
+  public int a26311;
+  public int a26312;
+  public int a26313;
+  public int a26314;
+  public int a26315;
+  public int a26316;
+  public int a26317;
+  public int a26318;
+  public int a26319;
+  public int a26320;
+  public int a26321;
+  public int a26322;
+  public int a26323;
+  public int a26324;
+  public int a26325;
+  public int a26326;
+  public int a26327;
+  public int a26328;
+  public int a26329;
+  public int a26330;
+  public int a26331;
+  public int a26332;
+  public int a26333;
+  public int a26334;
+  public int a26335;
+  public int a26336;
+  public int a26337;
+  public int a26338;
+  public int a26339;
+  public int a26340;
+  public int a26341;
+  public int a26342;
+  public int a26343;
+  public int a26344;
+  public int a26345;
+  public int a26346;
+  public int a26347;
+  public int a26348;
+  public int a26349;
+  public int a26350;
+  public int a26351;
+  public int a26352;
+  public int a26353;
+  public int a26354;
+  public int a26355;
+  public int a26356;
+  public int a26357;
+  public int a26358;
+  public int a26359;
+  public int a26360;
+  public int a26361;
+  public int a26362;
+  public int a26363;
+  public int a26364;
+  public int a26365;
+  public int a26366;
+  public int a26367;
+  public int a26368;
+  public int a26369;
+  public int a26370;
+  public int a26371;
+  public int a26372;
+  public int a26373;
+  public int a26374;
+  public int a26375;
+  public int a26376;
+  public int a26377;
+  public int a26378;
+  public int a26379;
+  public int a26380;
+  public int a26381;
+  public int a26382;
+  public int a26383;
+  public int a26384;
+  public int a26385;
+  public int a26386;
+  public int a26387;
+  public int a26388;
+  public int a26389;
+  public int a26390;
+  public int a26391;
+  public int a26392;
+  public int a26393;
+  public int a26394;
+  public int a26395;
+  public int a26396;
+  public int a26397;
+  public int a26398;
+  public int a26399;
+  public int a26400;
+  public int a26401;
+  public int a26402;
+  public int a26403;
+  public int a26404;
+  public int a26405;
+  public int a26406;
+  public int a26407;
+  public int a26408;
+  public int a26409;
+  public int a26410;
+  public int a26411;
+  public int a26412;
+  public int a26413;
+  public int a26414;
+  public int a26415;
+  public int a26416;
+  public int a26417;
+  public int a26418;
+  public int a26419;
+  public int a26420;
+  public int a26421;
+  public int a26422;
+  public int a26423;
+  public int a26424;
+  public int a26425;
+  public int a26426;
+  public int a26427;
+  public int a26428;
+  public int a26429;
+  public int a26430;
+  public int a26431;
+  public int a26432;
+  public int a26433;
+  public int a26434;
+  public int a26435;
+  public int a26436;
+  public int a26437;
+  public int a26438;
+  public int a26439;
+  public int a26440;
+  public int a26441;
+  public int a26442;
+  public int a26443;
+  public int a26444;
+  public int a26445;
+  public int a26446;
+  public int a26447;
+  public int a26448;
+  public int a26449;
+  public int a26450;
+  public int a26451;
+  public int a26452;
+  public int a26453;
+  public int a26454;
+  public int a26455;
+  public int a26456;
+  public int a26457;
+  public int a26458;
+  public int a26459;
+  public int a26460;
+  public int a26461;
+  public int a26462;
+  public int a26463;
+  public int a26464;
+  public int a26465;
+  public int a26466;
+  public int a26467;
+  public int a26468;
+  public int a26469;
+  public int a26470;
+  public int a26471;
+  public int a26472;
+  public int a26473;
+  public int a26474;
+  public int a26475;
+  public int a26476;
+  public int a26477;
+  public int a26478;
+  public int a26479;
+  public int a26480;
+  public int a26481;
+  public int a26482;
+  public int a26483;
+  public int a26484;
+  public int a26485;
+  public int a26486;
+  public int a26487;
+  public int a26488;
+  public int a26489;
+  public int a26490;
+  public int a26491;
+  public int a26492;
+  public int a26493;
+  public int a26494;
+  public int a26495;
+  public int a26496;
+  public int a26497;
+  public int a26498;
+  public int a26499;
+  public int a26500;
+  public int a26501;
+  public int a26502;
+  public int a26503;
+  public int a26504;
+  public int a26505;
+  public int a26506;
+  public int a26507;
+  public int a26508;
+  public int a26509;
+  public int a26510;
+  public int a26511;
+  public int a26512;
+  public int a26513;
+  public int a26514;
+  public int a26515;
+  public int a26516;
+  public int a26517;
+  public int a26518;
+  public int a26519;
+  public int a26520;
+  public int a26521;
+  public int a26522;
+  public int a26523;
+  public int a26524;
+  public int a26525;
+  public int a26526;
+  public int a26527;
+  public int a26528;
+  public int a26529;
+  public int a26530;
+  public int a26531;
+  public int a26532;
+  public int a26533;
+  public int a26534;
+  public int a26535;
+  public int a26536;
+  public int a26537;
+  public int a26538;
+  public int a26539;
+  public int a26540;
+  public int a26541;
+  public int a26542;
+  public int a26543;
+  public int a26544;
+  public int a26545;
+  public int a26546;
+  public int a26547;
+  public int a26548;
+  public int a26549;
+  public int a26550;
+  public int a26551;
+  public int a26552;
+  public int a26553;
+  public int a26554;
+  public int a26555;
+  public int a26556;
+  public int a26557;
+  public int a26558;
+  public int a26559;
+  public int a26560;
+  public int a26561;
+  public int a26562;
+  public int a26563;
+  public int a26564;
+  public int a26565;
+  public int a26566;
+  public int a26567;
+  public int a26568;
+  public int a26569;
+  public int a26570;
+  public int a26571;
+  public int a26572;
+  public int a26573;
+  public int a26574;
+  public int a26575;
+  public int a26576;
+  public int a26577;
+  public int a26578;
+  public int a26579;
+  public int a26580;
+  public int a26581;
+  public int a26582;
+  public int a26583;
+  public int a26584;
+  public int a26585;
+  public int a26586;
+  public int a26587;
+  public int a26588;
+  public int a26589;
+  public int a26590;
+  public int a26591;
+  public int a26592;
+  public int a26593;
+  public int a26594;
+  public int a26595;
+  public int a26596;
+  public int a26597;
+  public int a26598;
+  public int a26599;
+  public int a26600;
+  public int a26601;
+  public int a26602;
+  public int a26603;
+  public int a26604;
+  public int a26605;
+  public int a26606;
+  public int a26607;
+  public int a26608;
+  public int a26609;
+  public int a26610;
+  public int a26611;
+  public int a26612;
+  public int a26613;
+  public int a26614;
+  public int a26615;
+  public int a26616;
+  public int a26617;
+  public int a26618;
+  public int a26619;
+  public int a26620;
+  public int a26621;
+  public int a26622;
+  public int a26623;
+  public int a26624;
+  public int a26625;
+  public int a26626;
+  public int a26627;
+  public int a26628;
+  public int a26629;
+  public int a26630;
+  public int a26631;
+  public int a26632;
+  public int a26633;
+  public int a26634;
+  public int a26635;
+  public int a26636;
+  public int a26637;
+  public int a26638;
+  public int a26639;
+  public int a26640;
+  public int a26641;
+  public int a26642;
+  public int a26643;
+  public int a26644;
+  public int a26645;
+  public int a26646;
+  public int a26647;
+  public int a26648;
+  public int a26649;
+  public int a26650;
+  public int a26651;
+  public int a26652;
+  public int a26653;
+  public int a26654;
+  public int a26655;
+  public int a26656;
+  public int a26657;
+  public int a26658;
+  public int a26659;
+  public int a26660;
+  public int a26661;
+  public int a26662;
+  public int a26663;
+  public int a26664;
+  public int a26665;
+  public int a26666;
+  public int a26667;
+  public int a26668;
+  public int a26669;
+  public int a26670;
+  public int a26671;
+  public int a26672;
+  public int a26673;
+  public int a26674;
+  public int a26675;
+  public int a26676;
+  public int a26677;
+  public int a26678;
+  public int a26679;
+  public int a26680;
+  public int a26681;
+  public int a26682;
+  public int a26683;
+  public int a26684;
+  public int a26685;
+  public int a26686;
+  public int a26687;
+  public int a26688;
+  public int a26689;
+  public int a26690;
+  public int a26691;
+  public int a26692;
+  public int a26693;
+  public int a26694;
+  public int a26695;
+  public int a26696;
+  public int a26697;
+  public int a26698;
+  public int a26699;
+  public int a26700;
+  public int a26701;
+  public int a26702;
+  public int a26703;
+  public int a26704;
+  public int a26705;
+  public int a26706;
+  public int a26707;
+  public int a26708;
+  public int a26709;
+  public int a26710;
+  public int a26711;
+  public int a26712;
+  public int a26713;
+  public int a26714;
+  public int a26715;
+  public int a26716;
+  public int a26717;
+  public int a26718;
+  public int a26719;
+  public int a26720;
+  public int a26721;
+  public int a26722;
+  public int a26723;
+  public int a26724;
+  public int a26725;
+  public int a26726;
+  public int a26727;
+  public int a26728;
+  public int a26729;
+  public int a26730;
+  public int a26731;
+  public int a26732;
+  public int a26733;
+  public int a26734;
+  public int a26735;
+  public int a26736;
+  public int a26737;
+  public int a26738;
+  public int a26739;
+  public int a26740;
+  public int a26741;
+  public int a26742;
+  public int a26743;
+  public int a26744;
+  public int a26745;
+  public int a26746;
+  public int a26747;
+  public int a26748;
+  public int a26749;
+  public int a26750;
+  public int a26751;
+  public int a26752;
+  public int a26753;
+  public int a26754;
+  public int a26755;
+  public int a26756;
+  public int a26757;
+  public int a26758;
+  public int a26759;
+  public int a26760;
+  public int a26761;
+  public int a26762;
+  public int a26763;
+  public int a26764;
+  public int a26765;
+  public int a26766;
+  public int a26767;
+  public int a26768;
+  public int a26769;
+  public int a26770;
+  public int a26771;
+  public int a26772;
+  public int a26773;
+  public int a26774;
+  public int a26775;
+  public int a26776;
+  public int a26777;
+  public int a26778;
+  public int a26779;
+  public int a26780;
+  public int a26781;
+  public int a26782;
+  public int a26783;
+  public int a26784;
+  public int a26785;
+  public int a26786;
+  public int a26787;
+  public int a26788;
+  public int a26789;
+  public int a26790;
+  public int a26791;
+  public int a26792;
+  public int a26793;
+  public int a26794;
+  public int a26795;
+  public int a26796;
+  public int a26797;
+  public int a26798;
+  public int a26799;
+  public int a26800;
+  public int a26801;
+  public int a26802;
+  public int a26803;
+  public int a26804;
+  public int a26805;
+  public int a26806;
+  public int a26807;
+  public int a26808;
+  public int a26809;
+  public int a26810;
+  public int a26811;
+  public int a26812;
+  public int a26813;
+  public int a26814;
+  public int a26815;
+  public int a26816;
+  public int a26817;
+  public int a26818;
+  public int a26819;
+  public int a26820;
+  public int a26821;
+  public int a26822;
+  public int a26823;
+  public int a26824;
+  public int a26825;
+  public int a26826;
+  public int a26827;
+  public int a26828;
+  public int a26829;
+  public int a26830;
+  public int a26831;
+  public int a26832;
+  public int a26833;
+  public int a26834;
+  public int a26835;
+  public int a26836;
+  public int a26837;
+  public int a26838;
+  public int a26839;
+  public int a26840;
+  public int a26841;
+  public int a26842;
+  public int a26843;
+  public int a26844;
+  public int a26845;
+  public int a26846;
+  public int a26847;
+  public int a26848;
+  public int a26849;
+  public int a26850;
+  public int a26851;
+  public int a26852;
+  public int a26853;
+  public int a26854;
+  public int a26855;
+  public int a26856;
+  public int a26857;
+  public int a26858;
+  public int a26859;
+  public int a26860;
+  public int a26861;
+  public int a26862;
+  public int a26863;
+  public int a26864;
+  public int a26865;
+  public int a26866;
+  public int a26867;
+  public int a26868;
+  public int a26869;
+  public int a26870;
+  public int a26871;
+  public int a26872;
+  public int a26873;
+  public int a26874;
+  public int a26875;
+  public int a26876;
+  public int a26877;
+  public int a26878;
+  public int a26879;
+  public int a26880;
+  public int a26881;
+  public int a26882;
+  public int a26883;
+  public int a26884;
+  public int a26885;
+  public int a26886;
+  public int a26887;
+  public int a26888;
+  public int a26889;
+  public int a26890;
+  public int a26891;
+  public int a26892;
+  public int a26893;
+  public int a26894;
+  public int a26895;
+  public int a26896;
+  public int a26897;
+  public int a26898;
+  public int a26899;
+  public int a26900;
+  public int a26901;
+  public int a26902;
+  public int a26903;
+  public int a26904;
+  public int a26905;
+  public int a26906;
+  public int a26907;
+  public int a26908;
+  public int a26909;
+  public int a26910;
+  public int a26911;
+  public int a26912;
+  public int a26913;
+  public int a26914;
+  public int a26915;
+  public int a26916;
+  public int a26917;
+  public int a26918;
+  public int a26919;
+  public int a26920;
+  public int a26921;
+  public int a26922;
+  public int a26923;
+  public int a26924;
+  public int a26925;
+  public int a26926;
+  public int a26927;
+  public int a26928;
+  public int a26929;
+  public int a26930;
+  public int a26931;
+  public int a26932;
+  public int a26933;
+  public int a26934;
+  public int a26935;
+  public int a26936;
+  public int a26937;
+  public int a26938;
+  public int a26939;
+  public int a26940;
+  public int a26941;
+  public int a26942;
+  public int a26943;
+  public int a26944;
+  public int a26945;
+  public int a26946;
+  public int a26947;
+  public int a26948;
+  public int a26949;
+  public int a26950;
+  public int a26951;
+  public int a26952;
+  public int a26953;
+  public int a26954;
+  public int a26955;
+  public int a26956;
+  public int a26957;
+  public int a26958;
+  public int a26959;
+  public int a26960;
+  public int a26961;
+  public int a26962;
+  public int a26963;
+  public int a26964;
+  public int a26965;
+  public int a26966;
+  public int a26967;
+  public int a26968;
+  public int a26969;
+  public int a26970;
+  public int a26971;
+  public int a26972;
+  public int a26973;
+  public int a26974;
+  public int a26975;
+  public int a26976;
+  public int a26977;
+  public int a26978;
+  public int a26979;
+  public int a26980;
+  public int a26981;
+  public int a26982;
+  public int a26983;
+  public int a26984;
+  public int a26985;
+  public int a26986;
+  public int a26987;
+  public int a26988;
+  public int a26989;
+  public int a26990;
+  public int a26991;
+  public int a26992;
+  public int a26993;
+  public int a26994;
+  public int a26995;
+  public int a26996;
+  public int a26997;
+  public int a26998;
+  public int a26999;
+  public int a27000;
+  public int a27001;
+  public int a27002;
+  public int a27003;
+  public int a27004;
+  public int a27005;
+  public int a27006;
+  public int a27007;
+  public int a27008;
+  public int a27009;
+  public int a27010;
+  public int a27011;
+  public int a27012;
+  public int a27013;
+  public int a27014;
+  public int a27015;
+  public int a27016;
+  public int a27017;
+  public int a27018;
+  public int a27019;
+  public int a27020;
+  public int a27021;
+  public int a27022;
+  public int a27023;
+  public int a27024;
+  public int a27025;
+  public int a27026;
+  public int a27027;
+  public int a27028;
+  public int a27029;
+  public int a27030;
+  public int a27031;
+  public int a27032;
+  public int a27033;
+  public int a27034;
+  public int a27035;
+  public int a27036;
+  public int a27037;
+  public int a27038;
+  public int a27039;
+  public int a27040;
+  public int a27041;
+  public int a27042;
+  public int a27043;
+  public int a27044;
+  public int a27045;
+  public int a27046;
+  public int a27047;
+  public int a27048;
+  public int a27049;
+  public int a27050;
+  public int a27051;
+  public int a27052;
+  public int a27053;
+  public int a27054;
+  public int a27055;
+  public int a27056;
+  public int a27057;
+  public int a27058;
+  public int a27059;
+  public int a27060;
+  public int a27061;
+  public int a27062;
+  public int a27063;
+  public int a27064;
+  public int a27065;
+  public int a27066;
+  public int a27067;
+  public int a27068;
+  public int a27069;
+  public int a27070;
+  public int a27071;
+  public int a27072;
+  public int a27073;
+  public int a27074;
+  public int a27075;
+  public int a27076;
+  public int a27077;
+  public int a27078;
+  public int a27079;
+  public int a27080;
+  public int a27081;
+  public int a27082;
+  public int a27083;
+  public int a27084;
+  public int a27085;
+  public int a27086;
+  public int a27087;
+  public int a27088;
+  public int a27089;
+  public int a27090;
+  public int a27091;
+  public int a27092;
+  public int a27093;
+  public int a27094;
+  public int a27095;
+  public int a27096;
+  public int a27097;
+  public int a27098;
+  public int a27099;
+  public int a27100;
+  public int a27101;
+  public int a27102;
+  public int a27103;
+  public int a27104;
+  public int a27105;
+  public int a27106;
+  public int a27107;
+  public int a27108;
+  public int a27109;
+  public int a27110;
+  public int a27111;
+  public int a27112;
+  public int a27113;
+  public int a27114;
+  public int a27115;
+  public int a27116;
+  public int a27117;
+  public int a27118;
+  public int a27119;
+  public int a27120;
+  public int a27121;
+  public int a27122;
+  public int a27123;
+  public int a27124;
+  public int a27125;
+  public int a27126;
+  public int a27127;
+  public int a27128;
+  public int a27129;
+  public int a27130;
+  public int a27131;
+  public int a27132;
+  public int a27133;
+  public int a27134;
+  public int a27135;
+  public int a27136;
+  public int a27137;
+  public int a27138;
+  public int a27139;
+  public int a27140;
+  public int a27141;
+  public int a27142;
+  public int a27143;
+  public int a27144;
+  public int a27145;
+  public int a27146;
+  public int a27147;
+  public int a27148;
+  public int a27149;
+  public int a27150;
+  public int a27151;
+  public int a27152;
+  public int a27153;
+  public int a27154;
+  public int a27155;
+  public int a27156;
+  public int a27157;
+  public int a27158;
+  public int a27159;
+  public int a27160;
+  public int a27161;
+  public int a27162;
+  public int a27163;
+  public int a27164;
+  public int a27165;
+  public int a27166;
+  public int a27167;
+  public int a27168;
+  public int a27169;
+  public int a27170;
+  public int a27171;
+  public int a27172;
+  public int a27173;
+  public int a27174;
+  public int a27175;
+  public int a27176;
+  public int a27177;
+  public int a27178;
+  public int a27179;
+  public int a27180;
+  public int a27181;
+  public int a27182;
+  public int a27183;
+  public int a27184;
+  public int a27185;
+  public int a27186;
+  public int a27187;
+  public int a27188;
+  public int a27189;
+  public int a27190;
+  public int a27191;
+  public int a27192;
+  public int a27193;
+  public int a27194;
+  public int a27195;
+  public int a27196;
+  public int a27197;
+  public int a27198;
+  public int a27199;
+  public int a27200;
+  public int a27201;
+  public int a27202;
+  public int a27203;
+  public int a27204;
+  public int a27205;
+  public int a27206;
+  public int a27207;
+  public int a27208;
+  public int a27209;
+  public int a27210;
+  public int a27211;
+  public int a27212;
+  public int a27213;
+  public int a27214;
+  public int a27215;
+  public int a27216;
+  public int a27217;
+  public int a27218;
+  public int a27219;
+  public int a27220;
+  public int a27221;
+  public int a27222;
+  public int a27223;
+  public int a27224;
+  public int a27225;
+  public int a27226;
+  public int a27227;
+  public int a27228;
+  public int a27229;
+  public int a27230;
+  public int a27231;
+  public int a27232;
+  public int a27233;
+  public int a27234;
+  public int a27235;
+  public int a27236;
+  public int a27237;
+  public int a27238;
+  public int a27239;
+  public int a27240;
+  public int a27241;
+  public int a27242;
+  public int a27243;
+  public int a27244;
+  public int a27245;
+  public int a27246;
+  public int a27247;
+  public int a27248;
+  public int a27249;
+  public int a27250;
+  public int a27251;
+  public int a27252;
+  public int a27253;
+  public int a27254;
+  public int a27255;
+  public int a27256;
+  public int a27257;
+  public int a27258;
+  public int a27259;
+  public int a27260;
+  public int a27261;
+  public int a27262;
+  public int a27263;
+  public int a27264;
+  public int a27265;
+  public int a27266;
+  public int a27267;
+  public int a27268;
+  public int a27269;
+  public int a27270;
+  public int a27271;
+  public int a27272;
+  public int a27273;
+  public int a27274;
+  public int a27275;
+  public int a27276;
+  public int a27277;
+  public int a27278;
+  public int a27279;
+  public int a27280;
+  public int a27281;
+  public int a27282;
+  public int a27283;
+  public int a27284;
+  public int a27285;
+  public int a27286;
+  public int a27287;
+  public int a27288;
+  public int a27289;
+  public int a27290;
+  public int a27291;
+  public int a27292;
+  public int a27293;
+  public int a27294;
+  public int a27295;
+  public int a27296;
+  public int a27297;
+  public int a27298;
+  public int a27299;
+  public int a27300;
+  public int a27301;
+  public int a27302;
+  public int a27303;
+  public int a27304;
+  public int a27305;
+  public int a27306;
+  public int a27307;
+  public int a27308;
+  public int a27309;
+  public int a27310;
+  public int a27311;
+  public int a27312;
+  public int a27313;
+  public int a27314;
+  public int a27315;
+  public int a27316;
+  public int a27317;
+  public int a27318;
+  public int a27319;
+  public int a27320;
+  public int a27321;
+  public int a27322;
+  public int a27323;
+  public int a27324;
+  public int a27325;
+  public int a27326;
+  public int a27327;
+  public int a27328;
+  public int a27329;
+  public int a27330;
+  public int a27331;
+  public int a27332;
+  public int a27333;
+  public int a27334;
+  public int a27335;
+  public int a27336;
+  public int a27337;
+  public int a27338;
+  public int a27339;
+  public int a27340;
+  public int a27341;
+  public int a27342;
+  public int a27343;
+  public int a27344;
+  public int a27345;
+  public int a27346;
+  public int a27347;
+  public int a27348;
+  public int a27349;
+  public int a27350;
+  public int a27351;
+  public int a27352;
+  public int a27353;
+  public int a27354;
+  public int a27355;
+  public int a27356;
+  public int a27357;
+  public int a27358;
+  public int a27359;
+  public int a27360;
+  public int a27361;
+  public int a27362;
+  public int a27363;
+  public int a27364;
+  public int a27365;
+  public int a27366;
+  public int a27367;
+  public int a27368;
+  public int a27369;
+  public int a27370;
+  public int a27371;
+  public int a27372;
+  public int a27373;
+  public int a27374;
+  public int a27375;
+  public int a27376;
+  public int a27377;
+  public int a27378;
+  public int a27379;
+  public int a27380;
+  public int a27381;
+  public int a27382;
+  public int a27383;
+  public int a27384;
+  public int a27385;
+  public int a27386;
+  public int a27387;
+  public int a27388;
+  public int a27389;
+  public int a27390;
+  public int a27391;
+  public int a27392;
+  public int a27393;
+  public int a27394;
+  public int a27395;
+  public int a27396;
+  public int a27397;
+  public int a27398;
+  public int a27399;
+  public int a27400;
+  public int a27401;
+  public int a27402;
+  public int a27403;
+  public int a27404;
+  public int a27405;
+  public int a27406;
+  public int a27407;
+  public int a27408;
+  public int a27409;
+  public int a27410;
+  public int a27411;
+  public int a27412;
+  public int a27413;
+  public int a27414;
+  public int a27415;
+  public int a27416;
+  public int a27417;
+  public int a27418;
+  public int a27419;
+  public int a27420;
+  public int a27421;
+  public int a27422;
+  public int a27423;
+  public int a27424;
+  public int a27425;
+  public int a27426;
+  public int a27427;
+  public int a27428;
+  public int a27429;
+  public int a27430;
+  public int a27431;
+  public int a27432;
+  public int a27433;
+  public int a27434;
+  public int a27435;
+  public int a27436;
+  public int a27437;
+  public int a27438;
+  public int a27439;
+  public int a27440;
+  public int a27441;
+  public int a27442;
+  public int a27443;
+  public int a27444;
+  public int a27445;
+  public int a27446;
+  public int a27447;
+  public int a27448;
+  public int a27449;
+  public int a27450;
+  public int a27451;
+  public int a27452;
+  public int a27453;
+  public int a27454;
+  public int a27455;
+  public int a27456;
+  public int a27457;
+  public int a27458;
+  public int a27459;
+  public int a27460;
+  public int a27461;
+  public int a27462;
+  public int a27463;
+  public int a27464;
+  public int a27465;
+  public int a27466;
+  public int a27467;
+  public int a27468;
+  public int a27469;
+  public int a27470;
+  public int a27471;
+  public int a27472;
+  public int a27473;
+  public int a27474;
+  public int a27475;
+  public int a27476;
+  public int a27477;
+  public int a27478;
+  public int a27479;
+  public int a27480;
+  public int a27481;
+  public int a27482;
+  public int a27483;
+  public int a27484;
+  public int a27485;
+  public int a27486;
+  public int a27487;
+  public int a27488;
+  public int a27489;
+  public int a27490;
+  public int a27491;
+  public int a27492;
+  public int a27493;
+  public int a27494;
+  public int a27495;
+  public int a27496;
+  public int a27497;
+  public int a27498;
+  public int a27499;
+  public int a27500;
+  public int a27501;
+  public int a27502;
+  public int a27503;
+  public int a27504;
+  public int a27505;
+  public int a27506;
+  public int a27507;
+  public int a27508;
+  public int a27509;
+  public int a27510;
+  public int a27511;
+  public int a27512;
+  public int a27513;
+  public int a27514;
+  public int a27515;
+  public int a27516;
+  public int a27517;
+  public int a27518;
+  public int a27519;
+  public int a27520;
+  public int a27521;
+  public int a27522;
+  public int a27523;
+  public int a27524;
+  public int a27525;
+  public int a27526;
+  public int a27527;
+  public int a27528;
+  public int a27529;
+  public int a27530;
+  public int a27531;
+  public int a27532;
+  public int a27533;
+  public int a27534;
+  public int a27535;
+  public int a27536;
+  public int a27537;
+  public int a27538;
+  public int a27539;
+  public int a27540;
+  public int a27541;
+  public int a27542;
+  public int a27543;
+  public int a27544;
+  public int a27545;
+  public int a27546;
+  public int a27547;
+  public int a27548;
+  public int a27549;
+  public int a27550;
+  public int a27551;
+  public int a27552;
+  public int a27553;
+  public int a27554;
+  public int a27555;
+  public int a27556;
+  public int a27557;
+  public int a27558;
+  public int a27559;
+  public int a27560;
+  public int a27561;
+  public int a27562;
+  public int a27563;
+  public int a27564;
+  public int a27565;
+  public int a27566;
+  public int a27567;
+  public int a27568;
+  public int a27569;
+  public int a27570;
+  public int a27571;
+  public int a27572;
+  public int a27573;
+  public int a27574;
+  public int a27575;
+  public int a27576;
+  public int a27577;
+  public int a27578;
+  public int a27579;
+  public int a27580;
+  public int a27581;
+  public int a27582;
+  public int a27583;
+  public int a27584;
+  public int a27585;
+  public int a27586;
+  public int a27587;
+  public int a27588;
+  public int a27589;
+  public int a27590;
+  public int a27591;
+  public int a27592;
+  public int a27593;
+  public int a27594;
+  public int a27595;
+  public int a27596;
+  public int a27597;
+  public int a27598;
+  public int a27599;
+  public int a27600;
+  public int a27601;
+  public int a27602;
+  public int a27603;
+  public int a27604;
+  public int a27605;
+  public int a27606;
+  public int a27607;
+  public int a27608;
+  public int a27609;
+  public int a27610;
+  public int a27611;
+  public int a27612;
+  public int a27613;
+  public int a27614;
+  public int a27615;
+  public int a27616;
+  public int a27617;
+  public int a27618;
+  public int a27619;
+  public int a27620;
+  public int a27621;
+  public int a27622;
+  public int a27623;
+  public int a27624;
+  public int a27625;
+  public int a27626;
+  public int a27627;
+  public int a27628;
+  public int a27629;
+  public int a27630;
+  public int a27631;
+  public int a27632;
+  public int a27633;
+  public int a27634;
+  public int a27635;
+  public int a27636;
+  public int a27637;
+  public int a27638;
+  public int a27639;
+  public int a27640;
+  public int a27641;
+  public int a27642;
+  public int a27643;
+  public int a27644;
+  public int a27645;
+  public int a27646;
+  public int a27647;
+  public int a27648;
+  public int a27649;
+  public int a27650;
+  public int a27651;
+  public int a27652;
+  public int a27653;
+  public int a27654;
+  public int a27655;
+  public int a27656;
+  public int a27657;
+  public int a27658;
+  public int a27659;
+  public int a27660;
+  public int a27661;
+  public int a27662;
+  public int a27663;
+  public int a27664;
+  public int a27665;
+  public int a27666;
+  public int a27667;
+  public int a27668;
+  public int a27669;
+  public int a27670;
+  public int a27671;
+  public int a27672;
+  public int a27673;
+  public int a27674;
+  public int a27675;
+  public int a27676;
+  public int a27677;
+  public int a27678;
+  public int a27679;
+  public int a27680;
+  public int a27681;
+  public int a27682;
+  public int a27683;
+  public int a27684;
+  public int a27685;
+  public int a27686;
+  public int a27687;
+  public int a27688;
+  public int a27689;
+  public int a27690;
+  public int a27691;
+  public int a27692;
+  public int a27693;
+  public int a27694;
+  public int a27695;
+  public int a27696;
+  public int a27697;
+  public int a27698;
+  public int a27699;
+  public int a27700;
+  public int a27701;
+  public int a27702;
+  public int a27703;
+  public int a27704;
+  public int a27705;
+  public int a27706;
+  public int a27707;
+  public int a27708;
+  public int a27709;
+  public int a27710;
+  public int a27711;
+  public int a27712;
+  public int a27713;
+  public int a27714;
+  public int a27715;
+  public int a27716;
+  public int a27717;
+  public int a27718;
+  public int a27719;
+  public int a27720;
+  public int a27721;
+  public int a27722;
+  public int a27723;
+  public int a27724;
+  public int a27725;
+  public int a27726;
+  public int a27727;
+  public int a27728;
+  public int a27729;
+  public int a27730;
+  public int a27731;
+  public int a27732;
+  public int a27733;
+  public int a27734;
+  public int a27735;
+  public int a27736;
+  public int a27737;
+  public int a27738;
+  public int a27739;
+  public int a27740;
+  public int a27741;
+  public int a27742;
+  public int a27743;
+  public int a27744;
+  public int a27745;
+  public int a27746;
+  public int a27747;
+  public int a27748;
+  public int a27749;
+  public int a27750;
+  public int a27751;
+  public int a27752;
+  public int a27753;
+  public int a27754;
+  public int a27755;
+  public int a27756;
+  public int a27757;
+  public int a27758;
+  public int a27759;
+  public int a27760;
+  public int a27761;
+  public int a27762;
+  public int a27763;
+  public int a27764;
+  public int a27765;
+  public int a27766;
+  public int a27767;
+  public int a27768;
+  public int a27769;
+  public int a27770;
+  public int a27771;
+  public int a27772;
+  public int a27773;
+  public int a27774;
+  public int a27775;
+  public int a27776;
+  public int a27777;
+  public int a27778;
+  public int a27779;
+  public int a27780;
+  public int a27781;
+  public int a27782;
+  public int a27783;
+  public int a27784;
+  public int a27785;
+  public int a27786;
+  public int a27787;
+  public int a27788;
+  public int a27789;
+  public int a27790;
+  public int a27791;
+  public int a27792;
+  public int a27793;
+  public int a27794;
+  public int a27795;
+  public int a27796;
+  public int a27797;
+  public int a27798;
+  public int a27799;
+  public int a27800;
+  public int a27801;
+  public int a27802;
+  public int a27803;
+  public int a27804;
+  public int a27805;
+  public int a27806;
+  public int a27807;
+  public int a27808;
+  public int a27809;
+  public int a27810;
+  public int a27811;
+  public int a27812;
+  public int a27813;
+  public int a27814;
+  public int a27815;
+  public int a27816;
+  public int a27817;
+  public int a27818;
+  public int a27819;
+  public int a27820;
+  public int a27821;
+  public int a27822;
+  public int a27823;
+  public int a27824;
+  public int a27825;
+  public int a27826;
+  public int a27827;
+  public int a27828;
+  public int a27829;
+  public int a27830;
+  public int a27831;
+  public int a27832;
+  public int a27833;
+  public int a27834;
+  public int a27835;
+  public int a27836;
+  public int a27837;
+  public int a27838;
+  public int a27839;
+  public int a27840;
+  public int a27841;
+  public int a27842;
+  public int a27843;
+  public int a27844;
+  public int a27845;
+  public int a27846;
+  public int a27847;
+  public int a27848;
+  public int a27849;
+  public int a27850;
+  public int a27851;
+  public int a27852;
+  public int a27853;
+  public int a27854;
+  public int a27855;
+  public int a27856;
+  public int a27857;
+  public int a27858;
+  public int a27859;
+  public int a27860;
+  public int a27861;
+  public int a27862;
+  public int a27863;
+  public int a27864;
+  public int a27865;
+  public int a27866;
+  public int a27867;
+  public int a27868;
+  public int a27869;
+  public int a27870;
+  public int a27871;
+  public int a27872;
+  public int a27873;
+  public int a27874;
+  public int a27875;
+  public int a27876;
+  public int a27877;
+  public int a27878;
+  public int a27879;
+  public int a27880;
+  public int a27881;
+  public int a27882;
+  public int a27883;
+  public int a27884;
+  public int a27885;
+  public int a27886;
+  public int a27887;
+  public int a27888;
+  public int a27889;
+  public int a27890;
+  public int a27891;
+  public int a27892;
+  public int a27893;
+  public int a27894;
+  public int a27895;
+  public int a27896;
+  public int a27897;
+  public int a27898;
+  public int a27899;
+  public int a27900;
+  public int a27901;
+  public int a27902;
+  public int a27903;
+  public int a27904;
+  public int a27905;
+  public int a27906;
+  public int a27907;
+  public int a27908;
+  public int a27909;
+  public int a27910;
+  public int a27911;
+  public int a27912;
+  public int a27913;
+  public int a27914;
+  public int a27915;
+  public int a27916;
+  public int a27917;
+  public int a27918;
+  public int a27919;
+  public int a27920;
+  public int a27921;
+  public int a27922;
+  public int a27923;
+  public int a27924;
+  public int a27925;
+  public int a27926;
+  public int a27927;
+  public int a27928;
+  public int a27929;
+  public int a27930;
+  public int a27931;
+  public int a27932;
+  public int a27933;
+  public int a27934;
+  public int a27935;
+  public int a27936;
+  public int a27937;
+  public int a27938;
+  public int a27939;
+  public int a27940;
+  public int a27941;
+  public int a27942;
+  public int a27943;
+  public int a27944;
+  public int a27945;
+  public int a27946;
+  public int a27947;
+  public int a27948;
+  public int a27949;
+  public int a27950;
+  public int a27951;
+  public int a27952;
+  public int a27953;
+  public int a27954;
+  public int a27955;
+  public int a27956;
+  public int a27957;
+  public int a27958;
+  public int a27959;
+  public int a27960;
+  public int a27961;
+  public int a27962;
+  public int a27963;
+  public int a27964;
+  public int a27965;
+  public int a27966;
+  public int a27967;
+  public int a27968;
+  public int a27969;
+  public int a27970;
+  public int a27971;
+  public int a27972;
+  public int a27973;
+  public int a27974;
+  public int a27975;
+  public int a27976;
+  public int a27977;
+  public int a27978;
+  public int a27979;
+  public int a27980;
+  public int a27981;
+  public int a27982;
+  public int a27983;
+  public int a27984;
+  public int a27985;
+  public int a27986;
+  public int a27987;
+  public int a27988;
+  public int a27989;
+  public int a27990;
+  public int a27991;
+  public int a27992;
+  public int a27993;
+  public int a27994;
+  public int a27995;
+  public int a27996;
+  public int a27997;
+  public int a27998;
+  public int a27999;
+  public int a28000;
+  public int a28001;
+  public int a28002;
+  public int a28003;
+  public int a28004;
+  public int a28005;
+  public int a28006;
+  public int a28007;
+  public int a28008;
+  public int a28009;
+  public int a28010;
+  public int a28011;
+  public int a28012;
+  public int a28013;
+  public int a28014;
+  public int a28015;
+  public int a28016;
+  public int a28017;
+  public int a28018;
+  public int a28019;
+  public int a28020;
+  public int a28021;
+  public int a28022;
+  public int a28023;
+  public int a28024;
+  public int a28025;
+  public int a28026;
+  public int a28027;
+  public int a28028;
+  public int a28029;
+  public int a28030;
+  public int a28031;
+  public int a28032;
+  public int a28033;
+  public int a28034;
+  public int a28035;
+  public int a28036;
+  public int a28037;
+  public int a28038;
+  public int a28039;
+  public int a28040;
+  public int a28041;
+  public int a28042;
+  public int a28043;
+  public int a28044;
+  public int a28045;
+  public int a28046;
+  public int a28047;
+  public int a28048;
+  public int a28049;
+  public int a28050;
+  public int a28051;
+  public int a28052;
+  public int a28053;
+  public int a28054;
+  public int a28055;
+  public int a28056;
+  public int a28057;
+  public int a28058;
+  public int a28059;
+  public int a28060;
+  public int a28061;
+  public int a28062;
+  public int a28063;
+  public int a28064;
+  public int a28065;
+  public int a28066;
+  public int a28067;
+  public int a28068;
+  public int a28069;
+  public int a28070;
+  public int a28071;
+  public int a28072;
+  public int a28073;
+  public int a28074;
+  public int a28075;
+  public int a28076;
+  public int a28077;
+  public int a28078;
+  public int a28079;
+  public int a28080;
+  public int a28081;
+  public int a28082;
+  public int a28083;
+  public int a28084;
+  public int a28085;
+  public int a28086;
+  public int a28087;
+  public int a28088;
+  public int a28089;
+  public int a28090;
+  public int a28091;
+  public int a28092;
+  public int a28093;
+  public int a28094;
+  public int a28095;
+  public int a28096;
+  public int a28097;
+  public int a28098;
+  public int a28099;
+  public int a28100;
+  public int a28101;
+  public int a28102;
+  public int a28103;
+  public int a28104;
+  public int a28105;
+  public int a28106;
+  public int a28107;
+  public int a28108;
+  public int a28109;
+  public int a28110;
+  public int a28111;
+  public int a28112;
+  public int a28113;
+  public int a28114;
+  public int a28115;
+  public int a28116;
+  public int a28117;
+  public int a28118;
+  public int a28119;
+  public int a28120;
+  public int a28121;
+  public int a28122;
+  public int a28123;
+  public int a28124;
+  public int a28125;
+  public int a28126;
+  public int a28127;
+  public int a28128;
+  public int a28129;
+  public int a28130;
+  public int a28131;
+  public int a28132;
+  public int a28133;
+  public int a28134;
+  public int a28135;
+  public int a28136;
+  public int a28137;
+  public int a28138;
+  public int a28139;
+  public int a28140;
+  public int a28141;
+  public int a28142;
+  public int a28143;
+  public int a28144;
+  public int a28145;
+  public int a28146;
+  public int a28147;
+  public int a28148;
+  public int a28149;
+  public int a28150;
+  public int a28151;
+  public int a28152;
+  public int a28153;
+  public int a28154;
+  public int a28155;
+  public int a28156;
+  public int a28157;
+  public int a28158;
+  public int a28159;
+  public int a28160;
+  public int a28161;
+  public int a28162;
+  public int a28163;
+  public int a28164;
+  public int a28165;
+  public int a28166;
+  public int a28167;
+  public int a28168;
+  public int a28169;
+  public int a28170;
+  public int a28171;
+  public int a28172;
+  public int a28173;
+  public int a28174;
+  public int a28175;
+  public int a28176;
+  public int a28177;
+  public int a28178;
+  public int a28179;
+  public int a28180;
+  public int a28181;
+  public int a28182;
+  public int a28183;
+  public int a28184;
+  public int a28185;
+  public int a28186;
+  public int a28187;
+  public int a28188;
+  public int a28189;
+  public int a28190;
+  public int a28191;
+  public int a28192;
+  public int a28193;
+  public int a28194;
+  public int a28195;
+  public int a28196;
+  public int a28197;
+  public int a28198;
+  public int a28199;
+  public int a28200;
+  public int a28201;
+  public int a28202;
+  public int a28203;
+  public int a28204;
+  public int a28205;
+  public int a28206;
+  public int a28207;
+  public int a28208;
+  public int a28209;
+  public int a28210;
+  public int a28211;
+  public int a28212;
+  public int a28213;
+  public int a28214;
+  public int a28215;
+  public int a28216;
+  public int a28217;
+  public int a28218;
+  public int a28219;
+  public int a28220;
+  public int a28221;
+  public int a28222;
+  public int a28223;
+  public int a28224;
+  public int a28225;
+  public int a28226;
+  public int a28227;
+  public int a28228;
+  public int a28229;
+  public int a28230;
+  public int a28231;
+  public int a28232;
+  public int a28233;
+  public int a28234;
+  public int a28235;
+  public int a28236;
+  public int a28237;
+  public int a28238;
+  public int a28239;
+  public int a28240;
+  public int a28241;
+  public int a28242;
+  public int a28243;
+  public int a28244;
+  public int a28245;
+  public int a28246;
+  public int a28247;
+  public int a28248;
+  public int a28249;
+  public int a28250;
+  public int a28251;
+  public int a28252;
+  public int a28253;
+  public int a28254;
+  public int a28255;
+  public int a28256;
+  public int a28257;
+  public int a28258;
+  public int a28259;
+  public int a28260;
+  public int a28261;
+  public int a28262;
+  public int a28263;
+  public int a28264;
+  public int a28265;
+  public int a28266;
+  public int a28267;
+  public int a28268;
+  public int a28269;
+  public int a28270;
+  public int a28271;
+  public int a28272;
+  public int a28273;
+  public int a28274;
+  public int a28275;
+  public int a28276;
+  public int a28277;
+  public int a28278;
+  public int a28279;
+  public int a28280;
+  public int a28281;
+  public int a28282;
+  public int a28283;
+  public int a28284;
+  public int a28285;
+  public int a28286;
+  public int a28287;
+  public int a28288;
+  public int a28289;
+  public int a28290;
+  public int a28291;
+  public int a28292;
+  public int a28293;
+  public int a28294;
+  public int a28295;
+  public int a28296;
+  public int a28297;
+  public int a28298;
+  public int a28299;
+  public int a28300;
+  public int a28301;
+  public int a28302;
+  public int a28303;
+  public int a28304;
+  public int a28305;
+  public int a28306;
+  public int a28307;
+  public int a28308;
+  public int a28309;
+  public int a28310;
+  public int a28311;
+  public int a28312;
+  public int a28313;
+  public int a28314;
+  public int a28315;
+  public int a28316;
+  public int a28317;
+  public int a28318;
+  public int a28319;
+  public int a28320;
+  public int a28321;
+  public int a28322;
+  public int a28323;
+  public int a28324;
+  public int a28325;
+  public int a28326;
+  public int a28327;
+  public int a28328;
+  public int a28329;
+  public int a28330;
+  public int a28331;
+  public int a28332;
+  public int a28333;
+  public int a28334;
+  public int a28335;
+  public int a28336;
+  public int a28337;
+  public int a28338;
+  public int a28339;
+  public int a28340;
+  public int a28341;
+  public int a28342;
+  public int a28343;
+  public int a28344;
+  public int a28345;
+  public int a28346;
+  public int a28347;
+  public int a28348;
+  public int a28349;
+  public int a28350;
+  public int a28351;
+  public int a28352;
+  public int a28353;
+  public int a28354;
+  public int a28355;
+  public int a28356;
+  public int a28357;
+  public int a28358;
+  public int a28359;
+  public int a28360;
+  public int a28361;
+  public int a28362;
+  public int a28363;
+  public int a28364;
+  public int a28365;
+  public int a28366;
+  public int a28367;
+  public int a28368;
+  public int a28369;
+  public int a28370;
+  public int a28371;
+  public int a28372;
+  public int a28373;
+  public int a28374;
+  public int a28375;
+  public int a28376;
+  public int a28377;
+  public int a28378;
+  public int a28379;
+  public int a28380;
+  public int a28381;
+  public int a28382;
+  public int a28383;
+  public int a28384;
+  public int a28385;
+  public int a28386;
+  public int a28387;
+  public int a28388;
+  public int a28389;
+  public int a28390;
+  public int a28391;
+  public int a28392;
+  public int a28393;
+  public int a28394;
+  public int a28395;
+  public int a28396;
+  public int a28397;
+  public int a28398;
+  public int a28399;
+  public int a28400;
+  public int a28401;
+  public int a28402;
+  public int a28403;
+  public int a28404;
+  public int a28405;
+  public int a28406;
+  public int a28407;
+  public int a28408;
+  public int a28409;
+  public int a28410;
+  public int a28411;
+  public int a28412;
+  public int a28413;
+  public int a28414;
+  public int a28415;
+  public int a28416;
+  public int a28417;
+  public int a28418;
+  public int a28419;
+  public int a28420;
+  public int a28421;
+  public int a28422;
+  public int a28423;
+  public int a28424;
+  public int a28425;
+  public int a28426;
+  public int a28427;
+  public int a28428;
+  public int a28429;
+  public int a28430;
+  public int a28431;
+  public int a28432;
+  public int a28433;
+  public int a28434;
+  public int a28435;
+  public int a28436;
+  public int a28437;
+  public int a28438;
+  public int a28439;
+  public int a28440;
+  public int a28441;
+  public int a28442;
+  public int a28443;
+  public int a28444;
+  public int a28445;
+  public int a28446;
+  public int a28447;
+  public int a28448;
+  public int a28449;
+  public int a28450;
+  public int a28451;
+  public int a28452;
+  public int a28453;
+  public int a28454;
+  public int a28455;
+  public int a28456;
+  public int a28457;
+  public int a28458;
+  public int a28459;
+  public int a28460;
+  public int a28461;
+  public int a28462;
+  public int a28463;
+  public int a28464;
+  public int a28465;
+  public int a28466;
+  public int a28467;
+  public int a28468;
+  public int a28469;
+  public int a28470;
+  public int a28471;
+  public int a28472;
+  public int a28473;
+  public int a28474;
+  public int a28475;
+  public int a28476;
+  public int a28477;
+  public int a28478;
+  public int a28479;
+  public int a28480;
+  public int a28481;
+  public int a28482;
+  public int a28483;
+  public int a28484;
+  public int a28485;
+  public int a28486;
+  public int a28487;
+  public int a28488;
+  public int a28489;
+  public int a28490;
+  public int a28491;
+  public int a28492;
+  public int a28493;
+  public int a28494;
+  public int a28495;
+  public int a28496;
+  public int a28497;
+  public int a28498;
+  public int a28499;
+  public int a28500;
+  public int a28501;
+  public int a28502;
+  public int a28503;
+  public int a28504;
+  public int a28505;
+  public int a28506;
+  public int a28507;
+  public int a28508;
+  public int a28509;
+  public int a28510;
+  public int a28511;
+  public int a28512;
+  public int a28513;
+  public int a28514;
+  public int a28515;
+  public int a28516;
+  public int a28517;
+  public int a28518;
+  public int a28519;
+  public int a28520;
+  public int a28521;
+  public int a28522;
+  public int a28523;
+  public int a28524;
+  public int a28525;
+  public int a28526;
+  public int a28527;
+  public int a28528;
+  public int a28529;
+  public int a28530;
+  public int a28531;
+  public int a28532;
+  public int a28533;
+  public int a28534;
+  public int a28535;
+  public int a28536;
+  public int a28537;
+  public int a28538;
+  public int a28539;
+  public int a28540;
+  public int a28541;
+  public int a28542;
+  public int a28543;
+  public int a28544;
+  public int a28545;
+  public int a28546;
+  public int a28547;
+  public int a28548;
+  public int a28549;
+  public int a28550;
+  public int a28551;
+  public int a28552;
+  public int a28553;
+  public int a28554;
+  public int a28555;
+  public int a28556;
+  public int a28557;
+  public int a28558;
+  public int a28559;
+  public int a28560;
+  public int a28561;
+  public int a28562;
+  public int a28563;
+  public int a28564;
+  public int a28565;
+  public int a28566;
+  public int a28567;
+  public int a28568;
+  public int a28569;
+  public int a28570;
+  public int a28571;
+  public int a28572;
+  public int a28573;
+  public int a28574;
+  public int a28575;
+  public int a28576;
+  public int a28577;
+  public int a28578;
+  public int a28579;
+  public int a28580;
+  public int a28581;
+  public int a28582;
+  public int a28583;
+  public int a28584;
+  public int a28585;
+  public int a28586;
+  public int a28587;
+  public int a28588;
+  public int a28589;
+  public int a28590;
+  public int a28591;
+  public int a28592;
+  public int a28593;
+  public int a28594;
+  public int a28595;
+  public int a28596;
+  public int a28597;
+  public int a28598;
+  public int a28599;
+  public int a28600;
+  public int a28601;
+  public int a28602;
+  public int a28603;
+  public int a28604;
+  public int a28605;
+  public int a28606;
+  public int a28607;
+  public int a28608;
+  public int a28609;
+  public int a28610;
+  public int a28611;
+  public int a28612;
+  public int a28613;
+  public int a28614;
+  public int a28615;
+  public int a28616;
+  public int a28617;
+  public int a28618;
+  public int a28619;
+  public int a28620;
+  public int a28621;
+  public int a28622;
+  public int a28623;
+  public int a28624;
+  public int a28625;
+  public int a28626;
+  public int a28627;
+  public int a28628;
+  public int a28629;
+  public int a28630;
+  public int a28631;
+  public int a28632;
+  public int a28633;
+  public int a28634;
+  public int a28635;
+  public int a28636;
+  public int a28637;
+  public int a28638;
+  public int a28639;
+  public int a28640;
+  public int a28641;
+  public int a28642;
+  public int a28643;
+  public int a28644;
+  public int a28645;
+  public int a28646;
+  public int a28647;
+  public int a28648;
+  public int a28649;
+  public int a28650;
+  public int a28651;
+  public int a28652;
+  public int a28653;
+  public int a28654;
+  public int a28655;
+  public int a28656;
+  public int a28657;
+  public int a28658;
+  public int a28659;
+  public int a28660;
+  public int a28661;
+  public int a28662;
+  public int a28663;
+  public int a28664;
+  public int a28665;
+  public int a28666;
+  public int a28667;
+  public int a28668;
+  public int a28669;
+  public int a28670;
+  public int a28671;
+  public int a28672;
+  public int a28673;
+  public int a28674;
+  public int a28675;
+  public int a28676;
+  public int a28677;
+  public int a28678;
+  public int a28679;
+  public int a28680;
+  public int a28681;
+  public int a28682;
+  public int a28683;
+  public int a28684;
+  public int a28685;
+  public int a28686;
+  public int a28687;
+  public int a28688;
+  public int a28689;
+  public int a28690;
+  public int a28691;
+  public int a28692;
+  public int a28693;
+  public int a28694;
+  public int a28695;
+  public int a28696;
+  public int a28697;
+  public int a28698;
+  public int a28699;
+  public int a28700;
+  public int a28701;
+  public int a28702;
+  public int a28703;
+  public int a28704;
+  public int a28705;
+  public int a28706;
+  public int a28707;
+  public int a28708;
+  public int a28709;
+  public int a28710;
+  public int a28711;
+  public int a28712;
+  public int a28713;
+  public int a28714;
+  public int a28715;
+  public int a28716;
+  public int a28717;
+  public int a28718;
+  public int a28719;
+  public int a28720;
+  public int a28721;
+  public int a28722;
+  public int a28723;
+  public int a28724;
+  public int a28725;
+  public int a28726;
+  public int a28727;
+  public int a28728;
+  public int a28729;
+  public int a28730;
+  public int a28731;
+  public int a28732;
+  public int a28733;
+  public int a28734;
+  public int a28735;
+  public int a28736;
+  public int a28737;
+  public int a28738;
+  public int a28739;
+  public int a28740;
+  public int a28741;
+  public int a28742;
+  public int a28743;
+  public int a28744;
+  public int a28745;
+  public int a28746;
+  public int a28747;
+  public int a28748;
+  public int a28749;
+  public int a28750;
+  public int a28751;
+  public int a28752;
+  public int a28753;
+  public int a28754;
+  public int a28755;
+  public int a28756;
+  public int a28757;
+  public int a28758;
+  public int a28759;
+  public int a28760;
+  public int a28761;
+  public int a28762;
+  public int a28763;
+  public int a28764;
+  public int a28765;
+  public int a28766;
+  public int a28767;
+  public int a28768;
+  public int a28769;
+  public int a28770;
+  public int a28771;
+  public int a28772;
+  public int a28773;
+  public int a28774;
+  public int a28775;
+  public int a28776;
+  public int a28777;
+  public int a28778;
+  public int a28779;
+  public int a28780;
+  public int a28781;
+  public int a28782;
+  public int a28783;
+  public int a28784;
+  public int a28785;
+  public int a28786;
+  public int a28787;
+  public int a28788;
+  public int a28789;
+  public int a28790;
+  public int a28791;
+  public int a28792;
+  public int a28793;
+  public int a28794;
+  public int a28795;
+  public int a28796;
+  public int a28797;
+  public int a28798;
+  public int a28799;
+  public int a28800;
+  public int a28801;
+  public int a28802;
+  public int a28803;
+  public int a28804;
+  public int a28805;
+  public int a28806;
+  public int a28807;
+  public int a28808;
+  public int a28809;
+  public int a28810;
+  public int a28811;
+  public int a28812;
+  public int a28813;
+  public int a28814;
+  public int a28815;
+  public int a28816;
+  public int a28817;
+  public int a28818;
+  public int a28819;
+  public int a28820;
+  public int a28821;
+  public int a28822;
+  public int a28823;
+  public int a28824;
+  public int a28825;
+  public int a28826;
+  public int a28827;
+  public int a28828;
+  public int a28829;
+  public int a28830;
+  public int a28831;
+  public int a28832;
+  public int a28833;
+  public int a28834;
+  public int a28835;
+  public int a28836;
+  public int a28837;
+  public int a28838;
+  public int a28839;
+  public int a28840;
+  public int a28841;
+  public int a28842;
+  public int a28843;
+  public int a28844;
+  public int a28845;
+  public int a28846;
+  public int a28847;
+  public int a28848;
+  public int a28849;
+  public int a28850;
+  public int a28851;
+  public int a28852;
+  public int a28853;
+  public int a28854;
+  public int a28855;
+  public int a28856;
+  public int a28857;
+  public int a28858;
+  public int a28859;
+  public int a28860;
+  public int a28861;
+  public int a28862;
+  public int a28863;
+  public int a28864;
+  public int a28865;
+  public int a28866;
+  public int a28867;
+  public int a28868;
+  public int a28869;
+  public int a28870;
+  public int a28871;
+  public int a28872;
+  public int a28873;
+  public int a28874;
+  public int a28875;
+  public int a28876;
+  public int a28877;
+  public int a28878;
+  public int a28879;
+  public int a28880;
+  public int a28881;
+  public int a28882;
+  public int a28883;
+  public int a28884;
+  public int a28885;
+  public int a28886;
+  public int a28887;
+  public int a28888;
+  public int a28889;
+  public int a28890;
+  public int a28891;
+  public int a28892;
+  public int a28893;
+  public int a28894;
+  public int a28895;
+  public int a28896;
+  public int a28897;
+  public int a28898;
+  public int a28899;
+  public int a28900;
+  public int a28901;
+  public int a28902;
+  public int a28903;
+  public int a28904;
+  public int a28905;
+  public int a28906;
+  public int a28907;
+  public int a28908;
+  public int a28909;
+  public int a28910;
+  public int a28911;
+  public int a28912;
+  public int a28913;
+  public int a28914;
+  public int a28915;
+  public int a28916;
+  public int a28917;
+  public int a28918;
+  public int a28919;
+  public int a28920;
+  public int a28921;
+  public int a28922;
+  public int a28923;
+  public int a28924;
+  public int a28925;
+  public int a28926;
+  public int a28927;
+  public int a28928;
+  public int a28929;
+  public int a28930;
+  public int a28931;
+  public int a28932;
+  public int a28933;
+  public int a28934;
+  public int a28935;
+  public int a28936;
+  public int a28937;
+  public int a28938;
+  public int a28939;
+  public int a28940;
+  public int a28941;
+  public int a28942;
+  public int a28943;
+  public int a28944;
+  public int a28945;
+  public int a28946;
+  public int a28947;
+  public int a28948;
+  public int a28949;
+  public int a28950;
+  public int a28951;
+  public int a28952;
+  public int a28953;
+  public int a28954;
+  public int a28955;
+  public int a28956;
+  public int a28957;
+  public int a28958;
+  public int a28959;
+  public int a28960;
+  public int a28961;
+  public int a28962;
+  public int a28963;
+  public int a28964;
+  public int a28965;
+  public int a28966;
+  public int a28967;
+  public int a28968;
+  public int a28969;
+  public int a28970;
+  public int a28971;
+  public int a28972;
+  public int a28973;
+  public int a28974;
+  public int a28975;
+  public int a28976;
+  public int a28977;
+  public int a28978;
+  public int a28979;
+  public int a28980;
+  public int a28981;
+  public int a28982;
+  public int a28983;
+  public int a28984;
+  public int a28985;
+  public int a28986;
+  public int a28987;
+  public int a28988;
+  public int a28989;
+  public int a28990;
+  public int a28991;
+  public int a28992;
+  public int a28993;
+  public int a28994;
+  public int a28995;
+  public int a28996;
+  public int a28997;
+  public int a28998;
+  public int a28999;
+  public int a29000;
+  public int a29001;
+  public int a29002;
+  public int a29003;
+  public int a29004;
+  public int a29005;
+  public int a29006;
+  public int a29007;
+  public int a29008;
+  public int a29009;
+  public int a29010;
+  public int a29011;
+  public int a29012;
+  public int a29013;
+  public int a29014;
+  public int a29015;
+  public int a29016;
+  public int a29017;
+  public int a29018;
+  public int a29019;
+  public int a29020;
+  public int a29021;
+  public int a29022;
+  public int a29023;
+  public int a29024;
+  public int a29025;
+  public int a29026;
+  public int a29027;
+  public int a29028;
+  public int a29029;
+  public int a29030;
+  public int a29031;
+  public int a29032;
+  public int a29033;
+  public int a29034;
+  public int a29035;
+  public int a29036;
+  public int a29037;
+  public int a29038;
+  public int a29039;
+  public int a29040;
+  public int a29041;
+  public int a29042;
+  public int a29043;
+  public int a29044;
+  public int a29045;
+  public int a29046;
+  public int a29047;
+  public int a29048;
+  public int a29049;
+  public int a29050;
+  public int a29051;
+  public int a29052;
+  public int a29053;
+  public int a29054;
+  public int a29055;
+  public int a29056;
+  public int a29057;
+  public int a29058;
+  public int a29059;
+  public int a29060;
+  public int a29061;
+  public int a29062;
+  public int a29063;
+  public int a29064;
+  public int a29065;
+  public int a29066;
+  public int a29067;
+  public int a29068;
+  public int a29069;
+  public int a29070;
+  public int a29071;
+  public int a29072;
+  public int a29073;
+  public int a29074;
+  public int a29075;
+  public int a29076;
+  public int a29077;
+  public int a29078;
+  public int a29079;
+  public int a29080;
+  public int a29081;
+  public int a29082;
+  public int a29083;
+  public int a29084;
+  public int a29085;
+  public int a29086;
+  public int a29087;
+  public int a29088;
+  public int a29089;
+  public int a29090;
+  public int a29091;
+  public int a29092;
+  public int a29093;
+  public int a29094;
+  public int a29095;
+  public int a29096;
+  public int a29097;
+  public int a29098;
+  public int a29099;
+  public int a29100;
+  public int a29101;
+  public int a29102;
+  public int a29103;
+  public int a29104;
+  public int a29105;
+  public int a29106;
+  public int a29107;
+  public int a29108;
+  public int a29109;
+  public int a29110;
+  public int a29111;
+  public int a29112;
+  public int a29113;
+  public int a29114;
+  public int a29115;
+  public int a29116;
+  public int a29117;
+  public int a29118;
+  public int a29119;
+  public int a29120;
+  public int a29121;
+  public int a29122;
+  public int a29123;
+  public int a29124;
+  public int a29125;
+  public int a29126;
+  public int a29127;
+  public int a29128;
+  public int a29129;
+  public int a29130;
+  public int a29131;
+  public int a29132;
+  public int a29133;
+  public int a29134;
+  public int a29135;
+  public int a29136;
+  public int a29137;
+  public int a29138;
+  public int a29139;
+  public int a29140;
+  public int a29141;
+  public int a29142;
+  public int a29143;
+  public int a29144;
+  public int a29145;
+  public int a29146;
+  public int a29147;
+  public int a29148;
+  public int a29149;
+  public int a29150;
+  public int a29151;
+  public int a29152;
+  public int a29153;
+  public int a29154;
+  public int a29155;
+  public int a29156;
+  public int a29157;
+  public int a29158;
+  public int a29159;
+  public int a29160;
+  public int a29161;
+  public int a29162;
+  public int a29163;
+  public int a29164;
+  public int a29165;
+  public int a29166;
+  public int a29167;
+  public int a29168;
+  public int a29169;
+  public int a29170;
+  public int a29171;
+  public int a29172;
+  public int a29173;
+  public int a29174;
+  public int a29175;
+  public int a29176;
+  public int a29177;
+  public int a29178;
+  public int a29179;
+  public int a29180;
+  public int a29181;
+  public int a29182;
+  public int a29183;
+  public int a29184;
+  public int a29185;
+  public int a29186;
+  public int a29187;
+  public int a29188;
+  public int a29189;
+  public int a29190;
+  public int a29191;
+  public int a29192;
+  public int a29193;
+  public int a29194;
+  public int a29195;
+  public int a29196;
+  public int a29197;
+  public int a29198;
+  public int a29199;
+  public int a29200;
+  public int a29201;
+  public int a29202;
+  public int a29203;
+  public int a29204;
+  public int a29205;
+  public int a29206;
+  public int a29207;
+  public int a29208;
+  public int a29209;
+  public int a29210;
+  public int a29211;
+  public int a29212;
+  public int a29213;
+  public int a29214;
+  public int a29215;
+  public int a29216;
+  public int a29217;
+  public int a29218;
+  public int a29219;
+  public int a29220;
+  public int a29221;
+  public int a29222;
+  public int a29223;
+  public int a29224;
+  public int a29225;
+  public int a29226;
+  public int a29227;
+  public int a29228;
+  public int a29229;
+  public int a29230;
+  public int a29231;
+  public int a29232;
+  public int a29233;
+  public int a29234;
+  public int a29235;
+  public int a29236;
+  public int a29237;
+  public int a29238;
+  public int a29239;
+  public int a29240;
+  public int a29241;
+  public int a29242;
+  public int a29243;
+  public int a29244;
+  public int a29245;
+  public int a29246;
+  public int a29247;
+  public int a29248;
+  public int a29249;
+  public int a29250;
+  public int a29251;
+  public int a29252;
+  public int a29253;
+  public int a29254;
+  public int a29255;
+  public int a29256;
+  public int a29257;
+  public int a29258;
+  public int a29259;
+  public int a29260;
+  public int a29261;
+  public int a29262;
+  public int a29263;
+  public int a29264;
+  public int a29265;
+  public int a29266;
+  public int a29267;
+  public int a29268;
+  public int a29269;
+  public int a29270;
+  public int a29271;
+  public int a29272;
+  public int a29273;
+  public int a29274;
+  public int a29275;
+  public int a29276;
+  public int a29277;
+  public int a29278;
+  public int a29279;
+  public int a29280;
+  public int a29281;
+  public int a29282;
+  public int a29283;
+  public int a29284;
+  public int a29285;
+  public int a29286;
+  public int a29287;
+  public int a29288;
+  public int a29289;
+  public int a29290;
+  public int a29291;
+  public int a29292;
+  public int a29293;
+  public int a29294;
+  public int a29295;
+  public int a29296;
+  public int a29297;
+  public int a29298;
+  public int a29299;
+  public int a29300;
+  public int a29301;
+  public int a29302;
+  public int a29303;
+  public int a29304;
+  public int a29305;
+  public int a29306;
+  public int a29307;
+  public int a29308;
+  public int a29309;
+  public int a29310;
+  public int a29311;
+  public int a29312;
+  public int a29313;
+  public int a29314;
+  public int a29315;
+  public int a29316;
+  public int a29317;
+  public int a29318;
+  public int a29319;
+  public int a29320;
+  public int a29321;
+  public int a29322;
+  public int a29323;
+  public int a29324;
+  public int a29325;
+  public int a29326;
+  public int a29327;
+  public int a29328;
+  public int a29329;
+  public int a29330;
+  public int a29331;
+  public int a29332;
+  public int a29333;
+  public int a29334;
+  public int a29335;
+  public int a29336;
+  public int a29337;
+  public int a29338;
+  public int a29339;
+  public int a29340;
+  public int a29341;
+  public int a29342;
+  public int a29343;
+  public int a29344;
+  public int a29345;
+  public int a29346;
+  public int a29347;
+  public int a29348;
+  public int a29349;
+  public int a29350;
+  public int a29351;
+  public int a29352;
+  public int a29353;
+  public int a29354;
+  public int a29355;
+  public int a29356;
+  public int a29357;
+  public int a29358;
+  public int a29359;
+  public int a29360;
+  public int a29361;
+  public int a29362;
+  public int a29363;
+  public int a29364;
+  public int a29365;
+  public int a29366;
+  public int a29367;
+  public int a29368;
+  public int a29369;
+  public int a29370;
+  public int a29371;
+  public int a29372;
+  public int a29373;
+  public int a29374;
+  public int a29375;
+  public int a29376;
+  public int a29377;
+  public int a29378;
+  public int a29379;
+  public int a29380;
+  public int a29381;
+  public int a29382;
+  public int a29383;
+  public int a29384;
+  public int a29385;
+  public int a29386;
+  public int a29387;
+  public int a29388;
+  public int a29389;
+  public int a29390;
+  public int a29391;
+  public int a29392;
+  public int a29393;
+  public int a29394;
+  public int a29395;
+  public int a29396;
+  public int a29397;
+  public int a29398;
+  public int a29399;
+  public int a29400;
+  public int a29401;
+  public int a29402;
+  public int a29403;
+  public int a29404;
+  public int a29405;
+  public int a29406;
+  public int a29407;
+  public int a29408;
+  public int a29409;
+  public int a29410;
+  public int a29411;
+  public int a29412;
+  public int a29413;
+  public int a29414;
+  public int a29415;
+  public int a29416;
+  public int a29417;
+  public int a29418;
+  public int a29419;
+  public int a29420;
+  public int a29421;
+  public int a29422;
+  public int a29423;
+  public int a29424;
+  public int a29425;
+  public int a29426;
+  public int a29427;
+  public int a29428;
+  public int a29429;
+  public int a29430;
+  public int a29431;
+  public int a29432;
+  public int a29433;
+  public int a29434;
+  public int a29435;
+  public int a29436;
+  public int a29437;
+  public int a29438;
+  public int a29439;
+  public int a29440;
+  public int a29441;
+  public int a29442;
+  public int a29443;
+  public int a29444;
+  public int a29445;
+  public int a29446;
+  public int a29447;
+  public int a29448;
+  public int a29449;
+  public int a29450;
+  public int a29451;
+  public int a29452;
+  public int a29453;
+  public int a29454;
+  public int a29455;
+  public int a29456;
+  public int a29457;
+  public int a29458;
+  public int a29459;
+  public int a29460;
+  public int a29461;
+  public int a29462;
+  public int a29463;
+  public int a29464;
+  public int a29465;
+  public int a29466;
+  public int a29467;
+  public int a29468;
+  public int a29469;
+  public int a29470;
+  public int a29471;
+  public int a29472;
+  public int a29473;
+  public int a29474;
+  public int a29475;
+  public int a29476;
+  public int a29477;
+  public int a29478;
+  public int a29479;
+  public int a29480;
+  public int a29481;
+  public int a29482;
+  public int a29483;
+  public int a29484;
+  public int a29485;
+  public int a29486;
+  public int a29487;
+  public int a29488;
+  public int a29489;
+  public int a29490;
+  public int a29491;
+  public int a29492;
+  public int a29493;
+  public int a29494;
+  public int a29495;
+  public int a29496;
+  public int a29497;
+  public int a29498;
+  public int a29499;
+  public int a29500;
+  public int a29501;
+  public int a29502;
+  public int a29503;
+  public int a29504;
+  public int a29505;
+  public int a29506;
+  public int a29507;
+  public int a29508;
+  public int a29509;
+  public int a29510;
+  public int a29511;
+  public int a29512;
+  public int a29513;
+  public int a29514;
+  public int a29515;
+  public int a29516;
+  public int a29517;
+  public int a29518;
+  public int a29519;
+  public int a29520;
+  public int a29521;
+  public int a29522;
+  public int a29523;
+  public int a29524;
+  public int a29525;
+  public int a29526;
+  public int a29527;
+  public int a29528;
+  public int a29529;
+  public int a29530;
+  public int a29531;
+  public int a29532;
+  public int a29533;
+  public int a29534;
+  public int a29535;
+  public int a29536;
+  public int a29537;
+  public int a29538;
+  public int a29539;
+  public int a29540;
+  public int a29541;
+  public int a29542;
+  public int a29543;
+  public int a29544;
+  public int a29545;
+  public int a29546;
+  public int a29547;
+  public int a29548;
+  public int a29549;
+  public int a29550;
+  public int a29551;
+  public int a29552;
+  public int a29553;
+  public int a29554;
+  public int a29555;
+  public int a29556;
+  public int a29557;
+  public int a29558;
+  public int a29559;
+  public int a29560;
+  public int a29561;
+  public int a29562;
+  public int a29563;
+  public int a29564;
+  public int a29565;
+  public int a29566;
+  public int a29567;
+  public int a29568;
+  public int a29569;
+  public int a29570;
+  public int a29571;
+  public int a29572;
+  public int a29573;
+  public int a29574;
+  public int a29575;
+  public int a29576;
+  public int a29577;
+  public int a29578;
+  public int a29579;
+  public int a29580;
+  public int a29581;
+  public int a29582;
+  public int a29583;
+  public int a29584;
+  public int a29585;
+  public int a29586;
+  public int a29587;
+  public int a29588;
+  public int a29589;
+  public int a29590;
+  public int a29591;
+  public int a29592;
+  public int a29593;
+  public int a29594;
+  public int a29595;
+  public int a29596;
+  public int a29597;
+  public int a29598;
+  public int a29599;
+  public int a29600;
+  public int a29601;
+  public int a29602;
+  public int a29603;
+  public int a29604;
+  public int a29605;
+  public int a29606;
+  public int a29607;
+  public int a29608;
+  public int a29609;
+  public int a29610;
+  public int a29611;
+  public int a29612;
+  public int a29613;
+  public int a29614;
+  public int a29615;
+  public int a29616;
+  public int a29617;
+  public int a29618;
+  public int a29619;
+  public int a29620;
+  public int a29621;
+  public int a29622;
+  public int a29623;
+  public int a29624;
+  public int a29625;
+  public int a29626;
+  public int a29627;
+  public int a29628;
+  public int a29629;
+  public int a29630;
+  public int a29631;
+  public int a29632;
+  public int a29633;
+  public int a29634;
+  public int a29635;
+  public int a29636;
+  public int a29637;
+  public int a29638;
+  public int a29639;
+  public int a29640;
+  public int a29641;
+  public int a29642;
+  public int a29643;
+  public int a29644;
+  public int a29645;
+  public int a29646;
+  public int a29647;
+  public int a29648;
+  public int a29649;
+  public int a29650;
+  public int a29651;
+  public int a29652;
+  public int a29653;
+  public int a29654;
+  public int a29655;
+  public int a29656;
+  public int a29657;
+  public int a29658;
+  public int a29659;
+  public int a29660;
+  public int a29661;
+  public int a29662;
+  public int a29663;
+  public int a29664;
+  public int a29665;
+  public int a29666;
+  public int a29667;
+  public int a29668;
+  public int a29669;
+  public int a29670;
+  public int a29671;
+  public int a29672;
+  public int a29673;
+  public int a29674;
+  public int a29675;
+  public int a29676;
+  public int a29677;
+  public int a29678;
+  public int a29679;
+  public int a29680;
+  public int a29681;
+  public int a29682;
+  public int a29683;
+  public int a29684;
+  public int a29685;
+  public int a29686;
+  public int a29687;
+  public int a29688;
+  public int a29689;
+  public int a29690;
+  public int a29691;
+  public int a29692;
+  public int a29693;
+  public int a29694;
+  public int a29695;
+  public int a29696;
+  public int a29697;
+  public int a29698;
+  public int a29699;
+  public int a29700;
+  public int a29701;
+  public int a29702;
+  public int a29703;
+  public int a29704;
+  public int a29705;
+  public int a29706;
+  public int a29707;
+  public int a29708;
+  public int a29709;
+  public int a29710;
+  public int a29711;
+  public int a29712;
+  public int a29713;
+  public int a29714;
+  public int a29715;
+  public int a29716;
+  public int a29717;
+  public int a29718;
+  public int a29719;
+  public int a29720;
+  public int a29721;
+  public int a29722;
+  public int a29723;
+  public int a29724;
+  public int a29725;
+  public int a29726;
+  public int a29727;
+  public int a29728;
+  public int a29729;
+  public int a29730;
+  public int a29731;
+  public int a29732;
+  public int a29733;
+  public int a29734;
+  public int a29735;
+  public int a29736;
+  public int a29737;
+  public int a29738;
+  public int a29739;
+  public int a29740;
+  public int a29741;
+  public int a29742;
+  public int a29743;
+  public int a29744;
+  public int a29745;
+  public int a29746;
+  public int a29747;
+  public int a29748;
+  public int a29749;
+  public int a29750;
+  public int a29751;
+  public int a29752;
+  public int a29753;
+  public int a29754;
+  public int a29755;
+  public int a29756;
+  public int a29757;
+  public int a29758;
+  public int a29759;
+  public int a29760;
+  public int a29761;
+  public int a29762;
+  public int a29763;
+  public int a29764;
+  public int a29765;
+  public int a29766;
+  public int a29767;
+  public int a29768;
+  public int a29769;
+  public int a29770;
+  public int a29771;
+  public int a29772;
+  public int a29773;
+  public int a29774;
+  public int a29775;
+  public int a29776;
+  public int a29777;
+  public int a29778;
+  public int a29779;
+  public int a29780;
+  public int a29781;
+  public int a29782;
+  public int a29783;
+  public int a29784;
+  public int a29785;
+  public int a29786;
+  public int a29787;
+  public int a29788;
+  public int a29789;
+  public int a29790;
+  public int a29791;
+  public int a29792;
+  public int a29793;
+  public int a29794;
+  public int a29795;
+  public int a29796;
+  public int a29797;
+  public int a29798;
+  public int a29799;
+  public int a29800;
+  public int a29801;
+  public int a29802;
+  public int a29803;
+  public int a29804;
+  public int a29805;
+  public int a29806;
+  public int a29807;
+  public int a29808;
+  public int a29809;
+  public int a29810;
+  public int a29811;
+  public int a29812;
+  public int a29813;
+  public int a29814;
+  public int a29815;
+  public int a29816;
+  public int a29817;
+  public int a29818;
+  public int a29819;
+  public int a29820;
+  public int a29821;
+  public int a29822;
+  public int a29823;
+  public int a29824;
+  public int a29825;
+  public int a29826;
+  public int a29827;
+  public int a29828;
+  public int a29829;
+  public int a29830;
+  public int a29831;
+  public int a29832;
+  public int a29833;
+  public int a29834;
+  public int a29835;
+  public int a29836;
+  public int a29837;
+  public int a29838;
+  public int a29839;
+  public int a29840;
+  public int a29841;
+  public int a29842;
+  public int a29843;
+  public int a29844;
+  public int a29845;
+  public int a29846;
+  public int a29847;
+  public int a29848;
+  public int a29849;
+  public int a29850;
+  public int a29851;
+  public int a29852;
+  public int a29853;
+  public int a29854;
+  public int a29855;
+  public int a29856;
+  public int a29857;
+  public int a29858;
+  public int a29859;
+  public int a29860;
+  public int a29861;
+  public int a29862;
+  public int a29863;
+  public int a29864;
+  public int a29865;
+  public int a29866;
+  public int a29867;
+  public int a29868;
+  public int a29869;
+  public int a29870;
+  public int a29871;
+  public int a29872;
+  public int a29873;
+  public int a29874;
+  public int a29875;
+  public int a29876;
+  public int a29877;
+  public int a29878;
+  public int a29879;
+  public int a29880;
+  public int a29881;
+  public int a29882;
+  public int a29883;
+  public int a29884;
+  public int a29885;
+  public int a29886;
+  public int a29887;
+  public int a29888;
+  public int a29889;
+  public int a29890;
+  public int a29891;
+  public int a29892;
+  public int a29893;
+  public int a29894;
+  public int a29895;
+  public int a29896;
+  public int a29897;
+  public int a29898;
+  public int a29899;
+  public int a29900;
+  public int a29901;
+  public int a29902;
+  public int a29903;
+  public int a29904;
+  public int a29905;
+  public int a29906;
+  public int a29907;
+  public int a29908;
+  public int a29909;
+  public int a29910;
+  public int a29911;
+  public int a29912;
+  public int a29913;
+  public int a29914;
+  public int a29915;
+  public int a29916;
+  public int a29917;
+  public int a29918;
+  public int a29919;
+  public int a29920;
+  public int a29921;
+  public int a29922;
+  public int a29923;
+  public int a29924;
+  public int a29925;
+  public int a29926;
+  public int a29927;
+  public int a29928;
+  public int a29929;
+  public int a29930;
+  public int a29931;
+  public int a29932;
+  public int a29933;
+  public int a29934;
+  public int a29935;
+  public int a29936;
+  public int a29937;
+  public int a29938;
+  public int a29939;
+  public int a29940;
+  public int a29941;
+  public int a29942;
+  public int a29943;
+  public int a29944;
+  public int a29945;
+  public int a29946;
+  public int a29947;
+  public int a29948;
+  public int a29949;
+  public int a29950;
+  public int a29951;
+  public int a29952;
+  public int a29953;
+  public int a29954;
+  public int a29955;
+  public int a29956;
+  public int a29957;
+  public int a29958;
+  public int a29959;
+  public int a29960;
+  public int a29961;
+  public int a29962;
+  public int a29963;
+  public int a29964;
+  public int a29965;
+  public int a29966;
+  public int a29967;
+  public int a29968;
+  public int a29969;
+  public int a29970;
+  public int a29971;
+  public int a29972;
+  public int a29973;
+  public int a29974;
+  public int a29975;
+  public int a29976;
+  public int a29977;
+  public int a29978;
+  public int a29979;
+  public int a29980;
+  public int a29981;
+  public int a29982;
+  public int a29983;
+  public int a29984;
+  public int a29985;
+  public int a29986;
+  public int a29987;
+  public int a29988;
+  public int a29989;
+  public int a29990;
+  public int a29991;
+  public int a29992;
+  public int a29993;
+  public int a29994;
+  public int a29995;
+  public int a29996;
+  public int a29997;
+  public int a29998;
+  public int a29999;
+  public int a30000;
+  public int a30001;
+  public int a30002;
+  public int a30003;
+  public int a30004;
+  public int a30005;
+  public int a30006;
+  public int a30007;
+  public int a30008;
+  public int a30009;
+  public int a30010;
+  public int a30011;
+  public int a30012;
+  public int a30013;
+  public int a30014;
+  public int a30015;
+  public int a30016;
+  public int a30017;
+  public int a30018;
+  public int a30019;
+  public int a30020;
+  public int a30021;
+  public int a30022;
+  public int a30023;
+  public int a30024;
+  public int a30025;
+  public int a30026;
+  public int a30027;
+  public int a30028;
+  public int a30029;
+  public int a30030;
+  public int a30031;
+  public int a30032;
+  public int a30033;
+  public int a30034;
+  public int a30035;
+  public int a30036;
+  public int a30037;
+  public int a30038;
+  public int a30039;
+  public int a30040;
+  public int a30041;
+  public int a30042;
+  public int a30043;
+  public int a30044;
+  public int a30045;
+  public int a30046;
+  public int a30047;
+  public int a30048;
+  public int a30049;
+  public int a30050;
+  public int a30051;
+  public int a30052;
+  public int a30053;
+  public int a30054;
+  public int a30055;
+  public int a30056;
+  public int a30057;
+  public int a30058;
+  public int a30059;
+  public int a30060;
+  public int a30061;
+  public int a30062;
+  public int a30063;
+  public int a30064;
+  public int a30065;
+  public int a30066;
+  public int a30067;
+  public int a30068;
+  public int a30069;
+  public int a30070;
+  public int a30071;
+  public int a30072;
+  public int a30073;
+  public int a30074;
+  public int a30075;
+  public int a30076;
+  public int a30077;
+  public int a30078;
+  public int a30079;
+  public int a30080;
+  public int a30081;
+  public int a30082;
+  public int a30083;
+  public int a30084;
+  public int a30085;
+  public int a30086;
+  public int a30087;
+  public int a30088;
+  public int a30089;
+  public int a30090;
+  public int a30091;
+  public int a30092;
+  public int a30093;
+  public int a30094;
+  public int a30095;
+  public int a30096;
+  public int a30097;
+  public int a30098;
+  public int a30099;
+  public int a30100;
+  public int a30101;
+  public int a30102;
+  public int a30103;
+  public int a30104;
+  public int a30105;
+  public int a30106;
+  public int a30107;
+  public int a30108;
+  public int a30109;
+  public int a30110;
+  public int a30111;
+  public int a30112;
+  public int a30113;
+  public int a30114;
+  public int a30115;
+  public int a30116;
+  public int a30117;
+  public int a30118;
+  public int a30119;
+  public int a30120;
+  public int a30121;
+  public int a30122;
+  public int a30123;
+  public int a30124;
+  public int a30125;
+  public int a30126;
+  public int a30127;
+  public int a30128;
+  public int a30129;
+  public int a30130;
+  public int a30131;
+  public int a30132;
+  public int a30133;
+  public int a30134;
+  public int a30135;
+  public int a30136;
+  public int a30137;
+  public int a30138;
+  public int a30139;
+  public int a30140;
+  public int a30141;
+  public int a30142;
+  public int a30143;
+  public int a30144;
+  public int a30145;
+  public int a30146;
+  public int a30147;
+  public int a30148;
+  public int a30149;
+  public int a30150;
+  public int a30151;
+  public int a30152;
+  public int a30153;
+  public int a30154;
+  public int a30155;
+  public int a30156;
+  public int a30157;
+  public int a30158;
+  public int a30159;
+  public int a30160;
+  public int a30161;
+  public int a30162;
+  public int a30163;
+  public int a30164;
+  public int a30165;
+  public int a30166;
+  public int a30167;
+  public int a30168;
+  public int a30169;
+  public int a30170;
+  public int a30171;
+  public int a30172;
+  public int a30173;
+  public int a30174;
+  public int a30175;
+  public int a30176;
+  public int a30177;
+  public int a30178;
+  public int a30179;
+  public int a30180;
+  public int a30181;
+  public int a30182;
+  public int a30183;
+  public int a30184;
+  public int a30185;
+  public int a30186;
+  public int a30187;
+  public int a30188;
+  public int a30189;
+  public int a30190;
+  public int a30191;
+  public int a30192;
+  public int a30193;
+  public int a30194;
+  public int a30195;
+  public int a30196;
+  public int a30197;
+  public int a30198;
+  public int a30199;
+  public int a30200;
+  public int a30201;
+  public int a30202;
+  public int a30203;
+  public int a30204;
+  public int a30205;
+  public int a30206;
+  public int a30207;
+  public int a30208;
+  public int a30209;
+  public int a30210;
+  public int a30211;
+  public int a30212;
+  public int a30213;
+  public int a30214;
+  public int a30215;
+  public int a30216;
+  public int a30217;
+  public int a30218;
+  public int a30219;
+  public int a30220;
+  public int a30221;
+  public int a30222;
+  public int a30223;
+  public int a30224;
+  public int a30225;
+  public int a30226;
+  public int a30227;
+  public int a30228;
+  public int a30229;
+  public int a30230;
+  public int a30231;
+  public int a30232;
+  public int a30233;
+  public int a30234;
+  public int a30235;
+  public int a30236;
+  public int a30237;
+  public int a30238;
+  public int a30239;
+  public int a30240;
+  public int a30241;
+  public int a30242;
+  public int a30243;
+  public int a30244;
+  public int a30245;
+  public int a30246;
+  public int a30247;
+  public int a30248;
+  public int a30249;
+  public int a30250;
+  public int a30251;
+  public int a30252;
+  public int a30253;
+  public int a30254;
+  public int a30255;
+  public int a30256;
+  public int a30257;
+  public int a30258;
+  public int a30259;
+  public int a30260;
+  public int a30261;
+  public int a30262;
+  public int a30263;
+  public int a30264;
+  public int a30265;
+  public int a30266;
+  public int a30267;
+  public int a30268;
+  public int a30269;
+  public int a30270;
+  public int a30271;
+  public int a30272;
+  public int a30273;
+  public int a30274;
+  public int a30275;
+  public int a30276;
+  public int a30277;
+  public int a30278;
+  public int a30279;
+  public int a30280;
+  public int a30281;
+  public int a30282;
+  public int a30283;
+  public int a30284;
+  public int a30285;
+  public int a30286;
+  public int a30287;
+  public int a30288;
+  public int a30289;
+  public int a30290;
+  public int a30291;
+  public int a30292;
+  public int a30293;
+  public int a30294;
+  public int a30295;
+  public int a30296;
+  public int a30297;
+  public int a30298;
+  public int a30299;
+  public int a30300;
+  public int a30301;
+  public int a30302;
+  public int a30303;
+  public int a30304;
+  public int a30305;
+  public int a30306;
+  public int a30307;
+  public int a30308;
+  public int a30309;
+  public int a30310;
+  public int a30311;
+  public int a30312;
+  public int a30313;
+  public int a30314;
+  public int a30315;
+  public int a30316;
+  public int a30317;
+  public int a30318;
+  public int a30319;
+  public int a30320;
+  public int a30321;
+  public int a30322;
+  public int a30323;
+  public int a30324;
+  public int a30325;
+  public int a30326;
+  public int a30327;
+  public int a30328;
+  public int a30329;
+  public int a30330;
+  public int a30331;
+  public int a30332;
+  public int a30333;
+  public int a30334;
+  public int a30335;
+  public int a30336;
+  public int a30337;
+  public int a30338;
+  public int a30339;
+  public int a30340;
+  public int a30341;
+  public int a30342;
+  public int a30343;
+  public int a30344;
+  public int a30345;
+  public int a30346;
+  public int a30347;
+  public int a30348;
+  public int a30349;
+  public int a30350;
+  public int a30351;
+  public int a30352;
+  public int a30353;
+  public int a30354;
+  public int a30355;
+  public int a30356;
+  public int a30357;
+  public int a30358;
+  public int a30359;
+  public int a30360;
+  public int a30361;
+  public int a30362;
+  public int a30363;
+  public int a30364;
+  public int a30365;
+  public int a30366;
+  public int a30367;
+  public int a30368;
+  public int a30369;
+  public int a30370;
+  public int a30371;
+  public int a30372;
+  public int a30373;
+  public int a30374;
+  public int a30375;
+  public int a30376;
+  public int a30377;
+  public int a30378;
+  public int a30379;
+  public int a30380;
+  public int a30381;
+  public int a30382;
+  public int a30383;
+  public int a30384;
+  public int a30385;
+  public int a30386;
+  public int a30387;
+  public int a30388;
+  public int a30389;
+  public int a30390;
+  public int a30391;
+  public int a30392;
+  public int a30393;
+  public int a30394;
+  public int a30395;
+  public int a30396;
+  public int a30397;
+  public int a30398;
+  public int a30399;
+  public int a30400;
+  public int a30401;
+  public int a30402;
+  public int a30403;
+  public int a30404;
+  public int a30405;
+  public int a30406;
+  public int a30407;
+  public int a30408;
+  public int a30409;
+  public int a30410;
+  public int a30411;
+  public int a30412;
+  public int a30413;
+  public int a30414;
+  public int a30415;
+  public int a30416;
+  public int a30417;
+  public int a30418;
+  public int a30419;
+  public int a30420;
+  public int a30421;
+  public int a30422;
+  public int a30423;
+  public int a30424;
+  public int a30425;
+  public int a30426;
+  public int a30427;
+  public int a30428;
+  public int a30429;
+  public int a30430;
+  public int a30431;
+  public int a30432;
+  public int a30433;
+  public int a30434;
+  public int a30435;
+  public int a30436;
+  public int a30437;
+  public int a30438;
+  public int a30439;
+  public int a30440;
+  public int a30441;
+  public int a30442;
+  public int a30443;
+  public int a30444;
+  public int a30445;
+  public int a30446;
+  public int a30447;
+  public int a30448;
+  public int a30449;
+  public int a30450;
+  public int a30451;
+  public int a30452;
+  public int a30453;
+  public int a30454;
+  public int a30455;
+  public int a30456;
+  public int a30457;
+  public int a30458;
+  public int a30459;
+  public int a30460;
+  public int a30461;
+  public int a30462;
+  public int a30463;
+  public int a30464;
+  public int a30465;
+  public int a30466;
+  public int a30467;
+  public int a30468;
+  public int a30469;
+  public int a30470;
+  public int a30471;
+  public int a30472;
+  public int a30473;
+  public int a30474;
+  public int a30475;
+  public int a30476;
+  public int a30477;
+  public int a30478;
+  public int a30479;
+  public int a30480;
+  public int a30481;
+  public int a30482;
+  public int a30483;
+  public int a30484;
+  public int a30485;
+  public int a30486;
+  public int a30487;
+  public int a30488;
+  public int a30489;
+  public int a30490;
+  public int a30491;
+  public int a30492;
+  public int a30493;
+  public int a30494;
+  public int a30495;
+  public int a30496;
+  public int a30497;
+  public int a30498;
+  public int a30499;
+  public int a30500;
+  public int a30501;
+  public int a30502;
+  public int a30503;
+  public int a30504;
+  public int a30505;
+  public int a30506;
+  public int a30507;
+  public int a30508;
+  public int a30509;
+  public int a30510;
+  public int a30511;
+  public int a30512;
+  public int a30513;
+  public int a30514;
+  public int a30515;
+  public int a30516;
+  public int a30517;
+  public int a30518;
+  public int a30519;
+  public int a30520;
+  public int a30521;
+  public int a30522;
+  public int a30523;
+  public int a30524;
+  public int a30525;
+  public int a30526;
+  public int a30527;
+  public int a30528;
+  public int a30529;
+  public int a30530;
+  public int a30531;
+  public int a30532;
+  public int a30533;
+  public int a30534;
+  public int a30535;
+  public int a30536;
+  public int a30537;
+  public int a30538;
+  public int a30539;
+  public int a30540;
+  public int a30541;
+  public int a30542;
+  public int a30543;
+  public int a30544;
+  public int a30545;
+  public int a30546;
+  public int a30547;
+  public int a30548;
+  public int a30549;
+  public int a30550;
+  public int a30551;
+  public int a30552;
+  public int a30553;
+  public int a30554;
+  public int a30555;
+  public int a30556;
+  public int a30557;
+  public int a30558;
+  public int a30559;
+  public int a30560;
+  public int a30561;
+  public int a30562;
+  public int a30563;
+  public int a30564;
+  public int a30565;
+  public int a30566;
+  public int a30567;
+  public int a30568;
+  public int a30569;
+  public int a30570;
+  public int a30571;
+  public int a30572;
+  public int a30573;
+  public int a30574;
+  public int a30575;
+  public int a30576;
+  public int a30577;
+  public int a30578;
+  public int a30579;
+  public int a30580;
+  public int a30581;
+  public int a30582;
+  public int a30583;
+  public int a30584;
+  public int a30585;
+  public int a30586;
+  public int a30587;
+  public int a30588;
+  public int a30589;
+  public int a30590;
+  public int a30591;
+  public int a30592;
+  public int a30593;
+  public int a30594;
+  public int a30595;
+  public int a30596;
+  public int a30597;
+  public int a30598;
+  public int a30599;
+  public int a30600;
+  public int a30601;
+  public int a30602;
+  public int a30603;
+  public int a30604;
+  public int a30605;
+  public int a30606;
+  public int a30607;
+  public int a30608;
+  public int a30609;
+  public int a30610;
+  public int a30611;
+  public int a30612;
+  public int a30613;
+  public int a30614;
+  public int a30615;
+  public int a30616;
+  public int a30617;
+  public int a30618;
+  public int a30619;
+  public int a30620;
+  public int a30621;
+  public int a30622;
+  public int a30623;
+  public int a30624;
+  public int a30625;
+  public int a30626;
+  public int a30627;
+  public int a30628;
+  public int a30629;
+  public int a30630;
+  public int a30631;
+  public int a30632;
+  public int a30633;
+  public int a30634;
+  public int a30635;
+  public int a30636;
+  public int a30637;
+  public int a30638;
+  public int a30639;
+  public int a30640;
+  public int a30641;
+  public int a30642;
+  public int a30643;
+  public int a30644;
+  public int a30645;
+  public int a30646;
+  public int a30647;
+  public int a30648;
+  public int a30649;
+  public int a30650;
+  public int a30651;
+  public int a30652;
+  public int a30653;
+  public int a30654;
+  public int a30655;
+  public int a30656;
+  public int a30657;
+  public int a30658;
+  public int a30659;
+  public int a30660;
+  public int a30661;
+  public int a30662;
+  public int a30663;
+  public int a30664;
+  public int a30665;
+  public int a30666;
+  public int a30667;
+  public int a30668;
+  public int a30669;
+  public int a30670;
+  public int a30671;
+  public int a30672;
+  public int a30673;
+  public int a30674;
+  public int a30675;
+  public int a30676;
+  public int a30677;
+  public int a30678;
+  public int a30679;
+  public int a30680;
+  public int a30681;
+  public int a30682;
+  public int a30683;
+  public int a30684;
+  public int a30685;
+  public int a30686;
+  public int a30687;
+  public int a30688;
+  public int a30689;
+  public int a30690;
+  public int a30691;
+  public int a30692;
+  public int a30693;
+  public int a30694;
+  public int a30695;
+  public int a30696;
+  public int a30697;
+  public int a30698;
+  public int a30699;
+  public int a30700;
+  public int a30701;
+  public int a30702;
+  public int a30703;
+  public int a30704;
+  public int a30705;
+  public int a30706;
+  public int a30707;
+  public int a30708;
+  public int a30709;
+  public int a30710;
+  public int a30711;
+  public int a30712;
+  public int a30713;
+  public int a30714;
+  public int a30715;
+  public int a30716;
+  public int a30717;
+  public int a30718;
+  public int a30719;
+  public int a30720;
+  public int a30721;
+  public int a30722;
+  public int a30723;
+  public int a30724;
+  public int a30725;
+  public int a30726;
+  public int a30727;
+  public int a30728;
+  public int a30729;
+  public int a30730;
+  public int a30731;
+  public int a30732;
+  public int a30733;
+  public int a30734;
+  public int a30735;
+  public int a30736;
+  public int a30737;
+  public int a30738;
+  public int a30739;
+  public int a30740;
+  public int a30741;
+  public int a30742;
+  public int a30743;
+  public int a30744;
+  public int a30745;
+  public int a30746;
+  public int a30747;
+  public int a30748;
+  public int a30749;
+  public int a30750;
+  public int a30751;
+  public int a30752;
+  public int a30753;
+  public int a30754;
+  public int a30755;
+  public int a30756;
+  public int a30757;
+  public int a30758;
+  public int a30759;
+  public int a30760;
+  public int a30761;
+  public int a30762;
+  public int a30763;
+  public int a30764;
+  public int a30765;
+  public int a30766;
+  public int a30767;
+  public int a30768;
+  public int a30769;
+  public int a30770;
+  public int a30771;
+  public int a30772;
+  public int a30773;
+  public int a30774;
+  public int a30775;
+  public int a30776;
+  public int a30777;
+  public int a30778;
+  public int a30779;
+  public int a30780;
+  public int a30781;
+  public int a30782;
+  public int a30783;
+  public int a30784;
+  public int a30785;
+  public int a30786;
+  public int a30787;
+  public int a30788;
+  public int a30789;
+  public int a30790;
+  public int a30791;
+  public int a30792;
+  public int a30793;
+  public int a30794;
+  public int a30795;
+  public int a30796;
+  public int a30797;
+  public int a30798;
+  public int a30799;
+  public int a30800;
+  public int a30801;
+  public int a30802;
+  public int a30803;
+  public int a30804;
+  public int a30805;
+  public int a30806;
+  public int a30807;
+  public int a30808;
+  public int a30809;
+  public int a30810;
+  public int a30811;
+  public int a30812;
+  public int a30813;
+  public int a30814;
+  public int a30815;
+  public int a30816;
+  public int a30817;
+  public int a30818;
+  public int a30819;
+  public int a30820;
+  public int a30821;
+  public int a30822;
+  public int a30823;
+  public int a30824;
+  public int a30825;
+  public int a30826;
+  public int a30827;
+  public int a30828;
+  public int a30829;
+  public int a30830;
+  public int a30831;
+  public int a30832;
+  public int a30833;
+  public int a30834;
+  public int a30835;
+  public int a30836;
+  public int a30837;
+  public int a30838;
+  public int a30839;
+  public int a30840;
+  public int a30841;
+  public int a30842;
+  public int a30843;
+  public int a30844;
+  public int a30845;
+  public int a30846;
+  public int a30847;
+  public int a30848;
+  public int a30849;
+  public int a30850;
+  public int a30851;
+  public int a30852;
+  public int a30853;
+  public int a30854;
+  public int a30855;
+  public int a30856;
+  public int a30857;
+  public int a30858;
+  public int a30859;
+  public int a30860;
+  public int a30861;
+  public int a30862;
+  public int a30863;
+  public int a30864;
+  public int a30865;
+  public int a30866;
+  public int a30867;
+  public int a30868;
+  public int a30869;
+  public int a30870;
+  public int a30871;
+  public int a30872;
+  public int a30873;
+  public int a30874;
+  public int a30875;
+  public int a30876;
+  public int a30877;
+  public int a30878;
+  public int a30879;
+  public int a30880;
+  public int a30881;
+  public int a30882;
+  public int a30883;
+  public int a30884;
+  public int a30885;
+  public int a30886;
+  public int a30887;
+  public int a30888;
+  public int a30889;
+  public int a30890;
+  public int a30891;
+  public int a30892;
+  public int a30893;
+  public int a30894;
+  public int a30895;
+  public int a30896;
+  public int a30897;
+  public int a30898;
+  public int a30899;
+  public int a30900;
+  public int a30901;
+  public int a30902;
+  public int a30903;
+  public int a30904;
+  public int a30905;
+  public int a30906;
+  public int a30907;
+  public int a30908;
+  public int a30909;
+  public int a30910;
+  public int a30911;
+  public int a30912;
+  public int a30913;
+  public int a30914;
+  public int a30915;
+  public int a30916;
+  public int a30917;
+  public int a30918;
+  public int a30919;
+  public int a30920;
+  public int a30921;
+  public int a30922;
+  public int a30923;
+  public int a30924;
+  public int a30925;
+  public int a30926;
+  public int a30927;
+  public int a30928;
+  public int a30929;
+  public int a30930;
+  public int a30931;
+  public int a30932;
+  public int a30933;
+  public int a30934;
+  public int a30935;
+  public int a30936;
+  public int a30937;
+  public int a30938;
+  public int a30939;
+  public int a30940;
+  public int a30941;
+  public int a30942;
+  public int a30943;
+  public int a30944;
+  public int a30945;
+  public int a30946;
+  public int a30947;
+  public int a30948;
+  public int a30949;
+  public int a30950;
+  public int a30951;
+  public int a30952;
+  public int a30953;
+  public int a30954;
+  public int a30955;
+  public int a30956;
+  public int a30957;
+  public int a30958;
+  public int a30959;
+  public int a30960;
+  public int a30961;
+  public int a30962;
+  public int a30963;
+  public int a30964;
+  public int a30965;
+  public int a30966;
+  public int a30967;
+  public int a30968;
+  public int a30969;
+  public int a30970;
+  public int a30971;
+  public int a30972;
+  public int a30973;
+  public int a30974;
+  public int a30975;
+  public int a30976;
+  public int a30977;
+  public int a30978;
+  public int a30979;
+  public int a30980;
+  public int a30981;
+  public int a30982;
+  public int a30983;
+  public int a30984;
+  public int a30985;
+  public int a30986;
+  public int a30987;
+  public int a30988;
+  public int a30989;
+  public int a30990;
+  public int a30991;
+  public int a30992;
+  public int a30993;
+  public int a30994;
+  public int a30995;
+  public int a30996;
+  public int a30997;
+  public int a30998;
+  public int a30999;
+  public int a31000;
+  public int a31001;
+  public int a31002;
+  public int a31003;
+  public int a31004;
+  public int a31005;
+  public int a31006;
+  public int a31007;
+  public int a31008;
+  public int a31009;
+  public int a31010;
+  public int a31011;
+  public int a31012;
+  public int a31013;
+  public int a31014;
+  public int a31015;
+  public int a31016;
+  public int a31017;
+  public int a31018;
+  public int a31019;
+  public int a31020;
+  public int a31021;
+  public int a31022;
+  public int a31023;
+  public int a31024;
+  public int a31025;
+  public int a31026;
+  public int a31027;
+  public int a31028;
+  public int a31029;
+  public int a31030;
+  public int a31031;
+  public int a31032;
+  public int a31033;
+  public int a31034;
+  public int a31035;
+  public int a31036;
+  public int a31037;
+  public int a31038;
+  public int a31039;
+  public int a31040;
+  public int a31041;
+  public int a31042;
+  public int a31043;
+  public int a31044;
+  public int a31045;
+  public int a31046;
+  public int a31047;
+  public int a31048;
+  public int a31049;
+  public int a31050;
+  public int a31051;
+  public int a31052;
+  public int a31053;
+  public int a31054;
+  public int a31055;
+  public int a31056;
+  public int a31057;
+  public int a31058;
+  public int a31059;
+  public int a31060;
+  public int a31061;
+  public int a31062;
+  public int a31063;
+  public int a31064;
+  public int a31065;
+  public int a31066;
+  public int a31067;
+  public int a31068;
+  public int a31069;
+  public int a31070;
+  public int a31071;
+  public int a31072;
+  public int a31073;
+  public int a31074;
+  public int a31075;
+  public int a31076;
+  public int a31077;
+  public int a31078;
+  public int a31079;
+  public int a31080;
+  public int a31081;
+  public int a31082;
+  public int a31083;
+  public int a31084;
+  public int a31085;
+  public int a31086;
+  public int a31087;
+  public int a31088;
+  public int a31089;
+  public int a31090;
+  public int a31091;
+  public int a31092;
+  public int a31093;
+  public int a31094;
+  public int a31095;
+  public int a31096;
+  public int a31097;
+  public int a31098;
+  public int a31099;
+  public int a31100;
+  public int a31101;
+  public int a31102;
+  public int a31103;
+  public int a31104;
+  public int a31105;
+  public int a31106;
+  public int a31107;
+  public int a31108;
+  public int a31109;
+  public int a31110;
+  public int a31111;
+  public int a31112;
+  public int a31113;
+  public int a31114;
+  public int a31115;
+  public int a31116;
+  public int a31117;
+  public int a31118;
+  public int a31119;
+  public int a31120;
+  public int a31121;
+  public int a31122;
+  public int a31123;
+  public int a31124;
+  public int a31125;
+  public int a31126;
+  public int a31127;
+  public int a31128;
+  public int a31129;
+  public int a31130;
+  public int a31131;
+  public int a31132;
+  public int a31133;
+  public int a31134;
+  public int a31135;
+  public int a31136;
+  public int a31137;
+  public int a31138;
+  public int a31139;
+  public int a31140;
+  public int a31141;
+  public int a31142;
+  public int a31143;
+  public int a31144;
+  public int a31145;
+  public int a31146;
+  public int a31147;
+  public int a31148;
+  public int a31149;
+  public int a31150;
+  public int a31151;
+  public int a31152;
+  public int a31153;
+  public int a31154;
+  public int a31155;
+  public int a31156;
+  public int a31157;
+  public int a31158;
+  public int a31159;
+  public int a31160;
+  public int a31161;
+  public int a31162;
+  public int a31163;
+  public int a31164;
+  public int a31165;
+  public int a31166;
+  public int a31167;
+  public int a31168;
+  public int a31169;
+  public int a31170;
+  public int a31171;
+  public int a31172;
+  public int a31173;
+  public int a31174;
+  public int a31175;
+  public int a31176;
+  public int a31177;
+  public int a31178;
+  public int a31179;
+  public int a31180;
+  public int a31181;
+  public int a31182;
+  public int a31183;
+  public int a31184;
+  public int a31185;
+  public int a31186;
+  public int a31187;
+  public int a31188;
+  public int a31189;
+  public int a31190;
+  public int a31191;
+  public int a31192;
+  public int a31193;
+  public int a31194;
+  public int a31195;
+  public int a31196;
+  public int a31197;
+  public int a31198;
+  public int a31199;
+  public int a31200;
+  public int a31201;
+  public int a31202;
+  public int a31203;
+  public int a31204;
+  public int a31205;
+  public int a31206;
+  public int a31207;
+  public int a31208;
+  public int a31209;
+  public int a31210;
+  public int a31211;
+  public int a31212;
+  public int a31213;
+  public int a31214;
+  public int a31215;
+  public int a31216;
+  public int a31217;
+  public int a31218;
+  public int a31219;
+  public int a31220;
+  public int a31221;
+  public int a31222;
+  public int a31223;
+  public int a31224;
+  public int a31225;
+  public int a31226;
+  public int a31227;
+  public int a31228;
+  public int a31229;
+  public int a31230;
+  public int a31231;
+  public int a31232;
+  public int a31233;
+  public int a31234;
+  public int a31235;
+  public int a31236;
+  public int a31237;
+  public int a31238;
+  public int a31239;
+  public int a31240;
+  public int a31241;
+  public int a31242;
+  public int a31243;
+  public int a31244;
+  public int a31245;
+  public int a31246;
+  public int a31247;
+  public int a31248;
+  public int a31249;
+  public int a31250;
+  public int a31251;
+  public int a31252;
+  public int a31253;
+  public int a31254;
+  public int a31255;
+  public int a31256;
+  public int a31257;
+  public int a31258;
+  public int a31259;
+  public int a31260;
+  public int a31261;
+  public int a31262;
+  public int a31263;
+  public int a31264;
+  public int a31265;
+  public int a31266;
+  public int a31267;
+  public int a31268;
+  public int a31269;
+  public int a31270;
+  public int a31271;
+  public int a31272;
+  public int a31273;
+  public int a31274;
+  public int a31275;
+  public int a31276;
+  public int a31277;
+  public int a31278;
+  public int a31279;
+  public int a31280;
+  public int a31281;
+  public int a31282;
+  public int a31283;
+  public int a31284;
+  public int a31285;
+  public int a31286;
+  public int a31287;
+  public int a31288;
+  public int a31289;
+  public int a31290;
+  public int a31291;
+  public int a31292;
+  public int a31293;
+  public int a31294;
+  public int a31295;
+  public int a31296;
+  public int a31297;
+  public int a31298;
+  public int a31299;
+  public int a31300;
+  public int a31301;
+  public int a31302;
+  public int a31303;
+  public int a31304;
+  public int a31305;
+  public int a31306;
+  public int a31307;
+  public int a31308;
+  public int a31309;
+  public int a31310;
+  public int a31311;
+  public int a31312;
+  public int a31313;
+  public int a31314;
+  public int a31315;
+  public int a31316;
+  public int a31317;
+  public int a31318;
+  public int a31319;
+  public int a31320;
+  public int a31321;
+  public int a31322;
+  public int a31323;
+  public int a31324;
+  public int a31325;
+  public int a31326;
+  public int a31327;
+  public int a31328;
+  public int a31329;
+  public int a31330;
+  public int a31331;
+  public int a31332;
+  public int a31333;
+  public int a31334;
+  public int a31335;
+  public int a31336;
+  public int a31337;
+  public int a31338;
+  public int a31339;
+  public int a31340;
+  public int a31341;
+  public int a31342;
+  public int a31343;
+  public int a31344;
+  public int a31345;
+  public int a31346;
+  public int a31347;
+  public int a31348;
+  public int a31349;
+  public int a31350;
+  public int a31351;
+  public int a31352;
+  public int a31353;
+  public int a31354;
+  public int a31355;
+  public int a31356;
+  public int a31357;
+  public int a31358;
+  public int a31359;
+  public int a31360;
+  public int a31361;
+  public int a31362;
+  public int a31363;
+  public int a31364;
+  public int a31365;
+  public int a31366;
+  public int a31367;
+  public int a31368;
+  public int a31369;
+  public int a31370;
+  public int a31371;
+  public int a31372;
+  public int a31373;
+  public int a31374;
+  public int a31375;
+  public int a31376;
+  public int a31377;
+  public int a31378;
+  public int a31379;
+  public int a31380;
+  public int a31381;
+  public int a31382;
+  public int a31383;
+  public int a31384;
+  public int a31385;
+  public int a31386;
+  public int a31387;
+  public int a31388;
+  public int a31389;
+  public int a31390;
+  public int a31391;
+  public int a31392;
+  public int a31393;
+  public int a31394;
+  public int a31395;
+  public int a31396;
+  public int a31397;
+  public int a31398;
+  public int a31399;
+  public int a31400;
+  public int a31401;
+  public int a31402;
+  public int a31403;
+  public int a31404;
+  public int a31405;
+  public int a31406;
+  public int a31407;
+  public int a31408;
+  public int a31409;
+  public int a31410;
+  public int a31411;
+  public int a31412;
+  public int a31413;
+  public int a31414;
+  public int a31415;
+  public int a31416;
+  public int a31417;
+  public int a31418;
+  public int a31419;
+  public int a31420;
+  public int a31421;
+  public int a31422;
+  public int a31423;
+  public int a31424;
+  public int a31425;
+  public int a31426;
+  public int a31427;
+  public int a31428;
+  public int a31429;
+  public int a31430;
+  public int a31431;
+  public int a31432;
+  public int a31433;
+  public int a31434;
+  public int a31435;
+  public int a31436;
+  public int a31437;
+  public int a31438;
+  public int a31439;
+  public int a31440;
+  public int a31441;
+  public int a31442;
+  public int a31443;
+  public int a31444;
+  public int a31445;
+  public int a31446;
+  public int a31447;
+  public int a31448;
+  public int a31449;
+  public int a31450;
+  public int a31451;
+  public int a31452;
+  public int a31453;
+  public int a31454;
+  public int a31455;
+  public int a31456;
+  public int a31457;
+  public int a31458;
+  public int a31459;
+  public int a31460;
+  public int a31461;
+  public int a31462;
+  public int a31463;
+  public int a31464;
+  public int a31465;
+  public int a31466;
+  public int a31467;
+  public int a31468;
+  public int a31469;
+  public int a31470;
+  public int a31471;
+  public int a31472;
+  public int a31473;
+  public int a31474;
+  public int a31475;
+  public int a31476;
+  public int a31477;
+  public int a31478;
+  public int a31479;
+  public int a31480;
+  public int a31481;
+  public int a31482;
+  public int a31483;
+  public int a31484;
+  public int a31485;
+  public int a31486;
+  public int a31487;
+  public int a31488;
+  public int a31489;
+  public int a31490;
+  public int a31491;
+  public int a31492;
+  public int a31493;
+  public int a31494;
+  public int a31495;
+  public int a31496;
+  public int a31497;
+  public int a31498;
+  public int a31499;
+  public int a31500;
+  public int a31501;
+  public int a31502;
+  public int a31503;
+  public int a31504;
+  public int a31505;
+  public int a31506;
+  public int a31507;
+  public int a31508;
+  public int a31509;
+  public int a31510;
+  public int a31511;
+  public int a31512;
+  public int a31513;
+  public int a31514;
+  public int a31515;
+  public int a31516;
+  public int a31517;
+  public int a31518;
+  public int a31519;
+  public int a31520;
+  public int a31521;
+  public int a31522;
+  public int a31523;
+  public int a31524;
+  public int a31525;
+  public int a31526;
+  public int a31527;
+  public int a31528;
+  public int a31529;
+  public int a31530;
+  public int a31531;
+  public int a31532;
+  public int a31533;
+  public int a31534;
+  public int a31535;
+  public int a31536;
+  public int a31537;
+  public int a31538;
+  public int a31539;
+  public int a31540;
+  public int a31541;
+  public int a31542;
+  public int a31543;
+  public int a31544;
+  public int a31545;
+  public int a31546;
+  public int a31547;
+  public int a31548;
+  public int a31549;
+  public int a31550;
+  public int a31551;
+  public int a31552;
+  public int a31553;
+  public int a31554;
+  public int a31555;
+  public int a31556;
+  public int a31557;
+  public int a31558;
+  public int a31559;
+  public int a31560;
+  public int a31561;
+  public int a31562;
+  public int a31563;
+  public int a31564;
+  public int a31565;
+  public int a31566;
+  public int a31567;
+  public int a31568;
+  public int a31569;
+  public int a31570;
+  public int a31571;
+  public int a31572;
+  public int a31573;
+  public int a31574;
+  public int a31575;
+  public int a31576;
+  public int a31577;
+  public int a31578;
+  public int a31579;
+  public int a31580;
+  public int a31581;
+  public int a31582;
+  public int a31583;
+  public int a31584;
+  public int a31585;
+  public int a31586;
+  public int a31587;
+  public int a31588;
+  public int a31589;
+  public int a31590;
+  public int a31591;
+  public int a31592;
+  public int a31593;
+  public int a31594;
+  public int a31595;
+  public int a31596;
+  public int a31597;
+  public int a31598;
+  public int a31599;
+  public int a31600;
+  public int a31601;
+  public int a31602;
+  public int a31603;
+  public int a31604;
+  public int a31605;
+  public int a31606;
+  public int a31607;
+  public int a31608;
+  public int a31609;
+  public int a31610;
+  public int a31611;
+  public int a31612;
+  public int a31613;
+  public int a31614;
+  public int a31615;
+  public int a31616;
+  public int a31617;
+  public int a31618;
+  public int a31619;
+  public int a31620;
+  public int a31621;
+  public int a31622;
+  public int a31623;
+  public int a31624;
+  public int a31625;
+  public int a31626;
+  public int a31627;
+  public int a31628;
+  public int a31629;
+  public int a31630;
+  public int a31631;
+  public int a31632;
+  public int a31633;
+  public int a31634;
+  public int a31635;
+  public int a31636;
+  public int a31637;
+  public int a31638;
+  public int a31639;
+  public int a31640;
+  public int a31641;
+  public int a31642;
+  public int a31643;
+  public int a31644;
+  public int a31645;
+  public int a31646;
+  public int a31647;
+  public int a31648;
+  public int a31649;
+  public int a31650;
+  public int a31651;
+  public int a31652;
+  public int a31653;
+  public int a31654;
+  public int a31655;
+  public int a31656;
+  public int a31657;
+  public int a31658;
+  public int a31659;
+  public int a31660;
+  public int a31661;
+  public int a31662;
+  public int a31663;
+  public int a31664;
+  public int a31665;
+  public int a31666;
+  public int a31667;
+  public int a31668;
+  public int a31669;
+  public int a31670;
+  public int a31671;
+  public int a31672;
+  public int a31673;
+  public int a31674;
+  public int a31675;
+  public int a31676;
+  public int a31677;
+  public int a31678;
+  public int a31679;
+  public int a31680;
+  public int a31681;
+  public int a31682;
+  public int a31683;
+  public int a31684;
+  public int a31685;
+  public int a31686;
+  public int a31687;
+  public int a31688;
+  public int a31689;
+  public int a31690;
+  public int a31691;
+  public int a31692;
+  public int a31693;
+  public int a31694;
+  public int a31695;
+  public int a31696;
+  public int a31697;
+  public int a31698;
+  public int a31699;
+  public int a31700;
+  public int a31701;
+  public int a31702;
+  public int a31703;
+  public int a31704;
+  public int a31705;
+  public int a31706;
+  public int a31707;
+  public int a31708;
+  public int a31709;
+  public int a31710;
+  public int a31711;
+  public int a31712;
+  public int a31713;
+  public int a31714;
+  public int a31715;
+  public int a31716;
+  public int a31717;
+  public int a31718;
+  public int a31719;
+  public int a31720;
+  public int a31721;
+  public int a31722;
+  public int a31723;
+  public int a31724;
+  public int a31725;
+  public int a31726;
+  public int a31727;
+  public int a31728;
+  public int a31729;
+  public int a31730;
+  public int a31731;
+  public int a31732;
+  public int a31733;
+  public int a31734;
+  public int a31735;
+  public int a31736;
+  public int a31737;
+  public int a31738;
+  public int a31739;
+  public int a31740;
+  public int a31741;
+  public int a31742;
+  public int a31743;
+  public int a31744;
+  public int a31745;
+  public int a31746;
+  public int a31747;
+  public int a31748;
+  public int a31749;
+  public int a31750;
+  public int a31751;
+  public int a31752;
+  public int a31753;
+  public int a31754;
+  public int a31755;
+  public int a31756;
+  public int a31757;
+  public int a31758;
+  public int a31759;
+  public int a31760;
+  public int a31761;
+  public int a31762;
+  public int a31763;
+  public int a31764;
+  public int a31765;
+  public int a31766;
+  public int a31767;
+  public int a31768;
+  public int a31769;
+  public int a31770;
+  public int a31771;
+  public int a31772;
+  public int a31773;
+  public int a31774;
+  public int a31775;
+  public int a31776;
+  public int a31777;
+  public int a31778;
+  public int a31779;
+  public int a31780;
+  public int a31781;
+  public int a31782;
+  public int a31783;
+  public int a31784;
+  public int a31785;
+  public int a31786;
+  public int a31787;
+  public int a31788;
+  public int a31789;
+  public int a31790;
+  public int a31791;
+  public int a31792;
+  public int a31793;
+  public int a31794;
+  public int a31795;
+  public int a31796;
+  public int a31797;
+  public int a31798;
+  public int a31799;
+  public int a31800;
+  public int a31801;
+  public int a31802;
+  public int a31803;
+  public int a31804;
+  public int a31805;
+  public int a31806;
+  public int a31807;
+  public int a31808;
+  public int a31809;
+  public int a31810;
+  public int a31811;
+  public int a31812;
+  public int a31813;
+  public int a31814;
+  public int a31815;
+  public int a31816;
+  public int a31817;
+  public int a31818;
+  public int a31819;
+  public int a31820;
+  public int a31821;
+  public int a31822;
+  public int a31823;
+  public int a31824;
+  public int a31825;
+  public int a31826;
+  public int a31827;
+  public int a31828;
+  public int a31829;
+  public int a31830;
+  public int a31831;
+  public int a31832;
+  public int a31833;
+  public int a31834;
+  public int a31835;
+  public int a31836;
+  public int a31837;
+  public int a31838;
+  public int a31839;
+  public int a31840;
+  public int a31841;
+  public int a31842;
+  public int a31843;
+  public int a31844;
+  public int a31845;
+  public int a31846;
+  public int a31847;
+  public int a31848;
+  public int a31849;
+  public int a31850;
+  public int a31851;
+  public int a31852;
+  public int a31853;
+  public int a31854;
+  public int a31855;
+  public int a31856;
+  public int a31857;
+  public int a31858;
+  public int a31859;
+  public int a31860;
+  public int a31861;
+  public int a31862;
+  public int a31863;
+  public int a31864;
+  public int a31865;
+  public int a31866;
+  public int a31867;
+  public int a31868;
+  public int a31869;
+  public int a31870;
+  public int a31871;
+  public int a31872;
+  public int a31873;
+  public int a31874;
+  public int a31875;
+  public int a31876;
+  public int a31877;
+  public int a31878;
+  public int a31879;
+  public int a31880;
+  public int a31881;
+  public int a31882;
+  public int a31883;
+  public int a31884;
+  public int a31885;
+  public int a31886;
+  public int a31887;
+  public int a31888;
+  public int a31889;
+  public int a31890;
+  public int a31891;
+  public int a31892;
+  public int a31893;
+  public int a31894;
+  public int a31895;
+  public int a31896;
+  public int a31897;
+  public int a31898;
+  public int a31899;
+  public int a31900;
+  public int a31901;
+  public int a31902;
+  public int a31903;
+  public int a31904;
+  public int a31905;
+  public int a31906;
+  public int a31907;
+  public int a31908;
+  public int a31909;
+  public int a31910;
+  public int a31911;
+  public int a31912;
+  public int a31913;
+  public int a31914;
+  public int a31915;
+  public int a31916;
+  public int a31917;
+  public int a31918;
+  public int a31919;
+  public int a31920;
+  public int a31921;
+  public int a31922;
+  public int a31923;
+  public int a31924;
+  public int a31925;
+  public int a31926;
+  public int a31927;
+  public int a31928;
+  public int a31929;
+  public int a31930;
+  public int a31931;
+  public int a31932;
+  public int a31933;
+  public int a31934;
+  public int a31935;
+  public int a31936;
+  public int a31937;
+  public int a31938;
+  public int a31939;
+  public int a31940;
+  public int a31941;
+  public int a31942;
+  public int a31943;
+  public int a31944;
+  public int a31945;
+  public int a31946;
+  public int a31947;
+  public int a31948;
+  public int a31949;
+  public int a31950;
+  public int a31951;
+  public int a31952;
+  public int a31953;
+  public int a31954;
+  public int a31955;
+  public int a31956;
+  public int a31957;
+  public int a31958;
+  public int a31959;
+  public int a31960;
+  public int a31961;
+  public int a31962;
+  public int a31963;
+  public int a31964;
+  public int a31965;
+  public int a31966;
+  public int a31967;
+  public int a31968;
+  public int a31969;
+  public int a31970;
+  public int a31971;
+  public int a31972;
+  public int a31973;
+  public int a31974;
+  public int a31975;
+  public int a31976;
+  public int a31977;
+  public int a31978;
+  public int a31979;
+  public int a31980;
+  public int a31981;
+  public int a31982;
+  public int a31983;
+  public int a31984;
+  public int a31985;
+  public int a31986;
+  public int a31987;
+  public int a31988;
+  public int a31989;
+  public int a31990;
+  public int a31991;
+  public int a31992;
+  public int a31993;
+  public int a31994;
+  public int a31995;
+  public int a31996;
+  public int a31997;
+  public int a31998;
+  public int a31999;
+  public int a32000;
+  public int a32001;
+  public int a32002;
+  public int a32003;
+  public int a32004;
+  public int a32005;
+  public int a32006;
+  public int a32007;
+  public int a32008;
+  public int a32009;
+  public int a32010;
+  public int a32011;
+  public int a32012;
+  public int a32013;
+  public int a32014;
+  public int a32015;
+  public int a32016;
+  public int a32017;
+  public int a32018;
+  public int a32019;
+  public int a32020;
+  public int a32021;
+  public int a32022;
+  public int a32023;
+  public int a32024;
+  public int a32025;
+  public int a32026;
+  public int a32027;
+  public int a32028;
+  public int a32029;
+  public int a32030;
+  public int a32031;
+  public int a32032;
+  public int a32033;
+  public int a32034;
+  public int a32035;
+  public int a32036;
+  public int a32037;
+  public int a32038;
+  public int a32039;
+  public int a32040;
+  public int a32041;
+  public int a32042;
+  public int a32043;
+  public int a32044;
+  public int a32045;
+  public int a32046;
+  public int a32047;
+  public int a32048;
+  public int a32049;
+  public int a32050;
+  public int a32051;
+  public int a32052;
+  public int a32053;
+  public int a32054;
+  public int a32055;
+  public int a32056;
+  public int a32057;
+  public int a32058;
+  public int a32059;
+  public int a32060;
+  public int a32061;
+  public int a32062;
+  public int a32063;
+  public int a32064;
+  public int a32065;
+  public int a32066;
+  public int a32067;
+  public int a32068;
+  public int a32069;
+  public int a32070;
+  public int a32071;
+  public int a32072;
+  public int a32073;
+  public int a32074;
+  public int a32075;
+  public int a32076;
+  public int a32077;
+  public int a32078;
+  public int a32079;
+  public int a32080;
+  public int a32081;
+  public int a32082;
+  public int a32083;
+  public int a32084;
+  public int a32085;
+  public int a32086;
+  public int a32087;
+  public int a32088;
+  public int a32089;
+  public int a32090;
+  public int a32091;
+  public int a32092;
+  public int a32093;
+  public int a32094;
+  public int a32095;
+  public int a32096;
+  public int a32097;
+  public int a32098;
+  public int a32099;
+  public int a32100;
+  public int a32101;
+  public int a32102;
+  public int a32103;
+  public int a32104;
+  public int a32105;
+  public int a32106;
+  public int a32107;
+  public int a32108;
+  public int a32109;
+  public int a32110;
+  public int a32111;
+  public int a32112;
+  public int a32113;
+  public int a32114;
+  public int a32115;
+  public int a32116;
+  public int a32117;
+  public int a32118;
+  public int a32119;
+  public int a32120;
+  public int a32121;
+  public int a32122;
+  public int a32123;
+  public int a32124;
+  public int a32125;
+  public int a32126;
+  public int a32127;
+  public int a32128;
+  public int a32129;
+  public int a32130;
+  public int a32131;
+  public int a32132;
+  public int a32133;
+  public int a32134;
+  public int a32135;
+  public int a32136;
+  public int a32137;
+  public int a32138;
+  public int a32139;
+  public int a32140;
+  public int a32141;
+  public int a32142;
+  public int a32143;
+  public int a32144;
+  public int a32145;
+  public int a32146;
+  public int a32147;
+  public int a32148;
+  public int a32149;
+  public int a32150;
+  public int a32151;
+  public int a32152;
+  public int a32153;
+  public int a32154;
+  public int a32155;
+  public int a32156;
+  public int a32157;
+  public int a32158;
+  public int a32159;
+  public int a32160;
+  public int a32161;
+  public int a32162;
+  public int a32163;
+  public int a32164;
+  public int a32165;
+  public int a32166;
+  public int a32167;
+  public int a32168;
+  public int a32169;
+  public int a32170;
+  public int a32171;
+  public int a32172;
+  public int a32173;
+  public int a32174;
+  public int a32175;
+  public int a32176;
+  public int a32177;
+  public int a32178;
+  public int a32179;
+  public int a32180;
+  public int a32181;
+  public int a32182;
+  public int a32183;
+  public int a32184;
+  public int a32185;
+  public int a32186;
+  public int a32187;
+  public int a32188;
+  public int a32189;
+  public int a32190;
+  public int a32191;
+  public int a32192;
+  public int a32193;
+  public int a32194;
+  public int a32195;
+  public int a32196;
+  public int a32197;
+  public int a32198;
+  public int a32199;
+  public int a32200;
+  public int a32201;
+  public int a32202;
+  public int a32203;
+  public int a32204;
+  public int a32205;
+  public int a32206;
+  public int a32207;
+  public int a32208;
+  public int a32209;
+  public int a32210;
+  public int a32211;
+  public int a32212;
+  public int a32213;
+  public int a32214;
+  public int a32215;
+  public int a32216;
+  public int a32217;
+  public int a32218;
+  public int a32219;
+  public int a32220;
+  public int a32221;
+  public int a32222;
+  public int a32223;
+  public int a32224;
+  public int a32225;
+  public int a32226;
+  public int a32227;
+  public int a32228;
+  public int a32229;
+  public int a32230;
+  public int a32231;
+  public int a32232;
+  public int a32233;
+  public int a32234;
+  public int a32235;
+  public int a32236;
+  public int a32237;
+  public int a32238;
+  public int a32239;
+  public int a32240;
+  public int a32241;
+  public int a32242;
+  public int a32243;
+  public int a32244;
+  public int a32245;
+  public int a32246;
+  public int a32247;
+  public int a32248;
+  public int a32249;
+  public int a32250;
+  public int a32251;
+  public int a32252;
+  public int a32253;
+  public int a32254;
+  public int a32255;
+  public int a32256;
+  public int a32257;
+  public int a32258;
+  public int a32259;
+  public int a32260;
+  public int a32261;
+  public int a32262;
+  public int a32263;
+  public int a32264;
+  public int a32265;
+  public int a32266;
+  public int a32267;
+  public int a32268;
+  public int a32269;
+  public int a32270;
+  public int a32271;
+  public int a32272;
+  public int a32273;
+  public int a32274;
+  public int a32275;
+  public int a32276;
+  public int a32277;
+  public int a32278;
+  public int a32279;
+  public int a32280;
+  public int a32281;
+  public int a32282;
+  public int a32283;
+  public int a32284;
+  public int a32285;
+  public int a32286;
+  public int a32287;
+  public int a32288;
+  public int a32289;
+  public int a32290;
+  public int a32291;
+  public int a32292;
+  public int a32293;
+  public int a32294;
+  public int a32295;
+  public int a32296;
+  public int a32297;
+  public int a32298;
+  public int a32299;
+  public int a32300;
+  public int a32301;
+  public int a32302;
+  public int a32303;
+  public int a32304;
+  public int a32305;
+  public int a32306;
+  public int a32307;
+  public int a32308;
+  public int a32309;
+  public int a32310;
+  public int a32311;
+  public int a32312;
+  public int a32313;
+  public int a32314;
+  public int a32315;
+  public int a32316;
+  public int a32317;
+  public int a32318;
+  public int a32319;
+  public int a32320;
+  public int a32321;
+  public int a32322;
+  public int a32323;
+  public int a32324;
+  public int a32325;
+  public int a32326;
+  public int a32327;
+  public int a32328;
+  public int a32329;
+  public int a32330;
+  public int a32331;
+  public int a32332;
+  public int a32333;
+  public int a32334;
+  public int a32335;
+  public int a32336;
+  public int a32337;
+  public int a32338;
+  public int a32339;
+  public int a32340;
+  public int a32341;
+  public int a32342;
+  public int a32343;
+  public int a32344;
+  public int a32345;
+  public int a32346;
+  public int a32347;
+  public int a32348;
+  public int a32349;
+  public int a32350;
+  public int a32351;
+  public int a32352;
+  public int a32353;
+  public int a32354;
+  public int a32355;
+  public int a32356;
+  public int a32357;
+  public int a32358;
+  public int a32359;
+  public int a32360;
+  public int a32361;
+  public int a32362;
+  public int a32363;
+  public int a32364;
+  public int a32365;
+  public int a32366;
+  public int a32367;
+  public int a32368;
+  public int a32369;
+  public int a32370;
+  public int a32371;
+  public int a32372;
+  public int a32373;
+  public int a32374;
+  public int a32375;
+  public int a32376;
+  public int a32377;
+  public int a32378;
+  public int a32379;
+  public int a32380;
+  public int a32381;
+  public int a32382;
+  public int a32383;
+  public int a32384;
+  public int a32385;
+  public int a32386;
+  public int a32387;
+  public int a32388;
+  public int a32389;
+  public int a32390;
+  public int a32391;
+  public int a32392;
+  public int a32393;
+  public int a32394;
+  public int a32395;
+  public int a32396;
+  public int a32397;
+  public int a32398;
+  public int a32399;
+  public int a32400;
+  public int a32401;
+  public int a32402;
+  public int a32403;
+  public int a32404;
+  public int a32405;
+  public int a32406;
+  public int a32407;
+  public int a32408;
+  public int a32409;
+  public int a32410;
+  public int a32411;
+  public int a32412;
+  public int a32413;
+  public int a32414;
+  public int a32415;
+  public int a32416;
+  public int a32417;
+  public int a32418;
+  public int a32419;
+  public int a32420;
+  public int a32421;
+  public int a32422;
+  public int a32423;
+  public int a32424;
+  public int a32425;
+  public int a32426;
+  public int a32427;
+  public int a32428;
+  public int a32429;
+  public int a32430;
+  public int a32431;
+  public int a32432;
+  public int a32433;
+  public int a32434;
+  public int a32435;
+  public int a32436;
+  public int a32437;
+  public int a32438;
+  public int a32439;
+  public int a32440;
+  public int a32441;
+  public int a32442;
+  public int a32443;
+  public int a32444;
+  public int a32445;
+  public int a32446;
+  public int a32447;
+  public int a32448;
+  public int a32449;
+  public int a32450;
+  public int a32451;
+  public int a32452;
+  public int a32453;
+  public int a32454;
+  public int a32455;
+  public int a32456;
+  public int a32457;
+  public int a32458;
+  public int a32459;
+  public int a32460;
+  public int a32461;
+  public int a32462;
+  public int a32463;
+  public int a32464;
+  public int a32465;
+  public int a32466;
+  public int a32467;
+  public int a32468;
+  public int a32469;
+  public int a32470;
+  public int a32471;
+  public int a32472;
+  public int a32473;
+  public int a32474;
+  public int a32475;
+  public int a32476;
+  public int a32477;
+  public int a32478;
+  public int a32479;
+  public int a32480;
+  public int a32481;
+  public int a32482;
+  public int a32483;
+  public int a32484;
+  public int a32485;
+  public int a32486;
+  public int a32487;
+  public int a32488;
+  public int a32489;
+  public int a32490;
+  public int a32491;
+  public int a32492;
+  public int a32493;
+  public int a32494;
+  public int a32495;
+  public int a32496;
+  public int a32497;
+  public int a32498;
+  public int a32499;
+  public int a32500;
+  public int a32501;
+  public int a32502;
+  public int a32503;
+  public int a32504;
+  public int a32505;
+  public int a32506;
+  public int a32507;
+  public int a32508;
+  public int a32509;
+  public int a32510;
+  public int a32511;
+  public int a32512;
+  public int a32513;
+  public int a32514;
+  public int a32515;
+  public int a32516;
+  public int a32517;
+  public int a32518;
+  public int a32519;
+  public int a32520;
+  public int a32521;
+  public int a32522;
+  public int a32523;
+  public int a32524;
+  public int a32525;
+  public int a32526;
+  public int a32527;
+  public int a32528;
+  public int a32529;
+  public int a32530;
+  public int a32531;
+  public int a32532;
+  public int a32533;
+  public int a32534;
+  public int a32535;
+  public int a32536;
+  public int a32537;
+  public int a32538;
+  public int a32539;
+  public int a32540;
+  public int a32541;
+  public int a32542;
+  public int a32543;
+  public int a32544;
+  public int a32545;
+  public int a32546;
+  public int a32547;
+  public int a32548;
+  public int a32549;
+  public int a32550;
+  public int a32551;
+  public int a32552;
+  public int a32553;
+  public int a32554;
+  public int a32555;
+  public int a32556;
+  public int a32557;
+  public int a32558;
+  public int a32559;
+  public int a32560;
+  public int a32561;
+  public int a32562;
+  public int a32563;
+  public int a32564;
+  public int a32565;
+  public int a32566;
+  public int a32567;
+  public int a32568;
+  public int a32569;
+  public int a32570;
+  public int a32571;
+  public int a32572;
+  public int a32573;
+  public int a32574;
+  public int a32575;
+  public int a32576;
+  public int a32577;
+  public int a32578;
+  public int a32579;
+  public int a32580;
+  public int a32581;
+  public int a32582;
+  public int a32583;
+  public int a32584;
+  public int a32585;
+  public int a32586;
+  public int a32587;
+  public int a32588;
+  public int a32589;
+  public int a32590;
+  public int a32591;
+  public int a32592;
+  public int a32593;
+  public int a32594;
+  public int a32595;
+  public int a32596;
+  public int a32597;
+  public int a32598;
+  public int a32599;
+  public int a32600;
+  public int a32601;
+  public int a32602;
+  public int a32603;
+  public int a32604;
+  public int a32605;
+  public int a32606;
+  public int a32607;
+  public int a32608;
+  public int a32609;
+  public int a32610;
+  public int a32611;
+  public int a32612;
+  public int a32613;
+  public int a32614;
+  public int a32615;
+  public int a32616;
+  public int a32617;
+  public int a32618;
+  public int a32619;
+  public int a32620;
+  public int a32621;
+  public int a32622;
+  public int a32623;
+  public int a32624;
+  public int a32625;
+  public int a32626;
+  public int a32627;
+  public int a32628;
+  public int a32629;
+  public int a32630;
+  public int a32631;
+  public int a32632;
+  public int a32633;
+  public int a32634;
+  public int a32635;
+  public int a32636;
+  public int a32637;
+  public int a32638;
+  public int a32639;
+  public int a32640;
+  public int a32641;
+  public int a32642;
+  public int a32643;
+  public int a32644;
+  public int a32645;
+  public int a32646;
+  public int a32647;
+  public int a32648;
+  public int a32649;
+  public int a32650;
+  public int a32651;
+  public int a32652;
+  public int a32653;
+  public int a32654;
+  public int a32655;
+  public int a32656;
+  public int a32657;
+  public int a32658;
+  public int a32659;
+  public int a32660;
+  public int a32661;
+  public int a32662;
+  public int a32663;
+  public int a32664;
+  public int a32665;
+  public int a32666;
+  public int a32667;
+  public int a32668;
+  public int a32669;
+  public int a32670;
+  public int a32671;
+  public int a32672;
+  public int a32673;
+  public int a32674;
+  public int a32675;
+  public int a32676;
+  public int a32677;
+  public int a32678;
+  public int a32679;
+  public int a32680;
+  public int a32681;
+  public int a32682;
+  public int a32683;
+  public int a32684;
+  public int a32685;
+  public int a32686;
+  public int a32687;
+  public int a32688;
+  public int a32689;
+  public int a32690;
+  public int a32691;
+  public int a32692;
+  public int a32693;
+  public int a32694;
+  public int a32695;
+  public int a32696;
+  public int a32697;
+  public int a32698;
+  public int a32699;
+  public int a32700;
+  public int a32701;
+  public int a32702;
+  public int a32703;
+  public int a32704;
+  public int a32705;
+  public int a32706;
+  public int a32707;
+  public int a32708;
+  public int a32709;
+  public int a32710;
+  public int a32711;
+  public int a32712;
+  public int a32713;
+  public int a32714;
+  public int a32715;
+  public int a32716;
+  public int a32717;
+  public int a32718;
+  public int a32719;
+  public int a32720;
+  public int a32721;
+  public int a32722;
+  public int a32723;
+  public int a32724;
+  public int a32725;
+  public int a32726;
+  public int a32727;
+  public int a32728;
+  public int a32729;
+  public int a32730;
+  public int a32731;
+  public int a32732;
+  public int a32733;
+  public int a32734;
+  public int a32735;
+  public int a32736;
+  public int a32737;
+  public int a32738;
+  public int a32739;
+  public int a32740;
+  public int a32741;
+  public int a32742;
+  public int a32743;
+  public int a32744;
+  public int a32745;
+  public int a32746;
+  public int a32747;
+  public int a32748;
+  public int a32749;
+  public int a32750;
+  public int a32751;
+  public int a32752;
+  public int a32753;
+  public int a32754;
+  public int a32755;
+  public int a32756;
+  public int a32757;
+  public int a32758;
+  public int a32759;
+  public int a32760;
+  public int a32761;
+  public int a32762;
+  public int a32763;
+  public int a32764;
+  public int a32765;
+  public int a32766;
+  public int a32767;
+ int b0;
+  public int b1;
+  public int b2;
+  public int b3;
+  public int b4;
+  public int b5;
+  public int b6;
+  public int b7;
+  public int b8;
+  public int b9;
+  public int b10;
+  public int b11;
+  public int b12;
+  public int b13;
+  public int b14;
+  public int b15;
+  public int b16;
+  public int b17;
+  public int b18;
+  public int b19;
+  public int b20;
+  public int b21;
+  public int b22;
+  public int b23;
+  public int b24;
+  public int b25;
+  public int b26;
+  public int b27;
+  public int b28;
+  public int b29;
+  public int b30;
+  public int b31;
+  public int b32;
+  public int b33;
+  public int b34;
+  public int b35;
+  public int b36;
+  public int b37;
+  public int b38;
+  public int b39;
+  public int b40;
+  public int b41;
+  public int b42;
+  public int b43;
+  public int b44;
+  public int b45;
+  public int b46;
+  public int b47;
+  public int b48;
+  public int b49;
+  public int b50;
+  public int b51;
+  public int b52;
+  public int b53;
+  public int b54;
+  public int b55;
+  public int b56;
+  public int b57;
+  public int b58;
+  public int b59;
+  public int b60;
+  public int b61;
+  public int b62;
+  public int b63;
+  public int b64;
+  public int b65;
+  public int b66;
+  public int b67;
+  public int b68;
+  public int b69;
+  public int b70;
+  public int b71;
+  public int b72;
+  public int b73;
+  public int b74;
+  public int b75;
+  public int b76;
+  public int b77;
+  public int b78;
+  public int b79;
+  public int b80;
+  public int b81;
+  public int b82;
+  public int b83;
+  public int b84;
+  public int b85;
+  public int b86;
+  public int b87;
+  public int b88;
+  public int b89;
+  public int b90;
+  public int b91;
+  public int b92;
+  public int b93;
+  public int b94;
+  public int b95;
+  public int b96;
+  public int b97;
+  public int b98;
+  public int b99;
+  public int b100;
+  public int b101;
+  public int b102;
+  public int b103;
+  public int b104;
+  public int b105;
+  public int b106;
+  public int b107;
+  public int b108;
+  public int b109;
+  public int b110;
+  public int b111;
+  public int b112;
+  public int b113;
+  public int b114;
+  public int b115;
+  public int b116;
+  public int b117;
+  public int b118;
+  public int b119;
+  public int b120;
+  public int b121;
+  public int b122;
+  public int b123;
+  public int b124;
+  public int b125;
+  public int b126;
+  public int b127;
+  public int b128;
+  public int b129;
+  public int b130;
+  public int b131;
+  public int b132;
+  public int b133;
+  public int b134;
+  public int b135;
+  public int b136;
+  public int b137;
+  public int b138;
+  public int b139;
+  public int b140;
+  public int b141;
+  public int b142;
+  public int b143;
+  public int b144;
+  public int b145;
+  public int b146;
+  public int b147;
+  public int b148;
+  public int b149;
+  public int b150;
+  public int b151;
+  public int b152;
+  public int b153;
+  public int b154;
+  public int b155;
+  public int b156;
+  public int b157;
+  public int b158;
+  public int b159;
+  public int b160;
+  public int b161;
+  public int b162;
+  public int b163;
+  public int b164;
+  public int b165;
+  public int b166;
+  public int b167;
+  public int b168;
+  public int b169;
+  public int b170;
+  public int b171;
+  public int b172;
+  public int b173;
+  public int b174;
+  public int b175;
+  public int b176;
+  public int b177;
+  public int b178;
+  public int b179;
+  public int b180;
+  public int b181;
+  public int b182;
+  public int b183;
+  public int b184;
+  public int b185;
+  public int b186;
+  public int b187;
+  public int b188;
+  public int b189;
+  public int b190;
+  public int b191;
+  public int b192;
+  public int b193;
+  public int b194;
+  public int b195;
+  public int b196;
+  public int b197;
+  public int b198;
+  public int b199;
+  public int b200;
+  public int b201;
+  public int b202;
+  public int b203;
+  public int b204;
+  public int b205;
+  public int b206;
+  public int b207;
+  public int b208;
+  public int b209;
+  public int b210;
+  public int b211;
+  public int b212;
+  public int b213;
+  public int b214;
+  public int b215;
+  public int b216;
+  public int b217;
+  public int b218;
+  public int b219;
+  public int b220;
+  public int b221;
+  public int b222;
+  public int b223;
+  public int b224;
+  public int b225;
+  public int b226;
+  public int b227;
+  public int b228;
+  public int b229;
+  public int b230;
+  public int b231;
+  public int b232;
+  public int b233;
+  public int b234;
+  public int b235;
+  public int b236;
+  public int b237;
+  public int b238;
+  public int b239;
+  public int b240;
+  public int b241;
+  public int b242;
+  public int b243;
+  public int b244;
+  public int b245;
+  public int b246;
+  public int b247;
+  public int b248;
+  public int b249;
+  public int b250;
+  public int b251;
+  public int b252;
+  public int b253;
+  public int b254;
+  public int b255;
+  public int b256;
+  public int b257;
+  public int b258;
+  public int b259;
+  public int b260;
+  public int b261;
+  public int b262;
+  public int b263;
+  public int b264;
+  public int b265;
+  public int b266;
+  public int b267;
+  public int b268;
+  public int b269;
+  public int b270;
+  public int b271;
+  public int b272;
+  public int b273;
+  public int b274;
+  public int b275;
+  public int b276;
+  public int b277;
+  public int b278;
+  public int b279;
+  public int b280;
+  public int b281;
+  public int b282;
+  public int b283;
+  public int b284;
+  public int b285;
+  public int b286;
+  public int b287;
+  public int b288;
+  public int b289;
+  public int b290;
+  public int b291;
+  public int b292;
+  public int b293;
+  public int b294;
+  public int b295;
+  public int b296;
+  public int b297;
+  public int b298;
+  public int b299;
+  public int b300;
+  public int b301;
+  public int b302;
+  public int b303;
+  public int b304;
+  public int b305;
+  public int b306;
+  public int b307;
+  public int b308;
+  public int b309;
+  public int b310;
+  public int b311;
+  public int b312;
+  public int b313;
+  public int b314;
+  public int b315;
+  public int b316;
+  public int b317;
+  public int b318;
+  public int b319;
+  public int b320;
+  public int b321;
+  public int b322;
+  public int b323;
+  public int b324;
+  public int b325;
+  public int b326;
+  public int b327;
+  public int b328;
+  public int b329;
+  public int b330;
+  public int b331;
+  public int b332;
+  public int b333;
+  public int b334;
+  public int b335;
+  public int b336;
+  public int b337;
+  public int b338;
+  public int b339;
+  public int b340;
+  public int b341;
+  public int b342;
+  public int b343;
+  public int b344;
+  public int b345;
+  public int b346;
+  public int b347;
+  public int b348;
+  public int b349;
+  public int b350;
+  public int b351;
+  public int b352;
+  public int b353;
+  public int b354;
+  public int b355;
+  public int b356;
+  public int b357;
+  public int b358;
+  public int b359;
+  public int b360;
+  public int b361;
+  public int b362;
+  public int b363;
+  public int b364;
+  public int b365;
+  public int b366;
+  public int b367;
+  public int b368;
+  public int b369;
+  public int b370;
+  public int b371;
+  public int b372;
+  public int b373;
+  public int b374;
+  public int b375;
+  public int b376;
+  public int b377;
+  public int b378;
+  public int b379;
+  public int b380;
+  public int b381;
+  public int b382;
+  public int b383;
+  public int b384;
+  public int b385;
+  public int b386;
+  public int b387;
+  public int b388;
+  public int b389;
+  public int b390;
+  public int b391;
+  public int b392;
+  public int b393;
+  public int b394;
+  public int b395;
+  public int b396;
+  public int b397;
+  public int b398;
+  public int b399;
+  public int b400;
+  public int b401;
+  public int b402;
+  public int b403;
+  public int b404;
+  public int b405;
+  public int b406;
+  public int b407;
+  public int b408;
+  public int b409;
+  public int b410;
+  public int b411;
+  public int b412;
+  public int b413;
+  public int b414;
+  public int b415;
+  public int b416;
+  public int b417;
+  public int b418;
+  public int b419;
+  public int b420;
+  public int b421;
+  public int b422;
+  public int b423;
+  public int b424;
+  public int b425;
+  public int b426;
+  public int b427;
+  public int b428;
+  public int b429;
+  public int b430;
+  public int b431;
+  public int b432;
+  public int b433;
+  public int b434;
+  public int b435;
+  public int b436;
+  public int b437;
+  public int b438;
+  public int b439;
+  public int b440;
+  public int b441;
+  public int b442;
+  public int b443;
+  public int b444;
+  public int b445;
+  public int b446;
+  public int b447;
+  public int b448;
+  public int b449;
+  public int b450;
+  public int b451;
+  public int b452;
+  public int b453;
+  public int b454;
+  public int b455;
+  public int b456;
+  public int b457;
+  public int b458;
+  public int b459;
+  public int b460;
+  public int b461;
+  public int b462;
+  public int b463;
+  public int b464;
+  public int b465;
+  public int b466;
+  public int b467;
+  public int b468;
+  public int b469;
+  public int b470;
+  public int b471;
+  public int b472;
+  public int b473;
+  public int b474;
+  public int b475;
+  public int b476;
+  public int b477;
+  public int b478;
+  public int b479;
+  public int b480;
+  public int b481;
+  public int b482;
+  public int b483;
+  public int b484;
+  public int b485;
+  public int b486;
+  public int b487;
+  public int b488;
+  public int b489;
+  public int b490;
+  public int b491;
+  public int b492;
+  public int b493;
+  public int b494;
+  public int b495;
+  public int b496;
+  public int b497;
+  public int b498;
+  public int b499;
+  public int b500;
+  public int b501;
+  public int b502;
+  public int b503;
+  public int b504;
+  public int b505;
+  public int b506;
+  public int b507;
+  public int b508;
+  public int b509;
+  public int b510;
+  public int b511;
+  public int b512;
+  public int b513;
+  public int b514;
+  public int b515;
+  public int b516;
+  public int b517;
+  public int b518;
+  public int b519;
+  public int b520;
+  public int b521;
+  public int b522;
+  public int b523;
+  public int b524;
+  public int b525;
+  public int b526;
+  public int b527;
+  public int b528;
+  public int b529;
+  public int b530;
+  public int b531;
+  public int b532;
+  public int b533;
+  public int b534;
+  public int b535;
+  public int b536;
+  public int b537;
+  public int b538;
+  public int b539;
+  public int b540;
+  public int b541;
+  public int b542;
+  public int b543;
+  public int b544;
+  public int b545;
+  public int b546;
+  public int b547;
+  public int b548;
+  public int b549;
+  public int b550;
+  public int b551;
+  public int b552;
+  public int b553;
+  public int b554;
+  public int b555;
+  public int b556;
+  public int b557;
+  public int b558;
+  public int b559;
+  public int b560;
+  public int b561;
+  public int b562;
+  public int b563;
+  public int b564;
+  public int b565;
+  public int b566;
+  public int b567;
+  public int b568;
+  public int b569;
+  public int b570;
+  public int b571;
+  public int b572;
+  public int b573;
+  public int b574;
+  public int b575;
+  public int b576;
+  public int b577;
+  public int b578;
+  public int b579;
+  public int b580;
+  public int b581;
+  public int b582;
+  public int b583;
+  public int b584;
+  public int b585;
+  public int b586;
+  public int b587;
+  public int b588;
+  public int b589;
+  public int b590;
+  public int b591;
+  public int b592;
+  public int b593;
+  public int b594;
+  public int b595;
+  public int b596;
+  public int b597;
+  public int b598;
+  public int b599;
+  public int b600;
+  public int b601;
+  public int b602;
+  public int b603;
+  public int b604;
+  public int b605;
+  public int b606;
+  public int b607;
+  public int b608;
+  public int b609;
+  public int b610;
+  public int b611;
+  public int b612;
+  public int b613;
+  public int b614;
+  public int b615;
+  public int b616;
+  public int b617;
+  public int b618;
+  public int b619;
+  public int b620;
+  public int b621;
+  public int b622;
+  public int b623;
+  public int b624;
+  public int b625;
+  public int b626;
+  public int b627;
+  public int b628;
+  public int b629;
+  public int b630;
+  public int b631;
+  public int b632;
+  public int b633;
+  public int b634;
+  public int b635;
+  public int b636;
+  public int b637;
+  public int b638;
+  public int b639;
+  public int b640;
+  public int b641;
+  public int b642;
+  public int b643;
+  public int b644;
+  public int b645;
+  public int b646;
+  public int b647;
+  public int b648;
+  public int b649;
+  public int b650;
+  public int b651;
+  public int b652;
+  public int b653;
+  public int b654;
+  public int b655;
+  public int b656;
+  public int b657;
+  public int b658;
+  public int b659;
+  public int b660;
+  public int b661;
+  public int b662;
+  public int b663;
+  public int b664;
+  public int b665;
+  public int b666;
+  public int b667;
+  public int b668;
+  public int b669;
+  public int b670;
+  public int b671;
+  public int b672;
+  public int b673;
+  public int b674;
+  public int b675;
+  public int b676;
+  public int b677;
+  public int b678;
+  public int b679;
+  public int b680;
+  public int b681;
+  public int b682;
+  public int b683;
+  public int b684;
+  public int b685;
+  public int b686;
+  public int b687;
+  public int b688;
+  public int b689;
+  public int b690;
+  public int b691;
+  public int b692;
+  public int b693;
+  public int b694;
+  public int b695;
+  public int b696;
+  public int b697;
+  public int b698;
+  public int b699;
+  public int b700;
+  public int b701;
+  public int b702;
+  public int b703;
+  public int b704;
+  public int b705;
+  public int b706;
+  public int b707;
+  public int b708;
+  public int b709;
+  public int b710;
+  public int b711;
+  public int b712;
+  public int b713;
+  public int b714;
+  public int b715;
+  public int b716;
+  public int b717;
+  public int b718;
+  public int b719;
+  public int b720;
+  public int b721;
+  public int b722;
+  public int b723;
+  public int b724;
+  public int b725;
+  public int b726;
+  public int b727;
+  public int b728;
+  public int b729;
+  public int b730;
+  public int b731;
+  public int b732;
+  public int b733;
+  public int b734;
+  public int b735;
+  public int b736;
+  public int b737;
+  public int b738;
+  public int b739;
+  public int b740;
+  public int b741;
+  public int b742;
+  public int b743;
+  public int b744;
+  public int b745;
+  public int b746;
+  public int b747;
+  public int b748;
+  public int b749;
+  public int b750;
+  public int b751;
+  public int b752;
+  public int b753;
+  public int b754;
+  public int b755;
+  public int b756;
+  public int b757;
+  public int b758;
+  public int b759;
+  public int b760;
+  public int b761;
+  public int b762;
+  public int b763;
+  public int b764;
+  public int b765;
+  public int b766;
+  public int b767;
+  public int b768;
+  public int b769;
+  public int b770;
+  public int b771;
+  public int b772;
+  public int b773;
+  public int b774;
+  public int b775;
+  public int b776;
+  public int b777;
+  public int b778;
+  public int b779;
+  public int b780;
+  public int b781;
+  public int b782;
+  public int b783;
+  public int b784;
+  public int b785;
+  public int b786;
+  public int b787;
+  public int b788;
+  public int b789;
+  public int b790;
+  public int b791;
+  public int b792;
+  public int b793;
+  public int b794;
+  public int b795;
+  public int b796;
+  public int b797;
+  public int b798;
+  public int b799;
+  public int b800;
+  public int b801;
+  public int b802;
+  public int b803;
+  public int b804;
+  public int b805;
+  public int b806;
+  public int b807;
+  public int b808;
+  public int b809;
+  public int b810;
+  public int b811;
+  public int b812;
+  public int b813;
+  public int b814;
+  public int b815;
+  public int b816;
+  public int b817;
+  public int b818;
+  public int b819;
+  public int b820;
+  public int b821;
+  public int b822;
+  public int b823;
+  public int b824;
+  public int b825;
+  public int b826;
+  public int b827;
+  public int b828;
+  public int b829;
+  public int b830;
+  public int b831;
+  public int b832;
+  public int b833;
+  public int b834;
+  public int b835;
+  public int b836;
+  public int b837;
+  public int b838;
+  public int b839;
+  public int b840;
+  public int b841;
+  public int b842;
+  public int b843;
+  public int b844;
+  public int b845;
+  public int b846;
+  public int b847;
+  public int b848;
+  public int b849;
+  public int b850;
+  public int b851;
+  public int b852;
+  public int b853;
+  public int b854;
+  public int b855;
+  public int b856;
+  public int b857;
+  public int b858;
+  public int b859;
+  public int b860;
+  public int b861;
+  public int b862;
+  public int b863;
+  public int b864;
+  public int b865;
+  public int b866;
+  public int b867;
+  public int b868;
+  public int b869;
+  public int b870;
+  public int b871;
+  public int b872;
+  public int b873;
+  public int b874;
+  public int b875;
+  public int b876;
+  public int b877;
+  public int b878;
+  public int b879;
+  public int b880;
+  public int b881;
+  public int b882;
+  public int b883;
+  public int b884;
+  public int b885;
+  public int b886;
+  public int b887;
+  public int b888;
+  public int b889;
+  public int b890;
+  public int b891;
+  public int b892;
+  public int b893;
+  public int b894;
+  public int b895;
+  public int b896;
+  public int b897;
+  public int b898;
+  public int b899;
+  public int b900;
+  public int b901;
+  public int b902;
+  public int b903;
+  public int b904;
+  public int b905;
+  public int b906;
+  public int b907;
+  public int b908;
+  public int b909;
+  public int b910;
+  public int b911;
+  public int b912;
+  public int b913;
+  public int b914;
+  public int b915;
+  public int b916;
+  public int b917;
+  public int b918;
+  public int b919;
+  public int b920;
+  public int b921;
+  public int b922;
+  public int b923;
+  public int b924;
+  public int b925;
+  public int b926;
+  public int b927;
+  public int b928;
+  public int b929;
+  public int b930;
+  public int b931;
+  public int b932;
+  public int b933;
+  public int b934;
+  public int b935;
+  public int b936;
+  public int b937;
+  public int b938;
+  public int b939;
+  public int b940;
+  public int b941;
+  public int b942;
+  public int b943;
+  public int b944;
+  public int b945;
+  public int b946;
+  public int b947;
+  public int b948;
+  public int b949;
+  public int b950;
+  public int b951;
+  public int b952;
+  public int b953;
+  public int b954;
+  public int b955;
+  public int b956;
+  public int b957;
+  public int b958;
+  public int b959;
+  public int b960;
+  public int b961;
+  public int b962;
+  public int b963;
+  public int b964;
+  public int b965;
+  public int b966;
+  public int b967;
+  public int b968;
+  public int b969;
+  public int b970;
+  public int b971;
+  public int b972;
+  public int b973;
+  public int b974;
+  public int b975;
+  public int b976;
+  public int b977;
+  public int b978;
+  public int b979;
+  public int b980;
+  public int b981;
+  public int b982;
+  public int b983;
+  public int b984;
+  public int b985;
+  public int b986;
+  public int b987;
+  public int b988;
+  public int b989;
+  public int b990;
+  public int b991;
+  public int b992;
+  public int b993;
+  public int b994;
+  public int b995;
+  public int b996;
+  public int b997;
+  public int b998;
+  public int b999;
+  public int b1000;
+  public int b1001;
+  public int b1002;
+  public int b1003;
+  public int b1004;
+  public int b1005;
+  public int b1006;
+  public int b1007;
+  public int b1008;
+  public int b1009;
+  public int b1010;
+  public int b1011;
+  public int b1012;
+  public int b1013;
+  public int b1014;
+  public int b1015;
+  public int b1016;
+  public int b1017;
+  public int b1018;
+  public int b1019;
+  public int b1020;
+  public int b1021;
+  public int b1022;
+  public int b1023;
+  public int b1024;
+  public int b1025;
+  public int b1026;
+  public int b1027;
+  public int b1028;
+  public int b1029;
+  public int b1030;
+  public int b1031;
+  public int b1032;
+  public int b1033;
+  public int b1034;
+  public int b1035;
+  public int b1036;
+  public int b1037;
+  public int b1038;
+  public int b1039;
+  public int b1040;
+  public int b1041;
+  public int b1042;
+  public int b1043;
+  public int b1044;
+  public int b1045;
+  public int b1046;
+  public int b1047;
+  public int b1048;
+  public int b1049;
+  public int b1050;
+  public int b1051;
+  public int b1052;
+  public int b1053;
+  public int b1054;
+  public int b1055;
+  public int b1056;
+  public int b1057;
+  public int b1058;
+  public int b1059;
+  public int b1060;
+  public int b1061;
+  public int b1062;
+  public int b1063;
+  public int b1064;
+  public int b1065;
+  public int b1066;
+  public int b1067;
+  public int b1068;
+  public int b1069;
+  public int b1070;
+  public int b1071;
+  public int b1072;
+  public int b1073;
+  public int b1074;
+  public int b1075;
+  public int b1076;
+  public int b1077;
+  public int b1078;
+  public int b1079;
+  public int b1080;
+  public int b1081;
+  public int b1082;
+  public int b1083;
+  public int b1084;
+  public int b1085;
+  public int b1086;
+  public int b1087;
+  public int b1088;
+  public int b1089;
+  public int b1090;
+  public int b1091;
+  public int b1092;
+  public int b1093;
+  public int b1094;
+  public int b1095;
+  public int b1096;
+  public int b1097;
+  public int b1098;
+  public int b1099;
+  public int b1100;
+  public int b1101;
+  public int b1102;
+  public int b1103;
+  public int b1104;
+  public int b1105;
+  public int b1106;
+  public int b1107;
+  public int b1108;
+  public int b1109;
+  public int b1110;
+  public int b1111;
+  public int b1112;
+  public int b1113;
+  public int b1114;
+  public int b1115;
+  public int b1116;
+  public int b1117;
+  public int b1118;
+  public int b1119;
+  public int b1120;
+  public int b1121;
+  public int b1122;
+  public int b1123;
+  public int b1124;
+  public int b1125;
+  public int b1126;
+  public int b1127;
+  public int b1128;
+  public int b1129;
+  public int b1130;
+  public int b1131;
+  public int b1132;
+  public int b1133;
+  public int b1134;
+  public int b1135;
+  public int b1136;
+  public int b1137;
+  public int b1138;
+  public int b1139;
+  public int b1140;
+  public int b1141;
+  public int b1142;
+  public int b1143;
+  public int b1144;
+  public int b1145;
+  public int b1146;
+  public int b1147;
+  public int b1148;
+  public int b1149;
+  public int b1150;
+  public int b1151;
+  public int b1152;
+  public int b1153;
+  public int b1154;
+  public int b1155;
+  public int b1156;
+  public int b1157;
+  public int b1158;
+  public int b1159;
+  public int b1160;
+  public int b1161;
+  public int b1162;
+  public int b1163;
+  public int b1164;
+  public int b1165;
+  public int b1166;
+  public int b1167;
+  public int b1168;
+  public int b1169;
+  public int b1170;
+  public int b1171;
+  public int b1172;
+  public int b1173;
+  public int b1174;
+  public int b1175;
+  public int b1176;
+  public int b1177;
+  public int b1178;
+  public int b1179;
+  public int b1180;
+  public int b1181;
+  public int b1182;
+  public int b1183;
+  public int b1184;
+  public int b1185;
+  public int b1186;
+  public int b1187;
+  public int b1188;
+  public int b1189;
+  public int b1190;
+  public int b1191;
+  public int b1192;
+  public int b1193;
+  public int b1194;
+  public int b1195;
+  public int b1196;
+  public int b1197;
+  public int b1198;
+  public int b1199;
+  public int b1200;
+  public int b1201;
+  public int b1202;
+  public int b1203;
+  public int b1204;
+  public int b1205;
+  public int b1206;
+  public int b1207;
+  public int b1208;
+  public int b1209;
+  public int b1210;
+  public int b1211;
+  public int b1212;
+  public int b1213;
+  public int b1214;
+  public int b1215;
+  public int b1216;
+  public int b1217;
+  public int b1218;
+  public int b1219;
+  public int b1220;
+  public int b1221;
+  public int b1222;
+  public int b1223;
+  public int b1224;
+  public int b1225;
+  public int b1226;
+  public int b1227;
+  public int b1228;
+  public int b1229;
+  public int b1230;
+  public int b1231;
+  public int b1232;
+  public int b1233;
+  public int b1234;
+  public int b1235;
+  public int b1236;
+  public int b1237;
+  public int b1238;
+  public int b1239;
+  public int b1240;
+  public int b1241;
+  public int b1242;
+  public int b1243;
+  public int b1244;
+  public int b1245;
+  public int b1246;
+  public int b1247;
+  public int b1248;
+  public int b1249;
+  public int b1250;
+  public int b1251;
+  public int b1252;
+  public int b1253;
+  public int b1254;
+  public int b1255;
+  public int b1256;
+  public int b1257;
+  public int b1258;
+  public int b1259;
+  public int b1260;
+  public int b1261;
+  public int b1262;
+  public int b1263;
+  public int b1264;
+  public int b1265;
+  public int b1266;
+  public int b1267;
+  public int b1268;
+  public int b1269;
+  public int b1270;
+  public int b1271;
+  public int b1272;
+  public int b1273;
+  public int b1274;
+  public int b1275;
+  public int b1276;
+  public int b1277;
+  public int b1278;
+  public int b1279;
+  public int b1280;
+  public int b1281;
+  public int b1282;
+  public int b1283;
+  public int b1284;
+  public int b1285;
+  public int b1286;
+  public int b1287;
+  public int b1288;
+  public int b1289;
+  public int b1290;
+  public int b1291;
+  public int b1292;
+  public int b1293;
+  public int b1294;
+  public int b1295;
+  public int b1296;
+  public int b1297;
+  public int b1298;
+  public int b1299;
+  public int b1300;
+  public int b1301;
+  public int b1302;
+  public int b1303;
+  public int b1304;
+  public int b1305;
+  public int b1306;
+  public int b1307;
+  public int b1308;
+  public int b1309;
+  public int b1310;
+  public int b1311;
+  public int b1312;
+  public int b1313;
+  public int b1314;
+  public int b1315;
+  public int b1316;
+  public int b1317;
+  public int b1318;
+  public int b1319;
+  public int b1320;
+  public int b1321;
+  public int b1322;
+  public int b1323;
+  public int b1324;
+  public int b1325;
+  public int b1326;
+  public int b1327;
+  public int b1328;
+  public int b1329;
+  public int b1330;
+  public int b1331;
+  public int b1332;
+  public int b1333;
+  public int b1334;
+  public int b1335;
+  public int b1336;
+  public int b1337;
+  public int b1338;
+  public int b1339;
+  public int b1340;
+  public int b1341;
+  public int b1342;
+  public int b1343;
+  public int b1344;
+  public int b1345;
+  public int b1346;
+  public int b1347;
+  public int b1348;
+  public int b1349;
+  public int b1350;
+  public int b1351;
+  public int b1352;
+  public int b1353;
+  public int b1354;
+  public int b1355;
+  public int b1356;
+  public int b1357;
+  public int b1358;
+  public int b1359;
+  public int b1360;
+  public int b1361;
+  public int b1362;
+  public int b1363;
+  public int b1364;
+  public int b1365;
+  public int b1366;
+  public int b1367;
+  public int b1368;
+  public int b1369;
+  public int b1370;
+  public int b1371;
+  public int b1372;
+  public int b1373;
+  public int b1374;
+  public int b1375;
+  public int b1376;
+  public int b1377;
+  public int b1378;
+  public int b1379;
+  public int b1380;
+  public int b1381;
+  public int b1382;
+  public int b1383;
+  public int b1384;
+  public int b1385;
+  public int b1386;
+  public int b1387;
+  public int b1388;
+  public int b1389;
+  public int b1390;
+  public int b1391;
+  public int b1392;
+  public int b1393;
+  public int b1394;
+  public int b1395;
+  public int b1396;
+  public int b1397;
+  public int b1398;
+  public int b1399;
+  public int b1400;
+  public int b1401;
+  public int b1402;
+  public int b1403;
+  public int b1404;
+  public int b1405;
+  public int b1406;
+  public int b1407;
+  public int b1408;
+  public int b1409;
+  public int b1410;
+  public int b1411;
+  public int b1412;
+  public int b1413;
+  public int b1414;
+  public int b1415;
+  public int b1416;
+  public int b1417;
+  public int b1418;
+  public int b1419;
+  public int b1420;
+  public int b1421;
+  public int b1422;
+  public int b1423;
+  public int b1424;
+  public int b1425;
+  public int b1426;
+  public int b1427;
+  public int b1428;
+  public int b1429;
+  public int b1430;
+  public int b1431;
+  public int b1432;
+  public int b1433;
+  public int b1434;
+  public int b1435;
+  public int b1436;
+  public int b1437;
+  public int b1438;
+  public int b1439;
+  public int b1440;
+  public int b1441;
+  public int b1442;
+  public int b1443;
+  public int b1444;
+  public int b1445;
+  public int b1446;
+  public int b1447;
+  public int b1448;
+  public int b1449;
+  public int b1450;
+  public int b1451;
+  public int b1452;
+  public int b1453;
+  public int b1454;
+  public int b1455;
+  public int b1456;
+  public int b1457;
+  public int b1458;
+  public int b1459;
+  public int b1460;
+  public int b1461;
+  public int b1462;
+  public int b1463;
+  public int b1464;
+  public int b1465;
+  public int b1466;
+  public int b1467;
+  public int b1468;
+  public int b1469;
+  public int b1470;
+  public int b1471;
+  public int b1472;
+  public int b1473;
+  public int b1474;
+  public int b1475;
+  public int b1476;
+  public int b1477;
+  public int b1478;
+  public int b1479;
+  public int b1480;
+  public int b1481;
+  public int b1482;
+  public int b1483;
+  public int b1484;
+  public int b1485;
+  public int b1486;
+  public int b1487;
+  public int b1488;
+  public int b1489;
+  public int b1490;
+  public int b1491;
+  public int b1492;
+  public int b1493;
+  public int b1494;
+  public int b1495;
+  public int b1496;
+  public int b1497;
+  public int b1498;
+  public int b1499;
+  public int b1500;
+  public int b1501;
+  public int b1502;
+  public int b1503;
+  public int b1504;
+  public int b1505;
+  public int b1506;
+  public int b1507;
+  public int b1508;
+  public int b1509;
+  public int b1510;
+  public int b1511;
+  public int b1512;
+  public int b1513;
+  public int b1514;
+  public int b1515;
+  public int b1516;
+  public int b1517;
+  public int b1518;
+  public int b1519;
+  public int b1520;
+  public int b1521;
+  public int b1522;
+  public int b1523;
+  public int b1524;
+  public int b1525;
+  public int b1526;
+  public int b1527;
+  public int b1528;
+  public int b1529;
+  public int b1530;
+  public int b1531;
+  public int b1532;
+  public int b1533;
+  public int b1534;
+  public int b1535;
+  public int b1536;
+  public int b1537;
+  public int b1538;
+  public int b1539;
+  public int b1540;
+  public int b1541;
+  public int b1542;
+  public int b1543;
+  public int b1544;
+  public int b1545;
+  public int b1546;
+  public int b1547;
+  public int b1548;
+  public int b1549;
+  public int b1550;
+  public int b1551;
+  public int b1552;
+  public int b1553;
+  public int b1554;
+  public int b1555;
+  public int b1556;
+  public int b1557;
+  public int b1558;
+  public int b1559;
+  public int b1560;
+  public int b1561;
+  public int b1562;
+  public int b1563;
+  public int b1564;
+  public int b1565;
+  public int b1566;
+  public int b1567;
+  public int b1568;
+  public int b1569;
+  public int b1570;
+  public int b1571;
+  public int b1572;
+  public int b1573;
+  public int b1574;
+  public int b1575;
+  public int b1576;
+  public int b1577;
+  public int b1578;
+  public int b1579;
+  public int b1580;
+  public int b1581;
+  public int b1582;
+  public int b1583;
+  public int b1584;
+  public int b1585;
+  public int b1586;
+  public int b1587;
+  public int b1588;
+  public int b1589;
+  public int b1590;
+  public int b1591;
+  public int b1592;
+  public int b1593;
+  public int b1594;
+  public int b1595;
+  public int b1596;
+  public int b1597;
+  public int b1598;
+  public int b1599;
+  public int b1600;
+  public int b1601;
+  public int b1602;
+  public int b1603;
+  public int b1604;
+  public int b1605;
+  public int b1606;
+  public int b1607;
+  public int b1608;
+  public int b1609;
+  public int b1610;
+  public int b1611;
+  public int b1612;
+  public int b1613;
+  public int b1614;
+  public int b1615;
+  public int b1616;
+  public int b1617;
+  public int b1618;
+  public int b1619;
+  public int b1620;
+  public int b1621;
+  public int b1622;
+  public int b1623;
+  public int b1624;
+  public int b1625;
+  public int b1626;
+  public int b1627;
+  public int b1628;
+  public int b1629;
+  public int b1630;
+  public int b1631;
+  public int b1632;
+  public int b1633;
+  public int b1634;
+  public int b1635;
+  public int b1636;
+  public int b1637;
+  public int b1638;
+  public int b1639;
+  public int b1640;
+  public int b1641;
+  public int b1642;
+  public int b1643;
+  public int b1644;
+  public int b1645;
+  public int b1646;
+  public int b1647;
+  public int b1648;
+  public int b1649;
+  public int b1650;
+  public int b1651;
+  public int b1652;
+  public int b1653;
+  public int b1654;
+  public int b1655;
+  public int b1656;
+  public int b1657;
+  public int b1658;
+  public int b1659;
+  public int b1660;
+  public int b1661;
+  public int b1662;
+  public int b1663;
+  public int b1664;
+  public int b1665;
+  public int b1666;
+  public int b1667;
+  public int b1668;
+  public int b1669;
+  public int b1670;
+  public int b1671;
+  public int b1672;
+  public int b1673;
+  public int b1674;
+  public int b1675;
+  public int b1676;
+  public int b1677;
+  public int b1678;
+  public int b1679;
+  public int b1680;
+  public int b1681;
+  public int b1682;
+  public int b1683;
+  public int b1684;
+  public int b1685;
+  public int b1686;
+  public int b1687;
+  public int b1688;
+  public int b1689;
+  public int b1690;
+  public int b1691;
+  public int b1692;
+  public int b1693;
+  public int b1694;
+  public int b1695;
+  public int b1696;
+  public int b1697;
+  public int b1698;
+  public int b1699;
+  public int b1700;
+  public int b1701;
+  public int b1702;
+  public int b1703;
+  public int b1704;
+  public int b1705;
+  public int b1706;
+  public int b1707;
+  public int b1708;
+  public int b1709;
+  public int b1710;
+  public int b1711;
+  public int b1712;
+  public int b1713;
+  public int b1714;
+  public int b1715;
+  public int b1716;
+  public int b1717;
+  public int b1718;
+  public int b1719;
+  public int b1720;
+  public int b1721;
+  public int b1722;
+  public int b1723;
+  public int b1724;
+  public int b1725;
+  public int b1726;
+  public int b1727;
+  public int b1728;
+  public int b1729;
+  public int b1730;
+  public int b1731;
+  public int b1732;
+  public int b1733;
+  public int b1734;
+  public int b1735;
+  public int b1736;
+  public int b1737;
+  public int b1738;
+  public int b1739;
+  public int b1740;
+  public int b1741;
+  public int b1742;
+  public int b1743;
+  public int b1744;
+  public int b1745;
+  public int b1746;
+  public int b1747;
+  public int b1748;
+  public int b1749;
+  public int b1750;
+  public int b1751;
+  public int b1752;
+  public int b1753;
+  public int b1754;
+  public int b1755;
+  public int b1756;
+  public int b1757;
+  public int b1758;
+  public int b1759;
+  public int b1760;
+  public int b1761;
+  public int b1762;
+  public int b1763;
+  public int b1764;
+  public int b1765;
+  public int b1766;
+  public int b1767;
+  public int b1768;
+  public int b1769;
+  public int b1770;
+  public int b1771;
+  public int b1772;
+  public int b1773;
+  public int b1774;
+  public int b1775;
+  public int b1776;
+  public int b1777;
+  public int b1778;
+  public int b1779;
+  public int b1780;
+  public int b1781;
+  public int b1782;
+  public int b1783;
+  public int b1784;
+  public int b1785;
+  public int b1786;
+  public int b1787;
+  public int b1788;
+  public int b1789;
+  public int b1790;
+  public int b1791;
+  public int b1792;
+  public int b1793;
+  public int b1794;
+  public int b1795;
+  public int b1796;
+  public int b1797;
+  public int b1798;
+  public int b1799;
+  public int b1800;
+  public int b1801;
+  public int b1802;
+  public int b1803;
+  public int b1804;
+  public int b1805;
+  public int b1806;
+  public int b1807;
+  public int b1808;
+  public int b1809;
+  public int b1810;
+  public int b1811;
+  public int b1812;
+  public int b1813;
+  public int b1814;
+  public int b1815;
+  public int b1816;
+  public int b1817;
+  public int b1818;
+  public int b1819;
+  public int b1820;
+  public int b1821;
+  public int b1822;
+  public int b1823;
+  public int b1824;
+  public int b1825;
+  public int b1826;
+  public int b1827;
+  public int b1828;
+  public int b1829;
+  public int b1830;
+  public int b1831;
+  public int b1832;
+  public int b1833;
+  public int b1834;
+  public int b1835;
+  public int b1836;
+  public int b1837;
+  public int b1838;
+  public int b1839;
+  public int b1840;
+  public int b1841;
+  public int b1842;
+  public int b1843;
+  public int b1844;
+  public int b1845;
+  public int b1846;
+  public int b1847;
+  public int b1848;
+  public int b1849;
+  public int b1850;
+  public int b1851;
+  public int b1852;
+  public int b1853;
+  public int b1854;
+  public int b1855;
+  public int b1856;
+  public int b1857;
+  public int b1858;
+  public int b1859;
+  public int b1860;
+  public int b1861;
+  public int b1862;
+  public int b1863;
+  public int b1864;
+  public int b1865;
+  public int b1866;
+  public int b1867;
+  public int b1868;
+  public int b1869;
+  public int b1870;
+  public int b1871;
+  public int b1872;
+  public int b1873;
+  public int b1874;
+  public int b1875;
+  public int b1876;
+  public int b1877;
+  public int b1878;
+  public int b1879;
+  public int b1880;
+  public int b1881;
+  public int b1882;
+  public int b1883;
+  public int b1884;
+  public int b1885;
+  public int b1886;
+  public int b1887;
+  public int b1888;
+  public int b1889;
+  public int b1890;
+  public int b1891;
+  public int b1892;
+  public int b1893;
+  public int b1894;
+  public int b1895;
+  public int b1896;
+  public int b1897;
+  public int b1898;
+  public int b1899;
+  public int b1900;
+  public int b1901;
+  public int b1902;
+  public int b1903;
+  public int b1904;
+  public int b1905;
+  public int b1906;
+  public int b1907;
+  public int b1908;
+  public int b1909;
+  public int b1910;
+  public int b1911;
+  public int b1912;
+  public int b1913;
+  public int b1914;
+  public int b1915;
+  public int b1916;
+  public int b1917;
+  public int b1918;
+  public int b1919;
+  public int b1920;
+  public int b1921;
+  public int b1922;
+  public int b1923;
+  public int b1924;
+  public int b1925;
+  public int b1926;
+  public int b1927;
+  public int b1928;
+  public int b1929;
+  public int b1930;
+  public int b1931;
+  public int b1932;
+  public int b1933;
+  public int b1934;
+  public int b1935;
+  public int b1936;
+  public int b1937;
+  public int b1938;
+  public int b1939;
+  public int b1940;
+  public int b1941;
+  public int b1942;
+  public int b1943;
+  public int b1944;
+  public int b1945;
+  public int b1946;
+  public int b1947;
+  public int b1948;
+  public int b1949;
+  public int b1950;
+  public int b1951;
+  public int b1952;
+  public int b1953;
+  public int b1954;
+  public int b1955;
+  public int b1956;
+  public int b1957;
+  public int b1958;
+  public int b1959;
+  public int b1960;
+  public int b1961;
+  public int b1962;
+  public int b1963;
+  public int b1964;
+  public int b1965;
+  public int b1966;
+  public int b1967;
+  public int b1968;
+  public int b1969;
+  public int b1970;
+  public int b1971;
+  public int b1972;
+  public int b1973;
+  public int b1974;
+  public int b1975;
+  public int b1976;
+  public int b1977;
+  public int b1978;
+  public int b1979;
+  public int b1980;
+  public int b1981;
+  public int b1982;
+  public int b1983;
+  public int b1984;
+  public int b1985;
+  public int b1986;
+  public int b1987;
+  public int b1988;
+  public int b1989;
+  public int b1990;
+  public int b1991;
+  public int b1992;
+  public int b1993;
+  public int b1994;
+  public int b1995;
+  public int b1996;
+  public int b1997;
+  public int b1998;
+  public int b1999;
+  public int b2000;
+  public int b2001;
+  public int b2002;
+  public int b2003;
+  public int b2004;
+  public int b2005;
+  public int b2006;
+  public int b2007;
+  public int b2008;
+  public int b2009;
+  public int b2010;
+  public int b2011;
+  public int b2012;
+  public int b2013;
+  public int b2014;
+  public int b2015;
+  public int b2016;
+  public int b2017;
+  public int b2018;
+  public int b2019;
+  public int b2020;
+  public int b2021;
+  public int b2022;
+  public int b2023;
+  public int b2024;
+  public int b2025;
+  public int b2026;
+  public int b2027;
+  public int b2028;
+  public int b2029;
+  public int b2030;
+  public int b2031;
+  public int b2032;
+  public int b2033;
+  public int b2034;
+  public int b2035;
+  public int b2036;
+  public int b2037;
+  public int b2038;
+  public int b2039;
+  public int b2040;
+  public int b2041;
+  public int b2042;
+  public int b2043;
+  public int b2044;
+  public int b2045;
+  public int b2046;
+  public int b2047;
+  public int b2048;
+  public int b2049;
+  public int b2050;
+  public int b2051;
+  public int b2052;
+  public int b2053;
+  public int b2054;
+  public int b2055;
+  public int b2056;
+  public int b2057;
+  public int b2058;
+  public int b2059;
+  public int b2060;
+  public int b2061;
+  public int b2062;
+  public int b2063;
+  public int b2064;
+  public int b2065;
+  public int b2066;
+  public int b2067;
+  public int b2068;
+  public int b2069;
+  public int b2070;
+  public int b2071;
+  public int b2072;
+  public int b2073;
+  public int b2074;
+  public int b2075;
+  public int b2076;
+  public int b2077;
+  public int b2078;
+  public int b2079;
+  public int b2080;
+  public int b2081;
+  public int b2082;
+  public int b2083;
+  public int b2084;
+  public int b2085;
+  public int b2086;
+  public int b2087;
+  public int b2088;
+  public int b2089;
+  public int b2090;
+  public int b2091;
+  public int b2092;
+  public int b2093;
+  public int b2094;
+  public int b2095;
+  public int b2096;
+  public int b2097;
+  public int b2098;
+  public int b2099;
+  public int b2100;
+  public int b2101;
+  public int b2102;
+  public int b2103;
+  public int b2104;
+  public int b2105;
+  public int b2106;
+  public int b2107;
+  public int b2108;
+  public int b2109;
+  public int b2110;
+  public int b2111;
+  public int b2112;
+  public int b2113;
+  public int b2114;
+  public int b2115;
+  public int b2116;
+  public int b2117;
+  public int b2118;
+  public int b2119;
+  public int b2120;
+  public int b2121;
+  public int b2122;
+  public int b2123;
+  public int b2124;
+  public int b2125;
+  public int b2126;
+  public int b2127;
+  public int b2128;
+  public int b2129;
+  public int b2130;
+  public int b2131;
+  public int b2132;
+  public int b2133;
+  public int b2134;
+  public int b2135;
+  public int b2136;
+  public int b2137;
+  public int b2138;
+  public int b2139;
+  public int b2140;
+  public int b2141;
+  public int b2142;
+  public int b2143;
+  public int b2144;
+  public int b2145;
+  public int b2146;
+  public int b2147;
+  public int b2148;
+  public int b2149;
+  public int b2150;
+  public int b2151;
+  public int b2152;
+  public int b2153;
+  public int b2154;
+  public int b2155;
+  public int b2156;
+  public int b2157;
+  public int b2158;
+  public int b2159;
+  public int b2160;
+  public int b2161;
+  public int b2162;
+  public int b2163;
+  public int b2164;
+  public int b2165;
+  public int b2166;
+  public int b2167;
+  public int b2168;
+  public int b2169;
+  public int b2170;
+  public int b2171;
+  public int b2172;
+  public int b2173;
+  public int b2174;
+  public int b2175;
+  public int b2176;
+  public int b2177;
+  public int b2178;
+  public int b2179;
+  public int b2180;
+  public int b2181;
+  public int b2182;
+  public int b2183;
+  public int b2184;
+  public int b2185;
+  public int b2186;
+  public int b2187;
+  public int b2188;
+  public int b2189;
+  public int b2190;
+  public int b2191;
+  public int b2192;
+  public int b2193;
+  public int b2194;
+  public int b2195;
+  public int b2196;
+  public int b2197;
+  public int b2198;
+  public int b2199;
+  public int b2200;
+  public int b2201;
+  public int b2202;
+  public int b2203;
+  public int b2204;
+  public int b2205;
+  public int b2206;
+  public int b2207;
+  public int b2208;
+  public int b2209;
+  public int b2210;
+  public int b2211;
+  public int b2212;
+  public int b2213;
+  public int b2214;
+  public int b2215;
+  public int b2216;
+  public int b2217;
+  public int b2218;
+  public int b2219;
+  public int b2220;
+  public int b2221;
+  public int b2222;
+  public int b2223;
+  public int b2224;
+  public int b2225;
+  public int b2226;
+  public int b2227;
+  public int b2228;
+  public int b2229;
+  public int b2230;
+  public int b2231;
+  public int b2232;
+  public int b2233;
+  public int b2234;
+  public int b2235;
+  public int b2236;
+  public int b2237;
+  public int b2238;
+  public int b2239;
+  public int b2240;
+  public int b2241;
+  public int b2242;
+  public int b2243;
+  public int b2244;
+  public int b2245;
+  public int b2246;
+  public int b2247;
+  public int b2248;
+  public int b2249;
+  public int b2250;
+  public int b2251;
+  public int b2252;
+  public int b2253;
+  public int b2254;
+  public int b2255;
+  public int b2256;
+  public int b2257;
+  public int b2258;
+  public int b2259;
+  public int b2260;
+  public int b2261;
+  public int b2262;
+  public int b2263;
+  public int b2264;
+  public int b2265;
+  public int b2266;
+  public int b2267;
+  public int b2268;
+  public int b2269;
+  public int b2270;
+  public int b2271;
+  public int b2272;
+  public int b2273;
+  public int b2274;
+  public int b2275;
+  public int b2276;
+  public int b2277;
+  public int b2278;
+  public int b2279;
+  public int b2280;
+  public int b2281;
+  public int b2282;
+  public int b2283;
+  public int b2284;
+  public int b2285;
+  public int b2286;
+  public int b2287;
+  public int b2288;
+  public int b2289;
+  public int b2290;
+  public int b2291;
+  public int b2292;
+  public int b2293;
+  public int b2294;
+  public int b2295;
+  public int b2296;
+  public int b2297;
+  public int b2298;
+  public int b2299;
+  public int b2300;
+  public int b2301;
+  public int b2302;
+  public int b2303;
+  public int b2304;
+  public int b2305;
+  public int b2306;
+  public int b2307;
+  public int b2308;
+  public int b2309;
+  public int b2310;
+  public int b2311;
+  public int b2312;
+  public int b2313;
+  public int b2314;
+  public int b2315;
+  public int b2316;
+  public int b2317;
+  public int b2318;
+  public int b2319;
+  public int b2320;
+  public int b2321;
+  public int b2322;
+  public int b2323;
+  public int b2324;
+  public int b2325;
+  public int b2326;
+  public int b2327;
+  public int b2328;
+  public int b2329;
+  public int b2330;
+  public int b2331;
+  public int b2332;
+  public int b2333;
+  public int b2334;
+  public int b2335;
+  public int b2336;
+  public int b2337;
+  public int b2338;
+  public int b2339;
+  public int b2340;
+  public int b2341;
+  public int b2342;
+  public int b2343;
+  public int b2344;
+  public int b2345;
+  public int b2346;
+  public int b2347;
+  public int b2348;
+  public int b2349;
+  public int b2350;
+  public int b2351;
+  public int b2352;
+  public int b2353;
+  public int b2354;
+  public int b2355;
+  public int b2356;
+  public int b2357;
+  public int b2358;
+  public int b2359;
+  public int b2360;
+  public int b2361;
+  public int b2362;
+  public int b2363;
+  public int b2364;
+  public int b2365;
+  public int b2366;
+  public int b2367;
+  public int b2368;
+  public int b2369;
+  public int b2370;
+  public int b2371;
+  public int b2372;
+  public int b2373;
+  public int b2374;
+  public int b2375;
+  public int b2376;
+  public int b2377;
+  public int b2378;
+  public int b2379;
+  public int b2380;
+  public int b2381;
+  public int b2382;
+  public int b2383;
+  public int b2384;
+  public int b2385;
+  public int b2386;
+  public int b2387;
+  public int b2388;
+  public int b2389;
+  public int b2390;
+  public int b2391;
+  public int b2392;
+  public int b2393;
+  public int b2394;
+  public int b2395;
+  public int b2396;
+  public int b2397;
+  public int b2398;
+  public int b2399;
+  public int b2400;
+  public int b2401;
+  public int b2402;
+  public int b2403;
+  public int b2404;
+  public int b2405;
+  public int b2406;
+  public int b2407;
+  public int b2408;
+  public int b2409;
+  public int b2410;
+  public int b2411;
+  public int b2412;
+  public int b2413;
+  public int b2414;
+  public int b2415;
+  public int b2416;
+  public int b2417;
+  public int b2418;
+  public int b2419;
+  public int b2420;
+  public int b2421;
+  public int b2422;
+  public int b2423;
+  public int b2424;
+  public int b2425;
+  public int b2426;
+  public int b2427;
+  public int b2428;
+  public int b2429;
+  public int b2430;
+  public int b2431;
+  public int b2432;
+  public int b2433;
+  public int b2434;
+  public int b2435;
+  public int b2436;
+  public int b2437;
+  public int b2438;
+  public int b2439;
+  public int b2440;
+  public int b2441;
+  public int b2442;
+  public int b2443;
+  public int b2444;
+  public int b2445;
+  public int b2446;
+  public int b2447;
+  public int b2448;
+  public int b2449;
+  public int b2450;
+  public int b2451;
+  public int b2452;
+  public int b2453;
+  public int b2454;
+  public int b2455;
+  public int b2456;
+  public int b2457;
+  public int b2458;
+  public int b2459;
+  public int b2460;
+  public int b2461;
+  public int b2462;
+  public int b2463;
+  public int b2464;
+  public int b2465;
+  public int b2466;
+  public int b2467;
+  public int b2468;
+  public int b2469;
+  public int b2470;
+  public int b2471;
+  public int b2472;
+  public int b2473;
+  public int b2474;
+  public int b2475;
+  public int b2476;
+  public int b2477;
+  public int b2478;
+  public int b2479;
+  public int b2480;
+  public int b2481;
+  public int b2482;
+  public int b2483;
+  public int b2484;
+  public int b2485;
+  public int b2486;
+  public int b2487;
+  public int b2488;
+  public int b2489;
+  public int b2490;
+  public int b2491;
+  public int b2492;
+  public int b2493;
+  public int b2494;
+  public int b2495;
+  public int b2496;
+  public int b2497;
+  public int b2498;
+  public int b2499;
+  public int b2500;
+  public int b2501;
+  public int b2502;
+  public int b2503;
+  public int b2504;
+  public int b2505;
+  public int b2506;
+  public int b2507;
+  public int b2508;
+  public int b2509;
+  public int b2510;
+  public int b2511;
+  public int b2512;
+  public int b2513;
+  public int b2514;
+  public int b2515;
+  public int b2516;
+  public int b2517;
+  public int b2518;
+  public int b2519;
+  public int b2520;
+  public int b2521;
+  public int b2522;
+  public int b2523;
+  public int b2524;
+  public int b2525;
+  public int b2526;
+  public int b2527;
+  public int b2528;
+  public int b2529;
+  public int b2530;
+  public int b2531;
+  public int b2532;
+  public int b2533;
+  public int b2534;
+  public int b2535;
+  public int b2536;
+  public int b2537;
+  public int b2538;
+  public int b2539;
+  public int b2540;
+  public int b2541;
+  public int b2542;
+  public int b2543;
+  public int b2544;
+  public int b2545;
+  public int b2546;
+  public int b2547;
+  public int b2548;
+  public int b2549;
+  public int b2550;
+  public int b2551;
+  public int b2552;
+  public int b2553;
+  public int b2554;
+  public int b2555;
+  public int b2556;
+  public int b2557;
+  public int b2558;
+  public int b2559;
+  public int b2560;
+  public int b2561;
+  public int b2562;
+  public int b2563;
+  public int b2564;
+  public int b2565;
+  public int b2566;
+  public int b2567;
+  public int b2568;
+  public int b2569;
+  public int b2570;
+  public int b2571;
+  public int b2572;
+  public int b2573;
+  public int b2574;
+  public int b2575;
+  public int b2576;
+  public int b2577;
+  public int b2578;
+  public int b2579;
+  public int b2580;
+  public int b2581;
+  public int b2582;
+  public int b2583;
+  public int b2584;
+  public int b2585;
+  public int b2586;
+  public int b2587;
+  public int b2588;
+  public int b2589;
+  public int b2590;
+  public int b2591;
+  public int b2592;
+  public int b2593;
+  public int b2594;
+  public int b2595;
+  public int b2596;
+  public int b2597;
+  public int b2598;
+  public int b2599;
+  public int b2600;
+  public int b2601;
+  public int b2602;
+  public int b2603;
+  public int b2604;
+  public int b2605;
+  public int b2606;
+  public int b2607;
+  public int b2608;
+  public int b2609;
+  public int b2610;
+  public int b2611;
+  public int b2612;
+  public int b2613;
+  public int b2614;
+  public int b2615;
+  public int b2616;
+  public int b2617;
+  public int b2618;
+  public int b2619;
+  public int b2620;
+  public int b2621;
+  public int b2622;
+  public int b2623;
+  public int b2624;
+  public int b2625;
+  public int b2626;
+  public int b2627;
+  public int b2628;
+  public int b2629;
+  public int b2630;
+  public int b2631;
+  public int b2632;
+  public int b2633;
+  public int b2634;
+  public int b2635;
+  public int b2636;
+  public int b2637;
+  public int b2638;
+  public int b2639;
+  public int b2640;
+  public int b2641;
+  public int b2642;
+  public int b2643;
+  public int b2644;
+  public int b2645;
+  public int b2646;
+  public int b2647;
+  public int b2648;
+  public int b2649;
+  public int b2650;
+  public int b2651;
+  public int b2652;
+  public int b2653;
+  public int b2654;
+  public int b2655;
+  public int b2656;
+  public int b2657;
+  public int b2658;
+  public int b2659;
+  public int b2660;
+  public int b2661;
+  public int b2662;
+  public int b2663;
+  public int b2664;
+  public int b2665;
+  public int b2666;
+  public int b2667;
+  public int b2668;
+  public int b2669;
+  public int b2670;
+  public int b2671;
+  public int b2672;
+  public int b2673;
+  public int b2674;
+  public int b2675;
+  public int b2676;
+  public int b2677;
+  public int b2678;
+  public int b2679;
+  public int b2680;
+  public int b2681;
+  public int b2682;
+  public int b2683;
+  public int b2684;
+  public int b2685;
+  public int b2686;
+  public int b2687;
+  public int b2688;
+  public int b2689;
+  public int b2690;
+  public int b2691;
+  public int b2692;
+  public int b2693;
+  public int b2694;
+  public int b2695;
+  public int b2696;
+  public int b2697;
+  public int b2698;
+  public int b2699;
+  public int b2700;
+  public int b2701;
+  public int b2702;
+  public int b2703;
+  public int b2704;
+  public int b2705;
+  public int b2706;
+  public int b2707;
+  public int b2708;
+  public int b2709;
+  public int b2710;
+  public int b2711;
+  public int b2712;
+  public int b2713;
+  public int b2714;
+  public int b2715;
+  public int b2716;
+  public int b2717;
+  public int b2718;
+  public int b2719;
+  public int b2720;
+  public int b2721;
+  public int b2722;
+  public int b2723;
+  public int b2724;
+  public int b2725;
+  public int b2726;
+  public int b2727;
+  public int b2728;
+  public int b2729;
+  public int b2730;
+  public int b2731;
+  public int b2732;
+  public int b2733;
+  public int b2734;
+  public int b2735;
+  public int b2736;
+  public int b2737;
+  public int b2738;
+  public int b2739;
+  public int b2740;
+  public int b2741;
+  public int b2742;
+  public int b2743;
+  public int b2744;
+  public int b2745;
+  public int b2746;
+  public int b2747;
+  public int b2748;
+  public int b2749;
+  public int b2750;
+  public int b2751;
+  public int b2752;
+  public int b2753;
+  public int b2754;
+  public int b2755;
+  public int b2756;
+  public int b2757;
+  public int b2758;
+  public int b2759;
+  public int b2760;
+  public int b2761;
+  public int b2762;
+  public int b2763;
+  public int b2764;
+  public int b2765;
+  public int b2766;
+  public int b2767;
+  public int b2768;
+  public int b2769;
+  public int b2770;
+  public int b2771;
+  public int b2772;
+  public int b2773;
+  public int b2774;
+  public int b2775;
+  public int b2776;
+  public int b2777;
+  public int b2778;
+  public int b2779;
+  public int b2780;
+  public int b2781;
+  public int b2782;
+  public int b2783;
+  public int b2784;
+  public int b2785;
+  public int b2786;
+  public int b2787;
+  public int b2788;
+  public int b2789;
+  public int b2790;
+  public int b2791;
+  public int b2792;
+  public int b2793;
+  public int b2794;
+  public int b2795;
+  public int b2796;
+  public int b2797;
+  public int b2798;
+  public int b2799;
+  public int b2800;
+  public int b2801;
+  public int b2802;
+  public int b2803;
+  public int b2804;
+  public int b2805;
+  public int b2806;
+  public int b2807;
+  public int b2808;
+  public int b2809;
+  public int b2810;
+  public int b2811;
+  public int b2812;
+  public int b2813;
+  public int b2814;
+  public int b2815;
+  public int b2816;
+  public int b2817;
+  public int b2818;
+  public int b2819;
+  public int b2820;
+  public int b2821;
+  public int b2822;
+  public int b2823;
+  public int b2824;
+  public int b2825;
+  public int b2826;
+  public int b2827;
+  public int b2828;
+  public int b2829;
+  public int b2830;
+  public int b2831;
+  public int b2832;
+  public int b2833;
+  public int b2834;
+  public int b2835;
+  public int b2836;
+  public int b2837;
+  public int b2838;
+  public int b2839;
+  public int b2840;
+  public int b2841;
+  public int b2842;
+  public int b2843;
+  public int b2844;
+  public int b2845;
+  public int b2846;
+  public int b2847;
+  public int b2848;
+  public int b2849;
+  public int b2850;
+  public int b2851;
+  public int b2852;
+  public int b2853;
+  public int b2854;
+  public int b2855;
+  public int b2856;
+  public int b2857;
+  public int b2858;
+  public int b2859;
+  public int b2860;
+  public int b2861;
+  public int b2862;
+  public int b2863;
+  public int b2864;
+  public int b2865;
+  public int b2866;
+  public int b2867;
+  public int b2868;
+  public int b2869;
+  public int b2870;
+  public int b2871;
+  public int b2872;
+  public int b2873;
+  public int b2874;
+  public int b2875;
+  public int b2876;
+  public int b2877;
+  public int b2878;
+  public int b2879;
+  public int b2880;
+  public int b2881;
+  public int b2882;
+  public int b2883;
+  public int b2884;
+  public int b2885;
+  public int b2886;
+  public int b2887;
+  public int b2888;
+  public int b2889;
+  public int b2890;
+  public int b2891;
+  public int b2892;
+  public int b2893;
+  public int b2894;
+  public int b2895;
+  public int b2896;
+  public int b2897;
+  public int b2898;
+  public int b2899;
+  public int b2900;
+  public int b2901;
+  public int b2902;
+  public int b2903;
+  public int b2904;
+  public int b2905;
+  public int b2906;
+  public int b2907;
+  public int b2908;
+  public int b2909;
+  public int b2910;
+  public int b2911;
+  public int b2912;
+  public int b2913;
+  public int b2914;
+  public int b2915;
+  public int b2916;
+  public int b2917;
+  public int b2918;
+  public int b2919;
+  public int b2920;
+  public int b2921;
+  public int b2922;
+  public int b2923;
+  public int b2924;
+  public int b2925;
+  public int b2926;
+  public int b2927;
+  public int b2928;
+  public int b2929;
+  public int b2930;
+  public int b2931;
+  public int b2932;
+  public int b2933;
+  public int b2934;
+  public int b2935;
+  public int b2936;
+  public int b2937;
+  public int b2938;
+  public int b2939;
+  public int b2940;
+  public int b2941;
+  public int b2942;
+  public int b2943;
+  public int b2944;
+  public int b2945;
+  public int b2946;
+  public int b2947;
+  public int b2948;
+  public int b2949;
+  public int b2950;
+  public int b2951;
+  public int b2952;
+  public int b2953;
+  public int b2954;
+  public int b2955;
+  public int b2956;
+  public int b2957;
+  public int b2958;
+  public int b2959;
+  public int b2960;
+  public int b2961;
+  public int b2962;
+  public int b2963;
+  public int b2964;
+  public int b2965;
+  public int b2966;
+  public int b2967;
+  public int b2968;
+  public int b2969;
+  public int b2970;
+  public int b2971;
+  public int b2972;
+  public int b2973;
+  public int b2974;
+  public int b2975;
+  public int b2976;
+  public int b2977;
+  public int b2978;
+  public int b2979;
+  public int b2980;
+  public int b2981;
+  public int b2982;
+  public int b2983;
+  public int b2984;
+  public int b2985;
+  public int b2986;
+  public int b2987;
+  public int b2988;
+  public int b2989;
+  public int b2990;
+  public int b2991;
+  public int b2992;
+  public int b2993;
+  public int b2994;
+  public int b2995;
+  public int b2996;
+  public int b2997;
+  public int b2998;
+  public int b2999;
+  public int b3000;
+  public int b3001;
+  public int b3002;
+  public int b3003;
+  public int b3004;
+  public int b3005;
+  public int b3006;
+  public int b3007;
+  public int b3008;
+  public int b3009;
+  public int b3010;
+  public int b3011;
+  public int b3012;
+  public int b3013;
+  public int b3014;
+  public int b3015;
+  public int b3016;
+  public int b3017;
+  public int b3018;
+  public int b3019;
+  public int b3020;
+  public int b3021;
+  public int b3022;
+  public int b3023;
+  public int b3024;
+  public int b3025;
+  public int b3026;
+  public int b3027;
+  public int b3028;
+  public int b3029;
+  public int b3030;
+  public int b3031;
+  public int b3032;
+  public int b3033;
+  public int b3034;
+  public int b3035;
+  public int b3036;
+  public int b3037;
+  public int b3038;
+  public int b3039;
+  public int b3040;
+  public int b3041;
+  public int b3042;
+  public int b3043;
+  public int b3044;
+  public int b3045;
+  public int b3046;
+  public int b3047;
+  public int b3048;
+  public int b3049;
+  public int b3050;
+  public int b3051;
+  public int b3052;
+  public int b3053;
+  public int b3054;
+  public int b3055;
+  public int b3056;
+  public int b3057;
+  public int b3058;
+  public int b3059;
+  public int b3060;
+  public int b3061;
+  public int b3062;
+  public int b3063;
+  public int b3064;
+  public int b3065;
+  public int b3066;
+  public int b3067;
+  public int b3068;
+  public int b3069;
+  public int b3070;
+  public int b3071;
+  public int b3072;
+  public int b3073;
+  public int b3074;
+  public int b3075;
+  public int b3076;
+  public int b3077;
+  public int b3078;
+  public int b3079;
+  public int b3080;
+  public int b3081;
+  public int b3082;
+  public int b3083;
+  public int b3084;
+  public int b3085;
+  public int b3086;
+  public int b3087;
+  public int b3088;
+  public int b3089;
+  public int b3090;
+  public int b3091;
+  public int b3092;
+  public int b3093;
+  public int b3094;
+  public int b3095;
+  public int b3096;
+  public int b3097;
+  public int b3098;
+  public int b3099;
+  public int b3100;
+  public int b3101;
+  public int b3102;
+  public int b3103;
+  public int b3104;
+  public int b3105;
+  public int b3106;
+  public int b3107;
+  public int b3108;
+  public int b3109;
+  public int b3110;
+  public int b3111;
+  public int b3112;
+  public int b3113;
+  public int b3114;
+  public int b3115;
+  public int b3116;
+  public int b3117;
+  public int b3118;
+  public int b3119;
+  public int b3120;
+  public int b3121;
+  public int b3122;
+  public int b3123;
+  public int b3124;
+  public int b3125;
+  public int b3126;
+  public int b3127;
+  public int b3128;
+  public int b3129;
+  public int b3130;
+  public int b3131;
+  public int b3132;
+  public int b3133;
+  public int b3134;
+  public int b3135;
+  public int b3136;
+  public int b3137;
+  public int b3138;
+  public int b3139;
+  public int b3140;
+  public int b3141;
+  public int b3142;
+  public int b3143;
+  public int b3144;
+  public int b3145;
+  public int b3146;
+  public int b3147;
+  public int b3148;
+  public int b3149;
+  public int b3150;
+  public int b3151;
+  public int b3152;
+  public int b3153;
+  public int b3154;
+  public int b3155;
+  public int b3156;
+  public int b3157;
+  public int b3158;
+  public int b3159;
+  public int b3160;
+  public int b3161;
+  public int b3162;
+  public int b3163;
+  public int b3164;
+  public int b3165;
+  public int b3166;
+  public int b3167;
+  public int b3168;
+  public int b3169;
+  public int b3170;
+  public int b3171;
+  public int b3172;
+  public int b3173;
+  public int b3174;
+  public int b3175;
+  public int b3176;
+  public int b3177;
+  public int b3178;
+  public int b3179;
+  public int b3180;
+  public int b3181;
+  public int b3182;
+  public int b3183;
+  public int b3184;
+  public int b3185;
+  public int b3186;
+  public int b3187;
+  public int b3188;
+  public int b3189;
+  public int b3190;
+  public int b3191;
+  public int b3192;
+  public int b3193;
+  public int b3194;
+  public int b3195;
+  public int b3196;
+  public int b3197;
+  public int b3198;
+  public int b3199;
+  public int b3200;
+  public int b3201;
+  public int b3202;
+  public int b3203;
+  public int b3204;
+  public int b3205;
+  public int b3206;
+  public int b3207;
+  public int b3208;
+  public int b3209;
+  public int b3210;
+  public int b3211;
+  public int b3212;
+  public int b3213;
+  public int b3214;
+  public int b3215;
+  public int b3216;
+  public int b3217;
+  public int b3218;
+  public int b3219;
+  public int b3220;
+  public int b3221;
+  public int b3222;
+  public int b3223;
+  public int b3224;
+  public int b3225;
+  public int b3226;
+  public int b3227;
+  public int b3228;
+  public int b3229;
+  public int b3230;
+  public int b3231;
+  public int b3232;
+  public int b3233;
+  public int b3234;
+  public int b3235;
+  public int b3236;
+  public int b3237;
+  public int b3238;
+  public int b3239;
+  public int b3240;
+  public int b3241;
+  public int b3242;
+  public int b3243;
+  public int b3244;
+  public int b3245;
+  public int b3246;
+  public int b3247;
+  public int b3248;
+  public int b3249;
+  public int b3250;
+  public int b3251;
+  public int b3252;
+  public int b3253;
+  public int b3254;
+  public int b3255;
+  public int b3256;
+  public int b3257;
+  public int b3258;
+  public int b3259;
+  public int b3260;
+  public int b3261;
+  public int b3262;
+  public int b3263;
+  public int b3264;
+  public int b3265;
+  public int b3266;
+  public int b3267;
+  public int b3268;
+  public int b3269;
+  public int b3270;
+  public int b3271;
+  public int b3272;
+  public int b3273;
+  public int b3274;
+  public int b3275;
+  public int b3276;
+  public int b3277;
+  public int b3278;
+  public int b3279;
+  public int b3280;
+  public int b3281;
+  public int b3282;
+  public int b3283;
+  public int b3284;
+  public int b3285;
+  public int b3286;
+  public int b3287;
+  public int b3288;
+  public int b3289;
+  public int b3290;
+  public int b3291;
+  public int b3292;
+  public int b3293;
+  public int b3294;
+  public int b3295;
+  public int b3296;
+  public int b3297;
+  public int b3298;
+  public int b3299;
+  public int b3300;
+  public int b3301;
+  public int b3302;
+  public int b3303;
+  public int b3304;
+  public int b3305;
+  public int b3306;
+  public int b3307;
+  public int b3308;
+  public int b3309;
+  public int b3310;
+  public int b3311;
+  public int b3312;
+  public int b3313;
+  public int b3314;
+  public int b3315;
+  public int b3316;
+  public int b3317;
+  public int b3318;
+  public int b3319;
+  public int b3320;
+  public int b3321;
+  public int b3322;
+  public int b3323;
+  public int b3324;
+  public int b3325;
+  public int b3326;
+  public int b3327;
+  public int b3328;
+  public int b3329;
+  public int b3330;
+  public int b3331;
+  public int b3332;
+  public int b3333;
+  public int b3334;
+  public int b3335;
+  public int b3336;
+  public int b3337;
+  public int b3338;
+  public int b3339;
+  public int b3340;
+  public int b3341;
+  public int b3342;
+  public int b3343;
+  public int b3344;
+  public int b3345;
+  public int b3346;
+  public int b3347;
+  public int b3348;
+  public int b3349;
+  public int b3350;
+  public int b3351;
+  public int b3352;
+  public int b3353;
+  public int b3354;
+  public int b3355;
+  public int b3356;
+  public int b3357;
+  public int b3358;
+  public int b3359;
+  public int b3360;
+  public int b3361;
+  public int b3362;
+  public int b3363;
+  public int b3364;
+  public int b3365;
+  public int b3366;
+  public int b3367;
+  public int b3368;
+  public int b3369;
+  public int b3370;
+  public int b3371;
+  public int b3372;
+  public int b3373;
+  public int b3374;
+  public int b3375;
+  public int b3376;
+  public int b3377;
+  public int b3378;
+  public int b3379;
+  public int b3380;
+  public int b3381;
+  public int b3382;
+  public int b3383;
+  public int b3384;
+  public int b3385;
+  public int b3386;
+  public int b3387;
+  public int b3388;
+  public int b3389;
+  public int b3390;
+  public int b3391;
+  public int b3392;
+  public int b3393;
+  public int b3394;
+  public int b3395;
+  public int b3396;
+  public int b3397;
+  public int b3398;
+  public int b3399;
+  public int b3400;
+  public int b3401;
+  public int b3402;
+  public int b3403;
+  public int b3404;
+  public int b3405;
+  public int b3406;
+  public int b3407;
+  public int b3408;
+  public int b3409;
+  public int b3410;
+  public int b3411;
+  public int b3412;
+  public int b3413;
+  public int b3414;
+  public int b3415;
+  public int b3416;
+  public int b3417;
+  public int b3418;
+  public int b3419;
+  public int b3420;
+  public int b3421;
+  public int b3422;
+  public int b3423;
+  public int b3424;
+  public int b3425;
+  public int b3426;
+  public int b3427;
+  public int b3428;
+  public int b3429;
+  public int b3430;
+  public int b3431;
+  public int b3432;
+  public int b3433;
+  public int b3434;
+  public int b3435;
+  public int b3436;
+  public int b3437;
+  public int b3438;
+  public int b3439;
+  public int b3440;
+  public int b3441;
+  public int b3442;
+  public int b3443;
+  public int b3444;
+  public int b3445;
+  public int b3446;
+  public int b3447;
+  public int b3448;
+  public int b3449;
+  public int b3450;
+  public int b3451;
+  public int b3452;
+  public int b3453;
+  public int b3454;
+  public int b3455;
+  public int b3456;
+  public int b3457;
+  public int b3458;
+  public int b3459;
+  public int b3460;
+  public int b3461;
+  public int b3462;
+  public int b3463;
+  public int b3464;
+  public int b3465;
+  public int b3466;
+  public int b3467;
+  public int b3468;
+  public int b3469;
+  public int b3470;
+  public int b3471;
+  public int b3472;
+  public int b3473;
+  public int b3474;
+  public int b3475;
+  public int b3476;
+  public int b3477;
+  public int b3478;
+  public int b3479;
+  public int b3480;
+  public int b3481;
+  public int b3482;
+  public int b3483;
+  public int b3484;
+  public int b3485;
+  public int b3486;
+  public int b3487;
+  public int b3488;
+  public int b3489;
+  public int b3490;
+  public int b3491;
+  public int b3492;
+  public int b3493;
+  public int b3494;
+  public int b3495;
+  public int b3496;
+  public int b3497;
+  public int b3498;
+  public int b3499;
+  public int b3500;
+  public int b3501;
+  public int b3502;
+  public int b3503;
+  public int b3504;
+  public int b3505;
+  public int b3506;
+  public int b3507;
+  public int b3508;
+  public int b3509;
+  public int b3510;
+  public int b3511;
+  public int b3512;
+  public int b3513;
+  public int b3514;
+  public int b3515;
+  public int b3516;
+  public int b3517;
+  public int b3518;
+  public int b3519;
+  public int b3520;
+  public int b3521;
+  public int b3522;
+  public int b3523;
+  public int b3524;
+  public int b3525;
+  public int b3526;
+  public int b3527;
+  public int b3528;
+  public int b3529;
+  public int b3530;
+  public int b3531;
+  public int b3532;
+  public int b3533;
+  public int b3534;
+  public int b3535;
+  public int b3536;
+  public int b3537;
+  public int b3538;
+  public int b3539;
+  public int b3540;
+  public int b3541;
+  public int b3542;
+  public int b3543;
+  public int b3544;
+  public int b3545;
+  public int b3546;
+  public int b3547;
+  public int b3548;
+  public int b3549;
+  public int b3550;
+  public int b3551;
+  public int b3552;
+  public int b3553;
+  public int b3554;
+  public int b3555;
+  public int b3556;
+  public int b3557;
+  public int b3558;
+  public int b3559;
+  public int b3560;
+  public int b3561;
+  public int b3562;
+  public int b3563;
+  public int b3564;
+  public int b3565;
+  public int b3566;
+  public int b3567;
+  public int b3568;
+  public int b3569;
+  public int b3570;
+  public int b3571;
+  public int b3572;
+  public int b3573;
+  public int b3574;
+  public int b3575;
+  public int b3576;
+  public int b3577;
+  public int b3578;
+  public int b3579;
+  public int b3580;
+  public int b3581;
+  public int b3582;
+  public int b3583;
+  public int b3584;
+  public int b3585;
+  public int b3586;
+  public int b3587;
+  public int b3588;
+  public int b3589;
+  public int b3590;
+  public int b3591;
+  public int b3592;
+  public int b3593;
+  public int b3594;
+  public int b3595;
+  public int b3596;
+  public int b3597;
+  public int b3598;
+  public int b3599;
+  public int b3600;
+  public int b3601;
+  public int b3602;
+  public int b3603;
+  public int b3604;
+  public int b3605;
+  public int b3606;
+  public int b3607;
+  public int b3608;
+  public int b3609;
+  public int b3610;
+  public int b3611;
+  public int b3612;
+  public int b3613;
+  public int b3614;
+  public int b3615;
+  public int b3616;
+  public int b3617;
+  public int b3618;
+  public int b3619;
+  public int b3620;
+  public int b3621;
+  public int b3622;
+  public int b3623;
+  public int b3624;
+  public int b3625;
+  public int b3626;
+  public int b3627;
+  public int b3628;
+  public int b3629;
+  public int b3630;
+  public int b3631;
+  public int b3632;
+  public int b3633;
+  public int b3634;
+  public int b3635;
+  public int b3636;
+  public int b3637;
+  public int b3638;
+  public int b3639;
+  public int b3640;
+  public int b3641;
+  public int b3642;
+  public int b3643;
+  public int b3644;
+  public int b3645;
+  public int b3646;
+  public int b3647;
+  public int b3648;
+  public int b3649;
+  public int b3650;
+  public int b3651;
+  public int b3652;
+  public int b3653;
+  public int b3654;
+  public int b3655;
+  public int b3656;
+  public int b3657;
+  public int b3658;
+  public int b3659;
+  public int b3660;
+  public int b3661;
+  public int b3662;
+  public int b3663;
+  public int b3664;
+  public int b3665;
+  public int b3666;
+  public int b3667;
+  public int b3668;
+  public int b3669;
+  public int b3670;
+  public int b3671;
+  public int b3672;
+  public int b3673;
+  public int b3674;
+  public int b3675;
+  public int b3676;
+  public int b3677;
+  public int b3678;
+  public int b3679;
+  public int b3680;
+  public int b3681;
+  public int b3682;
+  public int b3683;
+  public int b3684;
+  public int b3685;
+  public int b3686;
+  public int b3687;
+  public int b3688;
+  public int b3689;
+  public int b3690;
+  public int b3691;
+  public int b3692;
+  public int b3693;
+  public int b3694;
+  public int b3695;
+  public int b3696;
+  public int b3697;
+  public int b3698;
+  public int b3699;
+  public int b3700;
+  public int b3701;
+  public int b3702;
+  public int b3703;
+  public int b3704;
+  public int b3705;
+  public int b3706;
+  public int b3707;
+  public int b3708;
+  public int b3709;
+  public int b3710;
+  public int b3711;
+  public int b3712;
+  public int b3713;
+  public int b3714;
+  public int b3715;
+  public int b3716;
+  public int b3717;
+  public int b3718;
+  public int b3719;
+  public int b3720;
+  public int b3721;
+  public int b3722;
+  public int b3723;
+  public int b3724;
+  public int b3725;
+  public int b3726;
+  public int b3727;
+  public int b3728;
+  public int b3729;
+  public int b3730;
+  public int b3731;
+  public int b3732;
+  public int b3733;
+  public int b3734;
+  public int b3735;
+  public int b3736;
+  public int b3737;
+  public int b3738;
+  public int b3739;
+  public int b3740;
+  public int b3741;
+  public int b3742;
+  public int b3743;
+  public int b3744;
+  public int b3745;
+  public int b3746;
+  public int b3747;
+  public int b3748;
+  public int b3749;
+  public int b3750;
+  public int b3751;
+  public int b3752;
+  public int b3753;
+  public int b3754;
+  public int b3755;
+  public int b3756;
+  public int b3757;
+  public int b3758;
+  public int b3759;
+  public int b3760;
+  public int b3761;
+  public int b3762;
+  public int b3763;
+  public int b3764;
+  public int b3765;
+  public int b3766;
+  public int b3767;
+  public int b3768;
+  public int b3769;
+  public int b3770;
+  public int b3771;
+  public int b3772;
+  public int b3773;
+  public int b3774;
+  public int b3775;
+  public int b3776;
+  public int b3777;
+  public int b3778;
+  public int b3779;
+  public int b3780;
+  public int b3781;
+  public int b3782;
+  public int b3783;
+  public int b3784;
+  public int b3785;
+  public int b3786;
+  public int b3787;
+  public int b3788;
+  public int b3789;
+  public int b3790;
+  public int b3791;
+  public int b3792;
+  public int b3793;
+  public int b3794;
+  public int b3795;
+  public int b3796;
+  public int b3797;
+  public int b3798;
+  public int b3799;
+  public int b3800;
+  public int b3801;
+  public int b3802;
+  public int b3803;
+  public int b3804;
+  public int b3805;
+  public int b3806;
+  public int b3807;
+  public int b3808;
+  public int b3809;
+  public int b3810;
+  public int b3811;
+  public int b3812;
+  public int b3813;
+  public int b3814;
+  public int b3815;
+  public int b3816;
+  public int b3817;
+  public int b3818;
+  public int b3819;
+  public int b3820;
+  public int b3821;
+  public int b3822;
+  public int b3823;
+  public int b3824;
+  public int b3825;
+  public int b3826;
+  public int b3827;
+  public int b3828;
+  public int b3829;
+  public int b3830;
+  public int b3831;
+  public int b3832;
+  public int b3833;
+  public int b3834;
+  public int b3835;
+  public int b3836;
+  public int b3837;
+  public int b3838;
+  public int b3839;
+  public int b3840;
+  public int b3841;
+  public int b3842;
+  public int b3843;
+  public int b3844;
+  public int b3845;
+  public int b3846;
+  public int b3847;
+  public int b3848;
+  public int b3849;
+  public int b3850;
+  public int b3851;
+  public int b3852;
+  public int b3853;
+  public int b3854;
+  public int b3855;
+  public int b3856;
+  public int b3857;
+  public int b3858;
+  public int b3859;
+  public int b3860;
+  public int b3861;
+  public int b3862;
+  public int b3863;
+  public int b3864;
+  public int b3865;
+  public int b3866;
+  public int b3867;
+  public int b3868;
+  public int b3869;
+  public int b3870;
+  public int b3871;
+  public int b3872;
+  public int b3873;
+  public int b3874;
+  public int b3875;
+  public int b3876;
+  public int b3877;
+  public int b3878;
+  public int b3879;
+  public int b3880;
+  public int b3881;
+  public int b3882;
+  public int b3883;
+  public int b3884;
+  public int b3885;
+  public int b3886;
+  public int b3887;
+  public int b3888;
+  public int b3889;
+  public int b3890;
+  public int b3891;
+  public int b3892;
+  public int b3893;
+  public int b3894;
+  public int b3895;
+  public int b3896;
+  public int b3897;
+  public int b3898;
+  public int b3899;
+  public int b3900;
+  public int b3901;
+  public int b3902;
+  public int b3903;
+  public int b3904;
+  public int b3905;
+  public int b3906;
+  public int b3907;
+  public int b3908;
+  public int b3909;
+  public int b3910;
+  public int b3911;
+  public int b3912;
+  public int b3913;
+  public int b3914;
+  public int b3915;
+  public int b3916;
+  public int b3917;
+  public int b3918;
+  public int b3919;
+  public int b3920;
+  public int b3921;
+  public int b3922;
+  public int b3923;
+  public int b3924;
+  public int b3925;
+  public int b3926;
+  public int b3927;
+  public int b3928;
+  public int b3929;
+  public int b3930;
+  public int b3931;
+  public int b3932;
+  public int b3933;
+  public int b3934;
+  public int b3935;
+  public int b3936;
+  public int b3937;
+  public int b3938;
+  public int b3939;
+  public int b3940;
+  public int b3941;
+  public int b3942;
+  public int b3943;
+  public int b3944;
+  public int b3945;
+  public int b3946;
+  public int b3947;
+  public int b3948;
+  public int b3949;
+  public int b3950;
+  public int b3951;
+  public int b3952;
+  public int b3953;
+  public int b3954;
+  public int b3955;
+  public int b3956;
+  public int b3957;
+  public int b3958;
+  public int b3959;
+  public int b3960;
+  public int b3961;
+  public int b3962;
+  public int b3963;
+  public int b3964;
+  public int b3965;
+  public int b3966;
+  public int b3967;
+  public int b3968;
+  public int b3969;
+  public int b3970;
+  public int b3971;
+  public int b3972;
+  public int b3973;
+  public int b3974;
+  public int b3975;
+  public int b3976;
+  public int b3977;
+  public int b3978;
+  public int b3979;
+  public int b3980;
+  public int b3981;
+  public int b3982;
+  public int b3983;
+  public int b3984;
+  public int b3985;
+  public int b3986;
+  public int b3987;
+  public int b3988;
+  public int b3989;
+  public int b3990;
+  public int b3991;
+  public int b3992;
+  public int b3993;
+  public int b3994;
+  public int b3995;
+  public int b3996;
+  public int b3997;
+  public int b3998;
+  public int b3999;
+  public int b4000;
+  public int b4001;
+  public int b4002;
+  public int b4003;
+  public int b4004;
+  public int b4005;
+  public int b4006;
+  public int b4007;
+  public int b4008;
+  public int b4009;
+  public int b4010;
+  public int b4011;
+  public int b4012;
+  public int b4013;
+  public int b4014;
+  public int b4015;
+  public int b4016;
+  public int b4017;
+  public int b4018;
+  public int b4019;
+  public int b4020;
+  public int b4021;
+  public int b4022;
+  public int b4023;
+  public int b4024;
+  public int b4025;
+  public int b4026;
+  public int b4027;
+  public int b4028;
+  public int b4029;
+  public int b4030;
+  public int b4031;
+  public int b4032;
+  public int b4033;
+  public int b4034;
+  public int b4035;
+  public int b4036;
+  public int b4037;
+  public int b4038;
+  public int b4039;
+  public int b4040;
+  public int b4041;
+  public int b4042;
+  public int b4043;
+  public int b4044;
+  public int b4045;
+  public int b4046;
+  public int b4047;
+  public int b4048;
+  public int b4049;
+  public int b4050;
+  public int b4051;
+  public int b4052;
+  public int b4053;
+  public int b4054;
+  public int b4055;
+  public int b4056;
+  public int b4057;
+  public int b4058;
+  public int b4059;
+  public int b4060;
+  public int b4061;
+  public int b4062;
+  public int b4063;
+  public int b4064;
+  public int b4065;
+  public int b4066;
+  public int b4067;
+  public int b4068;
+  public int b4069;
+  public int b4070;
+  public int b4071;
+  public int b4072;
+  public int b4073;
+  public int b4074;
+  public int b4075;
+  public int b4076;
+  public int b4077;
+  public int b4078;
+  public int b4079;
+  public int b4080;
+  public int b4081;
+  public int b4082;
+  public int b4083;
+  public int b4084;
+  public int b4085;
+  public int b4086;
+  public int b4087;
+  public int b4088;
+  public int b4089;
+  public int b4090;
+  public int b4091;
+  public int b4092;
+  public int b4093;
+  public int b4094;
+  public int b4095;
+  public int b4096;
+  public int b4097;
+  public int b4098;
+  public int b4099;
+  public int b4100;
+  public int b4101;
+  public int b4102;
+  public int b4103;
+  public int b4104;
+  public int b4105;
+  public int b4106;
+  public int b4107;
+  public int b4108;
+  public int b4109;
+  public int b4110;
+  public int b4111;
+  public int b4112;
+  public int b4113;
+  public int b4114;
+  public int b4115;
+  public int b4116;
+  public int b4117;
+  public int b4118;
+  public int b4119;
+  public int b4120;
+  public int b4121;
+  public int b4122;
+  public int b4123;
+  public int b4124;
+  public int b4125;
+  public int b4126;
+  public int b4127;
+  public int b4128;
+  public int b4129;
+  public int b4130;
+  public int b4131;
+  public int b4132;
+  public int b4133;
+  public int b4134;
+  public int b4135;
+  public int b4136;
+  public int b4137;
+  public int b4138;
+  public int b4139;
+  public int b4140;
+  public int b4141;
+  public int b4142;
+  public int b4143;
+  public int b4144;
+  public int b4145;
+  public int b4146;
+  public int b4147;
+  public int b4148;
+  public int b4149;
+  public int b4150;
+  public int b4151;
+  public int b4152;
+  public int b4153;
+  public int b4154;
+  public int b4155;
+  public int b4156;
+  public int b4157;
+  public int b4158;
+  public int b4159;
+  public int b4160;
+  public int b4161;
+  public int b4162;
+  public int b4163;
+  public int b4164;
+  public int b4165;
+  public int b4166;
+  public int b4167;
+  public int b4168;
+  public int b4169;
+  public int b4170;
+  public int b4171;
+  public int b4172;
+  public int b4173;
+  public int b4174;
+  public int b4175;
+  public int b4176;
+  public int b4177;
+  public int b4178;
+  public int b4179;
+  public int b4180;
+  public int b4181;
+  public int b4182;
+  public int b4183;
+  public int b4184;
+  public int b4185;
+  public int b4186;
+  public int b4187;
+  public int b4188;
+  public int b4189;
+  public int b4190;
+  public int b4191;
+  public int b4192;
+  public int b4193;
+  public int b4194;
+  public int b4195;
+  public int b4196;
+  public int b4197;
+  public int b4198;
+  public int b4199;
+  public int b4200;
+  public int b4201;
+  public int b4202;
+  public int b4203;
+  public int b4204;
+  public int b4205;
+  public int b4206;
+  public int b4207;
+  public int b4208;
+  public int b4209;
+  public int b4210;
+  public int b4211;
+  public int b4212;
+  public int b4213;
+  public int b4214;
+  public int b4215;
+  public int b4216;
+  public int b4217;
+  public int b4218;
+  public int b4219;
+  public int b4220;
+  public int b4221;
+  public int b4222;
+  public int b4223;
+  public int b4224;
+  public int b4225;
+  public int b4226;
+  public int b4227;
+  public int b4228;
+  public int b4229;
+  public int b4230;
+  public int b4231;
+  public int b4232;
+  public int b4233;
+  public int b4234;
+  public int b4235;
+  public int b4236;
+  public int b4237;
+  public int b4238;
+  public int b4239;
+  public int b4240;
+  public int b4241;
+  public int b4242;
+  public int b4243;
+  public int b4244;
+  public int b4245;
+  public int b4246;
+  public int b4247;
+  public int b4248;
+  public int b4249;
+  public int b4250;
+  public int b4251;
+  public int b4252;
+  public int b4253;
+  public int b4254;
+  public int b4255;
+  public int b4256;
+  public int b4257;
+  public int b4258;
+  public int b4259;
+  public int b4260;
+  public int b4261;
+  public int b4262;
+  public int b4263;
+  public int b4264;
+  public int b4265;
+  public int b4266;
+  public int b4267;
+  public int b4268;
+  public int b4269;
+  public int b4270;
+  public int b4271;
+  public int b4272;
+  public int b4273;
+  public int b4274;
+  public int b4275;
+  public int b4276;
+  public int b4277;
+  public int b4278;
+  public int b4279;
+  public int b4280;
+  public int b4281;
+  public int b4282;
+  public int b4283;
+  public int b4284;
+  public int b4285;
+  public int b4286;
+  public int b4287;
+  public int b4288;
+  public int b4289;
+  public int b4290;
+  public int b4291;
+  public int b4292;
+  public int b4293;
+  public int b4294;
+  public int b4295;
+  public int b4296;
+  public int b4297;
+  public int b4298;
+  public int b4299;
+  public int b4300;
+  public int b4301;
+  public int b4302;
+  public int b4303;
+  public int b4304;
+  public int b4305;
+  public int b4306;
+  public int b4307;
+  public int b4308;
+  public int b4309;
+  public int b4310;
+  public int b4311;
+  public int b4312;
+  public int b4313;
+  public int b4314;
+  public int b4315;
+  public int b4316;
+  public int b4317;
+  public int b4318;
+  public int b4319;
+  public int b4320;
+  public int b4321;
+  public int b4322;
+  public int b4323;
+  public int b4324;
+  public int b4325;
+  public int b4326;
+  public int b4327;
+  public int b4328;
+  public int b4329;
+  public int b4330;
+  public int b4331;
+  public int b4332;
+  public int b4333;
+  public int b4334;
+  public int b4335;
+  public int b4336;
+  public int b4337;
+  public int b4338;
+  public int b4339;
+  public int b4340;
+  public int b4341;
+  public int b4342;
+  public int b4343;
+  public int b4344;
+  public int b4345;
+  public int b4346;
+  public int b4347;
+  public int b4348;
+  public int b4349;
+  public int b4350;
+  public int b4351;
+  public int b4352;
+  public int b4353;
+  public int b4354;
+  public int b4355;
+  public int b4356;
+  public int b4357;
+  public int b4358;
+  public int b4359;
+  public int b4360;
+  public int b4361;
+  public int b4362;
+  public int b4363;
+  public int b4364;
+  public int b4365;
+  public int b4366;
+  public int b4367;
+  public int b4368;
+  public int b4369;
+  public int b4370;
+  public int b4371;
+  public int b4372;
+  public int b4373;
+  public int b4374;
+  public int b4375;
+  public int b4376;
+  public int b4377;
+  public int b4378;
+  public int b4379;
+  public int b4380;
+  public int b4381;
+  public int b4382;
+  public int b4383;
+  public int b4384;
+  public int b4385;
+  public int b4386;
+  public int b4387;
+  public int b4388;
+  public int b4389;
+  public int b4390;
+  public int b4391;
+  public int b4392;
+  public int b4393;
+  public int b4394;
+  public int b4395;
+  public int b4396;
+  public int b4397;
+  public int b4398;
+  public int b4399;
+  public int b4400;
+  public int b4401;
+  public int b4402;
+  public int b4403;
+  public int b4404;
+  public int b4405;
+  public int b4406;
+  public int b4407;
+  public int b4408;
+  public int b4409;
+  public int b4410;
+  public int b4411;
+  public int b4412;
+  public int b4413;
+  public int b4414;
+  public int b4415;
+  public int b4416;
+  public int b4417;
+  public int b4418;
+  public int b4419;
+  public int b4420;
+  public int b4421;
+  public int b4422;
+  public int b4423;
+  public int b4424;
+  public int b4425;
+  public int b4426;
+  public int b4427;
+  public int b4428;
+  public int b4429;
+  public int b4430;
+  public int b4431;
+  public int b4432;
+  public int b4433;
+  public int b4434;
+  public int b4435;
+  public int b4436;
+  public int b4437;
+  public int b4438;
+  public int b4439;
+  public int b4440;
+  public int b4441;
+  public int b4442;
+  public int b4443;
+  public int b4444;
+  public int b4445;
+  public int b4446;
+  public int b4447;
+  public int b4448;
+  public int b4449;
+  public int b4450;
+  public int b4451;
+  public int b4452;
+  public int b4453;
+  public int b4454;
+  public int b4455;
+  public int b4456;
+  public int b4457;
+  public int b4458;
+  public int b4459;
+  public int b4460;
+  public int b4461;
+  public int b4462;
+  public int b4463;
+  public int b4464;
+  public int b4465;
+  public int b4466;
+  public int b4467;
+  public int b4468;
+  public int b4469;
+  public int b4470;
+  public int b4471;
+  public int b4472;
+  public int b4473;
+  public int b4474;
+  public int b4475;
+  public int b4476;
+  public int b4477;
+  public int b4478;
+  public int b4479;
+  public int b4480;
+  public int b4481;
+  public int b4482;
+  public int b4483;
+  public int b4484;
+  public int b4485;
+  public int b4486;
+  public int b4487;
+  public int b4488;
+  public int b4489;
+  public int b4490;
+  public int b4491;
+  public int b4492;
+  public int b4493;
+  public int b4494;
+  public int b4495;
+  public int b4496;
+  public int b4497;
+  public int b4498;
+  public int b4499;
+  public int b4500;
+  public int b4501;
+  public int b4502;
+  public int b4503;
+  public int b4504;
+  public int b4505;
+  public int b4506;
+  public int b4507;
+  public int b4508;
+  public int b4509;
+  public int b4510;
+  public int b4511;
+  public int b4512;
+  public int b4513;
+  public int b4514;
+  public int b4515;
+  public int b4516;
+  public int b4517;
+  public int b4518;
+  public int b4519;
+  public int b4520;
+  public int b4521;
+  public int b4522;
+  public int b4523;
+  public int b4524;
+  public int b4525;
+  public int b4526;
+  public int b4527;
+  public int b4528;
+  public int b4529;
+  public int b4530;
+  public int b4531;
+  public int b4532;
+  public int b4533;
+  public int b4534;
+  public int b4535;
+  public int b4536;
+  public int b4537;
+  public int b4538;
+  public int b4539;
+  public int b4540;
+  public int b4541;
+  public int b4542;
+  public int b4543;
+  public int b4544;
+  public int b4545;
+  public int b4546;
+  public int b4547;
+  public int b4548;
+  public int b4549;
+  public int b4550;
+  public int b4551;
+  public int b4552;
+  public int b4553;
+  public int b4554;
+  public int b4555;
+  public int b4556;
+  public int b4557;
+  public int b4558;
+  public int b4559;
+  public int b4560;
+  public int b4561;
+  public int b4562;
+  public int b4563;
+  public int b4564;
+  public int b4565;
+  public int b4566;
+  public int b4567;
+  public int b4568;
+  public int b4569;
+  public int b4570;
+  public int b4571;
+  public int b4572;
+  public int b4573;
+  public int b4574;
+  public int b4575;
+  public int b4576;
+  public int b4577;
+  public int b4578;
+  public int b4579;
+  public int b4580;
+  public int b4581;
+  public int b4582;
+  public int b4583;
+  public int b4584;
+  public int b4585;
+  public int b4586;
+  public int b4587;
+  public int b4588;
+  public int b4589;
+  public int b4590;
+  public int b4591;
+  public int b4592;
+  public int b4593;
+  public int b4594;
+  public int b4595;
+  public int b4596;
+  public int b4597;
+  public int b4598;
+  public int b4599;
+  public int b4600;
+  public int b4601;
+  public int b4602;
+  public int b4603;
+  public int b4604;
+  public int b4605;
+  public int b4606;
+  public int b4607;
+  public int b4608;
+  public int b4609;
+  public int b4610;
+  public int b4611;
+  public int b4612;
+  public int b4613;
+  public int b4614;
+  public int b4615;
+  public int b4616;
+  public int b4617;
+  public int b4618;
+  public int b4619;
+  public int b4620;
+  public int b4621;
+  public int b4622;
+  public int b4623;
+  public int b4624;
+  public int b4625;
+  public int b4626;
+  public int b4627;
+  public int b4628;
+  public int b4629;
+  public int b4630;
+  public int b4631;
+  public int b4632;
+  public int b4633;
+  public int b4634;
+  public int b4635;
+  public int b4636;
+  public int b4637;
+  public int b4638;
+  public int b4639;
+  public int b4640;
+  public int b4641;
+  public int b4642;
+  public int b4643;
+  public int b4644;
+  public int b4645;
+  public int b4646;
+  public int b4647;
+  public int b4648;
+  public int b4649;
+  public int b4650;
+  public int b4651;
+  public int b4652;
+  public int b4653;
+  public int b4654;
+  public int b4655;
+  public int b4656;
+  public int b4657;
+  public int b4658;
+  public int b4659;
+  public int b4660;
+  public int b4661;
+  public int b4662;
+  public int b4663;
+  public int b4664;
+  public int b4665;
+  public int b4666;
+  public int b4667;
+  public int b4668;
+  public int b4669;
+  public int b4670;
+  public int b4671;
+  public int b4672;
+  public int b4673;
+  public int b4674;
+  public int b4675;
+  public int b4676;
+  public int b4677;
+  public int b4678;
+  public int b4679;
+  public int b4680;
+  public int b4681;
+  public int b4682;
+  public int b4683;
+  public int b4684;
+  public int b4685;
+  public int b4686;
+  public int b4687;
+  public int b4688;
+  public int b4689;
+  public int b4690;
+  public int b4691;
+  public int b4692;
+  public int b4693;
+  public int b4694;
+  public int b4695;
+  public int b4696;
+  public int b4697;
+  public int b4698;
+  public int b4699;
+  public int b4700;
+  public int b4701;
+  public int b4702;
+  public int b4703;
+  public int b4704;
+  public int b4705;
+  public int b4706;
+  public int b4707;
+  public int b4708;
+  public int b4709;
+  public int b4710;
+  public int b4711;
+  public int b4712;
+  public int b4713;
+  public int b4714;
+  public int b4715;
+  public int b4716;
+  public int b4717;
+  public int b4718;
+  public int b4719;
+  public int b4720;
+  public int b4721;
+  public int b4722;
+  public int b4723;
+  public int b4724;
+  public int b4725;
+  public int b4726;
+  public int b4727;
+  public int b4728;
+  public int b4729;
+  public int b4730;
+  public int b4731;
+  public int b4732;
+  public int b4733;
+  public int b4734;
+  public int b4735;
+  public int b4736;
+  public int b4737;
+  public int b4738;
+  public int b4739;
+  public int b4740;
+  public int b4741;
+  public int b4742;
+  public int b4743;
+  public int b4744;
+  public int b4745;
+  public int b4746;
+  public int b4747;
+  public int b4748;
+  public int b4749;
+  public int b4750;
+  public int b4751;
+  public int b4752;
+  public int b4753;
+  public int b4754;
+  public int b4755;
+  public int b4756;
+  public int b4757;
+  public int b4758;
+  public int b4759;
+  public int b4760;
+  public int b4761;
+  public int b4762;
+  public int b4763;
+  public int b4764;
+  public int b4765;
+  public int b4766;
+  public int b4767;
+  public int b4768;
+  public int b4769;
+  public int b4770;
+  public int b4771;
+  public int b4772;
+  public int b4773;
+  public int b4774;
+  public int b4775;
+  public int b4776;
+  public int b4777;
+  public int b4778;
+  public int b4779;
+  public int b4780;
+  public int b4781;
+  public int b4782;
+  public int b4783;
+  public int b4784;
+  public int b4785;
+  public int b4786;
+  public int b4787;
+  public int b4788;
+  public int b4789;
+  public int b4790;
+  public int b4791;
+  public int b4792;
+  public int b4793;
+  public int b4794;
+  public int b4795;
+  public int b4796;
+  public int b4797;
+  public int b4798;
+  public int b4799;
+  public int b4800;
+  public int b4801;
+  public int b4802;
+  public int b4803;
+  public int b4804;
+  public int b4805;
+  public int b4806;
+  public int b4807;
+  public int b4808;
+  public int b4809;
+  public int b4810;
+  public int b4811;
+  public int b4812;
+  public int b4813;
+  public int b4814;
+  public int b4815;
+  public int b4816;
+  public int b4817;
+  public int b4818;
+  public int b4819;
+  public int b4820;
+  public int b4821;
+  public int b4822;
+  public int b4823;
+  public int b4824;
+  public int b4825;
+  public int b4826;
+  public int b4827;
+  public int b4828;
+  public int b4829;
+  public int b4830;
+  public int b4831;
+  public int b4832;
+  public int b4833;
+  public int b4834;
+  public int b4835;
+  public int b4836;
+  public int b4837;
+  public int b4838;
+  public int b4839;
+  public int b4840;
+  public int b4841;
+  public int b4842;
+  public int b4843;
+  public int b4844;
+  public int b4845;
+  public int b4846;
+  public int b4847;
+  public int b4848;
+  public int b4849;
+  public int b4850;
+  public int b4851;
+  public int b4852;
+  public int b4853;
+  public int b4854;
+  public int b4855;
+  public int b4856;
+  public int b4857;
+  public int b4858;
+  public int b4859;
+  public int b4860;
+  public int b4861;
+  public int b4862;
+  public int b4863;
+  public int b4864;
+  public int b4865;
+  public int b4866;
+  public int b4867;
+  public int b4868;
+  public int b4869;
+  public int b4870;
+  public int b4871;
+  public int b4872;
+  public int b4873;
+  public int b4874;
+  public int b4875;
+  public int b4876;
+  public int b4877;
+  public int b4878;
+  public int b4879;
+  public int b4880;
+  public int b4881;
+  public int b4882;
+  public int b4883;
+  public int b4884;
+  public int b4885;
+  public int b4886;
+  public int b4887;
+  public int b4888;
+  public int b4889;
+  public int b4890;
+  public int b4891;
+  public int b4892;
+  public int b4893;
+  public int b4894;
+  public int b4895;
+  public int b4896;
+  public int b4897;
+  public int b4898;
+  public int b4899;
+  public int b4900;
+  public int b4901;
+  public int b4902;
+  public int b4903;
+  public int b4904;
+  public int b4905;
+  public int b4906;
+  public int b4907;
+  public int b4908;
+  public int b4909;
+  public int b4910;
+  public int b4911;
+  public int b4912;
+  public int b4913;
+  public int b4914;
+  public int b4915;
+  public int b4916;
+  public int b4917;
+  public int b4918;
+  public int b4919;
+  public int b4920;
+  public int b4921;
+  public int b4922;
+  public int b4923;
+  public int b4924;
+  public int b4925;
+  public int b4926;
+  public int b4927;
+  public int b4928;
+  public int b4929;
+  public int b4930;
+  public int b4931;
+  public int b4932;
+  public int b4933;
+  public int b4934;
+  public int b4935;
+  public int b4936;
+  public int b4937;
+  public int b4938;
+  public int b4939;
+  public int b4940;
+  public int b4941;
+  public int b4942;
+  public int b4943;
+  public int b4944;
+  public int b4945;
+  public int b4946;
+  public int b4947;
+  public int b4948;
+  public int b4949;
+  public int b4950;
+  public int b4951;
+  public int b4952;
+  public int b4953;
+  public int b4954;
+  public int b4955;
+  public int b4956;
+  public int b4957;
+  public int b4958;
+  public int b4959;
+  public int b4960;
+  public int b4961;
+  public int b4962;
+  public int b4963;
+  public int b4964;
+  public int b4965;
+  public int b4966;
+  public int b4967;
+  public int b4968;
+  public int b4969;
+  public int b4970;
+  public int b4971;
+  public int b4972;
+  public int b4973;
+  public int b4974;
+  public int b4975;
+  public int b4976;
+  public int b4977;
+  public int b4978;
+  public int b4979;
+  public int b4980;
+  public int b4981;
+  public int b4982;
+  public int b4983;
+  public int b4984;
+  public int b4985;
+  public int b4986;
+  public int b4987;
+  public int b4988;
+  public int b4989;
+  public int b4990;
+  public int b4991;
+  public int b4992;
+  public int b4993;
+  public int b4994;
+  public int b4995;
+  public int b4996;
+  public int b4997;
+  public int b4998;
+  public int b4999;
+  public int b5000;
+  public int b5001;
+  public int b5002;
+  public int b5003;
+  public int b5004;
+  public int b5005;
+  public int b5006;
+  public int b5007;
+  public int b5008;
+  public int b5009;
+  public int b5010;
+  public int b5011;
+  public int b5012;
+  public int b5013;
+  public int b5014;
+  public int b5015;
+  public int b5016;
+  public int b5017;
+  public int b5018;
+  public int b5019;
+  public int b5020;
+  public int b5021;
+  public int b5022;
+  public int b5023;
+  public int b5024;
+  public int b5025;
+  public int b5026;
+  public int b5027;
+  public int b5028;
+  public int b5029;
+  public int b5030;
+  public int b5031;
+  public int b5032;
+  public int b5033;
+  public int b5034;
+  public int b5035;
+  public int b5036;
+  public int b5037;
+  public int b5038;
+  public int b5039;
+  public int b5040;
+  public int b5041;
+  public int b5042;
+  public int b5043;
+  public int b5044;
+  public int b5045;
+  public int b5046;
+  public int b5047;
+  public int b5048;
+  public int b5049;
+  public int b5050;
+  public int b5051;
+  public int b5052;
+  public int b5053;
+  public int b5054;
+  public int b5055;
+  public int b5056;
+  public int b5057;
+  public int b5058;
+  public int b5059;
+  public int b5060;
+  public int b5061;
+  public int b5062;
+  public int b5063;
+  public int b5064;
+  public int b5065;
+  public int b5066;
+  public int b5067;
+  public int b5068;
+  public int b5069;
+  public int b5070;
+  public int b5071;
+  public int b5072;
+  public int b5073;
+  public int b5074;
+  public int b5075;
+  public int b5076;
+  public int b5077;
+  public int b5078;
+  public int b5079;
+  public int b5080;
+  public int b5081;
+  public int b5082;
+  public int b5083;
+  public int b5084;
+  public int b5085;
+  public int b5086;
+  public int b5087;
+  public int b5088;
+  public int b5089;
+  public int b5090;
+  public int b5091;
+  public int b5092;
+  public int b5093;
+  public int b5094;
+  public int b5095;
+  public int b5096;
+  public int b5097;
+  public int b5098;
+  public int b5099;
+  public int b5100;
+  public int b5101;
+  public int b5102;
+  public int b5103;
+  public int b5104;
+  public int b5105;
+  public int b5106;
+  public int b5107;
+  public int b5108;
+  public int b5109;
+  public int b5110;
+  public int b5111;
+  public int b5112;
+  public int b5113;
+  public int b5114;
+  public int b5115;
+  public int b5116;
+  public int b5117;
+  public int b5118;
+  public int b5119;
+  public int b5120;
+  public int b5121;
+  public int b5122;
+  public int b5123;
+  public int b5124;
+  public int b5125;
+  public int b5126;
+  public int b5127;
+  public int b5128;
+  public int b5129;
+  public int b5130;
+  public int b5131;
+  public int b5132;
+  public int b5133;
+  public int b5134;
+  public int b5135;
+  public int b5136;
+  public int b5137;
+  public int b5138;
+  public int b5139;
+  public int b5140;
+  public int b5141;
+  public int b5142;
+  public int b5143;
+  public int b5144;
+  public int b5145;
+  public int b5146;
+  public int b5147;
+  public int b5148;
+  public int b5149;
+  public int b5150;
+  public int b5151;
+  public int b5152;
+  public int b5153;
+  public int b5154;
+  public int b5155;
+  public int b5156;
+  public int b5157;
+  public int b5158;
+  public int b5159;
+  public int b5160;
+  public int b5161;
+  public int b5162;
+  public int b5163;
+  public int b5164;
+  public int b5165;
+  public int b5166;
+  public int b5167;
+  public int b5168;
+  public int b5169;
+  public int b5170;
+  public int b5171;
+  public int b5172;
+  public int b5173;
+  public int b5174;
+  public int b5175;
+  public int b5176;
+  public int b5177;
+  public int b5178;
+  public int b5179;
+  public int b5180;
+  public int b5181;
+  public int b5182;
+  public int b5183;
+  public int b5184;
+  public int b5185;
+  public int b5186;
+  public int b5187;
+  public int b5188;
+  public int b5189;
+  public int b5190;
+  public int b5191;
+  public int b5192;
+  public int b5193;
+  public int b5194;
+  public int b5195;
+  public int b5196;
+  public int b5197;
+  public int b5198;
+  public int b5199;
+  public int b5200;
+  public int b5201;
+  public int b5202;
+  public int b5203;
+  public int b5204;
+  public int b5205;
+  public int b5206;
+  public int b5207;
+  public int b5208;
+  public int b5209;
+  public int b5210;
+  public int b5211;
+  public int b5212;
+  public int b5213;
+  public int b5214;
+  public int b5215;
+  public int b5216;
+  public int b5217;
+  public int b5218;
+  public int b5219;
+  public int b5220;
+  public int b5221;
+  public int b5222;
+  public int b5223;
+  public int b5224;
+  public int b5225;
+  public int b5226;
+  public int b5227;
+  public int b5228;
+  public int b5229;
+  public int b5230;
+  public int b5231;
+  public int b5232;
+  public int b5233;
+  public int b5234;
+  public int b5235;
+  public int b5236;
+  public int b5237;
+  public int b5238;
+  public int b5239;
+  public int b5240;
+  public int b5241;
+  public int b5242;
+  public int b5243;
+  public int b5244;
+  public int b5245;
+  public int b5246;
+  public int b5247;
+  public int b5248;
+  public int b5249;
+  public int b5250;
+  public int b5251;
+  public int b5252;
+  public int b5253;
+  public int b5254;
+  public int b5255;
+  public int b5256;
+  public int b5257;
+  public int b5258;
+  public int b5259;
+  public int b5260;
+  public int b5261;
+  public int b5262;
+  public int b5263;
+  public int b5264;
+  public int b5265;
+  public int b5266;
+  public int b5267;
+  public int b5268;
+  public int b5269;
+  public int b5270;
+  public int b5271;
+  public int b5272;
+  public int b5273;
+  public int b5274;
+  public int b5275;
+  public int b5276;
+  public int b5277;
+  public int b5278;
+  public int b5279;
+  public int b5280;
+  public int b5281;
+  public int b5282;
+  public int b5283;
+  public int b5284;
+  public int b5285;
+  public int b5286;
+  public int b5287;
+  public int b5288;
+  public int b5289;
+  public int b5290;
+  public int b5291;
+  public int b5292;
+  public int b5293;
+  public int b5294;
+  public int b5295;
+  public int b5296;
+  public int b5297;
+  public int b5298;
+  public int b5299;
+  public int b5300;
+  public int b5301;
+  public int b5302;
+  public int b5303;
+  public int b5304;
+  public int b5305;
+  public int b5306;
+  public int b5307;
+  public int b5308;
+  public int b5309;
+  public int b5310;
+  public int b5311;
+  public int b5312;
+  public int b5313;
+  public int b5314;
+  public int b5315;
+  public int b5316;
+  public int b5317;
+  public int b5318;
+  public int b5319;
+  public int b5320;
+  public int b5321;
+  public int b5322;
+  public int b5323;
+  public int b5324;
+  public int b5325;
+  public int b5326;
+  public int b5327;
+  public int b5328;
+  public int b5329;
+  public int b5330;
+  public int b5331;
+  public int b5332;
+  public int b5333;
+  public int b5334;
+  public int b5335;
+  public int b5336;
+  public int b5337;
+  public int b5338;
+  public int b5339;
+  public int b5340;
+  public int b5341;
+  public int b5342;
+  public int b5343;
+  public int b5344;
+  public int b5345;
+  public int b5346;
+  public int b5347;
+  public int b5348;
+  public int b5349;
+  public int b5350;
+  public int b5351;
+  public int b5352;
+  public int b5353;
+  public int b5354;
+  public int b5355;
+  public int b5356;
+  public int b5357;
+  public int b5358;
+  public int b5359;
+  public int b5360;
+  public int b5361;
+  public int b5362;
+  public int b5363;
+  public int b5364;
+  public int b5365;
+  public int b5366;
+  public int b5367;
+  public int b5368;
+  public int b5369;
+  public int b5370;
+  public int b5371;
+  public int b5372;
+  public int b5373;
+  public int b5374;
+  public int b5375;
+  public int b5376;
+  public int b5377;
+  public int b5378;
+  public int b5379;
+  public int b5380;
+  public int b5381;
+  public int b5382;
+  public int b5383;
+  public int b5384;
+  public int b5385;
+  public int b5386;
+  public int b5387;
+  public int b5388;
+  public int b5389;
+  public int b5390;
+  public int b5391;
+  public int b5392;
+  public int b5393;
+  public int b5394;
+  public int b5395;
+  public int b5396;
+  public int b5397;
+  public int b5398;
+  public int b5399;
+  public int b5400;
+  public int b5401;
+  public int b5402;
+  public int b5403;
+  public int b5404;
+  public int b5405;
+  public int b5406;
+  public int b5407;
+  public int b5408;
+  public int b5409;
+  public int b5410;
+  public int b5411;
+  public int b5412;
+  public int b5413;
+  public int b5414;
+  public int b5415;
+  public int b5416;
+  public int b5417;
+  public int b5418;
+  public int b5419;
+  public int b5420;
+  public int b5421;
+  public int b5422;
+  public int b5423;
+  public int b5424;
+  public int b5425;
+  public int b5426;
+  public int b5427;
+  public int b5428;
+  public int b5429;
+  public int b5430;
+  public int b5431;
+  public int b5432;
+  public int b5433;
+  public int b5434;
+  public int b5435;
+  public int b5436;
+  public int b5437;
+  public int b5438;
+  public int b5439;
+  public int b5440;
+  public int b5441;
+  public int b5442;
+  public int b5443;
+  public int b5444;
+  public int b5445;
+  public int b5446;
+  public int b5447;
+  public int b5448;
+  public int b5449;
+  public int b5450;
+  public int b5451;
+  public int b5452;
+  public int b5453;
+  public int b5454;
+  public int b5455;
+  public int b5456;
+  public int b5457;
+  public int b5458;
+  public int b5459;
+  public int b5460;
+  public int b5461;
+  public int b5462;
+  public int b5463;
+  public int b5464;
+  public int b5465;
+  public int b5466;
+  public int b5467;
+  public int b5468;
+  public int b5469;
+  public int b5470;
+  public int b5471;
+  public int b5472;
+  public int b5473;
+  public int b5474;
+  public int b5475;
+  public int b5476;
+  public int b5477;
+  public int b5478;
+  public int b5479;
+  public int b5480;
+  public int b5481;
+  public int b5482;
+  public int b5483;
+  public int b5484;
+  public int b5485;
+  public int b5486;
+  public int b5487;
+  public int b5488;
+  public int b5489;
+  public int b5490;
+  public int b5491;
+  public int b5492;
+  public int b5493;
+  public int b5494;
+  public int b5495;
+  public int b5496;
+  public int b5497;
+  public int b5498;
+  public int b5499;
+  public int b5500;
+  public int b5501;
+  public int b5502;
+  public int b5503;
+  public int b5504;
+  public int b5505;
+  public int b5506;
+  public int b5507;
+  public int b5508;
+  public int b5509;
+  public int b5510;
+  public int b5511;
+  public int b5512;
+  public int b5513;
+  public int b5514;
+  public int b5515;
+  public int b5516;
+  public int b5517;
+  public int b5518;
+  public int b5519;
+  public int b5520;
+  public int b5521;
+  public int b5522;
+  public int b5523;
+  public int b5524;
+  public int b5525;
+  public int b5526;
+  public int b5527;
+  public int b5528;
+  public int b5529;
+  public int b5530;
+  public int b5531;
+  public int b5532;
+  public int b5533;
+  public int b5534;
+  public int b5535;
+  public int b5536;
+  public int b5537;
+  public int b5538;
+  public int b5539;
+  public int b5540;
+  public int b5541;
+  public int b5542;
+  public int b5543;
+  public int b5544;
+  public int b5545;
+  public int b5546;
+  public int b5547;
+  public int b5548;
+  public int b5549;
+  public int b5550;
+  public int b5551;
+  public int b5552;
+  public int b5553;
+  public int b5554;
+  public int b5555;
+  public int b5556;
+  public int b5557;
+  public int b5558;
+  public int b5559;
+  public int b5560;
+  public int b5561;
+  public int b5562;
+  public int b5563;
+  public int b5564;
+  public int b5565;
+  public int b5566;
+  public int b5567;
+  public int b5568;
+  public int b5569;
+  public int b5570;
+  public int b5571;
+  public int b5572;
+  public int b5573;
+  public int b5574;
+  public int b5575;
+  public int b5576;
+  public int b5577;
+  public int b5578;
+  public int b5579;
+  public int b5580;
+  public int b5581;
+  public int b5582;
+  public int b5583;
+  public int b5584;
+  public int b5585;
+  public int b5586;
+  public int b5587;
+  public int b5588;
+  public int b5589;
+  public int b5590;
+  public int b5591;
+  public int b5592;
+  public int b5593;
+  public int b5594;
+  public int b5595;
+  public int b5596;
+  public int b5597;
+  public int b5598;
+  public int b5599;
+  public int b5600;
+  public int b5601;
+  public int b5602;
+  public int b5603;
+  public int b5604;
+  public int b5605;
+  public int b5606;
+  public int b5607;
+  public int b5608;
+  public int b5609;
+  public int b5610;
+  public int b5611;
+  public int b5612;
+  public int b5613;
+  public int b5614;
+  public int b5615;
+  public int b5616;
+  public int b5617;
+  public int b5618;
+  public int b5619;
+  public int b5620;
+  public int b5621;
+  public int b5622;
+  public int b5623;
+  public int b5624;
+  public int b5625;
+  public int b5626;
+  public int b5627;
+  public int b5628;
+  public int b5629;
+  public int b5630;
+  public int b5631;
+  public int b5632;
+  public int b5633;
+  public int b5634;
+  public int b5635;
+  public int b5636;
+  public int b5637;
+  public int b5638;
+  public int b5639;
+  public int b5640;
+  public int b5641;
+  public int b5642;
+  public int b5643;
+  public int b5644;
+  public int b5645;
+  public int b5646;
+  public int b5647;
+  public int b5648;
+  public int b5649;
+  public int b5650;
+  public int b5651;
+  public int b5652;
+  public int b5653;
+  public int b5654;
+  public int b5655;
+  public int b5656;
+  public int b5657;
+  public int b5658;
+  public int b5659;
+  public int b5660;
+  public int b5661;
+  public int b5662;
+  public int b5663;
+  public int b5664;
+  public int b5665;
+  public int b5666;
+  public int b5667;
+  public int b5668;
+  public int b5669;
+  public int b5670;
+  public int b5671;
+  public int b5672;
+  public int b5673;
+  public int b5674;
+  public int b5675;
+  public int b5676;
+  public int b5677;
+  public int b5678;
+  public int b5679;
+  public int b5680;
+  public int b5681;
+  public int b5682;
+  public int b5683;
+  public int b5684;
+  public int b5685;
+  public int b5686;
+  public int b5687;
+  public int b5688;
+  public int b5689;
+  public int b5690;
+  public int b5691;
+  public int b5692;
+  public int b5693;
+  public int b5694;
+  public int b5695;
+  public int b5696;
+  public int b5697;
+  public int b5698;
+  public int b5699;
+  public int b5700;
+  public int b5701;
+  public int b5702;
+  public int b5703;
+  public int b5704;
+  public int b5705;
+  public int b5706;
+  public int b5707;
+  public int b5708;
+  public int b5709;
+  public int b5710;
+  public int b5711;
+  public int b5712;
+  public int b5713;
+  public int b5714;
+  public int b5715;
+  public int b5716;
+  public int b5717;
+  public int b5718;
+  public int b5719;
+  public int b5720;
+  public int b5721;
+  public int b5722;
+  public int b5723;
+  public int b5724;
+  public int b5725;
+  public int b5726;
+  public int b5727;
+  public int b5728;
+  public int b5729;
+  public int b5730;
+  public int b5731;
+  public int b5732;
+  public int b5733;
+  public int b5734;
+  public int b5735;
+  public int b5736;
+  public int b5737;
+  public int b5738;
+  public int b5739;
+  public int b5740;
+  public int b5741;
+  public int b5742;
+  public int b5743;
+  public int b5744;
+  public int b5745;
+  public int b5746;
+  public int b5747;
+  public int b5748;
+  public int b5749;
+  public int b5750;
+  public int b5751;
+  public int b5752;
+  public int b5753;
+  public int b5754;
+  public int b5755;
+  public int b5756;
+  public int b5757;
+  public int b5758;
+  public int b5759;
+  public int b5760;
+  public int b5761;
+  public int b5762;
+  public int b5763;
+  public int b5764;
+  public int b5765;
+  public int b5766;
+  public int b5767;
+  public int b5768;
+  public int b5769;
+  public int b5770;
+  public int b5771;
+  public int b5772;
+  public int b5773;
+  public int b5774;
+  public int b5775;
+  public int b5776;
+  public int b5777;
+  public int b5778;
+  public int b5779;
+  public int b5780;
+  public int b5781;
+  public int b5782;
+  public int b5783;
+  public int b5784;
+  public int b5785;
+  public int b5786;
+  public int b5787;
+  public int b5788;
+  public int b5789;
+  public int b5790;
+  public int b5791;
+  public int b5792;
+  public int b5793;
+  public int b5794;
+  public int b5795;
+  public int b5796;
+  public int b5797;
+  public int b5798;
+  public int b5799;
+  public int b5800;
+  public int b5801;
+  public int b5802;
+  public int b5803;
+  public int b5804;
+  public int b5805;
+  public int b5806;
+  public int b5807;
+  public int b5808;
+  public int b5809;
+  public int b5810;
+  public int b5811;
+  public int b5812;
+  public int b5813;
+  public int b5814;
+  public int b5815;
+  public int b5816;
+  public int b5817;
+  public int b5818;
+  public int b5819;
+  public int b5820;
+  public int b5821;
+  public int b5822;
+  public int b5823;
+  public int b5824;
+  public int b5825;
+  public int b5826;
+  public int b5827;
+  public int b5828;
+  public int b5829;
+  public int b5830;
+  public int b5831;
+  public int b5832;
+  public int b5833;
+  public int b5834;
+  public int b5835;
+  public int b5836;
+  public int b5837;
+  public int b5838;
+  public int b5839;
+  public int b5840;
+  public int b5841;
+  public int b5842;
+  public int b5843;
+  public int b5844;
+  public int b5845;
+  public int b5846;
+  public int b5847;
+  public int b5848;
+  public int b5849;
+  public int b5850;
+  public int b5851;
+  public int b5852;
+  public int b5853;
+  public int b5854;
+  public int b5855;
+  public int b5856;
+  public int b5857;
+  public int b5858;
+  public int b5859;
+  public int b5860;
+  public int b5861;
+  public int b5862;
+  public int b5863;
+  public int b5864;
+  public int b5865;
+  public int b5866;
+  public int b5867;
+  public int b5868;
+  public int b5869;
+  public int b5870;
+  public int b5871;
+  public int b5872;
+  public int b5873;
+  public int b5874;
+  public int b5875;
+  public int b5876;
+  public int b5877;
+  public int b5878;
+  public int b5879;
+  public int b5880;
+  public int b5881;
+  public int b5882;
+  public int b5883;
+  public int b5884;
+  public int b5885;
+  public int b5886;
+  public int b5887;
+  public int b5888;
+  public int b5889;
+  public int b5890;
+  public int b5891;
+  public int b5892;
+  public int b5893;
+  public int b5894;
+  public int b5895;
+  public int b5896;
+  public int b5897;
+  public int b5898;
+  public int b5899;
+  public int b5900;
+  public int b5901;
+  public int b5902;
+  public int b5903;
+  public int b5904;
+  public int b5905;
+  public int b5906;
+  public int b5907;
+  public int b5908;
+  public int b5909;
+  public int b5910;
+  public int b5911;
+  public int b5912;
+  public int b5913;
+  public int b5914;
+  public int b5915;
+  public int b5916;
+  public int b5917;
+  public int b5918;
+  public int b5919;
+  public int b5920;
+  public int b5921;
+  public int b5922;
+  public int b5923;
+  public int b5924;
+  public int b5925;
+  public int b5926;
+  public int b5927;
+  public int b5928;
+  public int b5929;
+  public int b5930;
+  public int b5931;
+  public int b5932;
+  public int b5933;
+  public int b5934;
+  public int b5935;
+  public int b5936;
+  public int b5937;
+  public int b5938;
+  public int b5939;
+  public int b5940;
+  public int b5941;
+  public int b5942;
+  public int b5943;
+  public int b5944;
+  public int b5945;
+  public int b5946;
+  public int b5947;
+  public int b5948;
+  public int b5949;
+  public int b5950;
+  public int b5951;
+  public int b5952;
+  public int b5953;
+  public int b5954;
+  public int b5955;
+  public int b5956;
+  public int b5957;
+  public int b5958;
+  public int b5959;
+  public int b5960;
+  public int b5961;
+  public int b5962;
+  public int b5963;
+  public int b5964;
+  public int b5965;
+  public int b5966;
+  public int b5967;
+  public int b5968;
+  public int b5969;
+  public int b5970;
+  public int b5971;
+  public int b5972;
+  public int b5973;
+  public int b5974;
+  public int b5975;
+  public int b5976;
+  public int b5977;
+  public int b5978;
+  public int b5979;
+  public int b5980;
+  public int b5981;
+  public int b5982;
+  public int b5983;
+  public int b5984;
+  public int b5985;
+  public int b5986;
+  public int b5987;
+  public int b5988;
+  public int b5989;
+  public int b5990;
+  public int b5991;
+  public int b5992;
+  public int b5993;
+  public int b5994;
+  public int b5995;
+  public int b5996;
+  public int b5997;
+  public int b5998;
+  public int b5999;
+  public int b6000;
+  public int b6001;
+  public int b6002;
+  public int b6003;
+  public int b6004;
+  public int b6005;
+  public int b6006;
+  public int b6007;
+  public int b6008;
+  public int b6009;
+  public int b6010;
+  public int b6011;
+  public int b6012;
+  public int b6013;
+  public int b6014;
+  public int b6015;
+  public int b6016;
+  public int b6017;
+  public int b6018;
+  public int b6019;
+  public int b6020;
+  public int b6021;
+  public int b6022;
+  public int b6023;
+  public int b6024;
+  public int b6025;
+  public int b6026;
+  public int b6027;
+  public int b6028;
+  public int b6029;
+  public int b6030;
+  public int b6031;
+  public int b6032;
+  public int b6033;
+  public int b6034;
+  public int b6035;
+  public int b6036;
+  public int b6037;
+  public int b6038;
+  public int b6039;
+  public int b6040;
+  public int b6041;
+  public int b6042;
+  public int b6043;
+  public int b6044;
+  public int b6045;
+  public int b6046;
+  public int b6047;
+  public int b6048;
+  public int b6049;
+  public int b6050;
+  public int b6051;
+  public int b6052;
+  public int b6053;
+  public int b6054;
+  public int b6055;
+  public int b6056;
+  public int b6057;
+  public int b6058;
+  public int b6059;
+  public int b6060;
+  public int b6061;
+  public int b6062;
+  public int b6063;
+  public int b6064;
+  public int b6065;
+  public int b6066;
+  public int b6067;
+  public int b6068;
+  public int b6069;
+  public int b6070;
+  public int b6071;
+  public int b6072;
+  public int b6073;
+  public int b6074;
+  public int b6075;
+  public int b6076;
+  public int b6077;
+  public int b6078;
+  public int b6079;
+  public int b6080;
+  public int b6081;
+  public int b6082;
+  public int b6083;
+  public int b6084;
+  public int b6085;
+  public int b6086;
+  public int b6087;
+  public int b6088;
+  public int b6089;
+  public int b6090;
+  public int b6091;
+  public int b6092;
+  public int b6093;
+  public int b6094;
+  public int b6095;
+  public int b6096;
+  public int b6097;
+  public int b6098;
+  public int b6099;
+  public int b6100;
+  public int b6101;
+  public int b6102;
+  public int b6103;
+  public int b6104;
+  public int b6105;
+  public int b6106;
+  public int b6107;
+  public int b6108;
+  public int b6109;
+  public int b6110;
+  public int b6111;
+  public int b6112;
+  public int b6113;
+  public int b6114;
+  public int b6115;
+  public int b6116;
+  public int b6117;
+  public int b6118;
+  public int b6119;
+  public int b6120;
+  public int b6121;
+  public int b6122;
+  public int b6123;
+  public int b6124;
+  public int b6125;
+  public int b6126;
+  public int b6127;
+  public int b6128;
+  public int b6129;
+  public int b6130;
+  public int b6131;
+  public int b6132;
+  public int b6133;
+  public int b6134;
+  public int b6135;
+  public int b6136;
+  public int b6137;
+  public int b6138;
+  public int b6139;
+  public int b6140;
+  public int b6141;
+  public int b6142;
+  public int b6143;
+  public int b6144;
+  public int b6145;
+  public int b6146;
+  public int b6147;
+  public int b6148;
+  public int b6149;
+  public int b6150;
+  public int b6151;
+  public int b6152;
+  public int b6153;
+  public int b6154;
+  public int b6155;
+  public int b6156;
+  public int b6157;
+  public int b6158;
+  public int b6159;
+  public int b6160;
+  public int b6161;
+  public int b6162;
+  public int b6163;
+  public int b6164;
+  public int b6165;
+  public int b6166;
+  public int b6167;
+  public int b6168;
+  public int b6169;
+  public int b6170;
+  public int b6171;
+  public int b6172;
+  public int b6173;
+  public int b6174;
+  public int b6175;
+  public int b6176;
+  public int b6177;
+  public int b6178;
+  public int b6179;
+  public int b6180;
+  public int b6181;
+  public int b6182;
+  public int b6183;
+  public int b6184;
+  public int b6185;
+  public int b6186;
+  public int b6187;
+  public int b6188;
+  public int b6189;
+  public int b6190;
+  public int b6191;
+  public int b6192;
+  public int b6193;
+  public int b6194;
+  public int b6195;
+  public int b6196;
+  public int b6197;
+  public int b6198;
+  public int b6199;
+  public int b6200;
+  public int b6201;
+  public int b6202;
+  public int b6203;
+  public int b6204;
+  public int b6205;
+  public int b6206;
+  public int b6207;
+  public int b6208;
+  public int b6209;
+  public int b6210;
+  public int b6211;
+  public int b6212;
+  public int b6213;
+  public int b6214;
+  public int b6215;
+  public int b6216;
+  public int b6217;
+  public int b6218;
+  public int b6219;
+  public int b6220;
+  public int b6221;
+  public int b6222;
+  public int b6223;
+  public int b6224;
+  public int b6225;
+  public int b6226;
+  public int b6227;
+  public int b6228;
+  public int b6229;
+  public int b6230;
+  public int b6231;
+  public int b6232;
+  public int b6233;
+  public int b6234;
+  public int b6235;
+  public int b6236;
+  public int b6237;
+  public int b6238;
+  public int b6239;
+  public int b6240;
+  public int b6241;
+  public int b6242;
+  public int b6243;
+  public int b6244;
+  public int b6245;
+  public int b6246;
+  public int b6247;
+  public int b6248;
+  public int b6249;
+  public int b6250;
+  public int b6251;
+  public int b6252;
+  public int b6253;
+  public int b6254;
+  public int b6255;
+  public int b6256;
+  public int b6257;
+  public int b6258;
+  public int b6259;
+  public int b6260;
+  public int b6261;
+  public int b6262;
+  public int b6263;
+  public int b6264;
+  public int b6265;
+  public int b6266;
+  public int b6267;
+  public int b6268;
+  public int b6269;
+  public int b6270;
+  public int b6271;
+  public int b6272;
+  public int b6273;
+  public int b6274;
+  public int b6275;
+  public int b6276;
+  public int b6277;
+  public int b6278;
+  public int b6279;
+  public int b6280;
+  public int b6281;
+  public int b6282;
+  public int b6283;
+  public int b6284;
+  public int b6285;
+  public int b6286;
+  public int b6287;
+  public int b6288;
+  public int b6289;
+  public int b6290;
+  public int b6291;
+  public int b6292;
+  public int b6293;
+  public int b6294;
+  public int b6295;
+  public int b6296;
+  public int b6297;
+  public int b6298;
+  public int b6299;
+  public int b6300;
+  public int b6301;
+  public int b6302;
+  public int b6303;
+  public int b6304;
+  public int b6305;
+  public int b6306;
+  public int b6307;
+  public int b6308;
+  public int b6309;
+  public int b6310;
+  public int b6311;
+  public int b6312;
+  public int b6313;
+  public int b6314;
+  public int b6315;
+  public int b6316;
+  public int b6317;
+  public int b6318;
+  public int b6319;
+  public int b6320;
+  public int b6321;
+  public int b6322;
+  public int b6323;
+  public int b6324;
+  public int b6325;
+  public int b6326;
+  public int b6327;
+  public int b6328;
+  public int b6329;
+  public int b6330;
+  public int b6331;
+  public int b6332;
+  public int b6333;
+  public int b6334;
+  public int b6335;
+  public int b6336;
+  public int b6337;
+  public int b6338;
+  public int b6339;
+  public int b6340;
+  public int b6341;
+  public int b6342;
+  public int b6343;
+  public int b6344;
+  public int b6345;
+  public int b6346;
+  public int b6347;
+  public int b6348;
+  public int b6349;
+  public int b6350;
+  public int b6351;
+  public int b6352;
+  public int b6353;
+  public int b6354;
+  public int b6355;
+  public int b6356;
+  public int b6357;
+  public int b6358;
+  public int b6359;
+  public int b6360;
+  public int b6361;
+  public int b6362;
+  public int b6363;
+  public int b6364;
+  public int b6365;
+  public int b6366;
+  public int b6367;
+  public int b6368;
+  public int b6369;
+  public int b6370;
+  public int b6371;
+  public int b6372;
+  public int b6373;
+  public int b6374;
+  public int b6375;
+  public int b6376;
+  public int b6377;
+  public int b6378;
+  public int b6379;
+  public int b6380;
+  public int b6381;
+  public int b6382;
+  public int b6383;
+  public int b6384;
+  public int b6385;
+  public int b6386;
+  public int b6387;
+  public int b6388;
+  public int b6389;
+  public int b6390;
+  public int b6391;
+  public int b6392;
+  public int b6393;
+  public int b6394;
+  public int b6395;
+  public int b6396;
+  public int b6397;
+  public int b6398;
+  public int b6399;
+  public int b6400;
+  public int b6401;
+  public int b6402;
+  public int b6403;
+  public int b6404;
+  public int b6405;
+  public int b6406;
+  public int b6407;
+  public int b6408;
+  public int b6409;
+  public int b6410;
+  public int b6411;
+  public int b6412;
+  public int b6413;
+  public int b6414;
+  public int b6415;
+  public int b6416;
+  public int b6417;
+  public int b6418;
+  public int b6419;
+  public int b6420;
+  public int b6421;
+  public int b6422;
+  public int b6423;
+  public int b6424;
+  public int b6425;
+  public int b6426;
+  public int b6427;
+  public int b6428;
+  public int b6429;
+  public int b6430;
+  public int b6431;
+  public int b6432;
+  public int b6433;
+  public int b6434;
+  public int b6435;
+  public int b6436;
+  public int b6437;
+  public int b6438;
+  public int b6439;
+  public int b6440;
+  public int b6441;
+  public int b6442;
+  public int b6443;
+  public int b6444;
+  public int b6445;
+  public int b6446;
+  public int b6447;
+  public int b6448;
+  public int b6449;
+  public int b6450;
+  public int b6451;
+  public int b6452;
+  public int b6453;
+  public int b6454;
+  public int b6455;
+  public int b6456;
+  public int b6457;
+  public int b6458;
+  public int b6459;
+  public int b6460;
+  public int b6461;
+  public int b6462;
+  public int b6463;
+  public int b6464;
+  public int b6465;
+  public int b6466;
+  public int b6467;
+  public int b6468;
+  public int b6469;
+  public int b6470;
+  public int b6471;
+  public int b6472;
+  public int b6473;
+  public int b6474;
+  public int b6475;
+  public int b6476;
+  public int b6477;
+  public int b6478;
+  public int b6479;
+  public int b6480;
+  public int b6481;
+  public int b6482;
+  public int b6483;
+  public int b6484;
+  public int b6485;
+  public int b6486;
+  public int b6487;
+  public int b6488;
+  public int b6489;
+  public int b6490;
+  public int b6491;
+  public int b6492;
+  public int b6493;
+  public int b6494;
+  public int b6495;
+  public int b6496;
+  public int b6497;
+  public int b6498;
+  public int b6499;
+  public int b6500;
+  public int b6501;
+  public int b6502;
+  public int b6503;
+  public int b6504;
+  public int b6505;
+  public int b6506;
+  public int b6507;
+  public int b6508;
+  public int b6509;
+  public int b6510;
+  public int b6511;
+  public int b6512;
+  public int b6513;
+  public int b6514;
+  public int b6515;
+  public int b6516;
+  public int b6517;
+  public int b6518;
+  public int b6519;
+  public int b6520;
+  public int b6521;
+  public int b6522;
+  public int b6523;
+  public int b6524;
+  public int b6525;
+  public int b6526;
+  public int b6527;
+  public int b6528;
+  public int b6529;
+  public int b6530;
+  public int b6531;
+  public int b6532;
+  public int b6533;
+  public int b6534;
+  public int b6535;
+  public int b6536;
+  public int b6537;
+  public int b6538;
+  public int b6539;
+  public int b6540;
+  public int b6541;
+  public int b6542;
+  public int b6543;
+  public int b6544;
+  public int b6545;
+  public int b6546;
+  public int b6547;
+  public int b6548;
+  public int b6549;
+  public int b6550;
+  public int b6551;
+  public int b6552;
+  public int b6553;
+  public int b6554;
+  public int b6555;
+  public int b6556;
+  public int b6557;
+  public int b6558;
+  public int b6559;
+  public int b6560;
+  public int b6561;
+  public int b6562;
+  public int b6563;
+  public int b6564;
+  public int b6565;
+  public int b6566;
+  public int b6567;
+  public int b6568;
+  public int b6569;
+  public int b6570;
+  public int b6571;
+  public int b6572;
+  public int b6573;
+  public int b6574;
+  public int b6575;
+  public int b6576;
+  public int b6577;
+  public int b6578;
+  public int b6579;
+  public int b6580;
+  public int b6581;
+  public int b6582;
+  public int b6583;
+  public int b6584;
+  public int b6585;
+  public int b6586;
+  public int b6587;
+  public int b6588;
+  public int b6589;
+  public int b6590;
+  public int b6591;
+  public int b6592;
+  public int b6593;
+  public int b6594;
+  public int b6595;
+  public int b6596;
+  public int b6597;
+  public int b6598;
+  public int b6599;
+  public int b6600;
+  public int b6601;
+  public int b6602;
+  public int b6603;
+  public int b6604;
+  public int b6605;
+  public int b6606;
+  public int b6607;
+  public int b6608;
+  public int b6609;
+  public int b6610;
+  public int b6611;
+  public int b6612;
+  public int b6613;
+  public int b6614;
+  public int b6615;
+  public int b6616;
+  public int b6617;
+  public int b6618;
+  public int b6619;
+  public int b6620;
+  public int b6621;
+  public int b6622;
+  public int b6623;
+  public int b6624;
+  public int b6625;
+  public int b6626;
+  public int b6627;
+  public int b6628;
+  public int b6629;
+  public int b6630;
+  public int b6631;
+  public int b6632;
+  public int b6633;
+  public int b6634;
+  public int b6635;
+  public int b6636;
+  public int b6637;
+  public int b6638;
+  public int b6639;
+  public int b6640;
+  public int b6641;
+  public int b6642;
+  public int b6643;
+  public int b6644;
+  public int b6645;
+  public int b6646;
+  public int b6647;
+  public int b6648;
+  public int b6649;
+  public int b6650;
+  public int b6651;
+  public int b6652;
+  public int b6653;
+  public int b6654;
+  public int b6655;
+  public int b6656;
+  public int b6657;
+  public int b6658;
+  public int b6659;
+  public int b6660;
+  public int b6661;
+  public int b6662;
+  public int b6663;
+  public int b6664;
+  public int b6665;
+  public int b6666;
+  public int b6667;
+  public int b6668;
+  public int b6669;
+  public int b6670;
+  public int b6671;
+  public int b6672;
+  public int b6673;
+  public int b6674;
+  public int b6675;
+  public int b6676;
+  public int b6677;
+  public int b6678;
+  public int b6679;
+  public int b6680;
+  public int b6681;
+  public int b6682;
+  public int b6683;
+  public int b6684;
+  public int b6685;
+  public int b6686;
+  public int b6687;
+  public int b6688;
+  public int b6689;
+  public int b6690;
+  public int b6691;
+  public int b6692;
+  public int b6693;
+  public int b6694;
+  public int b6695;
+  public int b6696;
+  public int b6697;
+  public int b6698;
+  public int b6699;
+  public int b6700;
+  public int b6701;
+  public int b6702;
+  public int b6703;
+  public int b6704;
+  public int b6705;
+  public int b6706;
+  public int b6707;
+  public int b6708;
+  public int b6709;
+  public int b6710;
+  public int b6711;
+  public int b6712;
+  public int b6713;
+  public int b6714;
+  public int b6715;
+  public int b6716;
+  public int b6717;
+  public int b6718;
+  public int b6719;
+  public int b6720;
+  public int b6721;
+  public int b6722;
+  public int b6723;
+  public int b6724;
+  public int b6725;
+  public int b6726;
+  public int b6727;
+  public int b6728;
+  public int b6729;
+  public int b6730;
+  public int b6731;
+  public int b6732;
+  public int b6733;
+  public int b6734;
+  public int b6735;
+  public int b6736;
+  public int b6737;
+  public int b6738;
+  public int b6739;
+  public int b6740;
+  public int b6741;
+  public int b6742;
+  public int b6743;
+  public int b6744;
+  public int b6745;
+  public int b6746;
+  public int b6747;
+  public int b6748;
+  public int b6749;
+  public int b6750;
+  public int b6751;
+  public int b6752;
+  public int b6753;
+  public int b6754;
+  public int b6755;
+  public int b6756;
+  public int b6757;
+  public int b6758;
+  public int b6759;
+  public int b6760;
+  public int b6761;
+  public int b6762;
+  public int b6763;
+  public int b6764;
+  public int b6765;
+  public int b6766;
+  public int b6767;
+  public int b6768;
+  public int b6769;
+  public int b6770;
+  public int b6771;
+  public int b6772;
+  public int b6773;
+  public int b6774;
+  public int b6775;
+  public int b6776;
+  public int b6777;
+  public int b6778;
+  public int b6779;
+  public int b6780;
+  public int b6781;
+  public int b6782;
+  public int b6783;
+  public int b6784;
+  public int b6785;
+  public int b6786;
+  public int b6787;
+  public int b6788;
+  public int b6789;
+  public int b6790;
+  public int b6791;
+  public int b6792;
+  public int b6793;
+  public int b6794;
+  public int b6795;
+  public int b6796;
+  public int b6797;
+  public int b6798;
+  public int b6799;
+  public int b6800;
+  public int b6801;
+  public int b6802;
+  public int b6803;
+  public int b6804;
+  public int b6805;
+  public int b6806;
+  public int b6807;
+  public int b6808;
+  public int b6809;
+  public int b6810;
+  public int b6811;
+  public int b6812;
+  public int b6813;
+  public int b6814;
+  public int b6815;
+  public int b6816;
+  public int b6817;
+  public int b6818;
+  public int b6819;
+  public int b6820;
+  public int b6821;
+  public int b6822;
+  public int b6823;
+  public int b6824;
+  public int b6825;
+  public int b6826;
+  public int b6827;
+  public int b6828;
+  public int b6829;
+  public int b6830;
+  public int b6831;
+  public int b6832;
+  public int b6833;
+  public int b6834;
+  public int b6835;
+  public int b6836;
+  public int b6837;
+  public int b6838;
+  public int b6839;
+  public int b6840;
+  public int b6841;
+  public int b6842;
+  public int b6843;
+  public int b6844;
+  public int b6845;
+  public int b6846;
+  public int b6847;
+  public int b6848;
+  public int b6849;
+  public int b6850;
+  public int b6851;
+  public int b6852;
+  public int b6853;
+  public int b6854;
+  public int b6855;
+  public int b6856;
+  public int b6857;
+  public int b6858;
+  public int b6859;
+  public int b6860;
+  public int b6861;
+  public int b6862;
+  public int b6863;
+  public int b6864;
+  public int b6865;
+  public int b6866;
+  public int b6867;
+  public int b6868;
+  public int b6869;
+  public int b6870;
+  public int b6871;
+  public int b6872;
+  public int b6873;
+  public int b6874;
+  public int b6875;
+  public int b6876;
+  public int b6877;
+  public int b6878;
+  public int b6879;
+  public int b6880;
+  public int b6881;
+  public int b6882;
+  public int b6883;
+  public int b6884;
+  public int b6885;
+  public int b6886;
+  public int b6887;
+  public int b6888;
+  public int b6889;
+  public int b6890;
+  public int b6891;
+  public int b6892;
+  public int b6893;
+  public int b6894;
+  public int b6895;
+  public int b6896;
+  public int b6897;
+  public int b6898;
+  public int b6899;
+  public int b6900;
+  public int b6901;
+  public int b6902;
+  public int b6903;
+  public int b6904;
+  public int b6905;
+  public int b6906;
+  public int b6907;
+  public int b6908;
+  public int b6909;
+  public int b6910;
+  public int b6911;
+  public int b6912;
+  public int b6913;
+  public int b6914;
+  public int b6915;
+  public int b6916;
+  public int b6917;
+  public int b6918;
+  public int b6919;
+  public int b6920;
+  public int b6921;
+  public int b6922;
+  public int b6923;
+  public int b6924;
+  public int b6925;
+  public int b6926;
+  public int b6927;
+  public int b6928;
+  public int b6929;
+  public int b6930;
+  public int b6931;
+  public int b6932;
+  public int b6933;
+  public int b6934;
+  public int b6935;
+  public int b6936;
+  public int b6937;
+  public int b6938;
+  public int b6939;
+  public int b6940;
+  public int b6941;
+  public int b6942;
+  public int b6943;
+  public int b6944;
+  public int b6945;
+  public int b6946;
+  public int b6947;
+  public int b6948;
+  public int b6949;
+  public int b6950;
+  public int b6951;
+  public int b6952;
+  public int b6953;
+  public int b6954;
+  public int b6955;
+  public int b6956;
+  public int b6957;
+  public int b6958;
+  public int b6959;
+  public int b6960;
+  public int b6961;
+  public int b6962;
+  public int b6963;
+  public int b6964;
+  public int b6965;
+  public int b6966;
+  public int b6967;
+  public int b6968;
+  public int b6969;
+  public int b6970;
+  public int b6971;
+  public int b6972;
+  public int b6973;
+  public int b6974;
+  public int b6975;
+  public int b6976;
+  public int b6977;
+  public int b6978;
+  public int b6979;
+  public int b6980;
+  public int b6981;
+  public int b6982;
+  public int b6983;
+  public int b6984;
+  public int b6985;
+  public int b6986;
+  public int b6987;
+  public int b6988;
+  public int b6989;
+  public int b6990;
+  public int b6991;
+  public int b6992;
+  public int b6993;
+  public int b6994;
+  public int b6995;
+  public int b6996;
+  public int b6997;
+  public int b6998;
+  public int b6999;
+  public int b7000;
+  public int b7001;
+  public int b7002;
+  public int b7003;
+  public int b7004;
+  public int b7005;
+  public int b7006;
+  public int b7007;
+  public int b7008;
+  public int b7009;
+  public int b7010;
+  public int b7011;
+  public int b7012;
+  public int b7013;
+  public int b7014;
+  public int b7015;
+  public int b7016;
+  public int b7017;
+  public int b7018;
+  public int b7019;
+  public int b7020;
+  public int b7021;
+  public int b7022;
+  public int b7023;
+  public int b7024;
+  public int b7025;
+  public int b7026;
+  public int b7027;
+  public int b7028;
+  public int b7029;
+  public int b7030;
+  public int b7031;
+  public int b7032;
+  public int b7033;
+  public int b7034;
+  public int b7035;
+  public int b7036;
+  public int b7037;
+  public int b7038;
+  public int b7039;
+  public int b7040;
+  public int b7041;
+  public int b7042;
+  public int b7043;
+  public int b7044;
+  public int b7045;
+  public int b7046;
+  public int b7047;
+  public int b7048;
+  public int b7049;
+  public int b7050;
+  public int b7051;
+  public int b7052;
+  public int b7053;
+  public int b7054;
+  public int b7055;
+  public int b7056;
+  public int b7057;
+  public int b7058;
+  public int b7059;
+  public int b7060;
+  public int b7061;
+  public int b7062;
+  public int b7063;
+  public int b7064;
+  public int b7065;
+  public int b7066;
+  public int b7067;
+  public int b7068;
+  public int b7069;
+  public int b7070;
+  public int b7071;
+  public int b7072;
+  public int b7073;
+  public int b7074;
+  public int b7075;
+  public int b7076;
+  public int b7077;
+  public int b7078;
+  public int b7079;
+  public int b7080;
+  public int b7081;
+  public int b7082;
+  public int b7083;
+  public int b7084;
+  public int b7085;
+  public int b7086;
+  public int b7087;
+  public int b7088;
+  public int b7089;
+  public int b7090;
+  public int b7091;
+  public int b7092;
+  public int b7093;
+  public int b7094;
+  public int b7095;
+  public int b7096;
+  public int b7097;
+  public int b7098;
+  public int b7099;
+  public int b7100;
+  public int b7101;
+  public int b7102;
+  public int b7103;
+  public int b7104;
+  public int b7105;
+  public int b7106;
+  public int b7107;
+  public int b7108;
+  public int b7109;
+  public int b7110;
+  public int b7111;
+  public int b7112;
+  public int b7113;
+  public int b7114;
+  public int b7115;
+  public int b7116;
+  public int b7117;
+  public int b7118;
+  public int b7119;
+  public int b7120;
+  public int b7121;
+  public int b7122;
+  public int b7123;
+  public int b7124;
+  public int b7125;
+  public int b7126;
+  public int b7127;
+  public int b7128;
+  public int b7129;
+  public int b7130;
+  public int b7131;
+  public int b7132;
+  public int b7133;
+  public int b7134;
+  public int b7135;
+  public int b7136;
+  public int b7137;
+  public int b7138;
+  public int b7139;
+  public int b7140;
+  public int b7141;
+  public int b7142;
+  public int b7143;
+  public int b7144;
+  public int b7145;
+  public int b7146;
+  public int b7147;
+  public int b7148;
+  public int b7149;
+  public int b7150;
+  public int b7151;
+  public int b7152;
+  public int b7153;
+  public int b7154;
+  public int b7155;
+  public int b7156;
+  public int b7157;
+  public int b7158;
+  public int b7159;
+  public int b7160;
+  public int b7161;
+  public int b7162;
+  public int b7163;
+  public int b7164;
+  public int b7165;
+  public int b7166;
+  public int b7167;
+  public int b7168;
+  public int b7169;
+  public int b7170;
+  public int b7171;
+  public int b7172;
+  public int b7173;
+  public int b7174;
+  public int b7175;
+  public int b7176;
+  public int b7177;
+  public int b7178;
+  public int b7179;
+  public int b7180;
+  public int b7181;
+  public int b7182;
+  public int b7183;
+  public int b7184;
+  public int b7185;
+  public int b7186;
+  public int b7187;
+  public int b7188;
+  public int b7189;
+  public int b7190;
+  public int b7191;
+  public int b7192;
+  public int b7193;
+  public int b7194;
+  public int b7195;
+  public int b7196;
+  public int b7197;
+  public int b7198;
+  public int b7199;
+  public int b7200;
+  public int b7201;
+  public int b7202;
+  public int b7203;
+  public int b7204;
+  public int b7205;
+  public int b7206;
+  public int b7207;
+  public int b7208;
+  public int b7209;
+  public int b7210;
+  public int b7211;
+  public int b7212;
+  public int b7213;
+  public int b7214;
+  public int b7215;
+  public int b7216;
+  public int b7217;
+  public int b7218;
+  public int b7219;
+  public int b7220;
+  public int b7221;
+  public int b7222;
+  public int b7223;
+  public int b7224;
+  public int b7225;
+  public int b7226;
+  public int b7227;
+  public int b7228;
+  public int b7229;
+  public int b7230;
+  public int b7231;
+  public int b7232;
+  public int b7233;
+  public int b7234;
+  public int b7235;
+  public int b7236;
+  public int b7237;
+  public int b7238;
+  public int b7239;
+  public int b7240;
+  public int b7241;
+  public int b7242;
+  public int b7243;
+  public int b7244;
+  public int b7245;
+  public int b7246;
+  public int b7247;
+  public int b7248;
+  public int b7249;
+  public int b7250;
+  public int b7251;
+  public int b7252;
+  public int b7253;
+  public int b7254;
+  public int b7255;
+  public int b7256;
+  public int b7257;
+  public int b7258;
+  public int b7259;
+  public int b7260;
+  public int b7261;
+  public int b7262;
+  public int b7263;
+  public int b7264;
+  public int b7265;
+  public int b7266;
+  public int b7267;
+  public int b7268;
+  public int b7269;
+  public int b7270;
+  public int b7271;
+  public int b7272;
+  public int b7273;
+  public int b7274;
+  public int b7275;
+  public int b7276;
+  public int b7277;
+  public int b7278;
+  public int b7279;
+  public int b7280;
+  public int b7281;
+  public int b7282;
+  public int b7283;
+  public int b7284;
+  public int b7285;
+  public int b7286;
+  public int b7287;
+  public int b7288;
+  public int b7289;
+  public int b7290;
+  public int b7291;
+  public int b7292;
+  public int b7293;
+  public int b7294;
+  public int b7295;
+  public int b7296;
+  public int b7297;
+  public int b7298;
+  public int b7299;
+  public int b7300;
+  public int b7301;
+  public int b7302;
+  public int b7303;
+  public int b7304;
+  public int b7305;
+  public int b7306;
+  public int b7307;
+  public int b7308;
+  public int b7309;
+  public int b7310;
+  public int b7311;
+  public int b7312;
+  public int b7313;
+  public int b7314;
+  public int b7315;
+  public int b7316;
+  public int b7317;
+  public int b7318;
+  public int b7319;
+  public int b7320;
+  public int b7321;
+  public int b7322;
+  public int b7323;
+  public int b7324;
+  public int b7325;
+  public int b7326;
+  public int b7327;
+  public int b7328;
+  public int b7329;
+  public int b7330;
+  public int b7331;
+  public int b7332;
+  public int b7333;
+  public int b7334;
+  public int b7335;
+  public int b7336;
+  public int b7337;
+  public int b7338;
+  public int b7339;
+  public int b7340;
+  public int b7341;
+  public int b7342;
+  public int b7343;
+  public int b7344;
+  public int b7345;
+  public int b7346;
+  public int b7347;
+  public int b7348;
+  public int b7349;
+  public int b7350;
+  public int b7351;
+  public int b7352;
+  public int b7353;
+  public int b7354;
+  public int b7355;
+  public int b7356;
+  public int b7357;
+  public int b7358;
+  public int b7359;
+  public int b7360;
+  public int b7361;
+  public int b7362;
+  public int b7363;
+  public int b7364;
+  public int b7365;
+  public int b7366;
+  public int b7367;
+  public int b7368;
+  public int b7369;
+  public int b7370;
+  public int b7371;
+  public int b7372;
+  public int b7373;
+  public int b7374;
+  public int b7375;
+  public int b7376;
+  public int b7377;
+  public int b7378;
+  public int b7379;
+  public int b7380;
+  public int b7381;
+  public int b7382;
+  public int b7383;
+  public int b7384;
+  public int b7385;
+  public int b7386;
+  public int b7387;
+  public int b7388;
+  public int b7389;
+  public int b7390;
+  public int b7391;
+  public int b7392;
+  public int b7393;
+  public int b7394;
+  public int b7395;
+  public int b7396;
+  public int b7397;
+  public int b7398;
+  public int b7399;
+  public int b7400;
+  public int b7401;
+  public int b7402;
+  public int b7403;
+  public int b7404;
+  public int b7405;
+  public int b7406;
+  public int b7407;
+  public int b7408;
+  public int b7409;
+  public int b7410;
+  public int b7411;
+  public int b7412;
+  public int b7413;
+  public int b7414;
+  public int b7415;
+  public int b7416;
+  public int b7417;
+  public int b7418;
+  public int b7419;
+  public int b7420;
+  public int b7421;
+  public int b7422;
+  public int b7423;
+  public int b7424;
+  public int b7425;
+  public int b7426;
+  public int b7427;
+  public int b7428;
+  public int b7429;
+  public int b7430;
+  public int b7431;
+  public int b7432;
+  public int b7433;
+  public int b7434;
+  public int b7435;
+  public int b7436;
+  public int b7437;
+  public int b7438;
+  public int b7439;
+  public int b7440;
+  public int b7441;
+  public int b7442;
+  public int b7443;
+  public int b7444;
+  public int b7445;
+  public int b7446;
+  public int b7447;
+  public int b7448;
+  public int b7449;
+  public int b7450;
+  public int b7451;
+  public int b7452;
+  public int b7453;
+  public int b7454;
+  public int b7455;
+  public int b7456;
+  public int b7457;
+  public int b7458;
+  public int b7459;
+  public int b7460;
+  public int b7461;
+  public int b7462;
+  public int b7463;
+  public int b7464;
+  public int b7465;
+  public int b7466;
+  public int b7467;
+  public int b7468;
+  public int b7469;
+  public int b7470;
+  public int b7471;
+  public int b7472;
+  public int b7473;
+  public int b7474;
+  public int b7475;
+  public int b7476;
+  public int b7477;
+  public int b7478;
+  public int b7479;
+  public int b7480;
+  public int b7481;
+  public int b7482;
+  public int b7483;
+  public int b7484;
+  public int b7485;
+  public int b7486;
+  public int b7487;
+  public int b7488;
+  public int b7489;
+  public int b7490;
+  public int b7491;
+  public int b7492;
+  public int b7493;
+  public int b7494;
+  public int b7495;
+  public int b7496;
+  public int b7497;
+  public int b7498;
+  public int b7499;
+  public int b7500;
+  public int b7501;
+  public int b7502;
+  public int b7503;
+  public int b7504;
+  public int b7505;
+  public int b7506;
+  public int b7507;
+  public int b7508;
+  public int b7509;
+  public int b7510;
+  public int b7511;
+  public int b7512;
+  public int b7513;
+  public int b7514;
+  public int b7515;
+  public int b7516;
+  public int b7517;
+  public int b7518;
+  public int b7519;
+  public int b7520;
+  public int b7521;
+  public int b7522;
+  public int b7523;
+  public int b7524;
+  public int b7525;
+  public int b7526;
+  public int b7527;
+  public int b7528;
+  public int b7529;
+  public int b7530;
+  public int b7531;
+  public int b7532;
+  public int b7533;
+  public int b7534;
+  public int b7535;
+  public int b7536;
+  public int b7537;
+  public int b7538;
+  public int b7539;
+  public int b7540;
+  public int b7541;
+  public int b7542;
+  public int b7543;
+  public int b7544;
+  public int b7545;
+  public int b7546;
+  public int b7547;
+  public int b7548;
+  public int b7549;
+  public int b7550;
+  public int b7551;
+  public int b7552;
+  public int b7553;
+  public int b7554;
+  public int b7555;
+  public int b7556;
+  public int b7557;
+  public int b7558;
+  public int b7559;
+  public int b7560;
+  public int b7561;
+  public int b7562;
+  public int b7563;
+  public int b7564;
+  public int b7565;
+  public int b7566;
+  public int b7567;
+  public int b7568;
+  public int b7569;
+  public int b7570;
+  public int b7571;
+  public int b7572;
+  public int b7573;
+  public int b7574;
+  public int b7575;
+  public int b7576;
+  public int b7577;
+  public int b7578;
+  public int b7579;
+  public int b7580;
+  public int b7581;
+  public int b7582;
+  public int b7583;
+  public int b7584;
+  public int b7585;
+  public int b7586;
+  public int b7587;
+  public int b7588;
+  public int b7589;
+  public int b7590;
+  public int b7591;
+  public int b7592;
+  public int b7593;
+  public int b7594;
+  public int b7595;
+  public int b7596;
+  public int b7597;
+  public int b7598;
+  public int b7599;
+  public int b7600;
+  public int b7601;
+  public int b7602;
+  public int b7603;
+  public int b7604;
+  public int b7605;
+  public int b7606;
+  public int b7607;
+  public int b7608;
+  public int b7609;
+  public int b7610;
+  public int b7611;
+  public int b7612;
+  public int b7613;
+  public int b7614;
+  public int b7615;
+  public int b7616;
+  public int b7617;
+  public int b7618;
+  public int b7619;
+  public int b7620;
+  public int b7621;
+  public int b7622;
+  public int b7623;
+  public int b7624;
+  public int b7625;
+  public int b7626;
+  public int b7627;
+  public int b7628;
+  public int b7629;
+  public int b7630;
+  public int b7631;
+  public int b7632;
+  public int b7633;
+  public int b7634;
+  public int b7635;
+  public int b7636;
+  public int b7637;
+  public int b7638;
+  public int b7639;
+  public int b7640;
+  public int b7641;
+  public int b7642;
+  public int b7643;
+  public int b7644;
+  public int b7645;
+  public int b7646;
+  public int b7647;
+  public int b7648;
+  public int b7649;
+  public int b7650;
+  public int b7651;
+  public int b7652;
+  public int b7653;
+  public int b7654;
+  public int b7655;
+  public int b7656;
+  public int b7657;
+  public int b7658;
+  public int b7659;
+  public int b7660;
+  public int b7661;
+  public int b7662;
+  public int b7663;
+  public int b7664;
+  public int b7665;
+  public int b7666;
+  public int b7667;
+  public int b7668;
+  public int b7669;
+  public int b7670;
+  public int b7671;
+  public int b7672;
+  public int b7673;
+  public int b7674;
+  public int b7675;
+  public int b7676;
+  public int b7677;
+  public int b7678;
+  public int b7679;
+  public int b7680;
+  public int b7681;
+  public int b7682;
+  public int b7683;
+  public int b7684;
+  public int b7685;
+  public int b7686;
+  public int b7687;
+  public int b7688;
+  public int b7689;
+  public int b7690;
+  public int b7691;
+  public int b7692;
+  public int b7693;
+  public int b7694;
+  public int b7695;
+  public int b7696;
+  public int b7697;
+  public int b7698;
+  public int b7699;
+  public int b7700;
+  public int b7701;
+  public int b7702;
+  public int b7703;
+  public int b7704;
+  public int b7705;
+  public int b7706;
+  public int b7707;
+  public int b7708;
+  public int b7709;
+  public int b7710;
+  public int b7711;
+  public int b7712;
+  public int b7713;
+  public int b7714;
+  public int b7715;
+  public int b7716;
+  public int b7717;
+  public int b7718;
+  public int b7719;
+  public int b7720;
+  public int b7721;
+  public int b7722;
+  public int b7723;
+  public int b7724;
+  public int b7725;
+  public int b7726;
+  public int b7727;
+  public int b7728;
+  public int b7729;
+  public int b7730;
+  public int b7731;
+  public int b7732;
+  public int b7733;
+  public int b7734;
+  public int b7735;
+  public int b7736;
+  public int b7737;
+  public int b7738;
+  public int b7739;
+  public int b7740;
+  public int b7741;
+  public int b7742;
+  public int b7743;
+  public int b7744;
+  public int b7745;
+  public int b7746;
+  public int b7747;
+  public int b7748;
+  public int b7749;
+  public int b7750;
+  public int b7751;
+  public int b7752;
+  public int b7753;
+  public int b7754;
+  public int b7755;
+  public int b7756;
+  public int b7757;
+  public int b7758;
+  public int b7759;
+  public int b7760;
+  public int b7761;
+  public int b7762;
+  public int b7763;
+  public int b7764;
+  public int b7765;
+  public int b7766;
+  public int b7767;
+  public int b7768;
+  public int b7769;
+  public int b7770;
+  public int b7771;
+  public int b7772;
+  public int b7773;
+  public int b7774;
+  public int b7775;
+  public int b7776;
+  public int b7777;
+  public int b7778;
+  public int b7779;
+  public int b7780;
+  public int b7781;
+  public int b7782;
+  public int b7783;
+  public int b7784;
+  public int b7785;
+  public int b7786;
+  public int b7787;
+  public int b7788;
+  public int b7789;
+  public int b7790;
+  public int b7791;
+  public int b7792;
+  public int b7793;
+  public int b7794;
+  public int b7795;
+  public int b7796;
+  public int b7797;
+  public int b7798;
+  public int b7799;
+  public int b7800;
+  public int b7801;
+  public int b7802;
+  public int b7803;
+  public int b7804;
+  public int b7805;
+  public int b7806;
+  public int b7807;
+  public int b7808;
+  public int b7809;
+  public int b7810;
+  public int b7811;
+  public int b7812;
+  public int b7813;
+  public int b7814;
+  public int b7815;
+  public int b7816;
+  public int b7817;
+  public int b7818;
+  public int b7819;
+  public int b7820;
+  public int b7821;
+  public int b7822;
+  public int b7823;
+  public int b7824;
+  public int b7825;
+  public int b7826;
+  public int b7827;
+  public int b7828;
+  public int b7829;
+  public int b7830;
+  public int b7831;
+  public int b7832;
+  public int b7833;
+  public int b7834;
+  public int b7835;
+  public int b7836;
+  public int b7837;
+  public int b7838;
+  public int b7839;
+  public int b7840;
+  public int b7841;
+  public int b7842;
+  public int b7843;
+  public int b7844;
+  public int b7845;
+  public int b7846;
+  public int b7847;
+  public int b7848;
+  public int b7849;
+  public int b7850;
+  public int b7851;
+  public int b7852;
+  public int b7853;
+  public int b7854;
+  public int b7855;
+  public int b7856;
+  public int b7857;
+  public int b7858;
+  public int b7859;
+  public int b7860;
+  public int b7861;
+  public int b7862;
+  public int b7863;
+  public int b7864;
+  public int b7865;
+  public int b7866;
+  public int b7867;
+  public int b7868;
+  public int b7869;
+  public int b7870;
+  public int b7871;
+  public int b7872;
+  public int b7873;
+  public int b7874;
+  public int b7875;
+  public int b7876;
+  public int b7877;
+  public int b7878;
+  public int b7879;
+  public int b7880;
+  public int b7881;
+  public int b7882;
+  public int b7883;
+  public int b7884;
+  public int b7885;
+  public int b7886;
+  public int b7887;
+  public int b7888;
+  public int b7889;
+  public int b7890;
+  public int b7891;
+  public int b7892;
+  public int b7893;
+  public int b7894;
+  public int b7895;
+  public int b7896;
+  public int b7897;
+  public int b7898;
+  public int b7899;
+  public int b7900;
+  public int b7901;
+  public int b7902;
+  public int b7903;
+  public int b7904;
+  public int b7905;
+  public int b7906;
+  public int b7907;
+  public int b7908;
+  public int b7909;
+  public int b7910;
+  public int b7911;
+  public int b7912;
+  public int b7913;
+  public int b7914;
+  public int b7915;
+  public int b7916;
+  public int b7917;
+  public int b7918;
+  public int b7919;
+  public int b7920;
+  public int b7921;
+  public int b7922;
+  public int b7923;
+  public int b7924;
+  public int b7925;
+  public int b7926;
+  public int b7927;
+  public int b7928;
+  public int b7929;
+  public int b7930;
+  public int b7931;
+  public int b7932;
+  public int b7933;
+  public int b7934;
+  public int b7935;
+  public int b7936;
+  public int b7937;
+  public int b7938;
+  public int b7939;
+  public int b7940;
+  public int b7941;
+  public int b7942;
+  public int b7943;
+  public int b7944;
+  public int b7945;
+  public int b7946;
+  public int b7947;
+  public int b7948;
+  public int b7949;
+  public int b7950;
+  public int b7951;
+  public int b7952;
+  public int b7953;
+  public int b7954;
+  public int b7955;
+  public int b7956;
+  public int b7957;
+  public int b7958;
+  public int b7959;
+  public int b7960;
+  public int b7961;
+  public int b7962;
+  public int b7963;
+  public int b7964;
+  public int b7965;
+  public int b7966;
+  public int b7967;
+  public int b7968;
+  public int b7969;
+  public int b7970;
+  public int b7971;
+  public int b7972;
+  public int b7973;
+  public int b7974;
+  public int b7975;
+  public int b7976;
+  public int b7977;
+  public int b7978;
+  public int b7979;
+  public int b7980;
+  public int b7981;
+  public int b7982;
+  public int b7983;
+  public int b7984;
+  public int b7985;
+  public int b7986;
+  public int b7987;
+  public int b7988;
+  public int b7989;
+  public int b7990;
+  public int b7991;
+  public int b7992;
+  public int b7993;
+  public int b7994;
+  public int b7995;
+  public int b7996;
+  public int b7997;
+  public int b7998;
+  public int b7999;
+  public int b8000;
+  public int b8001;
+  public int b8002;
+  public int b8003;
+  public int b8004;
+  public int b8005;
+  public int b8006;
+  public int b8007;
+  public int b8008;
+  public int b8009;
+  public int b8010;
+  public int b8011;
+  public int b8012;
+  public int b8013;
+  public int b8014;
+  public int b8015;
+  public int b8016;
+  public int b8017;
+  public int b8018;
+  public int b8019;
+  public int b8020;
+  public int b8021;
+  public int b8022;
+  public int b8023;
+  public int b8024;
+  public int b8025;
+  public int b8026;
+  public int b8027;
+  public int b8028;
+  public int b8029;
+  public int b8030;
+  public int b8031;
+  public int b8032;
+  public int b8033;
+  public int b8034;
+  public int b8035;
+  public int b8036;
+  public int b8037;
+  public int b8038;
+  public int b8039;
+  public int b8040;
+  public int b8041;
+  public int b8042;
+  public int b8043;
+  public int b8044;
+  public int b8045;
+  public int b8046;
+  public int b8047;
+  public int b8048;
+  public int b8049;
+  public int b8050;
+  public int b8051;
+  public int b8052;
+  public int b8053;
+  public int b8054;
+  public int b8055;
+  public int b8056;
+  public int b8057;
+  public int b8058;
+  public int b8059;
+  public int b8060;
+  public int b8061;
+  public int b8062;
+  public int b8063;
+  public int b8064;
+  public int b8065;
+  public int b8066;
+  public int b8067;
+  public int b8068;
+  public int b8069;
+  public int b8070;
+  public int b8071;
+  public int b8072;
+  public int b8073;
+  public int b8074;
+  public int b8075;
+  public int b8076;
+  public int b8077;
+  public int b8078;
+  public int b8079;
+  public int b8080;
+  public int b8081;
+  public int b8082;
+  public int b8083;
+  public int b8084;
+  public int b8085;
+  public int b8086;
+  public int b8087;
+  public int b8088;
+  public int b8089;
+  public int b8090;
+  public int b8091;
+  public int b8092;
+  public int b8093;
+  public int b8094;
+  public int b8095;
+  public int b8096;
+  public int b8097;
+  public int b8098;
+  public int b8099;
+  public int b8100;
+  public int b8101;
+  public int b8102;
+  public int b8103;
+  public int b8104;
+  public int b8105;
+  public int b8106;
+  public int b8107;
+  public int b8108;
+  public int b8109;
+  public int b8110;
+  public int b8111;
+  public int b8112;
+  public int b8113;
+  public int b8114;
+  public int b8115;
+  public int b8116;
+  public int b8117;
+  public int b8118;
+  public int b8119;
+  public int b8120;
+  public int b8121;
+  public int b8122;
+  public int b8123;
+  public int b8124;
+  public int b8125;
+  public int b8126;
+  public int b8127;
+  public int b8128;
+  public int b8129;
+  public int b8130;
+  public int b8131;
+  public int b8132;
+  public int b8133;
+  public int b8134;
+  public int b8135;
+  public int b8136;
+  public int b8137;
+  public int b8138;
+  public int b8139;
+  public int b8140;
+  public int b8141;
+  public int b8142;
+  public int b8143;
+  public int b8144;
+  public int b8145;
+  public int b8146;
+  public int b8147;
+  public int b8148;
+  public int b8149;
+  public int b8150;
+  public int b8151;
+  public int b8152;
+  public int b8153;
+  public int b8154;
+  public int b8155;
+  public int b8156;
+  public int b8157;
+  public int b8158;
+  public int b8159;
+  public int b8160;
+  public int b8161;
+  public int b8162;
+  public int b8163;
+  public int b8164;
+  public int b8165;
+  public int b8166;
+  public int b8167;
+  public int b8168;
+  public int b8169;
+  public int b8170;
+  public int b8171;
+  public int b8172;
+  public int b8173;
+  public int b8174;
+  public int b8175;
+  public int b8176;
+  public int b8177;
+  public int b8178;
+  public int b8179;
+  public int b8180;
+  public int b8181;
+  public int b8182;
+  public int b8183;
+  public int b8184;
+  public int b8185;
+  public int b8186;
+  public int b8187;
+  public int b8188;
+  public int b8189;
+  public int b8190;
+  public int b8191;
+  public int b8192;
+  public int b8193;
+  public int b8194;
+  public int b8195;
+  public int b8196;
+  public int b8197;
+  public int b8198;
+  public int b8199;
+  public int b8200;
+  public int b8201;
+  public int b8202;
+  public int b8203;
+  public int b8204;
+  public int b8205;
+  public int b8206;
+  public int b8207;
+  public int b8208;
+  public int b8209;
+  public int b8210;
+  public int b8211;
+  public int b8212;
+  public int b8213;
+  public int b8214;
+  public int b8215;
+  public int b8216;
+  public int b8217;
+  public int b8218;
+  public int b8219;
+  public int b8220;
+  public int b8221;
+  public int b8222;
+  public int b8223;
+  public int b8224;
+  public int b8225;
+  public int b8226;
+  public int b8227;
+  public int b8228;
+  public int b8229;
+  public int b8230;
+  public int b8231;
+  public int b8232;
+  public int b8233;
+  public int b8234;
+  public int b8235;
+  public int b8236;
+  public int b8237;
+  public int b8238;
+  public int b8239;
+  public int b8240;
+  public int b8241;
+  public int b8242;
+  public int b8243;
+  public int b8244;
+  public int b8245;
+  public int b8246;
+  public int b8247;
+  public int b8248;
+  public int b8249;
+  public int b8250;
+  public int b8251;
+  public int b8252;
+  public int b8253;
+  public int b8254;
+  public int b8255;
+  public int b8256;
+  public int b8257;
+  public int b8258;
+  public int b8259;
+  public int b8260;
+  public int b8261;
+  public int b8262;
+  public int b8263;
+  public int b8264;
+  public int b8265;
+  public int b8266;
+  public int b8267;
+  public int b8268;
+  public int b8269;
+  public int b8270;
+  public int b8271;
+  public int b8272;
+  public int b8273;
+  public int b8274;
+  public int b8275;
+  public int b8276;
+  public int b8277;
+  public int b8278;
+  public int b8279;
+  public int b8280;
+  public int b8281;
+  public int b8282;
+  public int b8283;
+  public int b8284;
+  public int b8285;
+  public int b8286;
+  public int b8287;
+  public int b8288;
+  public int b8289;
+  public int b8290;
+  public int b8291;
+  public int b8292;
+  public int b8293;
+  public int b8294;
+  public int b8295;
+  public int b8296;
+  public int b8297;
+  public int b8298;
+  public int b8299;
+  public int b8300;
+  public int b8301;
+  public int b8302;
+  public int b8303;
+  public int b8304;
+  public int b8305;
+  public int b8306;
+  public int b8307;
+  public int b8308;
+  public int b8309;
+  public int b8310;
+  public int b8311;
+  public int b8312;
+  public int b8313;
+  public int b8314;
+  public int b8315;
+  public int b8316;
+  public int b8317;
+  public int b8318;
+  public int b8319;
+  public int b8320;
+  public int b8321;
+  public int b8322;
+  public int b8323;
+  public int b8324;
+  public int b8325;
+  public int b8326;
+  public int b8327;
+  public int b8328;
+  public int b8329;
+  public int b8330;
+  public int b8331;
+  public int b8332;
+  public int b8333;
+  public int b8334;
+  public int b8335;
+  public int b8336;
+  public int b8337;
+  public int b8338;
+  public int b8339;
+  public int b8340;
+  public int b8341;
+  public int b8342;
+  public int b8343;
+  public int b8344;
+  public int b8345;
+  public int b8346;
+  public int b8347;
+  public int b8348;
+  public int b8349;
+  public int b8350;
+  public int b8351;
+  public int b8352;
+  public int b8353;
+  public int b8354;
+  public int b8355;
+  public int b8356;
+  public int b8357;
+  public int b8358;
+  public int b8359;
+  public int b8360;
+  public int b8361;
+  public int b8362;
+  public int b8363;
+  public int b8364;
+  public int b8365;
+  public int b8366;
+  public int b8367;
+  public int b8368;
+  public int b8369;
+  public int b8370;
+  public int b8371;
+  public int b8372;
+  public int b8373;
+  public int b8374;
+  public int b8375;
+  public int b8376;
+  public int b8377;
+  public int b8378;
+  public int b8379;
+  public int b8380;
+  public int b8381;
+  public int b8382;
+  public int b8383;
+  public int b8384;
+  public int b8385;
+  public int b8386;
+  public int b8387;
+  public int b8388;
+  public int b8389;
+  public int b8390;
+  public int b8391;
+  public int b8392;
+  public int b8393;
+  public int b8394;
+  public int b8395;
+  public int b8396;
+  public int b8397;
+  public int b8398;
+  public int b8399;
+  public int b8400;
+  public int b8401;
+  public int b8402;
+  public int b8403;
+  public int b8404;
+  public int b8405;
+  public int b8406;
+  public int b8407;
+  public int b8408;
+  public int b8409;
+  public int b8410;
+  public int b8411;
+  public int b8412;
+  public int b8413;
+  public int b8414;
+  public int b8415;
+  public int b8416;
+  public int b8417;
+  public int b8418;
+  public int b8419;
+  public int b8420;
+  public int b8421;
+  public int b8422;
+  public int b8423;
+  public int b8424;
+  public int b8425;
+  public int b8426;
+  public int b8427;
+  public int b8428;
+  public int b8429;
+  public int b8430;
+  public int b8431;
+  public int b8432;
+  public int b8433;
+  public int b8434;
+  public int b8435;
+  public int b8436;
+  public int b8437;
+  public int b8438;
+  public int b8439;
+  public int b8440;
+  public int b8441;
+  public int b8442;
+  public int b8443;
+  public int b8444;
+  public int b8445;
+  public int b8446;
+  public int b8447;
+  public int b8448;
+  public int b8449;
+  public int b8450;
+  public int b8451;
+  public int b8452;
+  public int b8453;
+  public int b8454;
+  public int b8455;
+  public int b8456;
+  public int b8457;
+  public int b8458;
+  public int b8459;
+  public int b8460;
+  public int b8461;
+  public int b8462;
+  public int b8463;
+  public int b8464;
+  public int b8465;
+  public int b8466;
+  public int b8467;
+  public int b8468;
+  public int b8469;
+  public int b8470;
+  public int b8471;
+  public int b8472;
+  public int b8473;
+  public int b8474;
+  public int b8475;
+  public int b8476;
+  public int b8477;
+  public int b8478;
+  public int b8479;
+  public int b8480;
+  public int b8481;
+  public int b8482;
+  public int b8483;
+  public int b8484;
+  public int b8485;
+  public int b8486;
+  public int b8487;
+  public int b8488;
+  public int b8489;
+  public int b8490;
+  public int b8491;
+  public int b8492;
+  public int b8493;
+  public int b8494;
+  public int b8495;
+  public int b8496;
+  public int b8497;
+  public int b8498;
+  public int b8499;
+  public int b8500;
+  public int b8501;
+  public int b8502;
+  public int b8503;
+  public int b8504;
+  public int b8505;
+  public int b8506;
+  public int b8507;
+  public int b8508;
+  public int b8509;
+  public int b8510;
+  public int b8511;
+  public int b8512;
+  public int b8513;
+  public int b8514;
+  public int b8515;
+  public int b8516;
+  public int b8517;
+  public int b8518;
+  public int b8519;
+  public int b8520;
+  public int b8521;
+  public int b8522;
+  public int b8523;
+  public int b8524;
+  public int b8525;
+  public int b8526;
+  public int b8527;
+  public int b8528;
+  public int b8529;
+  public int b8530;
+  public int b8531;
+  public int b8532;
+  public int b8533;
+  public int b8534;
+  public int b8535;
+  public int b8536;
+  public int b8537;
+  public int b8538;
+  public int b8539;
+  public int b8540;
+  public int b8541;
+  public int b8542;
+  public int b8543;
+  public int b8544;
+  public int b8545;
+  public int b8546;
+  public int b8547;
+  public int b8548;
+  public int b8549;
+  public int b8550;
+  public int b8551;
+  public int b8552;
+  public int b8553;
+  public int b8554;
+  public int b8555;
+  public int b8556;
+  public int b8557;
+  public int b8558;
+  public int b8559;
+  public int b8560;
+  public int b8561;
+  public int b8562;
+  public int b8563;
+  public int b8564;
+  public int b8565;
+  public int b8566;
+  public int b8567;
+  public int b8568;
+  public int b8569;
+  public int b8570;
+  public int b8571;
+  public int b8572;
+  public int b8573;
+  public int b8574;
+  public int b8575;
+  public int b8576;
+  public int b8577;
+  public int b8578;
+  public int b8579;
+  public int b8580;
+  public int b8581;
+  public int b8582;
+  public int b8583;
+  public int b8584;
+  public int b8585;
+  public int b8586;
+  public int b8587;
+  public int b8588;
+  public int b8589;
+  public int b8590;
+  public int b8591;
+  public int b8592;
+  public int b8593;
+  public int b8594;
+  public int b8595;
+  public int b8596;
+  public int b8597;
+  public int b8598;
+  public int b8599;
+  public int b8600;
+  public int b8601;
+  public int b8602;
+  public int b8603;
+  public int b8604;
+  public int b8605;
+  public int b8606;
+  public int b8607;
+  public int b8608;
+  public int b8609;
+  public int b8610;
+  public int b8611;
+  public int b8612;
+  public int b8613;
+  public int b8614;
+  public int b8615;
+  public int b8616;
+  public int b8617;
+  public int b8618;
+  public int b8619;
+  public int b8620;
+  public int b8621;
+  public int b8622;
+  public int b8623;
+  public int b8624;
+  public int b8625;
+  public int b8626;
+  public int b8627;
+  public int b8628;
+  public int b8629;
+  public int b8630;
+  public int b8631;
+  public int b8632;
+  public int b8633;
+  public int b8634;
+  public int b8635;
+  public int b8636;
+  public int b8637;
+  public int b8638;
+  public int b8639;
+  public int b8640;
+  public int b8641;
+  public int b8642;
+  public int b8643;
+  public int b8644;
+  public int b8645;
+  public int b8646;
+  public int b8647;
+  public int b8648;
+  public int b8649;
+  public int b8650;
+  public int b8651;
+  public int b8652;
+  public int b8653;
+  public int b8654;
+  public int b8655;
+  public int b8656;
+  public int b8657;
+  public int b8658;
+  public int b8659;
+  public int b8660;
+  public int b8661;
+  public int b8662;
+  public int b8663;
+  public int b8664;
+  public int b8665;
+  public int b8666;
+  public int b8667;
+  public int b8668;
+  public int b8669;
+  public int b8670;
+  public int b8671;
+  public int b8672;
+  public int b8673;
+  public int b8674;
+  public int b8675;
+  public int b8676;
+  public int b8677;
+  public int b8678;
+  public int b8679;
+  public int b8680;
+  public int b8681;
+  public int b8682;
+  public int b8683;
+  public int b8684;
+  public int b8685;
+  public int b8686;
+  public int b8687;
+  public int b8688;
+  public int b8689;
+  public int b8690;
+  public int b8691;
+  public int b8692;
+  public int b8693;
+  public int b8694;
+  public int b8695;
+  public int b8696;
+  public int b8697;
+  public int b8698;
+  public int b8699;
+  public int b8700;
+  public int b8701;
+  public int b8702;
+  public int b8703;
+  public int b8704;
+  public int b8705;
+  public int b8706;
+  public int b8707;
+  public int b8708;
+  public int b8709;
+  public int b8710;
+  public int b8711;
+  public int b8712;
+  public int b8713;
+  public int b8714;
+  public int b8715;
+  public int b8716;
+  public int b8717;
+  public int b8718;
+  public int b8719;
+  public int b8720;
+  public int b8721;
+  public int b8722;
+  public int b8723;
+  public int b8724;
+  public int b8725;
+  public int b8726;
+  public int b8727;
+  public int b8728;
+  public int b8729;
+  public int b8730;
+  public int b8731;
+  public int b8732;
+  public int b8733;
+  public int b8734;
+  public int b8735;
+  public int b8736;
+  public int b8737;
+  public int b8738;
+  public int b8739;
+  public int b8740;
+  public int b8741;
+  public int b8742;
+  public int b8743;
+  public int b8744;
+  public int b8745;
+  public int b8746;
+  public int b8747;
+  public int b8748;
+  public int b8749;
+  public int b8750;
+  public int b8751;
+  public int b8752;
+  public int b8753;
+  public int b8754;
+  public int b8755;
+  public int b8756;
+  public int b8757;
+  public int b8758;
+  public int b8759;
+  public int b8760;
+  public int b8761;
+  public int b8762;
+  public int b8763;
+  public int b8764;
+  public int b8765;
+  public int b8766;
+  public int b8767;
+  public int b8768;
+  public int b8769;
+  public int b8770;
+  public int b8771;
+  public int b8772;
+  public int b8773;
+  public int b8774;
+  public int b8775;
+  public int b8776;
+  public int b8777;
+  public int b8778;
+  public int b8779;
+  public int b8780;
+  public int b8781;
+  public int b8782;
+  public int b8783;
+  public int b8784;
+  public int b8785;
+  public int b8786;
+  public int b8787;
+  public int b8788;
+  public int b8789;
+  public int b8790;
+  public int b8791;
+  public int b8792;
+  public int b8793;
+  public int b8794;
+  public int b8795;
+  public int b8796;
+  public int b8797;
+  public int b8798;
+  public int b8799;
+  public int b8800;
+  public int b8801;
+  public int b8802;
+  public int b8803;
+  public int b8804;
+  public int b8805;
+  public int b8806;
+  public int b8807;
+  public int b8808;
+  public int b8809;
+  public int b8810;
+  public int b8811;
+  public int b8812;
+  public int b8813;
+  public int b8814;
+  public int b8815;
+  public int b8816;
+  public int b8817;
+  public int b8818;
+  public int b8819;
+  public int b8820;
+  public int b8821;
+  public int b8822;
+  public int b8823;
+  public int b8824;
+  public int b8825;
+  public int b8826;
+  public int b8827;
+  public int b8828;
+  public int b8829;
+  public int b8830;
+  public int b8831;
+  public int b8832;
+  public int b8833;
+  public int b8834;
+  public int b8835;
+  public int b8836;
+  public int b8837;
+  public int b8838;
+  public int b8839;
+  public int b8840;
+  public int b8841;
+  public int b8842;
+  public int b8843;
+  public int b8844;
+  public int b8845;
+  public int b8846;
+  public int b8847;
+  public int b8848;
+  public int b8849;
+  public int b8850;
+  public int b8851;
+  public int b8852;
+  public int b8853;
+  public int b8854;
+  public int b8855;
+  public int b8856;
+  public int b8857;
+  public int b8858;
+  public int b8859;
+  public int b8860;
+  public int b8861;
+  public int b8862;
+  public int b8863;
+  public int b8864;
+  public int b8865;
+  public int b8866;
+  public int b8867;
+  public int b8868;
+  public int b8869;
+  public int b8870;
+  public int b8871;
+  public int b8872;
+  public int b8873;
+  public int b8874;
+  public int b8875;
+  public int b8876;
+  public int b8877;
+  public int b8878;
+  public int b8879;
+  public int b8880;
+  public int b8881;
+  public int b8882;
+  public int b8883;
+  public int b8884;
+  public int b8885;
+  public int b8886;
+  public int b8887;
+  public int b8888;
+  public int b8889;
+  public int b8890;
+  public int b8891;
+  public int b8892;
+  public int b8893;
+  public int b8894;
+  public int b8895;
+  public int b8896;
+  public int b8897;
+  public int b8898;
+  public int b8899;
+  public int b8900;
+  public int b8901;
+  public int b8902;
+  public int b8903;
+  public int b8904;
+  public int b8905;
+  public int b8906;
+  public int b8907;
+  public int b8908;
+  public int b8909;
+  public int b8910;
+  public int b8911;
+  public int b8912;
+  public int b8913;
+  public int b8914;
+  public int b8915;
+  public int b8916;
+  public int b8917;
+  public int b8918;
+  public int b8919;
+  public int b8920;
+  public int b8921;
+  public int b8922;
+  public int b8923;
+  public int b8924;
+  public int b8925;
+  public int b8926;
+  public int b8927;
+  public int b8928;
+  public int b8929;
+  public int b8930;
+  public int b8931;
+  public int b8932;
+  public int b8933;
+  public int b8934;
+  public int b8935;
+  public int b8936;
+  public int b8937;
+  public int b8938;
+  public int b8939;
+  public int b8940;
+  public int b8941;
+  public int b8942;
+  public int b8943;
+  public int b8944;
+  public int b8945;
+  public int b8946;
+  public int b8947;
+  public int b8948;
+  public int b8949;
+  public int b8950;
+  public int b8951;
+  public int b8952;
+  public int b8953;
+  public int b8954;
+  public int b8955;
+  public int b8956;
+  public int b8957;
+  public int b8958;
+  public int b8959;
+  public int b8960;
+  public int b8961;
+  public int b8962;
+  public int b8963;
+  public int b8964;
+  public int b8965;
+  public int b8966;
+  public int b8967;
+  public int b8968;
+  public int b8969;
+  public int b8970;
+  public int b8971;
+  public int b8972;
+  public int b8973;
+  public int b8974;
+  public int b8975;
+  public int b8976;
+  public int b8977;
+  public int b8978;
+  public int b8979;
+  public int b8980;
+  public int b8981;
+  public int b8982;
+  public int b8983;
+  public int b8984;
+  public int b8985;
+  public int b8986;
+  public int b8987;
+  public int b8988;
+  public int b8989;
+  public int b8990;
+  public int b8991;
+  public int b8992;
+  public int b8993;
+  public int b8994;
+  public int b8995;
+  public int b8996;
+  public int b8997;
+  public int b8998;
+  public int b8999;
+  public int b9000;
+  public int b9001;
+  public int b9002;
+  public int b9003;
+  public int b9004;
+  public int b9005;
+  public int b9006;
+  public int b9007;
+  public int b9008;
+  public int b9009;
+  public int b9010;
+  public int b9011;
+  public int b9012;
+  public int b9013;
+  public int b9014;
+  public int b9015;
+  public int b9016;
+  public int b9017;
+  public int b9018;
+  public int b9019;
+  public int b9020;
+  public int b9021;
+  public int b9022;
+  public int b9023;
+  public int b9024;
+  public int b9025;
+  public int b9026;
+  public int b9027;
+  public int b9028;
+  public int b9029;
+  public int b9030;
+  public int b9031;
+  public int b9032;
+  public int b9033;
+  public int b9034;
+  public int b9035;
+  public int b9036;
+  public int b9037;
+  public int b9038;
+  public int b9039;
+  public int b9040;
+  public int b9041;
+  public int b9042;
+  public int b9043;
+  public int b9044;
+  public int b9045;
+  public int b9046;
+  public int b9047;
+  public int b9048;
+  public int b9049;
+  public int b9050;
+  public int b9051;
+  public int b9052;
+  public int b9053;
+  public int b9054;
+  public int b9055;
+  public int b9056;
+  public int b9057;
+  public int b9058;
+  public int b9059;
+  public int b9060;
+  public int b9061;
+  public int b9062;
+  public int b9063;
+  public int b9064;
+  public int b9065;
+  public int b9066;
+  public int b9067;
+  public int b9068;
+  public int b9069;
+  public int b9070;
+  public int b9071;
+  public int b9072;
+  public int b9073;
+  public int b9074;
+  public int b9075;
+  public int b9076;
+  public int b9077;
+  public int b9078;
+  public int b9079;
+  public int b9080;
+  public int b9081;
+  public int b9082;
+  public int b9083;
+  public int b9084;
+  public int b9085;
+  public int b9086;
+  public int b9087;
+  public int b9088;
+  public int b9089;
+  public int b9090;
+  public int b9091;
+  public int b9092;
+  public int b9093;
+  public int b9094;
+  public int b9095;
+  public int b9096;
+  public int b9097;
+  public int b9098;
+  public int b9099;
+  public int b9100;
+  public int b9101;
+  public int b9102;
+  public int b9103;
+  public int b9104;
+  public int b9105;
+  public int b9106;
+  public int b9107;
+  public int b9108;
+  public int b9109;
+  public int b9110;
+  public int b9111;
+  public int b9112;
+  public int b9113;
+  public int b9114;
+  public int b9115;
+  public int b9116;
+  public int b9117;
+  public int b9118;
+  public int b9119;
+  public int b9120;
+  public int b9121;
+  public int b9122;
+  public int b9123;
+  public int b9124;
+  public int b9125;
+  public int b9126;
+  public int b9127;
+  public int b9128;
+  public int b9129;
+  public int b9130;
+  public int b9131;
+  public int b9132;
+  public int b9133;
+  public int b9134;
+  public int b9135;
+  public int b9136;
+  public int b9137;
+  public int b9138;
+  public int b9139;
+  public int b9140;
+  public int b9141;
+  public int b9142;
+  public int b9143;
+  public int b9144;
+  public int b9145;
+  public int b9146;
+  public int b9147;
+  public int b9148;
+  public int b9149;
+  public int b9150;
+  public int b9151;
+  public int b9152;
+  public int b9153;
+  public int b9154;
+  public int b9155;
+  public int b9156;
+  public int b9157;
+  public int b9158;
+  public int b9159;
+  public int b9160;
+  public int b9161;
+  public int b9162;
+  public int b9163;
+  public int b9164;
+  public int b9165;
+  public int b9166;
+  public int b9167;
+  public int b9168;
+  public int b9169;
+  public int b9170;
+  public int b9171;
+  public int b9172;
+  public int b9173;
+  public int b9174;
+  public int b9175;
+  public int b9176;
+  public int b9177;
+  public int b9178;
+  public int b9179;
+  public int b9180;
+  public int b9181;
+  public int b9182;
+  public int b9183;
+  public int b9184;
+  public int b9185;
+  public int b9186;
+  public int b9187;
+  public int b9188;
+  public int b9189;
+  public int b9190;
+  public int b9191;
+  public int b9192;
+  public int b9193;
+  public int b9194;
+  public int b9195;
+  public int b9196;
+  public int b9197;
+  public int b9198;
+  public int b9199;
+  public int b9200;
+  public int b9201;
+  public int b9202;
+  public int b9203;
+  public int b9204;
+  public int b9205;
+  public int b9206;
+  public int b9207;
+  public int b9208;
+  public int b9209;
+  public int b9210;
+  public int b9211;
+  public int b9212;
+  public int b9213;
+  public int b9214;
+  public int b9215;
+  public int b9216;
+  public int b9217;
+  public int b9218;
+  public int b9219;
+  public int b9220;
+  public int b9221;
+  public int b9222;
+  public int b9223;
+  public int b9224;
+  public int b9225;
+  public int b9226;
+  public int b9227;
+  public int b9228;
+  public int b9229;
+  public int b9230;
+  public int b9231;
+  public int b9232;
+  public int b9233;
+  public int b9234;
+  public int b9235;
+  public int b9236;
+  public int b9237;
+  public int b9238;
+  public int b9239;
+  public int b9240;
+  public int b9241;
+  public int b9242;
+  public int b9243;
+  public int b9244;
+  public int b9245;
+  public int b9246;
+  public int b9247;
+  public int b9248;
+  public int b9249;
+  public int b9250;
+  public int b9251;
+  public int b9252;
+  public int b9253;
+  public int b9254;
+  public int b9255;
+  public int b9256;
+  public int b9257;
+  public int b9258;
+  public int b9259;
+  public int b9260;
+  public int b9261;
+  public int b9262;
+  public int b9263;
+  public int b9264;
+  public int b9265;
+  public int b9266;
+  public int b9267;
+  public int b9268;
+  public int b9269;
+  public int b9270;
+  public int b9271;
+  public int b9272;
+  public int b9273;
+  public int b9274;
+  public int b9275;
+  public int b9276;
+  public int b9277;
+  public int b9278;
+  public int b9279;
+  public int b9280;
+  public int b9281;
+  public int b9282;
+  public int b9283;
+  public int b9284;
+  public int b9285;
+  public int b9286;
+  public int b9287;
+  public int b9288;
+  public int b9289;
+  public int b9290;
+  public int b9291;
+  public int b9292;
+  public int b9293;
+  public int b9294;
+  public int b9295;
+  public int b9296;
+  public int b9297;
+  public int b9298;
+  public int b9299;
+  public int b9300;
+  public int b9301;
+  public int b9302;
+  public int b9303;
+  public int b9304;
+  public int b9305;
+  public int b9306;
+  public int b9307;
+  public int b9308;
+  public int b9309;
+  public int b9310;
+  public int b9311;
+  public int b9312;
+  public int b9313;
+  public int b9314;
+  public int b9315;
+  public int b9316;
+  public int b9317;
+  public int b9318;
+  public int b9319;
+  public int b9320;
+  public int b9321;
+  public int b9322;
+  public int b9323;
+  public int b9324;
+  public int b9325;
+  public int b9326;
+  public int b9327;
+  public int b9328;
+  public int b9329;
+  public int b9330;
+  public int b9331;
+  public int b9332;
+  public int b9333;
+  public int b9334;
+  public int b9335;
+  public int b9336;
+  public int b9337;
+  public int b9338;
+  public int b9339;
+  public int b9340;
+  public int b9341;
+  public int b9342;
+  public int b9343;
+  public int b9344;
+  public int b9345;
+  public int b9346;
+  public int b9347;
+  public int b9348;
+  public int b9349;
+  public int b9350;
+  public int b9351;
+  public int b9352;
+  public int b9353;
+  public int b9354;
+  public int b9355;
+  public int b9356;
+  public int b9357;
+  public int b9358;
+  public int b9359;
+  public int b9360;
+  public int b9361;
+  public int b9362;
+  public int b9363;
+  public int b9364;
+  public int b9365;
+  public int b9366;
+  public int b9367;
+  public int b9368;
+  public int b9369;
+  public int b9370;
+  public int b9371;
+  public int b9372;
+  public int b9373;
+  public int b9374;
+  public int b9375;
+  public int b9376;
+  public int b9377;
+  public int b9378;
+  public int b9379;
+  public int b9380;
+  public int b9381;
+  public int b9382;
+  public int b9383;
+  public int b9384;
+  public int b9385;
+  public int b9386;
+  public int b9387;
+  public int b9388;
+  public int b9389;
+  public int b9390;
+  public int b9391;
+  public int b9392;
+  public int b9393;
+  public int b9394;
+  public int b9395;
+  public int b9396;
+  public int b9397;
+  public int b9398;
+  public int b9399;
+  public int b9400;
+  public int b9401;
+  public int b9402;
+  public int b9403;
+  public int b9404;
+  public int b9405;
+  public int b9406;
+  public int b9407;
+  public int b9408;
+  public int b9409;
+  public int b9410;
+  public int b9411;
+  public int b9412;
+  public int b9413;
+  public int b9414;
+  public int b9415;
+  public int b9416;
+  public int b9417;
+  public int b9418;
+  public int b9419;
+  public int b9420;
+  public int b9421;
+  public int b9422;
+  public int b9423;
+  public int b9424;
+  public int b9425;
+  public int b9426;
+  public int b9427;
+  public int b9428;
+  public int b9429;
+  public int b9430;
+  public int b9431;
+  public int b9432;
+  public int b9433;
+  public int b9434;
+  public int b9435;
+  public int b9436;
+  public int b9437;
+  public int b9438;
+  public int b9439;
+  public int b9440;
+  public int b9441;
+  public int b9442;
+  public int b9443;
+  public int b9444;
+  public int b9445;
+  public int b9446;
+  public int b9447;
+  public int b9448;
+  public int b9449;
+  public int b9450;
+  public int b9451;
+  public int b9452;
+  public int b9453;
+  public int b9454;
+  public int b9455;
+  public int b9456;
+  public int b9457;
+  public int b9458;
+  public int b9459;
+  public int b9460;
+  public int b9461;
+  public int b9462;
+  public int b9463;
+  public int b9464;
+  public int b9465;
+  public int b9466;
+  public int b9467;
+  public int b9468;
+  public int b9469;
+  public int b9470;
+  public int b9471;
+  public int b9472;
+  public int b9473;
+  public int b9474;
+  public int b9475;
+  public int b9476;
+  public int b9477;
+  public int b9478;
+  public int b9479;
+  public int b9480;
+  public int b9481;
+  public int b9482;
+  public int b9483;
+  public int b9484;
+  public int b9485;
+  public int b9486;
+  public int b9487;
+  public int b9488;
+  public int b9489;
+  public int b9490;
+  public int b9491;
+  public int b9492;
+  public int b9493;
+  public int b9494;
+  public int b9495;
+  public int b9496;
+  public int b9497;
+  public int b9498;
+  public int b9499;
+  public int b9500;
+  public int b9501;
+  public int b9502;
+  public int b9503;
+  public int b9504;
+  public int b9505;
+  public int b9506;
+  public int b9507;
+  public int b9508;
+  public int b9509;
+  public int b9510;
+  public int b9511;
+  public int b9512;
+  public int b9513;
+  public int b9514;
+  public int b9515;
+  public int b9516;
+  public int b9517;
+  public int b9518;
+  public int b9519;
+  public int b9520;
+  public int b9521;
+  public int b9522;
+  public int b9523;
+  public int b9524;
+  public int b9525;
+  public int b9526;
+  public int b9527;
+  public int b9528;
+  public int b9529;
+  public int b9530;
+  public int b9531;
+  public int b9532;
+  public int b9533;
+  public int b9534;
+  public int b9535;
+  public int b9536;
+  public int b9537;
+  public int b9538;
+  public int b9539;
+  public int b9540;
+  public int b9541;
+  public int b9542;
+  public int b9543;
+  public int b9544;
+  public int b9545;
+  public int b9546;
+  public int b9547;
+  public int b9548;
+  public int b9549;
+  public int b9550;
+  public int b9551;
+  public int b9552;
+  public int b9553;
+  public int b9554;
+  public int b9555;
+  public int b9556;
+  public int b9557;
+  public int b9558;
+  public int b9559;
+  public int b9560;
+  public int b9561;
+  public int b9562;
+  public int b9563;
+  public int b9564;
+  public int b9565;
+  public int b9566;
+  public int b9567;
+  public int b9568;
+  public int b9569;
+  public int b9570;
+  public int b9571;
+  public int b9572;
+  public int b9573;
+  public int b9574;
+  public int b9575;
+  public int b9576;
+  public int b9577;
+  public int b9578;
+  public int b9579;
+  public int b9580;
+  public int b9581;
+  public int b9582;
+  public int b9583;
+  public int b9584;
+  public int b9585;
+  public int b9586;
+  public int b9587;
+  public int b9588;
+  public int b9589;
+  public int b9590;
+  public int b9591;
+  public int b9592;
+  public int b9593;
+  public int b9594;
+  public int b9595;
+  public int b9596;
+  public int b9597;
+  public int b9598;
+  public int b9599;
+  public int b9600;
+  public int b9601;
+  public int b9602;
+  public int b9603;
+  public int b9604;
+  public int b9605;
+  public int b9606;
+  public int b9607;
+  public int b9608;
+  public int b9609;
+  public int b9610;
+  public int b9611;
+  public int b9612;
+  public int b9613;
+  public int b9614;
+  public int b9615;
+  public int b9616;
+  public int b9617;
+  public int b9618;
+  public int b9619;
+  public int b9620;
+  public int b9621;
+  public int b9622;
+  public int b9623;
+  public int b9624;
+  public int b9625;
+  public int b9626;
+  public int b9627;
+  public int b9628;
+  public int b9629;
+  public int b9630;
+  public int b9631;
+  public int b9632;
+  public int b9633;
+  public int b9634;
+  public int b9635;
+  public int b9636;
+  public int b9637;
+  public int b9638;
+  public int b9639;
+  public int b9640;
+  public int b9641;
+  public int b9642;
+  public int b9643;
+  public int b9644;
+  public int b9645;
+  public int b9646;
+  public int b9647;
+  public int b9648;
+  public int b9649;
+  public int b9650;
+  public int b9651;
+  public int b9652;
+  public int b9653;
+  public int b9654;
+  public int b9655;
+  public int b9656;
+  public int b9657;
+  public int b9658;
+  public int b9659;
+  public int b9660;
+  public int b9661;
+  public int b9662;
+  public int b9663;
+  public int b9664;
+  public int b9665;
+  public int b9666;
+  public int b9667;
+  public int b9668;
+  public int b9669;
+  public int b9670;
+  public int b9671;
+  public int b9672;
+  public int b9673;
+  public int b9674;
+  public int b9675;
+  public int b9676;
+  public int b9677;
+  public int b9678;
+  public int b9679;
+  public int b9680;
+  public int b9681;
+  public int b9682;
+  public int b9683;
+  public int b9684;
+  public int b9685;
+  public int b9686;
+  public int b9687;
+  public int b9688;
+  public int b9689;
+  public int b9690;
+  public int b9691;
+  public int b9692;
+  public int b9693;
+  public int b9694;
+  public int b9695;
+  public int b9696;
+  public int b9697;
+  public int b9698;
+  public int b9699;
+  public int b9700;
+  public int b9701;
+  public int b9702;
+  public int b9703;
+  public int b9704;
+  public int b9705;
+  public int b9706;
+  public int b9707;
+  public int b9708;
+  public int b9709;
+  public int b9710;
+  public int b9711;
+  public int b9712;
+  public int b9713;
+  public int b9714;
+  public int b9715;
+  public int b9716;
+  public int b9717;
+  public int b9718;
+  public int b9719;
+  public int b9720;
+  public int b9721;
+  public int b9722;
+  public int b9723;
+  public int b9724;
+  public int b9725;
+  public int b9726;
+  public int b9727;
+  public int b9728;
+  public int b9729;
+  public int b9730;
+  public int b9731;
+  public int b9732;
+  public int b9733;
+  public int b9734;
+  public int b9735;
+  public int b9736;
+  public int b9737;
+  public int b9738;
+  public int b9739;
+  public int b9740;
+  public int b9741;
+  public int b9742;
+  public int b9743;
+  public int b9744;
+  public int b9745;
+  public int b9746;
+  public int b9747;
+  public int b9748;
+  public int b9749;
+  public int b9750;
+  public int b9751;
+  public int b9752;
+  public int b9753;
+  public int b9754;
+  public int b9755;
+  public int b9756;
+  public int b9757;
+  public int b9758;
+  public int b9759;
+  public int b9760;
+  public int b9761;
+  public int b9762;
+  public int b9763;
+  public int b9764;
+  public int b9765;
+  public int b9766;
+  public int b9767;
+  public int b9768;
+  public int b9769;
+  public int b9770;
+  public int b9771;
+  public int b9772;
+  public int b9773;
+  public int b9774;
+  public int b9775;
+  public int b9776;
+  public int b9777;
+  public int b9778;
+  public int b9779;
+  public int b9780;
+  public int b9781;
+  public int b9782;
+  public int b9783;
+  public int b9784;
+  public int b9785;
+  public int b9786;
+  public int b9787;
+  public int b9788;
+  public int b9789;
+  public int b9790;
+  public int b9791;
+  public int b9792;
+  public int b9793;
+  public int b9794;
+  public int b9795;
+  public int b9796;
+  public int b9797;
+  public int b9798;
+  public int b9799;
+  public int b9800;
+  public int b9801;
+  public int b9802;
+  public int b9803;
+  public int b9804;
+  public int b9805;
+  public int b9806;
+  public int b9807;
+  public int b9808;
+  public int b9809;
+  public int b9810;
+  public int b9811;
+  public int b9812;
+  public int b9813;
+  public int b9814;
+  public int b9815;
+  public int b9816;
+  public int b9817;
+  public int b9818;
+  public int b9819;
+  public int b9820;
+  public int b9821;
+  public int b9822;
+  public int b9823;
+  public int b9824;
+  public int b9825;
+  public int b9826;
+  public int b9827;
+  public int b9828;
+  public int b9829;
+  public int b9830;
+  public int b9831;
+  public int b9832;
+  public int b9833;
+  public int b9834;
+  public int b9835;
+  public int b9836;
+  public int b9837;
+  public int b9838;
+  public int b9839;
+  public int b9840;
+  public int b9841;
+  public int b9842;
+  public int b9843;
+  public int b9844;
+  public int b9845;
+  public int b9846;
+  public int b9847;
+  public int b9848;
+  public int b9849;
+  public int b9850;
+  public int b9851;
+  public int b9852;
+  public int b9853;
+  public int b9854;
+  public int b9855;
+  public int b9856;
+  public int b9857;
+  public int b9858;
+  public int b9859;
+  public int b9860;
+  public int b9861;
+  public int b9862;
+  public int b9863;
+  public int b9864;
+  public int b9865;
+  public int b9866;
+  public int b9867;
+  public int b9868;
+  public int b9869;
+  public int b9870;
+  public int b9871;
+  public int b9872;
+  public int b9873;
+  public int b9874;
+  public int b9875;
+  public int b9876;
+  public int b9877;
+  public int b9878;
+  public int b9879;
+  public int b9880;
+  public int b9881;
+  public int b9882;
+  public int b9883;
+  public int b9884;
+  public int b9885;
+  public int b9886;
+  public int b9887;
+  public int b9888;
+  public int b9889;
+  public int b9890;
+  public int b9891;
+  public int b9892;
+  public int b9893;
+  public int b9894;
+  public int b9895;
+  public int b9896;
+  public int b9897;
+  public int b9898;
+  public int b9899;
+  public int b9900;
+  public int b9901;
+  public int b9902;
+  public int b9903;
+  public int b9904;
+  public int b9905;
+  public int b9906;
+  public int b9907;
+  public int b9908;
+  public int b9909;
+  public int b9910;
+  public int b9911;
+  public int b9912;
+  public int b9913;
+  public int b9914;
+  public int b9915;
+  public int b9916;
+  public int b9917;
+  public int b9918;
+  public int b9919;
+  public int b9920;
+  public int b9921;
+  public int b9922;
+  public int b9923;
+  public int b9924;
+  public int b9925;
+  public int b9926;
+  public int b9927;
+  public int b9928;
+  public int b9929;
+  public int b9930;
+  public int b9931;
+  public int b9932;
+  public int b9933;
+  public int b9934;
+  public int b9935;
+  public int b9936;
+  public int b9937;
+  public int b9938;
+  public int b9939;
+  public int b9940;
+  public int b9941;
+  public int b9942;
+  public int b9943;
+  public int b9944;
+  public int b9945;
+  public int b9946;
+  public int b9947;
+  public int b9948;
+  public int b9949;
+  public int b9950;
+  public int b9951;
+  public int b9952;
+  public int b9953;
+  public int b9954;
+  public int b9955;
+  public int b9956;
+  public int b9957;
+  public int b9958;
+  public int b9959;
+  public int b9960;
+  public int b9961;
+  public int b9962;
+  public int b9963;
+  public int b9964;
+  public int b9965;
+  public int b9966;
+  public int b9967;
+  public int b9968;
+  public int b9969;
+  public int b9970;
+  public int b9971;
+  public int b9972;
+  public int b9973;
+  public int b9974;
+  public int b9975;
+  public int b9976;
+  public int b9977;
+  public int b9978;
+  public int b9979;
+  public int b9980;
+  public int b9981;
+  public int b9982;
+  public int b9983;
+  public int b9984;
+  public int b9985;
+  public int b9986;
+  public int b9987;
+  public int b9988;
+  public int b9989;
+  public int b9990;
+  public int b9991;
+  public int b9992;
+  public int b9993;
+  public int b9994;
+  public int b9995;
+  public int b9996;
+  public int b9997;
+  public int b9998;
+  public int b9999;
+  public int b10000;
+  public int b10001;
+  public int b10002;
+  public int b10003;
+  public int b10004;
+  public int b10005;
+  public int b10006;
+  public int b10007;
+  public int b10008;
+  public int b10009;
+  public int b10010;
+  public int b10011;
+  public int b10012;
+  public int b10013;
+  public int b10014;
+  public int b10015;
+  public int b10016;
+  public int b10017;
+  public int b10018;
+  public int b10019;
+  public int b10020;
+  public int b10021;
+  public int b10022;
+  public int b10023;
+  public int b10024;
+  public int b10025;
+  public int b10026;
+  public int b10027;
+  public int b10028;
+  public int b10029;
+  public int b10030;
+  public int b10031;
+  public int b10032;
+  public int b10033;
+  public int b10034;
+  public int b10035;
+  public int b10036;
+  public int b10037;
+  public int b10038;
+  public int b10039;
+  public int b10040;
+  public int b10041;
+  public int b10042;
+  public int b10043;
+  public int b10044;
+  public int b10045;
+  public int b10046;
+  public int b10047;
+  public int b10048;
+  public int b10049;
+  public int b10050;
+  public int b10051;
+  public int b10052;
+  public int b10053;
+  public int b10054;
+  public int b10055;
+  public int b10056;
+  public int b10057;
+  public int b10058;
+  public int b10059;
+  public int b10060;
+  public int b10061;
+  public int b10062;
+  public int b10063;
+  public int b10064;
+  public int b10065;
+  public int b10066;
+  public int b10067;
+  public int b10068;
+  public int b10069;
+  public int b10070;
+  public int b10071;
+  public int b10072;
+  public int b10073;
+  public int b10074;
+  public int b10075;
+  public int b10076;
+  public int b10077;
+  public int b10078;
+  public int b10079;
+  public int b10080;
+  public int b10081;
+  public int b10082;
+  public int b10083;
+  public int b10084;
+  public int b10085;
+  public int b10086;
+  public int b10087;
+  public int b10088;
+  public int b10089;
+  public int b10090;
+  public int b10091;
+  public int b10092;
+  public int b10093;
+  public int b10094;
+  public int b10095;
+  public int b10096;
+  public int b10097;
+  public int b10098;
+  public int b10099;
+  public int b10100;
+  public int b10101;
+  public int b10102;
+  public int b10103;
+  public int b10104;
+  public int b10105;
+  public int b10106;
+  public int b10107;
+  public int b10108;
+  public int b10109;
+  public int b10110;
+  public int b10111;
+  public int b10112;
+  public int b10113;
+  public int b10114;
+  public int b10115;
+  public int b10116;
+  public int b10117;
+  public int b10118;
+  public int b10119;
+  public int b10120;
+  public int b10121;
+  public int b10122;
+  public int b10123;
+  public int b10124;
+  public int b10125;
+  public int b10126;
+  public int b10127;
+  public int b10128;
+  public int b10129;
+  public int b10130;
+  public int b10131;
+  public int b10132;
+  public int b10133;
+  public int b10134;
+  public int b10135;
+  public int b10136;
+  public int b10137;
+  public int b10138;
+  public int b10139;
+  public int b10140;
+  public int b10141;
+  public int b10142;
+  public int b10143;
+  public int b10144;
+  public int b10145;
+  public int b10146;
+  public int b10147;
+  public int b10148;
+  public int b10149;
+  public int b10150;
+  public int b10151;
+  public int b10152;
+  public int b10153;
+  public int b10154;
+  public int b10155;
+  public int b10156;
+  public int b10157;
+  public int b10158;
+  public int b10159;
+  public int b10160;
+  public int b10161;
+  public int b10162;
+  public int b10163;
+  public int b10164;
+  public int b10165;
+  public int b10166;
+  public int b10167;
+  public int b10168;
+  public int b10169;
+  public int b10170;
+  public int b10171;
+  public int b10172;
+  public int b10173;
+  public int b10174;
+  public int b10175;
+  public int b10176;
+  public int b10177;
+  public int b10178;
+  public int b10179;
+  public int b10180;
+  public int b10181;
+  public int b10182;
+  public int b10183;
+  public int b10184;
+  public int b10185;
+  public int b10186;
+  public int b10187;
+  public int b10188;
+  public int b10189;
+  public int b10190;
+  public int b10191;
+  public int b10192;
+  public int b10193;
+  public int b10194;
+  public int b10195;
+  public int b10196;
+  public int b10197;
+  public int b10198;
+  public int b10199;
+  public int b10200;
+  public int b10201;
+  public int b10202;
+  public int b10203;
+  public int b10204;
+  public int b10205;
+  public int b10206;
+  public int b10207;
+  public int b10208;
+  public int b10209;
+  public int b10210;
+  public int b10211;
+  public int b10212;
+  public int b10213;
+  public int b10214;
+  public int b10215;
+  public int b10216;
+  public int b10217;
+  public int b10218;
+  public int b10219;
+  public int b10220;
+  public int b10221;
+  public int b10222;
+  public int b10223;
+  public int b10224;
+  public int b10225;
+  public int b10226;
+  public int b10227;
+  public int b10228;
+  public int b10229;
+  public int b10230;
+  public int b10231;
+  public int b10232;
+  public int b10233;
+  public int b10234;
+  public int b10235;
+  public int b10236;
+  public int b10237;
+  public int b10238;
+  public int b10239;
+  public int b10240;
+  public int b10241;
+  public int b10242;
+  public int b10243;
+  public int b10244;
+  public int b10245;
+  public int b10246;
+  public int b10247;
+  public int b10248;
+  public int b10249;
+  public int b10250;
+  public int b10251;
+  public int b10252;
+  public int b10253;
+  public int b10254;
+  public int b10255;
+  public int b10256;
+  public int b10257;
+  public int b10258;
+  public int b10259;
+  public int b10260;
+  public int b10261;
+  public int b10262;
+  public int b10263;
+  public int b10264;
+  public int b10265;
+  public int b10266;
+  public int b10267;
+  public int b10268;
+  public int b10269;
+  public int b10270;
+  public int b10271;
+  public int b10272;
+  public int b10273;
+  public int b10274;
+  public int b10275;
+  public int b10276;
+  public int b10277;
+  public int b10278;
+  public int b10279;
+  public int b10280;
+  public int b10281;
+  public int b10282;
+  public int b10283;
+  public int b10284;
+  public int b10285;
+  public int b10286;
+  public int b10287;
+  public int b10288;
+  public int b10289;
+  public int b10290;
+  public int b10291;
+  public int b10292;
+  public int b10293;
+  public int b10294;
+  public int b10295;
+  public int b10296;
+  public int b10297;
+  public int b10298;
+  public int b10299;
+  public int b10300;
+  public int b10301;
+  public int b10302;
+  public int b10303;
+  public int b10304;
+  public int b10305;
+  public int b10306;
+  public int b10307;
+  public int b10308;
+  public int b10309;
+  public int b10310;
+  public int b10311;
+  public int b10312;
+  public int b10313;
+  public int b10314;
+  public int b10315;
+  public int b10316;
+  public int b10317;
+  public int b10318;
+  public int b10319;
+  public int b10320;
+  public int b10321;
+  public int b10322;
+  public int b10323;
+  public int b10324;
+  public int b10325;
+  public int b10326;
+  public int b10327;
+  public int b10328;
+  public int b10329;
+  public int b10330;
+  public int b10331;
+  public int b10332;
+  public int b10333;
+  public int b10334;
+  public int b10335;
+  public int b10336;
+  public int b10337;
+  public int b10338;
+  public int b10339;
+  public int b10340;
+  public int b10341;
+  public int b10342;
+  public int b10343;
+  public int b10344;
+  public int b10345;
+  public int b10346;
+  public int b10347;
+  public int b10348;
+  public int b10349;
+  public int b10350;
+  public int b10351;
+  public int b10352;
+  public int b10353;
+  public int b10354;
+  public int b10355;
+  public int b10356;
+  public int b10357;
+  public int b10358;
+  public int b10359;
+  public int b10360;
+  public int b10361;
+  public int b10362;
+  public int b10363;
+  public int b10364;
+  public int b10365;
+  public int b10366;
+  public int b10367;
+  public int b10368;
+  public int b10369;
+  public int b10370;
+  public int b10371;
+  public int b10372;
+  public int b10373;
+  public int b10374;
+  public int b10375;
+  public int b10376;
+  public int b10377;
+  public int b10378;
+  public int b10379;
+  public int b10380;
+  public int b10381;
+  public int b10382;
+  public int b10383;
+  public int b10384;
+  public int b10385;
+  public int b10386;
+  public int b10387;
+  public int b10388;
+  public int b10389;
+  public int b10390;
+  public int b10391;
+  public int b10392;
+  public int b10393;
+  public int b10394;
+  public int b10395;
+  public int b10396;
+  public int b10397;
+  public int b10398;
+  public int b10399;
+  public int b10400;
+  public int b10401;
+  public int b10402;
+  public int b10403;
+  public int b10404;
+  public int b10405;
+  public int b10406;
+  public int b10407;
+  public int b10408;
+  public int b10409;
+  public int b10410;
+  public int b10411;
+  public int b10412;
+  public int b10413;
+  public int b10414;
+  public int b10415;
+  public int b10416;
+  public int b10417;
+  public int b10418;
+  public int b10419;
+  public int b10420;
+  public int b10421;
+  public int b10422;
+  public int b10423;
+  public int b10424;
+  public int b10425;
+  public int b10426;
+  public int b10427;
+  public int b10428;
+  public int b10429;
+  public int b10430;
+  public int b10431;
+  public int b10432;
+  public int b10433;
+  public int b10434;
+  public int b10435;
+  public int b10436;
+  public int b10437;
+  public int b10438;
+  public int b10439;
+  public int b10440;
+  public int b10441;
+  public int b10442;
+  public int b10443;
+  public int b10444;
+  public int b10445;
+  public int b10446;
+  public int b10447;
+  public int b10448;
+  public int b10449;
+  public int b10450;
+  public int b10451;
+  public int b10452;
+  public int b10453;
+  public int b10454;
+  public int b10455;
+  public int b10456;
+  public int b10457;
+  public int b10458;
+  public int b10459;
+  public int b10460;
+  public int b10461;
+  public int b10462;
+  public int b10463;
+  public int b10464;
+  public int b10465;
+  public int b10466;
+  public int b10467;
+  public int b10468;
+  public int b10469;
+  public int b10470;
+  public int b10471;
+  public int b10472;
+  public int b10473;
+  public int b10474;
+  public int b10475;
+  public int b10476;
+  public int b10477;
+  public int b10478;
+  public int b10479;
+  public int b10480;
+  public int b10481;
+  public int b10482;
+  public int b10483;
+  public int b10484;
+  public int b10485;
+  public int b10486;
+  public int b10487;
+  public int b10488;
+  public int b10489;
+  public int b10490;
+  public int b10491;
+  public int b10492;
+  public int b10493;
+  public int b10494;
+  public int b10495;
+  public int b10496;
+  public int b10497;
+  public int b10498;
+  public int b10499;
+  public int b10500;
+  public int b10501;
+  public int b10502;
+  public int b10503;
+  public int b10504;
+  public int b10505;
+  public int b10506;
+  public int b10507;
+  public int b10508;
+  public int b10509;
+  public int b10510;
+  public int b10511;
+  public int b10512;
+  public int b10513;
+  public int b10514;
+  public int b10515;
+  public int b10516;
+  public int b10517;
+  public int b10518;
+  public int b10519;
+  public int b10520;
+  public int b10521;
+  public int b10522;
+  public int b10523;
+  public int b10524;
+  public int b10525;
+  public int b10526;
+  public int b10527;
+  public int b10528;
+  public int b10529;
+  public int b10530;
+  public int b10531;
+  public int b10532;
+  public int b10533;
+  public int b10534;
+  public int b10535;
+  public int b10536;
+  public int b10537;
+  public int b10538;
+  public int b10539;
+  public int b10540;
+  public int b10541;
+  public int b10542;
+  public int b10543;
+  public int b10544;
+  public int b10545;
+  public int b10546;
+  public int b10547;
+  public int b10548;
+  public int b10549;
+  public int b10550;
+  public int b10551;
+  public int b10552;
+  public int b10553;
+  public int b10554;
+  public int b10555;
+  public int b10556;
+  public int b10557;
+  public int b10558;
+  public int b10559;
+  public int b10560;
+  public int b10561;
+  public int b10562;
+  public int b10563;
+  public int b10564;
+  public int b10565;
+  public int b10566;
+  public int b10567;
+  public int b10568;
+  public int b10569;
+  public int b10570;
+  public int b10571;
+  public int b10572;
+  public int b10573;
+  public int b10574;
+  public int b10575;
+  public int b10576;
+  public int b10577;
+  public int b10578;
+  public int b10579;
+  public int b10580;
+  public int b10581;
+  public int b10582;
+  public int b10583;
+  public int b10584;
+  public int b10585;
+  public int b10586;
+  public int b10587;
+  public int b10588;
+  public int b10589;
+  public int b10590;
+  public int b10591;
+  public int b10592;
+  public int b10593;
+  public int b10594;
+  public int b10595;
+  public int b10596;
+  public int b10597;
+  public int b10598;
+  public int b10599;
+  public int b10600;
+  public int b10601;
+  public int b10602;
+  public int b10603;
+  public int b10604;
+  public int b10605;
+  public int b10606;
+  public int b10607;
+  public int b10608;
+  public int b10609;
+  public int b10610;
+  public int b10611;
+  public int b10612;
+  public int b10613;
+  public int b10614;
+  public int b10615;
+  public int b10616;
+  public int b10617;
+  public int b10618;
+  public int b10619;
+  public int b10620;
+  public int b10621;
+  public int b10622;
+  public int b10623;
+  public int b10624;
+  public int b10625;
+  public int b10626;
+  public int b10627;
+  public int b10628;
+  public int b10629;
+  public int b10630;
+  public int b10631;
+  public int b10632;
+  public int b10633;
+  public int b10634;
+  public int b10635;
+  public int b10636;
+  public int b10637;
+  public int b10638;
+  public int b10639;
+  public int b10640;
+  public int b10641;
+  public int b10642;
+  public int b10643;
+  public int b10644;
+  public int b10645;
+  public int b10646;
+  public int b10647;
+  public int b10648;
+  public int b10649;
+  public int b10650;
+  public int b10651;
+  public int b10652;
+  public int b10653;
+  public int b10654;
+  public int b10655;
+  public int b10656;
+  public int b10657;
+  public int b10658;
+  public int b10659;
+  public int b10660;
+  public int b10661;
+  public int b10662;
+  public int b10663;
+  public int b10664;
+  public int b10665;
+  public int b10666;
+  public int b10667;
+  public int b10668;
+  public int b10669;
+  public int b10670;
+  public int b10671;
+  public int b10672;
+  public int b10673;
+  public int b10674;
+  public int b10675;
+  public int b10676;
+  public int b10677;
+  public int b10678;
+  public int b10679;
+  public int b10680;
+  public int b10681;
+  public int b10682;
+  public int b10683;
+  public int b10684;
+  public int b10685;
+  public int b10686;
+  public int b10687;
+  public int b10688;
+  public int b10689;
+  public int b10690;
+  public int b10691;
+  public int b10692;
+  public int b10693;
+  public int b10694;
+  public int b10695;
+  public int b10696;
+  public int b10697;
+  public int b10698;
+  public int b10699;
+  public int b10700;
+  public int b10701;
+  public int b10702;
+  public int b10703;
+  public int b10704;
+  public int b10705;
+  public int b10706;
+  public int b10707;
+  public int b10708;
+  public int b10709;
+  public int b10710;
+  public int b10711;
+  public int b10712;
+  public int b10713;
+  public int b10714;
+  public int b10715;
+  public int b10716;
+  public int b10717;
+  public int b10718;
+  public int b10719;
+  public int b10720;
+  public int b10721;
+  public int b10722;
+  public int b10723;
+  public int b10724;
+  public int b10725;
+  public int b10726;
+  public int b10727;
+  public int b10728;
+  public int b10729;
+  public int b10730;
+  public int b10731;
+  public int b10732;
+  public int b10733;
+  public int b10734;
+  public int b10735;
+  public int b10736;
+  public int b10737;
+  public int b10738;
+  public int b10739;
+  public int b10740;
+  public int b10741;
+  public int b10742;
+  public int b10743;
+  public int b10744;
+  public int b10745;
+  public int b10746;
+  public int b10747;
+  public int b10748;
+  public int b10749;
+  public int b10750;
+  public int b10751;
+  public int b10752;
+  public int b10753;
+  public int b10754;
+  public int b10755;
+  public int b10756;
+  public int b10757;
+  public int b10758;
+  public int b10759;
+  public int b10760;
+  public int b10761;
+  public int b10762;
+  public int b10763;
+  public int b10764;
+  public int b10765;
+  public int b10766;
+  public int b10767;
+  public int b10768;
+  public int b10769;
+  public int b10770;
+  public int b10771;
+  public int b10772;
+  public int b10773;
+  public int b10774;
+  public int b10775;
+  public int b10776;
+  public int b10777;
+  public int b10778;
+  public int b10779;
+  public int b10780;
+  public int b10781;
+  public int b10782;
+  public int b10783;
+  public int b10784;
+  public int b10785;
+  public int b10786;
+  public int b10787;
+  public int b10788;
+  public int b10789;
+  public int b10790;
+  public int b10791;
+  public int b10792;
+  public int b10793;
+  public int b10794;
+  public int b10795;
+  public int b10796;
+  public int b10797;
+  public int b10798;
+  public int b10799;
+  public int b10800;
+  public int b10801;
+  public int b10802;
+  public int b10803;
+  public int b10804;
+  public int b10805;
+  public int b10806;
+  public int b10807;
+  public int b10808;
+  public int b10809;
+  public int b10810;
+  public int b10811;
+  public int b10812;
+  public int b10813;
+  public int b10814;
+  public int b10815;
+  public int b10816;
+  public int b10817;
+  public int b10818;
+  public int b10819;
+  public int b10820;
+  public int b10821;
+  public int b10822;
+  public int b10823;
+  public int b10824;
+  public int b10825;
+  public int b10826;
+  public int b10827;
+  public int b10828;
+  public int b10829;
+  public int b10830;
+  public int b10831;
+  public int b10832;
+  public int b10833;
+  public int b10834;
+  public int b10835;
+  public int b10836;
+  public int b10837;
+  public int b10838;
+  public int b10839;
+  public int b10840;
+  public int b10841;
+  public int b10842;
+  public int b10843;
+  public int b10844;
+  public int b10845;
+  public int b10846;
+  public int b10847;
+  public int b10848;
+  public int b10849;
+  public int b10850;
+  public int b10851;
+  public int b10852;
+  public int b10853;
+  public int b10854;
+  public int b10855;
+  public int b10856;
+  public int b10857;
+  public int b10858;
+  public int b10859;
+  public int b10860;
+  public int b10861;
+  public int b10862;
+  public int b10863;
+  public int b10864;
+  public int b10865;
+  public int b10866;
+  public int b10867;
+  public int b10868;
+  public int b10869;
+  public int b10870;
+  public int b10871;
+  public int b10872;
+  public int b10873;
+  public int b10874;
+  public int b10875;
+  public int b10876;
+  public int b10877;
+  public int b10878;
+  public int b10879;
+  public int b10880;
+  public int b10881;
+  public int b10882;
+  public int b10883;
+  public int b10884;
+  public int b10885;
+  public int b10886;
+  public int b10887;
+  public int b10888;
+  public int b10889;
+  public int b10890;
+  public int b10891;
+  public int b10892;
+  public int b10893;
+  public int b10894;
+  public int b10895;
+  public int b10896;
+  public int b10897;
+  public int b10898;
+  public int b10899;
+  public int b10900;
+  public int b10901;
+  public int b10902;
+  public int b10903;
+  public int b10904;
+  public int b10905;
+  public int b10906;
+  public int b10907;
+  public int b10908;
+  public int b10909;
+  public int b10910;
+  public int b10911;
+  public int b10912;
+  public int b10913;
+  public int b10914;
+  public int b10915;
+  public int b10916;
+  public int b10917;
+  public int b10918;
+  public int b10919;
+  public int b10920;
+  public int b10921;
+  public int b10922;
+  public int b10923;
+  public int b10924;
+  public int b10925;
+  public int b10926;
+  public int b10927;
+  public int b10928;
+  public int b10929;
+  public int b10930;
+  public int b10931;
+  public int b10932;
+  public int b10933;
+  public int b10934;
+  public int b10935;
+  public int b10936;
+  public int b10937;
+  public int b10938;
+  public int b10939;
+  public int b10940;
+  public int b10941;
+  public int b10942;
+  public int b10943;
+  public int b10944;
+  public int b10945;
+  public int b10946;
+  public int b10947;
+  public int b10948;
+  public int b10949;
+  public int b10950;
+  public int b10951;
+  public int b10952;
+  public int b10953;
+  public int b10954;
+  public int b10955;
+  public int b10956;
+  public int b10957;
+  public int b10958;
+  public int b10959;
+  public int b10960;
+  public int b10961;
+  public int b10962;
+  public int b10963;
+  public int b10964;
+  public int b10965;
+  public int b10966;
+  public int b10967;
+  public int b10968;
+  public int b10969;
+  public int b10970;
+  public int b10971;
+  public int b10972;
+  public int b10973;
+  public int b10974;
+  public int b10975;
+  public int b10976;
+  public int b10977;
+  public int b10978;
+  public int b10979;
+  public int b10980;
+  public int b10981;
+  public int b10982;
+  public int b10983;
+  public int b10984;
+  public int b10985;
+  public int b10986;
+  public int b10987;
+  public int b10988;
+  public int b10989;
+  public int b10990;
+  public int b10991;
+  public int b10992;
+  public int b10993;
+  public int b10994;
+  public int b10995;
+  public int b10996;
+  public int b10997;
+  public int b10998;
+  public int b10999;
+  public int b11000;
+  public int b11001;
+  public int b11002;
+  public int b11003;
+  public int b11004;
+  public int b11005;
+  public int b11006;
+  public int b11007;
+  public int b11008;
+  public int b11009;
+  public int b11010;
+  public int b11011;
+  public int b11012;
+  public int b11013;
+  public int b11014;
+  public int b11015;
+  public int b11016;
+  public int b11017;
+  public int b11018;
+  public int b11019;
+  public int b11020;
+  public int b11021;
+  public int b11022;
+  public int b11023;
+  public int b11024;
+  public int b11025;
+  public int b11026;
+  public int b11027;
+  public int b11028;
+  public int b11029;
+  public int b11030;
+  public int b11031;
+  public int b11032;
+  public int b11033;
+  public int b11034;
+  public int b11035;
+  public int b11036;
+  public int b11037;
+  public int b11038;
+  public int b11039;
+  public int b11040;
+  public int b11041;
+  public int b11042;
+  public int b11043;
+  public int b11044;
+  public int b11045;
+  public int b11046;
+  public int b11047;
+  public int b11048;
+  public int b11049;
+  public int b11050;
+  public int b11051;
+  public int b11052;
+  public int b11053;
+  public int b11054;
+  public int b11055;
+  public int b11056;
+  public int b11057;
+  public int b11058;
+  public int b11059;
+  public int b11060;
+  public int b11061;
+  public int b11062;
+  public int b11063;
+  public int b11064;
+  public int b11065;
+  public int b11066;
+  public int b11067;
+  public int b11068;
+  public int b11069;
+  public int b11070;
+  public int b11071;
+  public int b11072;
+  public int b11073;
+  public int b11074;
+  public int b11075;
+  public int b11076;
+  public int b11077;
+  public int b11078;
+  public int b11079;
+  public int b11080;
+  public int b11081;
+  public int b11082;
+  public int b11083;
+  public int b11084;
+  public int b11085;
+  public int b11086;
+  public int b11087;
+  public int b11088;
+  public int b11089;
+  public int b11090;
+  public int b11091;
+  public int b11092;
+  public int b11093;
+  public int b11094;
+  public int b11095;
+  public int b11096;
+  public int b11097;
+  public int b11098;
+  public int b11099;
+  public int b11100;
+  public int b11101;
+  public int b11102;
+  public int b11103;
+  public int b11104;
+  public int b11105;
+  public int b11106;
+  public int b11107;
+  public int b11108;
+  public int b11109;
+  public int b11110;
+  public int b11111;
+  public int b11112;
+  public int b11113;
+  public int b11114;
+  public int b11115;
+  public int b11116;
+  public int b11117;
+  public int b11118;
+  public int b11119;
+  public int b11120;
+  public int b11121;
+  public int b11122;
+  public int b11123;
+  public int b11124;
+  public int b11125;
+  public int b11126;
+  public int b11127;
+  public int b11128;
+  public int b11129;
+  public int b11130;
+  public int b11131;
+  public int b11132;
+  public int b11133;
+  public int b11134;
+  public int b11135;
+  public int b11136;
+  public int b11137;
+  public int b11138;
+  public int b11139;
+  public int b11140;
+  public int b11141;
+  public int b11142;
+  public int b11143;
+  public int b11144;
+  public int b11145;
+  public int b11146;
+  public int b11147;
+  public int b11148;
+  public int b11149;
+  public int b11150;
+  public int b11151;
+  public int b11152;
+  public int b11153;
+  public int b11154;
+  public int b11155;
+  public int b11156;
+  public int b11157;
+  public int b11158;
+  public int b11159;
+  public int b11160;
+  public int b11161;
+  public int b11162;
+  public int b11163;
+  public int b11164;
+  public int b11165;
+  public int b11166;
+  public int b11167;
+  public int b11168;
+  public int b11169;
+  public int b11170;
+  public int b11171;
+  public int b11172;
+  public int b11173;
+  public int b11174;
+  public int b11175;
+  public int b11176;
+  public int b11177;
+  public int b11178;
+  public int b11179;
+  public int b11180;
+  public int b11181;
+  public int b11182;
+  public int b11183;
+  public int b11184;
+  public int b11185;
+  public int b11186;
+  public int b11187;
+  public int b11188;
+  public int b11189;
+  public int b11190;
+  public int b11191;
+  public int b11192;
+  public int b11193;
+  public int b11194;
+  public int b11195;
+  public int b11196;
+  public int b11197;
+  public int b11198;
+  public int b11199;
+  public int b11200;
+  public int b11201;
+  public int b11202;
+  public int b11203;
+  public int b11204;
+  public int b11205;
+  public int b11206;
+  public int b11207;
+  public int b11208;
+  public int b11209;
+  public int b11210;
+  public int b11211;
+  public int b11212;
+  public int b11213;
+  public int b11214;
+  public int b11215;
+  public int b11216;
+  public int b11217;
+  public int b11218;
+  public int b11219;
+  public int b11220;
+  public int b11221;
+  public int b11222;
+  public int b11223;
+  public int b11224;
+  public int b11225;
+  public int b11226;
+  public int b11227;
+  public int b11228;
+  public int b11229;
+  public int b11230;
+  public int b11231;
+  public int b11232;
+  public int b11233;
+  public int b11234;
+  public int b11235;
+  public int b11236;
+  public int b11237;
+  public int b11238;
+  public int b11239;
+  public int b11240;
+  public int b11241;
+  public int b11242;
+  public int b11243;
+  public int b11244;
+  public int b11245;
+  public int b11246;
+  public int b11247;
+  public int b11248;
+  public int b11249;
+  public int b11250;
+  public int b11251;
+  public int b11252;
+  public int b11253;
+  public int b11254;
+  public int b11255;
+  public int b11256;
+  public int b11257;
+  public int b11258;
+  public int b11259;
+  public int b11260;
+  public int b11261;
+  public int b11262;
+  public int b11263;
+  public int b11264;
+  public int b11265;
+  public int b11266;
+  public int b11267;
+  public int b11268;
+  public int b11269;
+  public int b11270;
+  public int b11271;
+  public int b11272;
+  public int b11273;
+  public int b11274;
+  public int b11275;
+  public int b11276;
+  public int b11277;
+  public int b11278;
+  public int b11279;
+  public int b11280;
+  public int b11281;
+  public int b11282;
+  public int b11283;
+  public int b11284;
+  public int b11285;
+  public int b11286;
+  public int b11287;
+  public int b11288;
+  public int b11289;
+  public int b11290;
+  public int b11291;
+  public int b11292;
+  public int b11293;
+  public int b11294;
+  public int b11295;
+  public int b11296;
+  public int b11297;
+  public int b11298;
+  public int b11299;
+  public int b11300;
+  public int b11301;
+  public int b11302;
+  public int b11303;
+  public int b11304;
+  public int b11305;
+  public int b11306;
+  public int b11307;
+  public int b11308;
+  public int b11309;
+  public int b11310;
+  public int b11311;
+  public int b11312;
+  public int b11313;
+  public int b11314;
+  public int b11315;
+  public int b11316;
+  public int b11317;
+  public int b11318;
+  public int b11319;
+  public int b11320;
+  public int b11321;
+  public int b11322;
+  public int b11323;
+  public int b11324;
+  public int b11325;
+  public int b11326;
+  public int b11327;
+  public int b11328;
+  public int b11329;
+  public int b11330;
+  public int b11331;
+  public int b11332;
+  public int b11333;
+  public int b11334;
+  public int b11335;
+  public int b11336;
+  public int b11337;
+  public int b11338;
+  public int b11339;
+  public int b11340;
+  public int b11341;
+  public int b11342;
+  public int b11343;
+  public int b11344;
+  public int b11345;
+  public int b11346;
+  public int b11347;
+  public int b11348;
+  public int b11349;
+  public int b11350;
+  public int b11351;
+  public int b11352;
+  public int b11353;
+  public int b11354;
+  public int b11355;
+  public int b11356;
+  public int b11357;
+  public int b11358;
+  public int b11359;
+  public int b11360;
+  public int b11361;
+  public int b11362;
+  public int b11363;
+  public int b11364;
+  public int b11365;
+  public int b11366;
+  public int b11367;
+  public int b11368;
+  public int b11369;
+  public int b11370;
+  public int b11371;
+  public int b11372;
+  public int b11373;
+  public int b11374;
+  public int b11375;
+  public int b11376;
+  public int b11377;
+  public int b11378;
+  public int b11379;
+  public int b11380;
+  public int b11381;
+  public int b11382;
+  public int b11383;
+  public int b11384;
+  public int b11385;
+  public int b11386;
+  public int b11387;
+  public int b11388;
+  public int b11389;
+  public int b11390;
+  public int b11391;
+  public int b11392;
+  public int b11393;
+  public int b11394;
+  public int b11395;
+  public int b11396;
+  public int b11397;
+  public int b11398;
+  public int b11399;
+  public int b11400;
+  public int b11401;
+  public int b11402;
+  public int b11403;
+  public int b11404;
+  public int b11405;
+  public int b11406;
+  public int b11407;
+  public int b11408;
+  public int b11409;
+  public int b11410;
+  public int b11411;
+  public int b11412;
+  public int b11413;
+  public int b11414;
+  public int b11415;
+  public int b11416;
+  public int b11417;
+  public int b11418;
+  public int b11419;
+  public int b11420;
+  public int b11421;
+  public int b11422;
+  public int b11423;
+  public int b11424;
+  public int b11425;
+  public int b11426;
+  public int b11427;
+  public int b11428;
+  public int b11429;
+  public int b11430;
+  public int b11431;
+  public int b11432;
+  public int b11433;
+  public int b11434;
+  public int b11435;
+  public int b11436;
+  public int b11437;
+  public int b11438;
+  public int b11439;
+  public int b11440;
+  public int b11441;
+  public int b11442;
+  public int b11443;
+  public int b11444;
+  public int b11445;
+  public int b11446;
+  public int b11447;
+  public int b11448;
+  public int b11449;
+  public int b11450;
+  public int b11451;
+  public int b11452;
+  public int b11453;
+  public int b11454;
+  public int b11455;
+  public int b11456;
+  public int b11457;
+  public int b11458;
+  public int b11459;
+  public int b11460;
+  public int b11461;
+  public int b11462;
+  public int b11463;
+  public int b11464;
+  public int b11465;
+  public int b11466;
+  public int b11467;
+  public int b11468;
+  public int b11469;
+  public int b11470;
+  public int b11471;
+  public int b11472;
+  public int b11473;
+  public int b11474;
+  public int b11475;
+  public int b11476;
+  public int b11477;
+  public int b11478;
+  public int b11479;
+  public int b11480;
+  public int b11481;
+  public int b11482;
+  public int b11483;
+  public int b11484;
+  public int b11485;
+  public int b11486;
+  public int b11487;
+  public int b11488;
+  public int b11489;
+  public int b11490;
+  public int b11491;
+  public int b11492;
+  public int b11493;
+  public int b11494;
+  public int b11495;
+  public int b11496;
+  public int b11497;
+  public int b11498;
+  public int b11499;
+  public int b11500;
+  public int b11501;
+  public int b11502;
+  public int b11503;
+  public int b11504;
+  public int b11505;
+  public int b11506;
+  public int b11507;
+  public int b11508;
+  public int b11509;
+  public int b11510;
+  public int b11511;
+  public int b11512;
+  public int b11513;
+  public int b11514;
+  public int b11515;
+  public int b11516;
+  public int b11517;
+  public int b11518;
+  public int b11519;
+  public int b11520;
+  public int b11521;
+  public int b11522;
+  public int b11523;
+  public int b11524;
+  public int b11525;
+  public int b11526;
+  public int b11527;
+  public int b11528;
+  public int b11529;
+  public int b11530;
+  public int b11531;
+  public int b11532;
+  public int b11533;
+  public int b11534;
+  public int b11535;
+  public int b11536;
+  public int b11537;
+  public int b11538;
+  public int b11539;
+  public int b11540;
+  public int b11541;
+  public int b11542;
+  public int b11543;
+  public int b11544;
+  public int b11545;
+  public int b11546;
+  public int b11547;
+  public int b11548;
+  public int b11549;
+  public int b11550;
+  public int b11551;
+  public int b11552;
+  public int b11553;
+  public int b11554;
+  public int b11555;
+  public int b11556;
+  public int b11557;
+  public int b11558;
+  public int b11559;
+  public int b11560;
+  public int b11561;
+  public int b11562;
+  public int b11563;
+  public int b11564;
+  public int b11565;
+  public int b11566;
+  public int b11567;
+  public int b11568;
+  public int b11569;
+  public int b11570;
+  public int b11571;
+  public int b11572;
+  public int b11573;
+  public int b11574;
+  public int b11575;
+  public int b11576;
+  public int b11577;
+  public int b11578;
+  public int b11579;
+  public int b11580;
+  public int b11581;
+  public int b11582;
+  public int b11583;
+  public int b11584;
+  public int b11585;
+  public int b11586;
+  public int b11587;
+  public int b11588;
+  public int b11589;
+  public int b11590;
+  public int b11591;
+  public int b11592;
+  public int b11593;
+  public int b11594;
+  public int b11595;
+  public int b11596;
+  public int b11597;
+  public int b11598;
+  public int b11599;
+  public int b11600;
+  public int b11601;
+  public int b11602;
+  public int b11603;
+  public int b11604;
+  public int b11605;
+  public int b11606;
+  public int b11607;
+  public int b11608;
+  public int b11609;
+  public int b11610;
+  public int b11611;
+  public int b11612;
+  public int b11613;
+  public int b11614;
+  public int b11615;
+  public int b11616;
+  public int b11617;
+  public int b11618;
+  public int b11619;
+  public int b11620;
+  public int b11621;
+  public int b11622;
+  public int b11623;
+  public int b11624;
+  public int b11625;
+  public int b11626;
+  public int b11627;
+  public int b11628;
+  public int b11629;
+  public int b11630;
+  public int b11631;
+  public int b11632;
+  public int b11633;
+  public int b11634;
+  public int b11635;
+  public int b11636;
+  public int b11637;
+  public int b11638;
+  public int b11639;
+  public int b11640;
+  public int b11641;
+  public int b11642;
+  public int b11643;
+  public int b11644;
+  public int b11645;
+  public int b11646;
+  public int b11647;
+  public int b11648;
+  public int b11649;
+  public int b11650;
+  public int b11651;
+  public int b11652;
+  public int b11653;
+  public int b11654;
+  public int b11655;
+  public int b11656;
+  public int b11657;
+  public int b11658;
+  public int b11659;
+  public int b11660;
+  public int b11661;
+  public int b11662;
+  public int b11663;
+  public int b11664;
+  public int b11665;
+  public int b11666;
+  public int b11667;
+  public int b11668;
+  public int b11669;
+  public int b11670;
+  public int b11671;
+  public int b11672;
+  public int b11673;
+  public int b11674;
+  public int b11675;
+  public int b11676;
+  public int b11677;
+  public int b11678;
+  public int b11679;
+  public int b11680;
+  public int b11681;
+  public int b11682;
+  public int b11683;
+  public int b11684;
+  public int b11685;
+  public int b11686;
+  public int b11687;
+  public int b11688;
+  public int b11689;
+  public int b11690;
+  public int b11691;
+  public int b11692;
+  public int b11693;
+  public int b11694;
+  public int b11695;
+  public int b11696;
+  public int b11697;
+  public int b11698;
+  public int b11699;
+  public int b11700;
+  public int b11701;
+  public int b11702;
+  public int b11703;
+  public int b11704;
+  public int b11705;
+  public int b11706;
+  public int b11707;
+  public int b11708;
+  public int b11709;
+  public int b11710;
+  public int b11711;
+  public int b11712;
+  public int b11713;
+  public int b11714;
+  public int b11715;
+  public int b11716;
+  public int b11717;
+  public int b11718;
+  public int b11719;
+  public int b11720;
+  public int b11721;
+  public int b11722;
+  public int b11723;
+  public int b11724;
+  public int b11725;
+  public int b11726;
+  public int b11727;
+  public int b11728;
+  public int b11729;
+  public int b11730;
+  public int b11731;
+  public int b11732;
+  public int b11733;
+  public int b11734;
+  public int b11735;
+  public int b11736;
+  public int b11737;
+  public int b11738;
+  public int b11739;
+  public int b11740;
+  public int b11741;
+  public int b11742;
+  public int b11743;
+  public int b11744;
+  public int b11745;
+  public int b11746;
+  public int b11747;
+  public int b11748;
+  public int b11749;
+  public int b11750;
+  public int b11751;
+  public int b11752;
+  public int b11753;
+  public int b11754;
+  public int b11755;
+  public int b11756;
+  public int b11757;
+  public int b11758;
+  public int b11759;
+  public int b11760;
+  public int b11761;
+  public int b11762;
+  public int b11763;
+  public int b11764;
+  public int b11765;
+  public int b11766;
+  public int b11767;
+  public int b11768;
+  public int b11769;
+  public int b11770;
+  public int b11771;
+  public int b11772;
+  public int b11773;
+  public int b11774;
+  public int b11775;
+  public int b11776;
+  public int b11777;
+  public int b11778;
+  public int b11779;
+  public int b11780;
+  public int b11781;
+  public int b11782;
+  public int b11783;
+  public int b11784;
+  public int b11785;
+  public int b11786;
+  public int b11787;
+  public int b11788;
+  public int b11789;
+  public int b11790;
+  public int b11791;
+  public int b11792;
+  public int b11793;
+  public int b11794;
+  public int b11795;
+  public int b11796;
+  public int b11797;
+  public int b11798;
+  public int b11799;
+  public int b11800;
+  public int b11801;
+  public int b11802;
+  public int b11803;
+  public int b11804;
+  public int b11805;
+  public int b11806;
+  public int b11807;
+  public int b11808;
+  public int b11809;
+  public int b11810;
+  public int b11811;
+  public int b11812;
+  public int b11813;
+  public int b11814;
+  public int b11815;
+  public int b11816;
+  public int b11817;
+  public int b11818;
+  public int b11819;
+  public int b11820;
+  public int b11821;
+  public int b11822;
+  public int b11823;
+  public int b11824;
+  public int b11825;
+  public int b11826;
+  public int b11827;
+  public int b11828;
+  public int b11829;
+  public int b11830;
+  public int b11831;
+  public int b11832;
+  public int b11833;
+  public int b11834;
+  public int b11835;
+  public int b11836;
+  public int b11837;
+  public int b11838;
+  public int b11839;
+  public int b11840;
+  public int b11841;
+  public int b11842;
+  public int b11843;
+  public int b11844;
+  public int b11845;
+  public int b11846;
+  public int b11847;
+  public int b11848;
+  public int b11849;
+  public int b11850;
+  public int b11851;
+  public int b11852;
+  public int b11853;
+  public int b11854;
+  public int b11855;
+  public int b11856;
+  public int b11857;
+  public int b11858;
+  public int b11859;
+  public int b11860;
+  public int b11861;
+  public int b11862;
+  public int b11863;
+  public int b11864;
+  public int b11865;
+  public int b11866;
+  public int b11867;
+  public int b11868;
+  public int b11869;
+  public int b11870;
+  public int b11871;
+  public int b11872;
+  public int b11873;
+  public int b11874;
+  public int b11875;
+  public int b11876;
+  public int b11877;
+  public int b11878;
+  public int b11879;
+  public int b11880;
+  public int b11881;
+  public int b11882;
+  public int b11883;
+  public int b11884;
+  public int b11885;
+  public int b11886;
+  public int b11887;
+  public int b11888;
+  public int b11889;
+  public int b11890;
+  public int b11891;
+  public int b11892;
+  public int b11893;
+  public int b11894;
+  public int b11895;
+  public int b11896;
+  public int b11897;
+  public int b11898;
+  public int b11899;
+  public int b11900;
+  public int b11901;
+  public int b11902;
+  public int b11903;
+  public int b11904;
+  public int b11905;
+  public int b11906;
+  public int b11907;
+  public int b11908;
+  public int b11909;
+  public int b11910;
+  public int b11911;
+  public int b11912;
+  public int b11913;
+  public int b11914;
+  public int b11915;
+  public int b11916;
+  public int b11917;
+  public int b11918;
+  public int b11919;
+  public int b11920;
+  public int b11921;
+  public int b11922;
+  public int b11923;
+  public int b11924;
+  public int b11925;
+  public int b11926;
+  public int b11927;
+  public int b11928;
+  public int b11929;
+  public int b11930;
+  public int b11931;
+  public int b11932;
+  public int b11933;
+  public int b11934;
+  public int b11935;
+  public int b11936;
+  public int b11937;
+  public int b11938;
+  public int b11939;
+  public int b11940;
+  public int b11941;
+  public int b11942;
+  public int b11943;
+  public int b11944;
+  public int b11945;
+  public int b11946;
+  public int b11947;
+  public int b11948;
+  public int b11949;
+  public int b11950;
+  public int b11951;
+  public int b11952;
+  public int b11953;
+  public int b11954;
+  public int b11955;
+  public int b11956;
+  public int b11957;
+  public int b11958;
+  public int b11959;
+  public int b11960;
+  public int b11961;
+  public int b11962;
+  public int b11963;
+  public int b11964;
+  public int b11965;
+  public int b11966;
+  public int b11967;
+  public int b11968;
+  public int b11969;
+  public int b11970;
+  public int b11971;
+  public int b11972;
+  public int b11973;
+  public int b11974;
+  public int b11975;
+  public int b11976;
+  public int b11977;
+  public int b11978;
+  public int b11979;
+  public int b11980;
+  public int b11981;
+  public int b11982;
+  public int b11983;
+  public int b11984;
+  public int b11985;
+  public int b11986;
+  public int b11987;
+  public int b11988;
+  public int b11989;
+  public int b11990;
+  public int b11991;
+  public int b11992;
+  public int b11993;
+  public int b11994;
+  public int b11995;
+  public int b11996;
+  public int b11997;
+  public int b11998;
+  public int b11999;
+  public int b12000;
+  public int b12001;
+  public int b12002;
+  public int b12003;
+  public int b12004;
+  public int b12005;
+  public int b12006;
+  public int b12007;
+  public int b12008;
+  public int b12009;
+  public int b12010;
+  public int b12011;
+  public int b12012;
+  public int b12013;
+  public int b12014;
+  public int b12015;
+  public int b12016;
+  public int b12017;
+  public int b12018;
+  public int b12019;
+  public int b12020;
+  public int b12021;
+  public int b12022;
+  public int b12023;
+  public int b12024;
+  public int b12025;
+  public int b12026;
+  public int b12027;
+  public int b12028;
+  public int b12029;
+  public int b12030;
+  public int b12031;
+  public int b12032;
+  public int b12033;
+  public int b12034;
+  public int b12035;
+  public int b12036;
+  public int b12037;
+  public int b12038;
+  public int b12039;
+  public int b12040;
+  public int b12041;
+  public int b12042;
+  public int b12043;
+  public int b12044;
+  public int b12045;
+  public int b12046;
+  public int b12047;
+  public int b12048;
+  public int b12049;
+  public int b12050;
+  public int b12051;
+  public int b12052;
+  public int b12053;
+  public int b12054;
+  public int b12055;
+  public int b12056;
+  public int b12057;
+  public int b12058;
+  public int b12059;
+  public int b12060;
+  public int b12061;
+  public int b12062;
+  public int b12063;
+  public int b12064;
+  public int b12065;
+  public int b12066;
+  public int b12067;
+  public int b12068;
+  public int b12069;
+  public int b12070;
+  public int b12071;
+  public int b12072;
+  public int b12073;
+  public int b12074;
+  public int b12075;
+  public int b12076;
+  public int b12077;
+  public int b12078;
+  public int b12079;
+  public int b12080;
+  public int b12081;
+  public int b12082;
+  public int b12083;
+  public int b12084;
+  public int b12085;
+  public int b12086;
+  public int b12087;
+  public int b12088;
+  public int b12089;
+  public int b12090;
+  public int b12091;
+  public int b12092;
+  public int b12093;
+  public int b12094;
+  public int b12095;
+  public int b12096;
+  public int b12097;
+  public int b12098;
+  public int b12099;
+  public int b12100;
+  public int b12101;
+  public int b12102;
+  public int b12103;
+  public int b12104;
+  public int b12105;
+  public int b12106;
+  public int b12107;
+  public int b12108;
+  public int b12109;
+  public int b12110;
+  public int b12111;
+  public int b12112;
+  public int b12113;
+  public int b12114;
+  public int b12115;
+  public int b12116;
+  public int b12117;
+  public int b12118;
+  public int b12119;
+  public int b12120;
+  public int b12121;
+  public int b12122;
+  public int b12123;
+  public int b12124;
+  public int b12125;
+  public int b12126;
+  public int b12127;
+  public int b12128;
+  public int b12129;
+  public int b12130;
+  public int b12131;
+  public int b12132;
+  public int b12133;
+  public int b12134;
+  public int b12135;
+  public int b12136;
+  public int b12137;
+  public int b12138;
+  public int b12139;
+  public int b12140;
+  public int b12141;
+  public int b12142;
+  public int b12143;
+  public int b12144;
+  public int b12145;
+  public int b12146;
+  public int b12147;
+  public int b12148;
+  public int b12149;
+  public int b12150;
+  public int b12151;
+  public int b12152;
+  public int b12153;
+  public int b12154;
+  public int b12155;
+  public int b12156;
+  public int b12157;
+  public int b12158;
+  public int b12159;
+  public int b12160;
+  public int b12161;
+  public int b12162;
+  public int b12163;
+  public int b12164;
+  public int b12165;
+  public int b12166;
+  public int b12167;
+  public int b12168;
+  public int b12169;
+  public int b12170;
+  public int b12171;
+  public int b12172;
+  public int b12173;
+  public int b12174;
+  public int b12175;
+  public int b12176;
+  public int b12177;
+  public int b12178;
+  public int b12179;
+  public int b12180;
+  public int b12181;
+  public int b12182;
+  public int b12183;
+  public int b12184;
+  public int b12185;
+  public int b12186;
+  public int b12187;
+  public int b12188;
+  public int b12189;
+  public int b12190;
+  public int b12191;
+  public int b12192;
+  public int b12193;
+  public int b12194;
+  public int b12195;
+  public int b12196;
+  public int b12197;
+  public int b12198;
+  public int b12199;
+  public int b12200;
+  public int b12201;
+  public int b12202;
+  public int b12203;
+  public int b12204;
+  public int b12205;
+  public int b12206;
+  public int b12207;
+  public int b12208;
+  public int b12209;
+  public int b12210;
+  public int b12211;
+  public int b12212;
+  public int b12213;
+  public int b12214;
+  public int b12215;
+  public int b12216;
+  public int b12217;
+  public int b12218;
+  public int b12219;
+  public int b12220;
+  public int b12221;
+  public int b12222;
+  public int b12223;
+  public int b12224;
+  public int b12225;
+  public int b12226;
+  public int b12227;
+  public int b12228;
+  public int b12229;
+  public int b12230;
+  public int b12231;
+  public int b12232;
+  public int b12233;
+  public int b12234;
+  public int b12235;
+  public int b12236;
+  public int b12237;
+  public int b12238;
+  public int b12239;
+  public int b12240;
+  public int b12241;
+  public int b12242;
+  public int b12243;
+  public int b12244;
+  public int b12245;
+  public int b12246;
+  public int b12247;
+  public int b12248;
+  public int b12249;
+  public int b12250;
+  public int b12251;
+  public int b12252;
+  public int b12253;
+  public int b12254;
+  public int b12255;
+  public int b12256;
+  public int b12257;
+  public int b12258;
+  public int b12259;
+  public int b12260;
+  public int b12261;
+  public int b12262;
+  public int b12263;
+  public int b12264;
+  public int b12265;
+  public int b12266;
+  public int b12267;
+  public int b12268;
+  public int b12269;
+  public int b12270;
+  public int b12271;
+  public int b12272;
+  public int b12273;
+  public int b12274;
+  public int b12275;
+  public int b12276;
+  public int b12277;
+  public int b12278;
+  public int b12279;
+  public int b12280;
+  public int b12281;
+  public int b12282;
+  public int b12283;
+  public int b12284;
+  public int b12285;
+  public int b12286;
+  public int b12287;
+  public int b12288;
+  public int b12289;
+  public int b12290;
+  public int b12291;
+  public int b12292;
+  public int b12293;
+  public int b12294;
+  public int b12295;
+  public int b12296;
+  public int b12297;
+  public int b12298;
+  public int b12299;
+  public int b12300;
+  public int b12301;
+  public int b12302;
+  public int b12303;
+  public int b12304;
+  public int b12305;
+  public int b12306;
+  public int b12307;
+  public int b12308;
+  public int b12309;
+  public int b12310;
+  public int b12311;
+  public int b12312;
+  public int b12313;
+  public int b12314;
+  public int b12315;
+  public int b12316;
+  public int b12317;
+  public int b12318;
+  public int b12319;
+  public int b12320;
+  public int b12321;
+  public int b12322;
+  public int b12323;
+  public int b12324;
+  public int b12325;
+  public int b12326;
+  public int b12327;
+  public int b12328;
+  public int b12329;
+  public int b12330;
+  public int b12331;
+  public int b12332;
+  public int b12333;
+  public int b12334;
+  public int b12335;
+  public int b12336;
+  public int b12337;
+  public int b12338;
+  public int b12339;
+  public int b12340;
+  public int b12341;
+  public int b12342;
+  public int b12343;
+  public int b12344;
+  public int b12345;
+  public int b12346;
+  public int b12347;
+  public int b12348;
+  public int b12349;
+  public int b12350;
+  public int b12351;
+  public int b12352;
+  public int b12353;
+  public int b12354;
+  public int b12355;
+  public int b12356;
+  public int b12357;
+  public int b12358;
+  public int b12359;
+  public int b12360;
+  public int b12361;
+  public int b12362;
+  public int b12363;
+  public int b12364;
+  public int b12365;
+  public int b12366;
+  public int b12367;
+  public int b12368;
+  public int b12369;
+  public int b12370;
+  public int b12371;
+  public int b12372;
+  public int b12373;
+  public int b12374;
+  public int b12375;
+  public int b12376;
+  public int b12377;
+  public int b12378;
+  public int b12379;
+  public int b12380;
+  public int b12381;
+  public int b12382;
+  public int b12383;
+  public int b12384;
+  public int b12385;
+  public int b12386;
+  public int b12387;
+  public int b12388;
+  public int b12389;
+  public int b12390;
+  public int b12391;
+  public int b12392;
+  public int b12393;
+  public int b12394;
+  public int b12395;
+  public int b12396;
+  public int b12397;
+  public int b12398;
+  public int b12399;
+  public int b12400;
+  public int b12401;
+  public int b12402;
+  public int b12403;
+  public int b12404;
+  public int b12405;
+  public int b12406;
+  public int b12407;
+  public int b12408;
+  public int b12409;
+  public int b12410;
+  public int b12411;
+  public int b12412;
+  public int b12413;
+  public int b12414;
+  public int b12415;
+  public int b12416;
+  public int b12417;
+  public int b12418;
+  public int b12419;
+  public int b12420;
+  public int b12421;
+  public int b12422;
+  public int b12423;
+  public int b12424;
+  public int b12425;
+  public int b12426;
+  public int b12427;
+  public int b12428;
+  public int b12429;
+  public int b12430;
+  public int b12431;
+  public int b12432;
+  public int b12433;
+  public int b12434;
+  public int b12435;
+  public int b12436;
+  public int b12437;
+  public int b12438;
+  public int b12439;
+  public int b12440;
+  public int b12441;
+  public int b12442;
+  public int b12443;
+  public int b12444;
+  public int b12445;
+  public int b12446;
+  public int b12447;
+  public int b12448;
+  public int b12449;
+  public int b12450;
+  public int b12451;
+  public int b12452;
+  public int b12453;
+  public int b12454;
+  public int b12455;
+  public int b12456;
+  public int b12457;
+  public int b12458;
+  public int b12459;
+  public int b12460;
+  public int b12461;
+  public int b12462;
+  public int b12463;
+  public int b12464;
+  public int b12465;
+  public int b12466;
+  public int b12467;
+  public int b12468;
+  public int b12469;
+  public int b12470;
+  public int b12471;
+  public int b12472;
+  public int b12473;
+  public int b12474;
+  public int b12475;
+  public int b12476;
+  public int b12477;
+  public int b12478;
+  public int b12479;
+  public int b12480;
+  public int b12481;
+  public int b12482;
+  public int b12483;
+  public int b12484;
+  public int b12485;
+  public int b12486;
+  public int b12487;
+  public int b12488;
+  public int b12489;
+  public int b12490;
+  public int b12491;
+  public int b12492;
+  public int b12493;
+  public int b12494;
+  public int b12495;
+  public int b12496;
+  public int b12497;
+  public int b12498;
+  public int b12499;
+  public int b12500;
+  public int b12501;
+  public int b12502;
+  public int b12503;
+  public int b12504;
+  public int b12505;
+  public int b12506;
+  public int b12507;
+  public int b12508;
+  public int b12509;
+  public int b12510;
+  public int b12511;
+  public int b12512;
+  public int b12513;
+  public int b12514;
+  public int b12515;
+  public int b12516;
+  public int b12517;
+  public int b12518;
+  public int b12519;
+  public int b12520;
+  public int b12521;
+  public int b12522;
+  public int b12523;
+  public int b12524;
+  public int b12525;
+  public int b12526;
+  public int b12527;
+  public int b12528;
+  public int b12529;
+  public int b12530;
+  public int b12531;
+  public int b12532;
+  public int b12533;
+  public int b12534;
+  public int b12535;
+  public int b12536;
+  public int b12537;
+  public int b12538;
+  public int b12539;
+  public int b12540;
+  public int b12541;
+  public int b12542;
+  public int b12543;
+  public int b12544;
+  public int b12545;
+  public int b12546;
+  public int b12547;
+  public int b12548;
+  public int b12549;
+  public int b12550;
+  public int b12551;
+  public int b12552;
+  public int b12553;
+  public int b12554;
+  public int b12555;
+  public int b12556;
+  public int b12557;
+  public int b12558;
+  public int b12559;
+  public int b12560;
+  public int b12561;
+  public int b12562;
+  public int b12563;
+  public int b12564;
+  public int b12565;
+  public int b12566;
+  public int b12567;
+  public int b12568;
+  public int b12569;
+  public int b12570;
+  public int b12571;
+  public int b12572;
+  public int b12573;
+  public int b12574;
+  public int b12575;
+  public int b12576;
+  public int b12577;
+  public int b12578;
+  public int b12579;
+  public int b12580;
+  public int b12581;
+  public int b12582;
+  public int b12583;
+  public int b12584;
+  public int b12585;
+  public int b12586;
+  public int b12587;
+  public int b12588;
+  public int b12589;
+  public int b12590;
+  public int b12591;
+  public int b12592;
+  public int b12593;
+  public int b12594;
+  public int b12595;
+  public int b12596;
+  public int b12597;
+  public int b12598;
+  public int b12599;
+  public int b12600;
+  public int b12601;
+  public int b12602;
+  public int b12603;
+  public int b12604;
+  public int b12605;
+  public int b12606;
+  public int b12607;
+  public int b12608;
+  public int b12609;
+  public int b12610;
+  public int b12611;
+  public int b12612;
+  public int b12613;
+  public int b12614;
+  public int b12615;
+  public int b12616;
+  public int b12617;
+  public int b12618;
+  public int b12619;
+  public int b12620;
+  public int b12621;
+  public int b12622;
+  public int b12623;
+  public int b12624;
+  public int b12625;
+  public int b12626;
+  public int b12627;
+  public int b12628;
+  public int b12629;
+  public int b12630;
+  public int b12631;
+  public int b12632;
+  public int b12633;
+  public int b12634;
+  public int b12635;
+  public int b12636;
+  public int b12637;
+  public int b12638;
+  public int b12639;
+  public int b12640;
+  public int b12641;
+  public int b12642;
+  public int b12643;
+  public int b12644;
+  public int b12645;
+  public int b12646;
+  public int b12647;
+  public int b12648;
+  public int b12649;
+  public int b12650;
+  public int b12651;
+  public int b12652;
+  public int b12653;
+  public int b12654;
+  public int b12655;
+  public int b12656;
+  public int b12657;
+  public int b12658;
+  public int b12659;
+  public int b12660;
+  public int b12661;
+  public int b12662;
+  public int b12663;
+  public int b12664;
+  public int b12665;
+  public int b12666;
+  public int b12667;
+  public int b12668;
+  public int b12669;
+  public int b12670;
+  public int b12671;
+  public int b12672;
+  public int b12673;
+  public int b12674;
+  public int b12675;
+  public int b12676;
+  public int b12677;
+  public int b12678;
+  public int b12679;
+  public int b12680;
+  public int b12681;
+  public int b12682;
+  public int b12683;
+  public int b12684;
+  public int b12685;
+  public int b12686;
+  public int b12687;
+  public int b12688;
+  public int b12689;
+  public int b12690;
+  public int b12691;
+  public int b12692;
+  public int b12693;
+  public int b12694;
+  public int b12695;
+  public int b12696;
+  public int b12697;
+  public int b12698;
+  public int b12699;
+  public int b12700;
+  public int b12701;
+  public int b12702;
+  public int b12703;
+  public int b12704;
+  public int b12705;
+  public int b12706;
+  public int b12707;
+  public int b12708;
+  public int b12709;
+  public int b12710;
+  public int b12711;
+  public int b12712;
+  public int b12713;
+  public int b12714;
+  public int b12715;
+  public int b12716;
+  public int b12717;
+  public int b12718;
+  public int b12719;
+  public int b12720;
+  public int b12721;
+  public int b12722;
+  public int b12723;
+  public int b12724;
+  public int b12725;
+  public int b12726;
+  public int b12727;
+  public int b12728;
+  public int b12729;
+  public int b12730;
+  public int b12731;
+  public int b12732;
+  public int b12733;
+  public int b12734;
+  public int b12735;
+  public int b12736;
+  public int b12737;
+  public int b12738;
+  public int b12739;
+  public int b12740;
+  public int b12741;
+  public int b12742;
+  public int b12743;
+  public int b12744;
+  public int b12745;
+  public int b12746;
+  public int b12747;
+  public int b12748;
+  public int b12749;
+  public int b12750;
+  public int b12751;
+  public int b12752;
+  public int b12753;
+  public int b12754;
+  public int b12755;
+  public int b12756;
+  public int b12757;
+  public int b12758;
+  public int b12759;
+  public int b12760;
+  public int b12761;
+  public int b12762;
+  public int b12763;
+  public int b12764;
+  public int b12765;
+  public int b12766;
+  public int b12767;
+  public int b12768;
+  public int b12769;
+  public int b12770;
+  public int b12771;
+  public int b12772;
+  public int b12773;
+  public int b12774;
+  public int b12775;
+  public int b12776;
+  public int b12777;
+  public int b12778;
+  public int b12779;
+  public int b12780;
+  public int b12781;
+  public int b12782;
+  public int b12783;
+  public int b12784;
+  public int b12785;
+  public int b12786;
+  public int b12787;
+  public int b12788;
+  public int b12789;
+  public int b12790;
+  public int b12791;
+  public int b12792;
+  public int b12793;
+  public int b12794;
+  public int b12795;
+  public int b12796;
+  public int b12797;
+  public int b12798;
+  public int b12799;
+  public int b12800;
+  public int b12801;
+  public int b12802;
+  public int b12803;
+  public int b12804;
+  public int b12805;
+  public int b12806;
+  public int b12807;
+  public int b12808;
+  public int b12809;
+  public int b12810;
+  public int b12811;
+  public int b12812;
+  public int b12813;
+  public int b12814;
+  public int b12815;
+  public int b12816;
+  public int b12817;
+  public int b12818;
+  public int b12819;
+  public int b12820;
+  public int b12821;
+  public int b12822;
+  public int b12823;
+  public int b12824;
+  public int b12825;
+  public int b12826;
+  public int b12827;
+  public int b12828;
+  public int b12829;
+  public int b12830;
+  public int b12831;
+  public int b12832;
+  public int b12833;
+  public int b12834;
+  public int b12835;
+  public int b12836;
+  public int b12837;
+  public int b12838;
+  public int b12839;
+  public int b12840;
+  public int b12841;
+  public int b12842;
+  public int b12843;
+  public int b12844;
+  public int b12845;
+  public int b12846;
+  public int b12847;
+  public int b12848;
+  public int b12849;
+  public int b12850;
+  public int b12851;
+  public int b12852;
+  public int b12853;
+  public int b12854;
+  public int b12855;
+  public int b12856;
+  public int b12857;
+  public int b12858;
+  public int b12859;
+  public int b12860;
+  public int b12861;
+  public int b12862;
+  public int b12863;
+  public int b12864;
+  public int b12865;
+  public int b12866;
+  public int b12867;
+  public int b12868;
+  public int b12869;
+  public int b12870;
+  public int b12871;
+  public int b12872;
+  public int b12873;
+  public int b12874;
+  public int b12875;
+  public int b12876;
+  public int b12877;
+  public int b12878;
+  public int b12879;
+  public int b12880;
+  public int b12881;
+  public int b12882;
+  public int b12883;
+  public int b12884;
+  public int b12885;
+  public int b12886;
+  public int b12887;
+  public int b12888;
+  public int b12889;
+  public int b12890;
+  public int b12891;
+  public int b12892;
+  public int b12893;
+  public int b12894;
+  public int b12895;
+  public int b12896;
+  public int b12897;
+  public int b12898;
+  public int b12899;
+  public int b12900;
+  public int b12901;
+  public int b12902;
+  public int b12903;
+  public int b12904;
+  public int b12905;
+  public int b12906;
+  public int b12907;
+  public int b12908;
+  public int b12909;
+  public int b12910;
+  public int b12911;
+  public int b12912;
+  public int b12913;
+  public int b12914;
+  public int b12915;
+  public int b12916;
+  public int b12917;
+  public int b12918;
+  public int b12919;
+  public int b12920;
+  public int b12921;
+  public int b12922;
+  public int b12923;
+  public int b12924;
+  public int b12925;
+  public int b12926;
+  public int b12927;
+  public int b12928;
+  public int b12929;
+  public int b12930;
+  public int b12931;
+  public int b12932;
+  public int b12933;
+  public int b12934;
+  public int b12935;
+  public int b12936;
+  public int b12937;
+  public int b12938;
+  public int b12939;
+  public int b12940;
+  public int b12941;
+  public int b12942;
+  public int b12943;
+  public int b12944;
+  public int b12945;
+  public int b12946;
+  public int b12947;
+  public int b12948;
+  public int b12949;
+  public int b12950;
+  public int b12951;
+  public int b12952;
+  public int b12953;
+  public int b12954;
+  public int b12955;
+  public int b12956;
+  public int b12957;
+  public int b12958;
+  public int b12959;
+  public int b12960;
+  public int b12961;
+  public int b12962;
+  public int b12963;
+  public int b12964;
+  public int b12965;
+  public int b12966;
+  public int b12967;
+  public int b12968;
+  public int b12969;
+  public int b12970;
+  public int b12971;
+  public int b12972;
+  public int b12973;
+  public int b12974;
+  public int b12975;
+  public int b12976;
+  public int b12977;
+  public int b12978;
+  public int b12979;
+  public int b12980;
+  public int b12981;
+  public int b12982;
+  public int b12983;
+  public int b12984;
+  public int b12985;
+  public int b12986;
+  public int b12987;
+  public int b12988;
+  public int b12989;
+  public int b12990;
+  public int b12991;
+  public int b12992;
+  public int b12993;
+  public int b12994;
+  public int b12995;
+  public int b12996;
+  public int b12997;
+  public int b12998;
+  public int b12999;
+  public int b13000;
+  public int b13001;
+  public int b13002;
+  public int b13003;
+  public int b13004;
+  public int b13005;
+  public int b13006;
+  public int b13007;
+  public int b13008;
+  public int b13009;
+  public int b13010;
+  public int b13011;
+  public int b13012;
+  public int b13013;
+  public int b13014;
+  public int b13015;
+  public int b13016;
+  public int b13017;
+  public int b13018;
+  public int b13019;
+  public int b13020;
+  public int b13021;
+  public int b13022;
+  public int b13023;
+  public int b13024;
+  public int b13025;
+  public int b13026;
+  public int b13027;
+  public int b13028;
+  public int b13029;
+  public int b13030;
+  public int b13031;
+  public int b13032;
+  public int b13033;
+  public int b13034;
+  public int b13035;
+  public int b13036;
+  public int b13037;
+  public int b13038;
+  public int b13039;
+  public int b13040;
+  public int b13041;
+  public int b13042;
+  public int b13043;
+  public int b13044;
+  public int b13045;
+  public int b13046;
+  public int b13047;
+  public int b13048;
+  public int b13049;
+  public int b13050;
+  public int b13051;
+  public int b13052;
+  public int b13053;
+  public int b13054;
+  public int b13055;
+  public int b13056;
+  public int b13057;
+  public int b13058;
+  public int b13059;
+  public int b13060;
+  public int b13061;
+  public int b13062;
+  public int b13063;
+  public int b13064;
+  public int b13065;
+  public int b13066;
+  public int b13067;
+  public int b13068;
+  public int b13069;
+  public int b13070;
+  public int b13071;
+  public int b13072;
+  public int b13073;
+  public int b13074;
+  public int b13075;
+  public int b13076;
+  public int b13077;
+  public int b13078;
+  public int b13079;
+  public int b13080;
+  public int b13081;
+  public int b13082;
+  public int b13083;
+  public int b13084;
+  public int b13085;
+  public int b13086;
+  public int b13087;
+  public int b13088;
+  public int b13089;
+  public int b13090;
+  public int b13091;
+  public int b13092;
+  public int b13093;
+  public int b13094;
+  public int b13095;
+  public int b13096;
+  public int b13097;
+  public int b13098;
+  public int b13099;
+  public int b13100;
+  public int b13101;
+  public int b13102;
+  public int b13103;
+  public int b13104;
+  public int b13105;
+  public int b13106;
+  public int b13107;
+  public int b13108;
+  public int b13109;
+  public int b13110;
+  public int b13111;
+  public int b13112;
+  public int b13113;
+  public int b13114;
+  public int b13115;
+  public int b13116;
+  public int b13117;
+  public int b13118;
+  public int b13119;
+  public int b13120;
+  public int b13121;
+  public int b13122;
+  public int b13123;
+  public int b13124;
+  public int b13125;
+  public int b13126;
+  public int b13127;
+  public int b13128;
+  public int b13129;
+  public int b13130;
+  public int b13131;
+  public int b13132;
+  public int b13133;
+  public int b13134;
+  public int b13135;
+  public int b13136;
+  public int b13137;
+  public int b13138;
+  public int b13139;
+  public int b13140;
+  public int b13141;
+  public int b13142;
+  public int b13143;
+  public int b13144;
+  public int b13145;
+  public int b13146;
+  public int b13147;
+  public int b13148;
+  public int b13149;
+  public int b13150;
+  public int b13151;
+  public int b13152;
+  public int b13153;
+  public int b13154;
+  public int b13155;
+  public int b13156;
+  public int b13157;
+  public int b13158;
+  public int b13159;
+  public int b13160;
+  public int b13161;
+  public int b13162;
+  public int b13163;
+  public int b13164;
+  public int b13165;
+  public int b13166;
+  public int b13167;
+  public int b13168;
+  public int b13169;
+  public int b13170;
+  public int b13171;
+  public int b13172;
+  public int b13173;
+  public int b13174;
+  public int b13175;
+  public int b13176;
+  public int b13177;
+  public int b13178;
+  public int b13179;
+  public int b13180;
+  public int b13181;
+  public int b13182;
+  public int b13183;
+  public int b13184;
+  public int b13185;
+  public int b13186;
+  public int b13187;
+  public int b13188;
+  public int b13189;
+  public int b13190;
+  public int b13191;
+  public int b13192;
+  public int b13193;
+  public int b13194;
+  public int b13195;
+  public int b13196;
+  public int b13197;
+  public int b13198;
+  public int b13199;
+  public int b13200;
+  public int b13201;
+  public int b13202;
+  public int b13203;
+  public int b13204;
+  public int b13205;
+  public int b13206;
+  public int b13207;
+  public int b13208;
+  public int b13209;
+  public int b13210;
+  public int b13211;
+  public int b13212;
+  public int b13213;
+  public int b13214;
+  public int b13215;
+  public int b13216;
+  public int b13217;
+  public int b13218;
+  public int b13219;
+  public int b13220;
+  public int b13221;
+  public int b13222;
+  public int b13223;
+  public int b13224;
+  public int b13225;
+  public int b13226;
+  public int b13227;
+  public int b13228;
+  public int b13229;
+  public int b13230;
+  public int b13231;
+  public int b13232;
+  public int b13233;
+  public int b13234;
+  public int b13235;
+  public int b13236;
+  public int b13237;
+  public int b13238;
+  public int b13239;
+  public int b13240;
+  public int b13241;
+  public int b13242;
+  public int b13243;
+  public int b13244;
+  public int b13245;
+  public int b13246;
+  public int b13247;
+  public int b13248;
+  public int b13249;
+  public int b13250;
+  public int b13251;
+  public int b13252;
+  public int b13253;
+  public int b13254;
+  public int b13255;
+  public int b13256;
+  public int b13257;
+  public int b13258;
+  public int b13259;
+  public int b13260;
+  public int b13261;
+  public int b13262;
+  public int b13263;
+  public int b13264;
+  public int b13265;
+  public int b13266;
+  public int b13267;
+  public int b13268;
+  public int b13269;
+  public int b13270;
+  public int b13271;
+  public int b13272;
+  public int b13273;
+  public int b13274;
+  public int b13275;
+  public int b13276;
+  public int b13277;
+  public int b13278;
+  public int b13279;
+  public int b13280;
+  public int b13281;
+  public int b13282;
+  public int b13283;
+  public int b13284;
+  public int b13285;
+  public int b13286;
+  public int b13287;
+  public int b13288;
+  public int b13289;
+  public int b13290;
+  public int b13291;
+  public int b13292;
+  public int b13293;
+  public int b13294;
+  public int b13295;
+  public int b13296;
+  public int b13297;
+  public int b13298;
+  public int b13299;
+  public int b13300;
+  public int b13301;
+  public int b13302;
+  public int b13303;
+  public int b13304;
+  public int b13305;
+  public int b13306;
+  public int b13307;
+  public int b13308;
+  public int b13309;
+  public int b13310;
+  public int b13311;
+  public int b13312;
+  public int b13313;
+  public int b13314;
+  public int b13315;
+  public int b13316;
+  public int b13317;
+  public int b13318;
+  public int b13319;
+  public int b13320;
+  public int b13321;
+  public int b13322;
+  public int b13323;
+  public int b13324;
+  public int b13325;
+  public int b13326;
+  public int b13327;
+  public int b13328;
+  public int b13329;
+  public int b13330;
+  public int b13331;
+  public int b13332;
+  public int b13333;
+  public int b13334;
+  public int b13335;
+  public int b13336;
+  public int b13337;
+  public int b13338;
+  public int b13339;
+  public int b13340;
+  public int b13341;
+  public int b13342;
+  public int b13343;
+  public int b13344;
+  public int b13345;
+  public int b13346;
+  public int b13347;
+  public int b13348;
+  public int b13349;
+  public int b13350;
+  public int b13351;
+  public int b13352;
+  public int b13353;
+  public int b13354;
+  public int b13355;
+  public int b13356;
+  public int b13357;
+  public int b13358;
+  public int b13359;
+  public int b13360;
+  public int b13361;
+  public int b13362;
+  public int b13363;
+  public int b13364;
+  public int b13365;
+  public int b13366;
+  public int b13367;
+  public int b13368;
+  public int b13369;
+  public int b13370;
+  public int b13371;
+  public int b13372;
+  public int b13373;
+  public int b13374;
+  public int b13375;
+  public int b13376;
+  public int b13377;
+  public int b13378;
+  public int b13379;
+  public int b13380;
+  public int b13381;
+  public int b13382;
+  public int b13383;
+  public int b13384;
+  public int b13385;
+  public int b13386;
+  public int b13387;
+  public int b13388;
+  public int b13389;
+  public int b13390;
+  public int b13391;
+  public int b13392;
+  public int b13393;
+  public int b13394;
+  public int b13395;
+  public int b13396;
+  public int b13397;
+  public int b13398;
+  public int b13399;
+  public int b13400;
+  public int b13401;
+  public int b13402;
+  public int b13403;
+  public int b13404;
+  public int b13405;
+  public int b13406;
+  public int b13407;
+  public int b13408;
+  public int b13409;
+  public int b13410;
+  public int b13411;
+  public int b13412;
+  public int b13413;
+  public int b13414;
+  public int b13415;
+  public int b13416;
+  public int b13417;
+  public int b13418;
+  public int b13419;
+  public int b13420;
+  public int b13421;
+  public int b13422;
+  public int b13423;
+  public int b13424;
+  public int b13425;
+  public int b13426;
+  public int b13427;
+  public int b13428;
+  public int b13429;
+  public int b13430;
+  public int b13431;
+  public int b13432;
+  public int b13433;
+  public int b13434;
+  public int b13435;
+  public int b13436;
+  public int b13437;
+  public int b13438;
+  public int b13439;
+  public int b13440;
+  public int b13441;
+  public int b13442;
+  public int b13443;
+  public int b13444;
+  public int b13445;
+  public int b13446;
+  public int b13447;
+  public int b13448;
+  public int b13449;
+  public int b13450;
+  public int b13451;
+  public int b13452;
+  public int b13453;
+  public int b13454;
+  public int b13455;
+  public int b13456;
+  public int b13457;
+  public int b13458;
+  public int b13459;
+  public int b13460;
+  public int b13461;
+  public int b13462;
+  public int b13463;
+  public int b13464;
+  public int b13465;
+  public int b13466;
+  public int b13467;
+  public int b13468;
+  public int b13469;
+  public int b13470;
+  public int b13471;
+  public int b13472;
+  public int b13473;
+  public int b13474;
+  public int b13475;
+  public int b13476;
+  public int b13477;
+  public int b13478;
+  public int b13479;
+  public int b13480;
+  public int b13481;
+  public int b13482;
+  public int b13483;
+  public int b13484;
+  public int b13485;
+  public int b13486;
+  public int b13487;
+  public int b13488;
+  public int b13489;
+  public int b13490;
+  public int b13491;
+  public int b13492;
+  public int b13493;
+  public int b13494;
+  public int b13495;
+  public int b13496;
+  public int b13497;
+  public int b13498;
+  public int b13499;
+  public int b13500;
+  public int b13501;
+  public int b13502;
+  public int b13503;
+  public int b13504;
+  public int b13505;
+  public int b13506;
+  public int b13507;
+  public int b13508;
+  public int b13509;
+  public int b13510;
+  public int b13511;
+  public int b13512;
+  public int b13513;
+  public int b13514;
+  public int b13515;
+  public int b13516;
+  public int b13517;
+  public int b13518;
+  public int b13519;
+  public int b13520;
+  public int b13521;
+  public int b13522;
+  public int b13523;
+  public int b13524;
+  public int b13525;
+  public int b13526;
+  public int b13527;
+  public int b13528;
+  public int b13529;
+  public int b13530;
+  public int b13531;
+  public int b13532;
+  public int b13533;
+  public int b13534;
+  public int b13535;
+  public int b13536;
+  public int b13537;
+  public int b13538;
+  public int b13539;
+  public int b13540;
+  public int b13541;
+  public int b13542;
+  public int b13543;
+  public int b13544;
+  public int b13545;
+  public int b13546;
+  public int b13547;
+  public int b13548;
+  public int b13549;
+  public int b13550;
+  public int b13551;
+  public int b13552;
+  public int b13553;
+  public int b13554;
+  public int b13555;
+  public int b13556;
+  public int b13557;
+  public int b13558;
+  public int b13559;
+  public int b13560;
+  public int b13561;
+  public int b13562;
+  public int b13563;
+  public int b13564;
+  public int b13565;
+  public int b13566;
+  public int b13567;
+  public int b13568;
+  public int b13569;
+  public int b13570;
+  public int b13571;
+  public int b13572;
+  public int b13573;
+  public int b13574;
+  public int b13575;
+  public int b13576;
+  public int b13577;
+  public int b13578;
+  public int b13579;
+  public int b13580;
+  public int b13581;
+  public int b13582;
+  public int b13583;
+  public int b13584;
+  public int b13585;
+  public int b13586;
+  public int b13587;
+  public int b13588;
+  public int b13589;
+  public int b13590;
+  public int b13591;
+  public int b13592;
+  public int b13593;
+  public int b13594;
+  public int b13595;
+  public int b13596;
+  public int b13597;
+  public int b13598;
+  public int b13599;
+  public int b13600;
+  public int b13601;
+  public int b13602;
+  public int b13603;
+  public int b13604;
+  public int b13605;
+  public int b13606;
+  public int b13607;
+  public int b13608;
+  public int b13609;
+  public int b13610;
+  public int b13611;
+  public int b13612;
+  public int b13613;
+  public int b13614;
+  public int b13615;
+  public int b13616;
+  public int b13617;
+  public int b13618;
+  public int b13619;
+  public int b13620;
+  public int b13621;
+  public int b13622;
+  public int b13623;
+  public int b13624;
+  public int b13625;
+  public int b13626;
+  public int b13627;
+  public int b13628;
+  public int b13629;
+  public int b13630;
+  public int b13631;
+  public int b13632;
+  public int b13633;
+  public int b13634;
+  public int b13635;
+  public int b13636;
+  public int b13637;
+  public int b13638;
+  public int b13639;
+  public int b13640;
+  public int b13641;
+  public int b13642;
+  public int b13643;
+  public int b13644;
+  public int b13645;
+  public int b13646;
+  public int b13647;
+  public int b13648;
+  public int b13649;
+  public int b13650;
+  public int b13651;
+  public int b13652;
+  public int b13653;
+  public int b13654;
+  public int b13655;
+  public int b13656;
+  public int b13657;
+  public int b13658;
+  public int b13659;
+  public int b13660;
+  public int b13661;
+  public int b13662;
+  public int b13663;
+  public int b13664;
+  public int b13665;
+  public int b13666;
+  public int b13667;
+  public int b13668;
+  public int b13669;
+  public int b13670;
+  public int b13671;
+  public int b13672;
+  public int b13673;
+  public int b13674;
+  public int b13675;
+  public int b13676;
+  public int b13677;
+  public int b13678;
+  public int b13679;
+  public int b13680;
+  public int b13681;
+  public int b13682;
+  public int b13683;
+  public int b13684;
+  public int b13685;
+  public int b13686;
+  public int b13687;
+  public int b13688;
+  public int b13689;
+  public int b13690;
+  public int b13691;
+  public int b13692;
+  public int b13693;
+  public int b13694;
+  public int b13695;
+  public int b13696;
+  public int b13697;
+  public int b13698;
+  public int b13699;
+  public int b13700;
+  public int b13701;
+  public int b13702;
+  public int b13703;
+  public int b13704;
+  public int b13705;
+  public int b13706;
+  public int b13707;
+  public int b13708;
+  public int b13709;
+  public int b13710;
+  public int b13711;
+  public int b13712;
+  public int b13713;
+  public int b13714;
+  public int b13715;
+  public int b13716;
+  public int b13717;
+  public int b13718;
+  public int b13719;
+  public int b13720;
+  public int b13721;
+  public int b13722;
+  public int b13723;
+  public int b13724;
+  public int b13725;
+  public int b13726;
+  public int b13727;
+  public int b13728;
+  public int b13729;
+  public int b13730;
+  public int b13731;
+  public int b13732;
+  public int b13733;
+  public int b13734;
+  public int b13735;
+  public int b13736;
+  public int b13737;
+  public int b13738;
+  public int b13739;
+  public int b13740;
+  public int b13741;
+  public int b13742;
+  public int b13743;
+  public int b13744;
+  public int b13745;
+  public int b13746;
+  public int b13747;
+  public int b13748;
+  public int b13749;
+  public int b13750;
+  public int b13751;
+  public int b13752;
+  public int b13753;
+  public int b13754;
+  public int b13755;
+  public int b13756;
+  public int b13757;
+  public int b13758;
+  public int b13759;
+  public int b13760;
+  public int b13761;
+  public int b13762;
+  public int b13763;
+  public int b13764;
+  public int b13765;
+  public int b13766;
+  public int b13767;
+  public int b13768;
+  public int b13769;
+  public int b13770;
+  public int b13771;
+  public int b13772;
+  public int b13773;
+  public int b13774;
+  public int b13775;
+  public int b13776;
+  public int b13777;
+  public int b13778;
+  public int b13779;
+  public int b13780;
+  public int b13781;
+  public int b13782;
+  public int b13783;
+  public int b13784;
+  public int b13785;
+  public int b13786;
+  public int b13787;
+  public int b13788;
+  public int b13789;
+  public int b13790;
+  public int b13791;
+  public int b13792;
+  public int b13793;
+  public int b13794;
+  public int b13795;
+  public int b13796;
+  public int b13797;
+  public int b13798;
+  public int b13799;
+  public int b13800;
+  public int b13801;
+  public int b13802;
+  public int b13803;
+  public int b13804;
+  public int b13805;
+  public int b13806;
+  public int b13807;
+  public int b13808;
+  public int b13809;
+  public int b13810;
+  public int b13811;
+  public int b13812;
+  public int b13813;
+  public int b13814;
+  public int b13815;
+  public int b13816;
+  public int b13817;
+  public int b13818;
+  public int b13819;
+  public int b13820;
+  public int b13821;
+  public int b13822;
+  public int b13823;
+  public int b13824;
+  public int b13825;
+  public int b13826;
+  public int b13827;
+  public int b13828;
+  public int b13829;
+  public int b13830;
+  public int b13831;
+  public int b13832;
+  public int b13833;
+  public int b13834;
+  public int b13835;
+  public int b13836;
+  public int b13837;
+  public int b13838;
+  public int b13839;
+  public int b13840;
+  public int b13841;
+  public int b13842;
+  public int b13843;
+  public int b13844;
+  public int b13845;
+  public int b13846;
+  public int b13847;
+  public int b13848;
+  public int b13849;
+  public int b13850;
+  public int b13851;
+  public int b13852;
+  public int b13853;
+  public int b13854;
+  public int b13855;
+  public int b13856;
+  public int b13857;
+  public int b13858;
+  public int b13859;
+  public int b13860;
+  public int b13861;
+  public int b13862;
+  public int b13863;
+  public int b13864;
+  public int b13865;
+  public int b13866;
+  public int b13867;
+  public int b13868;
+  public int b13869;
+  public int b13870;
+  public int b13871;
+  public int b13872;
+  public int b13873;
+  public int b13874;
+  public int b13875;
+  public int b13876;
+  public int b13877;
+  public int b13878;
+  public int b13879;
+  public int b13880;
+  public int b13881;
+  public int b13882;
+  public int b13883;
+  public int b13884;
+  public int b13885;
+  public int b13886;
+  public int b13887;
+  public int b13888;
+  public int b13889;
+  public int b13890;
+  public int b13891;
+  public int b13892;
+  public int b13893;
+  public int b13894;
+  public int b13895;
+  public int b13896;
+  public int b13897;
+  public int b13898;
+  public int b13899;
+  public int b13900;
+  public int b13901;
+  public int b13902;
+  public int b13903;
+  public int b13904;
+  public int b13905;
+  public int b13906;
+  public int b13907;
+  public int b13908;
+  public int b13909;
+  public int b13910;
+  public int b13911;
+  public int b13912;
+  public int b13913;
+  public int b13914;
+  public int b13915;
+  public int b13916;
+  public int b13917;
+  public int b13918;
+  public int b13919;
+  public int b13920;
+  public int b13921;
+  public int b13922;
+  public int b13923;
+  public int b13924;
+  public int b13925;
+  public int b13926;
+  public int b13927;
+  public int b13928;
+  public int b13929;
+  public int b13930;
+  public int b13931;
+  public int b13932;
+  public int b13933;
+  public int b13934;
+  public int b13935;
+  public int b13936;
+  public int b13937;
+  public int b13938;
+  public int b13939;
+  public int b13940;
+  public int b13941;
+  public int b13942;
+  public int b13943;
+  public int b13944;
+  public int b13945;
+  public int b13946;
+  public int b13947;
+  public int b13948;
+  public int b13949;
+  public int b13950;
+  public int b13951;
+  public int b13952;
+  public int b13953;
+  public int b13954;
+  public int b13955;
+  public int b13956;
+  public int b13957;
+  public int b13958;
+  public int b13959;
+  public int b13960;
+  public int b13961;
+  public int b13962;
+  public int b13963;
+  public int b13964;
+  public int b13965;
+  public int b13966;
+  public int b13967;
+  public int b13968;
+  public int b13969;
+  public int b13970;
+  public int b13971;
+  public int b13972;
+  public int b13973;
+  public int b13974;
+  public int b13975;
+  public int b13976;
+  public int b13977;
+  public int b13978;
+  public int b13979;
+  public int b13980;
+  public int b13981;
+  public int b13982;
+  public int b13983;
+  public int b13984;
+  public int b13985;
+  public int b13986;
+  public int b13987;
+  public int b13988;
+  public int b13989;
+  public int b13990;
+  public int b13991;
+  public int b13992;
+  public int b13993;
+  public int b13994;
+  public int b13995;
+  public int b13996;
+  public int b13997;
+  public int b13998;
+  public int b13999;
+  public int b14000;
+  public int b14001;
+  public int b14002;
+  public int b14003;
+  public int b14004;
+  public int b14005;
+  public int b14006;
+  public int b14007;
+  public int b14008;
+  public int b14009;
+  public int b14010;
+  public int b14011;
+  public int b14012;
+  public int b14013;
+  public int b14014;
+  public int b14015;
+  public int b14016;
+  public int b14017;
+  public int b14018;
+  public int b14019;
+  public int b14020;
+  public int b14021;
+  public int b14022;
+  public int b14023;
+  public int b14024;
+  public int b14025;
+  public int b14026;
+  public int b14027;
+  public int b14028;
+  public int b14029;
+  public int b14030;
+  public int b14031;
+  public int b14032;
+  public int b14033;
+  public int b14034;
+  public int b14035;
+  public int b14036;
+  public int b14037;
+  public int b14038;
+  public int b14039;
+  public int b14040;
+  public int b14041;
+  public int b14042;
+  public int b14043;
+  public int b14044;
+  public int b14045;
+  public int b14046;
+  public int b14047;
+  public int b14048;
+  public int b14049;
+  public int b14050;
+  public int b14051;
+  public int b14052;
+  public int b14053;
+  public int b14054;
+  public int b14055;
+  public int b14056;
+  public int b14057;
+  public int b14058;
+  public int b14059;
+  public int b14060;
+  public int b14061;
+  public int b14062;
+  public int b14063;
+  public int b14064;
+  public int b14065;
+  public int b14066;
+  public int b14067;
+  public int b14068;
+  public int b14069;
+  public int b14070;
+  public int b14071;
+  public int b14072;
+  public int b14073;
+  public int b14074;
+  public int b14075;
+  public int b14076;
+  public int b14077;
+  public int b14078;
+  public int b14079;
+  public int b14080;
+  public int b14081;
+  public int b14082;
+  public int b14083;
+  public int b14084;
+  public int b14085;
+  public int b14086;
+  public int b14087;
+  public int b14088;
+  public int b14089;
+  public int b14090;
+  public int b14091;
+  public int b14092;
+  public int b14093;
+  public int b14094;
+  public int b14095;
+  public int b14096;
+  public int b14097;
+  public int b14098;
+  public int b14099;
+  public int b14100;
+  public int b14101;
+  public int b14102;
+  public int b14103;
+  public int b14104;
+  public int b14105;
+  public int b14106;
+  public int b14107;
+  public int b14108;
+  public int b14109;
+  public int b14110;
+  public int b14111;
+  public int b14112;
+  public int b14113;
+  public int b14114;
+  public int b14115;
+  public int b14116;
+  public int b14117;
+  public int b14118;
+  public int b14119;
+  public int b14120;
+  public int b14121;
+  public int b14122;
+  public int b14123;
+  public int b14124;
+  public int b14125;
+  public int b14126;
+  public int b14127;
+  public int b14128;
+  public int b14129;
+  public int b14130;
+  public int b14131;
+  public int b14132;
+  public int b14133;
+  public int b14134;
+  public int b14135;
+  public int b14136;
+  public int b14137;
+  public int b14138;
+  public int b14139;
+  public int b14140;
+  public int b14141;
+  public int b14142;
+  public int b14143;
+  public int b14144;
+  public int b14145;
+  public int b14146;
+  public int b14147;
+  public int b14148;
+  public int b14149;
+  public int b14150;
+  public int b14151;
+  public int b14152;
+  public int b14153;
+  public int b14154;
+  public int b14155;
+  public int b14156;
+  public int b14157;
+  public int b14158;
+  public int b14159;
+  public int b14160;
+  public int b14161;
+  public int b14162;
+  public int b14163;
+  public int b14164;
+  public int b14165;
+  public int b14166;
+  public int b14167;
+  public int b14168;
+  public int b14169;
+  public int b14170;
+  public int b14171;
+  public int b14172;
+  public int b14173;
+  public int b14174;
+  public int b14175;
+  public int b14176;
+  public int b14177;
+  public int b14178;
+  public int b14179;
+  public int b14180;
+  public int b14181;
+  public int b14182;
+  public int b14183;
+  public int b14184;
+  public int b14185;
+  public int b14186;
+  public int b14187;
+  public int b14188;
+  public int b14189;
+  public int b14190;
+  public int b14191;
+  public int b14192;
+  public int b14193;
+  public int b14194;
+  public int b14195;
+  public int b14196;
+  public int b14197;
+  public int b14198;
+  public int b14199;
+  public int b14200;
+  public int b14201;
+  public int b14202;
+  public int b14203;
+  public int b14204;
+  public int b14205;
+  public int b14206;
+  public int b14207;
+  public int b14208;
+  public int b14209;
+  public int b14210;
+  public int b14211;
+  public int b14212;
+  public int b14213;
+  public int b14214;
+  public int b14215;
+  public int b14216;
+  public int b14217;
+  public int b14218;
+  public int b14219;
+  public int b14220;
+  public int b14221;
+  public int b14222;
+  public int b14223;
+  public int b14224;
+  public int b14225;
+  public int b14226;
+  public int b14227;
+  public int b14228;
+  public int b14229;
+  public int b14230;
+  public int b14231;
+  public int b14232;
+  public int b14233;
+  public int b14234;
+  public int b14235;
+  public int b14236;
+  public int b14237;
+  public int b14238;
+  public int b14239;
+  public int b14240;
+  public int b14241;
+  public int b14242;
+  public int b14243;
+  public int b14244;
+  public int b14245;
+  public int b14246;
+  public int b14247;
+  public int b14248;
+  public int b14249;
+  public int b14250;
+  public int b14251;
+  public int b14252;
+  public int b14253;
+  public int b14254;
+  public int b14255;
+  public int b14256;
+  public int b14257;
+  public int b14258;
+  public int b14259;
+  public int b14260;
+  public int b14261;
+  public int b14262;
+  public int b14263;
+  public int b14264;
+  public int b14265;
+  public int b14266;
+  public int b14267;
+  public int b14268;
+  public int b14269;
+  public int b14270;
+  public int b14271;
+  public int b14272;
+  public int b14273;
+  public int b14274;
+  public int b14275;
+  public int b14276;
+  public int b14277;
+  public int b14278;
+  public int b14279;
+  public int b14280;
+  public int b14281;
+  public int b14282;
+  public int b14283;
+  public int b14284;
+  public int b14285;
+  public int b14286;
+  public int b14287;
+  public int b14288;
+  public int b14289;
+  public int b14290;
+  public int b14291;
+  public int b14292;
+  public int b14293;
+  public int b14294;
+  public int b14295;
+  public int b14296;
+  public int b14297;
+  public int b14298;
+  public int b14299;
+  public int b14300;
+  public int b14301;
+  public int b14302;
+  public int b14303;
+  public int b14304;
+  public int b14305;
+  public int b14306;
+  public int b14307;
+  public int b14308;
+  public int b14309;
+  public int b14310;
+  public int b14311;
+  public int b14312;
+  public int b14313;
+  public int b14314;
+  public int b14315;
+  public int b14316;
+  public int b14317;
+  public int b14318;
+  public int b14319;
+  public int b14320;
+  public int b14321;
+  public int b14322;
+  public int b14323;
+  public int b14324;
+  public int b14325;
+  public int b14326;
+  public int b14327;
+  public int b14328;
+  public int b14329;
+  public int b14330;
+  public int b14331;
+  public int b14332;
+  public int b14333;
+  public int b14334;
+  public int b14335;
+  public int b14336;
+  public int b14337;
+  public int b14338;
+  public int b14339;
+  public int b14340;
+  public int b14341;
+  public int b14342;
+  public int b14343;
+  public int b14344;
+  public int b14345;
+  public int b14346;
+  public int b14347;
+  public int b14348;
+  public int b14349;
+  public int b14350;
+  public int b14351;
+  public int b14352;
+  public int b14353;
+  public int b14354;
+  public int b14355;
+  public int b14356;
+  public int b14357;
+  public int b14358;
+  public int b14359;
+  public int b14360;
+  public int b14361;
+  public int b14362;
+  public int b14363;
+  public int b14364;
+  public int b14365;
+  public int b14366;
+  public int b14367;
+  public int b14368;
+  public int b14369;
+  public int b14370;
+  public int b14371;
+  public int b14372;
+  public int b14373;
+  public int b14374;
+  public int b14375;
+  public int b14376;
+  public int b14377;
+  public int b14378;
+  public int b14379;
+  public int b14380;
+  public int b14381;
+  public int b14382;
+  public int b14383;
+  public int b14384;
+  public int b14385;
+  public int b14386;
+  public int b14387;
+  public int b14388;
+  public int b14389;
+  public int b14390;
+  public int b14391;
+  public int b14392;
+  public int b14393;
+  public int b14394;
+  public int b14395;
+  public int b14396;
+  public int b14397;
+  public int b14398;
+  public int b14399;
+  public int b14400;
+  public int b14401;
+  public int b14402;
+  public int b14403;
+  public int b14404;
+  public int b14405;
+  public int b14406;
+  public int b14407;
+  public int b14408;
+  public int b14409;
+  public int b14410;
+  public int b14411;
+  public int b14412;
+  public int b14413;
+  public int b14414;
+  public int b14415;
+  public int b14416;
+  public int b14417;
+  public int b14418;
+  public int b14419;
+  public int b14420;
+  public int b14421;
+  public int b14422;
+  public int b14423;
+  public int b14424;
+  public int b14425;
+  public int b14426;
+  public int b14427;
+  public int b14428;
+  public int b14429;
+  public int b14430;
+  public int b14431;
+  public int b14432;
+  public int b14433;
+  public int b14434;
+  public int b14435;
+  public int b14436;
+  public int b14437;
+  public int b14438;
+  public int b14439;
+  public int b14440;
+  public int b14441;
+  public int b14442;
+  public int b14443;
+  public int b14444;
+  public int b14445;
+  public int b14446;
+  public int b14447;
+  public int b14448;
+  public int b14449;
+  public int b14450;
+  public int b14451;
+  public int b14452;
+  public int b14453;
+  public int b14454;
+  public int b14455;
+  public int b14456;
+  public int b14457;
+  public int b14458;
+  public int b14459;
+  public int b14460;
+  public int b14461;
+  public int b14462;
+  public int b14463;
+  public int b14464;
+  public int b14465;
+  public int b14466;
+  public int b14467;
+  public int b14468;
+  public int b14469;
+  public int b14470;
+  public int b14471;
+  public int b14472;
+  public int b14473;
+  public int b14474;
+  public int b14475;
+  public int b14476;
+  public int b14477;
+  public int b14478;
+  public int b14479;
+  public int b14480;
+  public int b14481;
+  public int b14482;
+  public int b14483;
+  public int b14484;
+  public int b14485;
+  public int b14486;
+  public int b14487;
+  public int b14488;
+  public int b14489;
+  public int b14490;
+  public int b14491;
+  public int b14492;
+  public int b14493;
+  public int b14494;
+  public int b14495;
+  public int b14496;
+  public int b14497;
+  public int b14498;
+  public int b14499;
+  public int b14500;
+  public int b14501;
+  public int b14502;
+  public int b14503;
+  public int b14504;
+  public int b14505;
+  public int b14506;
+  public int b14507;
+  public int b14508;
+  public int b14509;
+  public int b14510;
+  public int b14511;
+  public int b14512;
+  public int b14513;
+  public int b14514;
+  public int b14515;
+  public int b14516;
+  public int b14517;
+  public int b14518;
+  public int b14519;
+  public int b14520;
+  public int b14521;
+  public int b14522;
+  public int b14523;
+  public int b14524;
+  public int b14525;
+  public int b14526;
+  public int b14527;
+  public int b14528;
+  public int b14529;
+  public int b14530;
+  public int b14531;
+  public int b14532;
+  public int b14533;
+  public int b14534;
+  public int b14535;
+  public int b14536;
+  public int b14537;
+  public int b14538;
+  public int b14539;
+  public int b14540;
+  public int b14541;
+  public int b14542;
+  public int b14543;
+  public int b14544;
+  public int b14545;
+  public int b14546;
+  public int b14547;
+  public int b14548;
+  public int b14549;
+  public int b14550;
+  public int b14551;
+  public int b14552;
+  public int b14553;
+  public int b14554;
+  public int b14555;
+  public int b14556;
+  public int b14557;
+  public int b14558;
+  public int b14559;
+  public int b14560;
+  public int b14561;
+  public int b14562;
+  public int b14563;
+  public int b14564;
+  public int b14565;
+  public int b14566;
+  public int b14567;
+  public int b14568;
+  public int b14569;
+  public int b14570;
+  public int b14571;
+  public int b14572;
+  public int b14573;
+  public int b14574;
+  public int b14575;
+  public int b14576;
+  public int b14577;
+  public int b14578;
+  public int b14579;
+  public int b14580;
+  public int b14581;
+  public int b14582;
+  public int b14583;
+  public int b14584;
+  public int b14585;
+  public int b14586;
+  public int b14587;
+  public int b14588;
+  public int b14589;
+  public int b14590;
+  public int b14591;
+  public int b14592;
+  public int b14593;
+  public int b14594;
+  public int b14595;
+  public int b14596;
+  public int b14597;
+  public int b14598;
+  public int b14599;
+  public int b14600;
+  public int b14601;
+  public int b14602;
+  public int b14603;
+  public int b14604;
+  public int b14605;
+  public int b14606;
+  public int b14607;
+  public int b14608;
+  public int b14609;
+  public int b14610;
+  public int b14611;
+  public int b14612;
+  public int b14613;
+  public int b14614;
+  public int b14615;
+  public int b14616;
+  public int b14617;
+  public int b14618;
+  public int b14619;
+  public int b14620;
+  public int b14621;
+  public int b14622;
+  public int b14623;
+  public int b14624;
+  public int b14625;
+  public int b14626;
+  public int b14627;
+  public int b14628;
+  public int b14629;
+  public int b14630;
+  public int b14631;
+  public int b14632;
+  public int b14633;
+  public int b14634;
+  public int b14635;
+  public int b14636;
+  public int b14637;
+  public int b14638;
+  public int b14639;
+  public int b14640;
+  public int b14641;
+  public int b14642;
+  public int b14643;
+  public int b14644;
+  public int b14645;
+  public int b14646;
+  public int b14647;
+  public int b14648;
+  public int b14649;
+  public int b14650;
+  public int b14651;
+  public int b14652;
+  public int b14653;
+  public int b14654;
+  public int b14655;
+  public int b14656;
+  public int b14657;
+  public int b14658;
+  public int b14659;
+  public int b14660;
+  public int b14661;
+  public int b14662;
+  public int b14663;
+  public int b14664;
+  public int b14665;
+  public int b14666;
+  public int b14667;
+  public int b14668;
+  public int b14669;
+  public int b14670;
+  public int b14671;
+  public int b14672;
+  public int b14673;
+  public int b14674;
+  public int b14675;
+  public int b14676;
+  public int b14677;
+  public int b14678;
+  public int b14679;
+  public int b14680;
+  public int b14681;
+  public int b14682;
+  public int b14683;
+  public int b14684;
+  public int b14685;
+  public int b14686;
+  public int b14687;
+  public int b14688;
+  public int b14689;
+  public int b14690;
+  public int b14691;
+  public int b14692;
+  public int b14693;
+  public int b14694;
+  public int b14695;
+  public int b14696;
+  public int b14697;
+  public int b14698;
+  public int b14699;
+  public int b14700;
+  public int b14701;
+  public int b14702;
+  public int b14703;
+  public int b14704;
+  public int b14705;
+  public int b14706;
+  public int b14707;
+  public int b14708;
+  public int b14709;
+  public int b14710;
+  public int b14711;
+  public int b14712;
+  public int b14713;
+  public int b14714;
+  public int b14715;
+  public int b14716;
+  public int b14717;
+  public int b14718;
+  public int b14719;
+  public int b14720;
+  public int b14721;
+  public int b14722;
+  public int b14723;
+  public int b14724;
+  public int b14725;
+  public int b14726;
+  public int b14727;
+  public int b14728;
+  public int b14729;
+  public int b14730;
+  public int b14731;
+  public int b14732;
+  public int b14733;
+  public int b14734;
+  public int b14735;
+  public int b14736;
+  public int b14737;
+  public int b14738;
+  public int b14739;
+  public int b14740;
+  public int b14741;
+  public int b14742;
+  public int b14743;
+  public int b14744;
+  public int b14745;
+  public int b14746;
+  public int b14747;
+  public int b14748;
+  public int b14749;
+  public int b14750;
+  public int b14751;
+  public int b14752;
+  public int b14753;
+  public int b14754;
+  public int b14755;
+  public int b14756;
+  public int b14757;
+  public int b14758;
+  public int b14759;
+  public int b14760;
+  public int b14761;
+  public int b14762;
+  public int b14763;
+  public int b14764;
+  public int b14765;
+  public int b14766;
+  public int b14767;
+  public int b14768;
+  public int b14769;
+  public int b14770;
+  public int b14771;
+  public int b14772;
+  public int b14773;
+  public int b14774;
+  public int b14775;
+  public int b14776;
+  public int b14777;
+  public int b14778;
+  public int b14779;
+  public int b14780;
+  public int b14781;
+  public int b14782;
+  public int b14783;
+  public int b14784;
+  public int b14785;
+  public int b14786;
+  public int b14787;
+  public int b14788;
+  public int b14789;
+  public int b14790;
+  public int b14791;
+  public int b14792;
+  public int b14793;
+  public int b14794;
+  public int b14795;
+  public int b14796;
+  public int b14797;
+  public int b14798;
+  public int b14799;
+  public int b14800;
+  public int b14801;
+  public int b14802;
+  public int b14803;
+  public int b14804;
+  public int b14805;
+  public int b14806;
+  public int b14807;
+  public int b14808;
+  public int b14809;
+  public int b14810;
+  public int b14811;
+  public int b14812;
+  public int b14813;
+  public int b14814;
+  public int b14815;
+  public int b14816;
+  public int b14817;
+  public int b14818;
+  public int b14819;
+  public int b14820;
+  public int b14821;
+  public int b14822;
+  public int b14823;
+  public int b14824;
+  public int b14825;
+  public int b14826;
+  public int b14827;
+  public int b14828;
+  public int b14829;
+  public int b14830;
+  public int b14831;
+  public int b14832;
+  public int b14833;
+  public int b14834;
+  public int b14835;
+  public int b14836;
+  public int b14837;
+  public int b14838;
+  public int b14839;
+  public int b14840;
+  public int b14841;
+  public int b14842;
+  public int b14843;
+  public int b14844;
+  public int b14845;
+  public int b14846;
+  public int b14847;
+  public int b14848;
+  public int b14849;
+  public int b14850;
+  public int b14851;
+  public int b14852;
+  public int b14853;
+  public int b14854;
+  public int b14855;
+  public int b14856;
+  public int b14857;
+  public int b14858;
+  public int b14859;
+  public int b14860;
+  public int b14861;
+  public int b14862;
+  public int b14863;
+  public int b14864;
+  public int b14865;
+  public int b14866;
+  public int b14867;
+  public int b14868;
+  public int b14869;
+  public int b14870;
+  public int b14871;
+  public int b14872;
+  public int b14873;
+  public int b14874;
+  public int b14875;
+  public int b14876;
+  public int b14877;
+  public int b14878;
+  public int b14879;
+  public int b14880;
+  public int b14881;
+  public int b14882;
+  public int b14883;
+  public int b14884;
+  public int b14885;
+  public int b14886;
+  public int b14887;
+  public int b14888;
+  public int b14889;
+  public int b14890;
+  public int b14891;
+  public int b14892;
+  public int b14893;
+  public int b14894;
+  public int b14895;
+  public int b14896;
+  public int b14897;
+  public int b14898;
+  public int b14899;
+  public int b14900;
+  public int b14901;
+  public int b14902;
+  public int b14903;
+  public int b14904;
+  public int b14905;
+  public int b14906;
+  public int b14907;
+  public int b14908;
+  public int b14909;
+  public int b14910;
+  public int b14911;
+  public int b14912;
+  public int b14913;
+  public int b14914;
+  public int b14915;
+  public int b14916;
+  public int b14917;
+  public int b14918;
+  public int b14919;
+  public int b14920;
+  public int b14921;
+  public int b14922;
+  public int b14923;
+  public int b14924;
+  public int b14925;
+  public int b14926;
+  public int b14927;
+  public int b14928;
+  public int b14929;
+  public int b14930;
+  public int b14931;
+  public int b14932;
+  public int b14933;
+  public int b14934;
+  public int b14935;
+  public int b14936;
+  public int b14937;
+  public int b14938;
+  public int b14939;
+  public int b14940;
+  public int b14941;
+  public int b14942;
+  public int b14943;
+  public int b14944;
+  public int b14945;
+  public int b14946;
+  public int b14947;
+  public int b14948;
+  public int b14949;
+  public int b14950;
+  public int b14951;
+  public int b14952;
+  public int b14953;
+  public int b14954;
+  public int b14955;
+  public int b14956;
+  public int b14957;
+  public int b14958;
+  public int b14959;
+  public int b14960;
+  public int b14961;
+  public int b14962;
+  public int b14963;
+  public int b14964;
+  public int b14965;
+  public int b14966;
+  public int b14967;
+  public int b14968;
+  public int b14969;
+  public int b14970;
+  public int b14971;
+  public int b14972;
+  public int b14973;
+  public int b14974;
+  public int b14975;
+  public int b14976;
+  public int b14977;
+  public int b14978;
+  public int b14979;
+  public int b14980;
+  public int b14981;
+  public int b14982;
+  public int b14983;
+  public int b14984;
+  public int b14985;
+  public int b14986;
+  public int b14987;
+  public int b14988;
+  public int b14989;
+  public int b14990;
+  public int b14991;
+  public int b14992;
+  public int b14993;
+  public int b14994;
+  public int b14995;
+  public int b14996;
+  public int b14997;
+  public int b14998;
+  public int b14999;
+  public int b15000;
+  public int b15001;
+  public int b15002;
+  public int b15003;
+  public int b15004;
+  public int b15005;
+  public int b15006;
+  public int b15007;
+  public int b15008;
+  public int b15009;
+  public int b15010;
+  public int b15011;
+  public int b15012;
+  public int b15013;
+  public int b15014;
+  public int b15015;
+  public int b15016;
+  public int b15017;
+  public int b15018;
+  public int b15019;
+  public int b15020;
+  public int b15021;
+  public int b15022;
+  public int b15023;
+  public int b15024;
+  public int b15025;
+  public int b15026;
+  public int b15027;
+  public int b15028;
+  public int b15029;
+  public int b15030;
+  public int b15031;
+  public int b15032;
+  public int b15033;
+  public int b15034;
+  public int b15035;
+  public int b15036;
+  public int b15037;
+  public int b15038;
+  public int b15039;
+  public int b15040;
+  public int b15041;
+  public int b15042;
+  public int b15043;
+  public int b15044;
+  public int b15045;
+  public int b15046;
+  public int b15047;
+  public int b15048;
+  public int b15049;
+  public int b15050;
+  public int b15051;
+  public int b15052;
+  public int b15053;
+  public int b15054;
+  public int b15055;
+  public int b15056;
+  public int b15057;
+  public int b15058;
+  public int b15059;
+  public int b15060;
+  public int b15061;
+  public int b15062;
+  public int b15063;
+  public int b15064;
+  public int b15065;
+  public int b15066;
+  public int b15067;
+  public int b15068;
+  public int b15069;
+  public int b15070;
+  public int b15071;
+  public int b15072;
+  public int b15073;
+  public int b15074;
+  public int b15075;
+  public int b15076;
+  public int b15077;
+  public int b15078;
+  public int b15079;
+  public int b15080;
+  public int b15081;
+  public int b15082;
+  public int b15083;
+  public int b15084;
+  public int b15085;
+  public int b15086;
+  public int b15087;
+  public int b15088;
+  public int b15089;
+  public int b15090;
+  public int b15091;
+  public int b15092;
+  public int b15093;
+  public int b15094;
+  public int b15095;
+  public int b15096;
+  public int b15097;
+  public int b15098;
+  public int b15099;
+  public int b15100;
+  public int b15101;
+  public int b15102;
+  public int b15103;
+  public int b15104;
+  public int b15105;
+  public int b15106;
+  public int b15107;
+  public int b15108;
+  public int b15109;
+  public int b15110;
+  public int b15111;
+  public int b15112;
+  public int b15113;
+  public int b15114;
+  public int b15115;
+  public int b15116;
+  public int b15117;
+  public int b15118;
+  public int b15119;
+  public int b15120;
+  public int b15121;
+  public int b15122;
+  public int b15123;
+  public int b15124;
+  public int b15125;
+  public int b15126;
+  public int b15127;
+  public int b15128;
+  public int b15129;
+  public int b15130;
+  public int b15131;
+  public int b15132;
+  public int b15133;
+  public int b15134;
+  public int b15135;
+  public int b15136;
+  public int b15137;
+  public int b15138;
+  public int b15139;
+  public int b15140;
+  public int b15141;
+  public int b15142;
+  public int b15143;
+  public int b15144;
+  public int b15145;
+  public int b15146;
+  public int b15147;
+  public int b15148;
+  public int b15149;
+  public int b15150;
+  public int b15151;
+  public int b15152;
+  public int b15153;
+  public int b15154;
+  public int b15155;
+  public int b15156;
+  public int b15157;
+  public int b15158;
+  public int b15159;
+  public int b15160;
+  public int b15161;
+  public int b15162;
+  public int b15163;
+  public int b15164;
+  public int b15165;
+  public int b15166;
+  public int b15167;
+  public int b15168;
+  public int b15169;
+  public int b15170;
+  public int b15171;
+  public int b15172;
+  public int b15173;
+  public int b15174;
+  public int b15175;
+  public int b15176;
+  public int b15177;
+  public int b15178;
+  public int b15179;
+  public int b15180;
+  public int b15181;
+  public int b15182;
+  public int b15183;
+  public int b15184;
+  public int b15185;
+  public int b15186;
+  public int b15187;
+  public int b15188;
+  public int b15189;
+  public int b15190;
+  public int b15191;
+  public int b15192;
+  public int b15193;
+  public int b15194;
+  public int b15195;
+  public int b15196;
+  public int b15197;
+  public int b15198;
+  public int b15199;
+  public int b15200;
+  public int b15201;
+  public int b15202;
+  public int b15203;
+  public int b15204;
+  public int b15205;
+  public int b15206;
+  public int b15207;
+  public int b15208;
+  public int b15209;
+  public int b15210;
+  public int b15211;
+  public int b15212;
+  public int b15213;
+  public int b15214;
+  public int b15215;
+  public int b15216;
+  public int b15217;
+  public int b15218;
+  public int b15219;
+  public int b15220;
+  public int b15221;
+  public int b15222;
+  public int b15223;
+  public int b15224;
+  public int b15225;
+  public int b15226;
+  public int b15227;
+  public int b15228;
+  public int b15229;
+  public int b15230;
+  public int b15231;
+  public int b15232;
+  public int b15233;
+  public int b15234;
+  public int b15235;
+  public int b15236;
+  public int b15237;
+  public int b15238;
+  public int b15239;
+  public int b15240;
+  public int b15241;
+  public int b15242;
+  public int b15243;
+  public int b15244;
+  public int b15245;
+  public int b15246;
+  public int b15247;
+  public int b15248;
+  public int b15249;
+  public int b15250;
+  public int b15251;
+  public int b15252;
+  public int b15253;
+  public int b15254;
+  public int b15255;
+  public int b15256;
+  public int b15257;
+  public int b15258;
+  public int b15259;
+  public int b15260;
+  public int b15261;
+  public int b15262;
+  public int b15263;
+  public int b15264;
+  public int b15265;
+  public int b15266;
+  public int b15267;
+  public int b15268;
+  public int b15269;
+  public int b15270;
+  public int b15271;
+  public int b15272;
+  public int b15273;
+  public int b15274;
+  public int b15275;
+  public int b15276;
+  public int b15277;
+  public int b15278;
+  public int b15279;
+  public int b15280;
+  public int b15281;
+  public int b15282;
+  public int b15283;
+  public int b15284;
+  public int b15285;
+  public int b15286;
+  public int b15287;
+  public int b15288;
+  public int b15289;
+  public int b15290;
+  public int b15291;
+  public int b15292;
+  public int b15293;
+  public int b15294;
+  public int b15295;
+  public int b15296;
+  public int b15297;
+  public int b15298;
+  public int b15299;
+  public int b15300;
+  public int b15301;
+  public int b15302;
+  public int b15303;
+  public int b15304;
+  public int b15305;
+  public int b15306;
+  public int b15307;
+  public int b15308;
+  public int b15309;
+  public int b15310;
+  public int b15311;
+  public int b15312;
+  public int b15313;
+  public int b15314;
+  public int b15315;
+  public int b15316;
+  public int b15317;
+  public int b15318;
+  public int b15319;
+  public int b15320;
+  public int b15321;
+  public int b15322;
+  public int b15323;
+  public int b15324;
+  public int b15325;
+  public int b15326;
+  public int b15327;
+  public int b15328;
+  public int b15329;
+  public int b15330;
+  public int b15331;
+  public int b15332;
+  public int b15333;
+  public int b15334;
+  public int b15335;
+  public int b15336;
+  public int b15337;
+  public int b15338;
+  public int b15339;
+  public int b15340;
+  public int b15341;
+  public int b15342;
+  public int b15343;
+  public int b15344;
+  public int b15345;
+  public int b15346;
+  public int b15347;
+  public int b15348;
+  public int b15349;
+  public int b15350;
+  public int b15351;
+  public int b15352;
+  public int b15353;
+  public int b15354;
+  public int b15355;
+  public int b15356;
+  public int b15357;
+  public int b15358;
+  public int b15359;
+  public int b15360;
+  public int b15361;
+  public int b15362;
+  public int b15363;
+  public int b15364;
+  public int b15365;
+  public int b15366;
+  public int b15367;
+  public int b15368;
+  public int b15369;
+  public int b15370;
+  public int b15371;
+  public int b15372;
+  public int b15373;
+  public int b15374;
+  public int b15375;
+  public int b15376;
+  public int b15377;
+  public int b15378;
+  public int b15379;
+  public int b15380;
+  public int b15381;
+  public int b15382;
+  public int b15383;
+  public int b15384;
+  public int b15385;
+  public int b15386;
+  public int b15387;
+  public int b15388;
+  public int b15389;
+  public int b15390;
+  public int b15391;
+  public int b15392;
+  public int b15393;
+  public int b15394;
+  public int b15395;
+  public int b15396;
+  public int b15397;
+  public int b15398;
+  public int b15399;
+  public int b15400;
+  public int b15401;
+  public int b15402;
+  public int b15403;
+  public int b15404;
+  public int b15405;
+  public int b15406;
+  public int b15407;
+  public int b15408;
+  public int b15409;
+  public int b15410;
+  public int b15411;
+  public int b15412;
+  public int b15413;
+  public int b15414;
+  public int b15415;
+  public int b15416;
+  public int b15417;
+  public int b15418;
+  public int b15419;
+  public int b15420;
+  public int b15421;
+  public int b15422;
+  public int b15423;
+  public int b15424;
+  public int b15425;
+  public int b15426;
+  public int b15427;
+  public int b15428;
+  public int b15429;
+  public int b15430;
+  public int b15431;
+  public int b15432;
+  public int b15433;
+  public int b15434;
+  public int b15435;
+  public int b15436;
+  public int b15437;
+  public int b15438;
+  public int b15439;
+  public int b15440;
+  public int b15441;
+  public int b15442;
+  public int b15443;
+  public int b15444;
+  public int b15445;
+  public int b15446;
+  public int b15447;
+  public int b15448;
+  public int b15449;
+  public int b15450;
+  public int b15451;
+  public int b15452;
+  public int b15453;
+  public int b15454;
+  public int b15455;
+  public int b15456;
+  public int b15457;
+  public int b15458;
+  public int b15459;
+  public int b15460;
+  public int b15461;
+  public int b15462;
+  public int b15463;
+  public int b15464;
+  public int b15465;
+  public int b15466;
+  public int b15467;
+  public int b15468;
+  public int b15469;
+  public int b15470;
+  public int b15471;
+  public int b15472;
+  public int b15473;
+  public int b15474;
+  public int b15475;
+  public int b15476;
+  public int b15477;
+  public int b15478;
+  public int b15479;
+  public int b15480;
+  public int b15481;
+  public int b15482;
+  public int b15483;
+  public int b15484;
+  public int b15485;
+  public int b15486;
+  public int b15487;
+  public int b15488;
+  public int b15489;
+  public int b15490;
+  public int b15491;
+  public int b15492;
+  public int b15493;
+  public int b15494;
+  public int b15495;
+  public int b15496;
+  public int b15497;
+  public int b15498;
+  public int b15499;
+  public int b15500;
+  public int b15501;
+  public int b15502;
+  public int b15503;
+  public int b15504;
+  public int b15505;
+  public int b15506;
+  public int b15507;
+  public int b15508;
+  public int b15509;
+  public int b15510;
+  public int b15511;
+  public int b15512;
+  public int b15513;
+  public int b15514;
+  public int b15515;
+  public int b15516;
+  public int b15517;
+  public int b15518;
+  public int b15519;
+  public int b15520;
+  public int b15521;
+  public int b15522;
+  public int b15523;
+  public int b15524;
+  public int b15525;
+  public int b15526;
+  public int b15527;
+  public int b15528;
+  public int b15529;
+  public int b15530;
+  public int b15531;
+  public int b15532;
+  public int b15533;
+  public int b15534;
+  public int b15535;
+  public int b15536;
+  public int b15537;
+  public int b15538;
+  public int b15539;
+  public int b15540;
+  public int b15541;
+  public int b15542;
+  public int b15543;
+  public int b15544;
+  public int b15545;
+  public int b15546;
+  public int b15547;
+  public int b15548;
+  public int b15549;
+  public int b15550;
+  public int b15551;
+  public int b15552;
+  public int b15553;
+  public int b15554;
+  public int b15555;
+  public int b15556;
+  public int b15557;
+  public int b15558;
+  public int b15559;
+  public int b15560;
+  public int b15561;
+  public int b15562;
+  public int b15563;
+  public int b15564;
+  public int b15565;
+  public int b15566;
+  public int b15567;
+  public int b15568;
+  public int b15569;
+  public int b15570;
+  public int b15571;
+  public int b15572;
+  public int b15573;
+  public int b15574;
+  public int b15575;
+  public int b15576;
+  public int b15577;
+  public int b15578;
+  public int b15579;
+  public int b15580;
+  public int b15581;
+  public int b15582;
+  public int b15583;
+  public int b15584;
+  public int b15585;
+  public int b15586;
+  public int b15587;
+  public int b15588;
+  public int b15589;
+  public int b15590;
+  public int b15591;
+  public int b15592;
+  public int b15593;
+  public int b15594;
+  public int b15595;
+  public int b15596;
+  public int b15597;
+  public int b15598;
+  public int b15599;
+  public int b15600;
+  public int b15601;
+  public int b15602;
+  public int b15603;
+  public int b15604;
+  public int b15605;
+  public int b15606;
+  public int b15607;
+  public int b15608;
+  public int b15609;
+  public int b15610;
+  public int b15611;
+  public int b15612;
+  public int b15613;
+  public int b15614;
+  public int b15615;
+  public int b15616;
+  public int b15617;
+  public int b15618;
+  public int b15619;
+  public int b15620;
+  public int b15621;
+  public int b15622;
+  public int b15623;
+  public int b15624;
+  public int b15625;
+  public int b15626;
+  public int b15627;
+  public int b15628;
+  public int b15629;
+  public int b15630;
+  public int b15631;
+  public int b15632;
+  public int b15633;
+  public int b15634;
+  public int b15635;
+  public int b15636;
+  public int b15637;
+  public int b15638;
+  public int b15639;
+  public int b15640;
+  public int b15641;
+  public int b15642;
+  public int b15643;
+  public int b15644;
+  public int b15645;
+  public int b15646;
+  public int b15647;
+  public int b15648;
+  public int b15649;
+  public int b15650;
+  public int b15651;
+  public int b15652;
+  public int b15653;
+  public int b15654;
+  public int b15655;
+  public int b15656;
+  public int b15657;
+  public int b15658;
+  public int b15659;
+  public int b15660;
+  public int b15661;
+  public int b15662;
+  public int b15663;
+  public int b15664;
+  public int b15665;
+  public int b15666;
+  public int b15667;
+  public int b15668;
+  public int b15669;
+  public int b15670;
+  public int b15671;
+  public int b15672;
+  public int b15673;
+  public int b15674;
+  public int b15675;
+  public int b15676;
+  public int b15677;
+  public int b15678;
+  public int b15679;
+  public int b15680;
+  public int b15681;
+  public int b15682;
+  public int b15683;
+  public int b15684;
+  public int b15685;
+  public int b15686;
+  public int b15687;
+  public int b15688;
+  public int b15689;
+  public int b15690;
+  public int b15691;
+  public int b15692;
+  public int b15693;
+  public int b15694;
+  public int b15695;
+  public int b15696;
+  public int b15697;
+  public int b15698;
+  public int b15699;
+  public int b15700;
+  public int b15701;
+  public int b15702;
+  public int b15703;
+  public int b15704;
+  public int b15705;
+  public int b15706;
+  public int b15707;
+  public int b15708;
+  public int b15709;
+  public int b15710;
+  public int b15711;
+  public int b15712;
+  public int b15713;
+  public int b15714;
+  public int b15715;
+  public int b15716;
+  public int b15717;
+  public int b15718;
+  public int b15719;
+  public int b15720;
+  public int b15721;
+  public int b15722;
+  public int b15723;
+  public int b15724;
+  public int b15725;
+  public int b15726;
+  public int b15727;
+  public int b15728;
+  public int b15729;
+  public int b15730;
+  public int b15731;
+  public int b15732;
+  public int b15733;
+  public int b15734;
+  public int b15735;
+  public int b15736;
+  public int b15737;
+  public int b15738;
+  public int b15739;
+  public int b15740;
+  public int b15741;
+  public int b15742;
+  public int b15743;
+  public int b15744;
+  public int b15745;
+  public int b15746;
+  public int b15747;
+  public int b15748;
+  public int b15749;
+  public int b15750;
+  public int b15751;
+  public int b15752;
+  public int b15753;
+  public int b15754;
+  public int b15755;
+  public int b15756;
+  public int b15757;
+  public int b15758;
+  public int b15759;
+  public int b15760;
+  public int b15761;
+  public int b15762;
+  public int b15763;
+  public int b15764;
+  public int b15765;
+  public int b15766;
+  public int b15767;
+  public int b15768;
+  public int b15769;
+  public int b15770;
+  public int b15771;
+  public int b15772;
+  public int b15773;
+  public int b15774;
+  public int b15775;
+  public int b15776;
+  public int b15777;
+  public int b15778;
+  public int b15779;
+  public int b15780;
+  public int b15781;
+  public int b15782;
+  public int b15783;
+  public int b15784;
+  public int b15785;
+  public int b15786;
+  public int b15787;
+  public int b15788;
+  public int b15789;
+  public int b15790;
+  public int b15791;
+  public int b15792;
+  public int b15793;
+  public int b15794;
+  public int b15795;
+  public int b15796;
+  public int b15797;
+  public int b15798;
+  public int b15799;
+  public int b15800;
+  public int b15801;
+  public int b15802;
+  public int b15803;
+  public int b15804;
+  public int b15805;
+  public int b15806;
+  public int b15807;
+  public int b15808;
+  public int b15809;
+  public int b15810;
+  public int b15811;
+  public int b15812;
+  public int b15813;
+  public int b15814;
+  public int b15815;
+  public int b15816;
+  public int b15817;
+  public int b15818;
+  public int b15819;
+  public int b15820;
+  public int b15821;
+  public int b15822;
+  public int b15823;
+  public int b15824;
+  public int b15825;
+  public int b15826;
+  public int b15827;
+  public int b15828;
+  public int b15829;
+  public int b15830;
+  public int b15831;
+  public int b15832;
+  public int b15833;
+  public int b15834;
+  public int b15835;
+  public int b15836;
+  public int b15837;
+  public int b15838;
+  public int b15839;
+  public int b15840;
+  public int b15841;
+  public int b15842;
+  public int b15843;
+  public int b15844;
+  public int b15845;
+  public int b15846;
+  public int b15847;
+  public int b15848;
+  public int b15849;
+  public int b15850;
+  public int b15851;
+  public int b15852;
+  public int b15853;
+  public int b15854;
+  public int b15855;
+  public int b15856;
+  public int b15857;
+  public int b15858;
+  public int b15859;
+  public int b15860;
+  public int b15861;
+  public int b15862;
+  public int b15863;
+  public int b15864;
+  public int b15865;
+  public int b15866;
+  public int b15867;
+  public int b15868;
+  public int b15869;
+  public int b15870;
+  public int b15871;
+  public int b15872;
+  public int b15873;
+  public int b15874;
+  public int b15875;
+  public int b15876;
+  public int b15877;
+  public int b15878;
+  public int b15879;
+  public int b15880;
+  public int b15881;
+  public int b15882;
+  public int b15883;
+  public int b15884;
+  public int b15885;
+  public int b15886;
+  public int b15887;
+  public int b15888;
+  public int b15889;
+  public int b15890;
+  public int b15891;
+  public int b15892;
+  public int b15893;
+  public int b15894;
+  public int b15895;
+  public int b15896;
+  public int b15897;
+  public int b15898;
+  public int b15899;
+  public int b15900;
+  public int b15901;
+  public int b15902;
+  public int b15903;
+  public int b15904;
+  public int b15905;
+  public int b15906;
+  public int b15907;
+  public int b15908;
+  public int b15909;
+  public int b15910;
+  public int b15911;
+  public int b15912;
+  public int b15913;
+  public int b15914;
+  public int b15915;
+  public int b15916;
+  public int b15917;
+  public int b15918;
+  public int b15919;
+  public int b15920;
+  public int b15921;
+  public int b15922;
+  public int b15923;
+  public int b15924;
+  public int b15925;
+  public int b15926;
+  public int b15927;
+  public int b15928;
+  public int b15929;
+  public int b15930;
+  public int b15931;
+  public int b15932;
+  public int b15933;
+  public int b15934;
+  public int b15935;
+  public int b15936;
+  public int b15937;
+  public int b15938;
+  public int b15939;
+  public int b15940;
+  public int b15941;
+  public int b15942;
+  public int b15943;
+  public int b15944;
+  public int b15945;
+  public int b15946;
+  public int b15947;
+  public int b15948;
+  public int b15949;
+  public int b15950;
+  public int b15951;
+  public int b15952;
+  public int b15953;
+  public int b15954;
+  public int b15955;
+  public int b15956;
+  public int b15957;
+  public int b15958;
+  public int b15959;
+  public int b15960;
+  public int b15961;
+  public int b15962;
+  public int b15963;
+  public int b15964;
+  public int b15965;
+  public int b15966;
+  public int b15967;
+  public int b15968;
+  public int b15969;
+  public int b15970;
+  public int b15971;
+  public int b15972;
+  public int b15973;
+  public int b15974;
+  public int b15975;
+  public int b15976;
+  public int b15977;
+  public int b15978;
+  public int b15979;
+  public int b15980;
+  public int b15981;
+  public int b15982;
+  public int b15983;
+  public int b15984;
+  public int b15985;
+  public int b15986;
+  public int b15987;
+  public int b15988;
+  public int b15989;
+  public int b15990;
+  public int b15991;
+  public int b15992;
+  public int b15993;
+  public int b15994;
+  public int b15995;
+  public int b15996;
+  public int b15997;
+  public int b15998;
+  public int b15999;
+  public int b16000;
+  public int b16001;
+  public int b16002;
+  public int b16003;
+  public int b16004;
+  public int b16005;
+  public int b16006;
+  public int b16007;
+  public int b16008;
+  public int b16009;
+  public int b16010;
+  public int b16011;
+  public int b16012;
+  public int b16013;
+  public int b16014;
+  public int b16015;
+  public int b16016;
+  public int b16017;
+  public int b16018;
+  public int b16019;
+  public int b16020;
+  public int b16021;
+  public int b16022;
+  public int b16023;
+  public int b16024;
+  public int b16025;
+  public int b16026;
+  public int b16027;
+  public int b16028;
+  public int b16029;
+  public int b16030;
+  public int b16031;
+  public int b16032;
+  public int b16033;
+  public int b16034;
+  public int b16035;
+  public int b16036;
+  public int b16037;
+  public int b16038;
+  public int b16039;
+  public int b16040;
+  public int b16041;
+  public int b16042;
+  public int b16043;
+  public int b16044;
+  public int b16045;
+  public int b16046;
+  public int b16047;
+  public int b16048;
+  public int b16049;
+  public int b16050;
+  public int b16051;
+  public int b16052;
+  public int b16053;
+  public int b16054;
+  public int b16055;
+  public int b16056;
+  public int b16057;
+  public int b16058;
+  public int b16059;
+  public int b16060;
+  public int b16061;
+  public int b16062;
+  public int b16063;
+  public int b16064;
+  public int b16065;
+  public int b16066;
+  public int b16067;
+  public int b16068;
+  public int b16069;
+  public int b16070;
+  public int b16071;
+  public int b16072;
+  public int b16073;
+  public int b16074;
+  public int b16075;
+  public int b16076;
+  public int b16077;
+  public int b16078;
+  public int b16079;
+  public int b16080;
+  public int b16081;
+  public int b16082;
+  public int b16083;
+  public int b16084;
+  public int b16085;
+  public int b16086;
+  public int b16087;
+  public int b16088;
+  public int b16089;
+  public int b16090;
+  public int b16091;
+  public int b16092;
+  public int b16093;
+  public int b16094;
+  public int b16095;
+  public int b16096;
+  public int b16097;
+  public int b16098;
+  public int b16099;
+  public int b16100;
+  public int b16101;
+  public int b16102;
+  public int b16103;
+  public int b16104;
+  public int b16105;
+  public int b16106;
+  public int b16107;
+  public int b16108;
+  public int b16109;
+  public int b16110;
+  public int b16111;
+  public int b16112;
+  public int b16113;
+  public int b16114;
+  public int b16115;
+  public int b16116;
+  public int b16117;
+  public int b16118;
+  public int b16119;
+  public int b16120;
+  public int b16121;
+  public int b16122;
+  public int b16123;
+  public int b16124;
+  public int b16125;
+  public int b16126;
+  public int b16127;
+  public int b16128;
+  public int b16129;
+  public int b16130;
+  public int b16131;
+  public int b16132;
+  public int b16133;
+  public int b16134;
+  public int b16135;
+  public int b16136;
+  public int b16137;
+  public int b16138;
+  public int b16139;
+  public int b16140;
+  public int b16141;
+  public int b16142;
+  public int b16143;
+  public int b16144;
+  public int b16145;
+  public int b16146;
+  public int b16147;
+  public int b16148;
+  public int b16149;
+  public int b16150;
+  public int b16151;
+  public int b16152;
+  public int b16153;
+  public int b16154;
+  public int b16155;
+  public int b16156;
+  public int b16157;
+  public int b16158;
+  public int b16159;
+  public int b16160;
+  public int b16161;
+  public int b16162;
+  public int b16163;
+  public int b16164;
+  public int b16165;
+  public int b16166;
+  public int b16167;
+  public int b16168;
+  public int b16169;
+  public int b16170;
+  public int b16171;
+  public int b16172;
+  public int b16173;
+  public int b16174;
+  public int b16175;
+  public int b16176;
+  public int b16177;
+  public int b16178;
+  public int b16179;
+  public int b16180;
+  public int b16181;
+  public int b16182;
+  public int b16183;
+  public int b16184;
+  public int b16185;
+  public int b16186;
+  public int b16187;
+  public int b16188;
+  public int b16189;
+  public int b16190;
+  public int b16191;
+  public int b16192;
+  public int b16193;
+  public int b16194;
+  public int b16195;
+  public int b16196;
+  public int b16197;
+  public int b16198;
+  public int b16199;
+  public int b16200;
+  public int b16201;
+  public int b16202;
+  public int b16203;
+  public int b16204;
+  public int b16205;
+  public int b16206;
+  public int b16207;
+  public int b16208;
+  public int b16209;
+  public int b16210;
+  public int b16211;
+  public int b16212;
+  public int b16213;
+  public int b16214;
+  public int b16215;
+  public int b16216;
+  public int b16217;
+  public int b16218;
+  public int b16219;
+  public int b16220;
+  public int b16221;
+  public int b16222;
+  public int b16223;
+  public int b16224;
+  public int b16225;
+  public int b16226;
+  public int b16227;
+  public int b16228;
+  public int b16229;
+  public int b16230;
+  public int b16231;
+  public int b16232;
+  public int b16233;
+  public int b16234;
+  public int b16235;
+  public int b16236;
+  public int b16237;
+  public int b16238;
+  public int b16239;
+  public int b16240;
+  public int b16241;
+  public int b16242;
+  public int b16243;
+  public int b16244;
+  public int b16245;
+  public int b16246;
+  public int b16247;
+  public int b16248;
+  public int b16249;
+  public int b16250;
+  public int b16251;
+  public int b16252;
+  public int b16253;
+  public int b16254;
+  public int b16255;
+  public int b16256;
+  public int b16257;
+  public int b16258;
+  public int b16259;
+  public int b16260;
+  public int b16261;
+  public int b16262;
+  public int b16263;
+  public int b16264;
+  public int b16265;
+  public int b16266;
+  public int b16267;
+  public int b16268;
+  public int b16269;
+  public int b16270;
+  public int b16271;
+  public int b16272;
+  public int b16273;
+  public int b16274;
+  public int b16275;
+  public int b16276;
+  public int b16277;
+  public int b16278;
+  public int b16279;
+  public int b16280;
+  public int b16281;
+  public int b16282;
+  public int b16283;
+  public int b16284;
+  public int b16285;
+  public int b16286;
+  public int b16287;
+  public int b16288;
+  public int b16289;
+  public int b16290;
+  public int b16291;
+  public int b16292;
+  public int b16293;
+  public int b16294;
+  public int b16295;
+  public int b16296;
+  public int b16297;
+  public int b16298;
+  public int b16299;
+  public int b16300;
+  public int b16301;
+  public int b16302;
+  public int b16303;
+  public int b16304;
+  public int b16305;
+  public int b16306;
+  public int b16307;
+  public int b16308;
+  public int b16309;
+  public int b16310;
+  public int b16311;
+  public int b16312;
+  public int b16313;
+  public int b16314;
+  public int b16315;
+  public int b16316;
+  public int b16317;
+  public int b16318;
+  public int b16319;
+  public int b16320;
+  public int b16321;
+  public int b16322;
+  public int b16323;
+  public int b16324;
+  public int b16325;
+  public int b16326;
+  public int b16327;
+  public int b16328;
+  public int b16329;
+  public int b16330;
+  public int b16331;
+  public int b16332;
+  public int b16333;
+  public int b16334;
+  public int b16335;
+  public int b16336;
+  public int b16337;
+  public int b16338;
+  public int b16339;
+  public int b16340;
+  public int b16341;
+  public int b16342;
+  public int b16343;
+  public int b16344;
+  public int b16345;
+  public int b16346;
+  public int b16347;
+  public int b16348;
+  public int b16349;
+  public int b16350;
+  public int b16351;
+  public int b16352;
+  public int b16353;
+  public int b16354;
+  public int b16355;
+  public int b16356;
+  public int b16357;
+  public int b16358;
+  public int b16359;
+  public int b16360;
+  public int b16361;
+  public int b16362;
+  public int b16363;
+  public int b16364;
+  public int b16365;
+  public int b16366;
+  public int b16367;
+  public int b16368;
+  public int b16369;
+  public int b16370;
+  public int b16371;
+  public int b16372;
+  public int b16373;
+  public int b16374;
+  public int b16375;
+  public int b16376;
+  public int b16377;
+  public int b16378;
+  public int b16379;
+  public int b16380;
+  public int b16381;
+  public int b16382;
+  public int b16383;
+  public int b16384;
+  public int b16385;
+  public int b16386;
+  public int b16387;
+  public int b16388;
+  public int b16389;
+  public int b16390;
+  public int b16391;
+  public int b16392;
+  public int b16393;
+  public int b16394;
+  public int b16395;
+  public int b16396;
+  public int b16397;
+  public int b16398;
+  public int b16399;
+  public int b16400;
+  public int b16401;
+  public int b16402;
+  public int b16403;
+  public int b16404;
+  public int b16405;
+  public int b16406;
+  public int b16407;
+  public int b16408;
+  public int b16409;
+  public int b16410;
+  public int b16411;
+  public int b16412;
+  public int b16413;
+  public int b16414;
+  public int b16415;
+  public int b16416;
+  public int b16417;
+  public int b16418;
+  public int b16419;
+  public int b16420;
+  public int b16421;
+  public int b16422;
+  public int b16423;
+  public int b16424;
+  public int b16425;
+  public int b16426;
+  public int b16427;
+  public int b16428;
+  public int b16429;
+  public int b16430;
+  public int b16431;
+  public int b16432;
+  public int b16433;
+  public int b16434;
+  public int b16435;
+  public int b16436;
+  public int b16437;
+  public int b16438;
+  public int b16439;
+  public int b16440;
+  public int b16441;
+  public int b16442;
+  public int b16443;
+  public int b16444;
+  public int b16445;
+  public int b16446;
+  public int b16447;
+  public int b16448;
+  public int b16449;
+  public int b16450;
+  public int b16451;
+  public int b16452;
+  public int b16453;
+  public int b16454;
+  public int b16455;
+  public int b16456;
+  public int b16457;
+  public int b16458;
+  public int b16459;
+  public int b16460;
+  public int b16461;
+  public int b16462;
+  public int b16463;
+  public int b16464;
+  public int b16465;
+  public int b16466;
+  public int b16467;
+  public int b16468;
+  public int b16469;
+  public int b16470;
+  public int b16471;
+  public int b16472;
+  public int b16473;
+  public int b16474;
+  public int b16475;
+  public int b16476;
+  public int b16477;
+  public int b16478;
+  public int b16479;
+  public int b16480;
+  public int b16481;
+  public int b16482;
+  public int b16483;
+  public int b16484;
+  public int b16485;
+  public int b16486;
+  public int b16487;
+  public int b16488;
+  public int b16489;
+  public int b16490;
+  public int b16491;
+  public int b16492;
+  public int b16493;
+  public int b16494;
+  public int b16495;
+  public int b16496;
+  public int b16497;
+  public int b16498;
+  public int b16499;
+  public int b16500;
+  public int b16501;
+  public int b16502;
+  public int b16503;
+  public int b16504;
+  public int b16505;
+  public int b16506;
+  public int b16507;
+  public int b16508;
+  public int b16509;
+  public int b16510;
+  public int b16511;
+  public int b16512;
+  public int b16513;
+  public int b16514;
+  public int b16515;
+  public int b16516;
+  public int b16517;
+  public int b16518;
+  public int b16519;
+  public int b16520;
+  public int b16521;
+  public int b16522;
+  public int b16523;
+  public int b16524;
+  public int b16525;
+  public int b16526;
+  public int b16527;
+  public int b16528;
+  public int b16529;
+  public int b16530;
+  public int b16531;
+  public int b16532;
+  public int b16533;
+  public int b16534;
+  public int b16535;
+  public int b16536;
+  public int b16537;
+  public int b16538;
+  public int b16539;
+  public int b16540;
+  public int b16541;
+  public int b16542;
+  public int b16543;
+  public int b16544;
+  public int b16545;
+  public int b16546;
+  public int b16547;
+  public int b16548;
+  public int b16549;
+  public int b16550;
+  public int b16551;
+  public int b16552;
+  public int b16553;
+  public int b16554;
+  public int b16555;
+  public int b16556;
+  public int b16557;
+  public int b16558;
+  public int b16559;
+  public int b16560;
+  public int b16561;
+  public int b16562;
+  public int b16563;
+  public int b16564;
+  public int b16565;
+  public int b16566;
+  public int b16567;
+  public int b16568;
+  public int b16569;
+  public int b16570;
+  public int b16571;
+  public int b16572;
+  public int b16573;
+  public int b16574;
+  public int b16575;
+  public int b16576;
+  public int b16577;
+  public int b16578;
+  public int b16579;
+  public int b16580;
+  public int b16581;
+  public int b16582;
+  public int b16583;
+  public int b16584;
+  public int b16585;
+  public int b16586;
+  public int b16587;
+  public int b16588;
+  public int b16589;
+  public int b16590;
+  public int b16591;
+  public int b16592;
+  public int b16593;
+  public int b16594;
+  public int b16595;
+  public int b16596;
+  public int b16597;
+  public int b16598;
+  public int b16599;
+  public int b16600;
+  public int b16601;
+  public int b16602;
+  public int b16603;
+  public int b16604;
+  public int b16605;
+  public int b16606;
+  public int b16607;
+  public int b16608;
+  public int b16609;
+  public int b16610;
+  public int b16611;
+  public int b16612;
+  public int b16613;
+  public int b16614;
+  public int b16615;
+  public int b16616;
+  public int b16617;
+  public int b16618;
+  public int b16619;
+  public int b16620;
+  public int b16621;
+  public int b16622;
+  public int b16623;
+  public int b16624;
+  public int b16625;
+  public int b16626;
+  public int b16627;
+  public int b16628;
+  public int b16629;
+  public int b16630;
+  public int b16631;
+  public int b16632;
+  public int b16633;
+  public int b16634;
+  public int b16635;
+  public int b16636;
+  public int b16637;
+  public int b16638;
+  public int b16639;
+  public int b16640;
+  public int b16641;
+  public int b16642;
+  public int b16643;
+  public int b16644;
+  public int b16645;
+  public int b16646;
+  public int b16647;
+  public int b16648;
+  public int b16649;
+  public int b16650;
+  public int b16651;
+  public int b16652;
+  public int b16653;
+  public int b16654;
+  public int b16655;
+  public int b16656;
+  public int b16657;
+  public int b16658;
+  public int b16659;
+  public int b16660;
+  public int b16661;
+  public int b16662;
+  public int b16663;
+  public int b16664;
+  public int b16665;
+  public int b16666;
+  public int b16667;
+  public int b16668;
+  public int b16669;
+  public int b16670;
+  public int b16671;
+  public int b16672;
+  public int b16673;
+  public int b16674;
+  public int b16675;
+  public int b16676;
+  public int b16677;
+  public int b16678;
+  public int b16679;
+  public int b16680;
+  public int b16681;
+  public int b16682;
+  public int b16683;
+  public int b16684;
+  public int b16685;
+  public int b16686;
+  public int b16687;
+  public int b16688;
+  public int b16689;
+  public int b16690;
+  public int b16691;
+  public int b16692;
+  public int b16693;
+  public int b16694;
+  public int b16695;
+  public int b16696;
+  public int b16697;
+  public int b16698;
+  public int b16699;
+  public int b16700;
+  public int b16701;
+  public int b16702;
+  public int b16703;
+  public int b16704;
+  public int b16705;
+  public int b16706;
+  public int b16707;
+  public int b16708;
+  public int b16709;
+  public int b16710;
+  public int b16711;
+  public int b16712;
+  public int b16713;
+  public int b16714;
+  public int b16715;
+  public int b16716;
+  public int b16717;
+  public int b16718;
+  public int b16719;
+  public int b16720;
+  public int b16721;
+  public int b16722;
+  public int b16723;
+  public int b16724;
+  public int b16725;
+  public int b16726;
+  public int b16727;
+  public int b16728;
+  public int b16729;
+  public int b16730;
+  public int b16731;
+  public int b16732;
+  public int b16733;
+  public int b16734;
+  public int b16735;
+  public int b16736;
+  public int b16737;
+  public int b16738;
+  public int b16739;
+  public int b16740;
+  public int b16741;
+  public int b16742;
+  public int b16743;
+  public int b16744;
+  public int b16745;
+  public int b16746;
+  public int b16747;
+  public int b16748;
+  public int b16749;
+  public int b16750;
+  public int b16751;
+  public int b16752;
+  public int b16753;
+  public int b16754;
+  public int b16755;
+  public int b16756;
+  public int b16757;
+  public int b16758;
+  public int b16759;
+  public int b16760;
+  public int b16761;
+  public int b16762;
+  public int b16763;
+  public int b16764;
+  public int b16765;
+  public int b16766;
+  public int b16767;
+  public int b16768;
+  public int b16769;
+  public int b16770;
+  public int b16771;
+  public int b16772;
+  public int b16773;
+  public int b16774;
+  public int b16775;
+  public int b16776;
+  public int b16777;
+  public int b16778;
+  public int b16779;
+  public int b16780;
+  public int b16781;
+  public int b16782;
+  public int b16783;
+  public int b16784;
+  public int b16785;
+  public int b16786;
+  public int b16787;
+  public int b16788;
+  public int b16789;
+  public int b16790;
+  public int b16791;
+  public int b16792;
+  public int b16793;
+  public int b16794;
+  public int b16795;
+  public int b16796;
+  public int b16797;
+  public int b16798;
+  public int b16799;
+  public int b16800;
+  public int b16801;
+  public int b16802;
+  public int b16803;
+  public int b16804;
+  public int b16805;
+  public int b16806;
+  public int b16807;
+  public int b16808;
+  public int b16809;
+  public int b16810;
+  public int b16811;
+  public int b16812;
+  public int b16813;
+  public int b16814;
+  public int b16815;
+  public int b16816;
+  public int b16817;
+  public int b16818;
+  public int b16819;
+  public int b16820;
+  public int b16821;
+  public int b16822;
+  public int b16823;
+  public int b16824;
+  public int b16825;
+  public int b16826;
+  public int b16827;
+  public int b16828;
+  public int b16829;
+  public int b16830;
+  public int b16831;
+  public int b16832;
+  public int b16833;
+  public int b16834;
+  public int b16835;
+  public int b16836;
+  public int b16837;
+  public int b16838;
+  public int b16839;
+  public int b16840;
+  public int b16841;
+  public int b16842;
+  public int b16843;
+  public int b16844;
+  public int b16845;
+  public int b16846;
+  public int b16847;
+  public int b16848;
+  public int b16849;
+  public int b16850;
+  public int b16851;
+  public int b16852;
+  public int b16853;
+  public int b16854;
+  public int b16855;
+  public int b16856;
+  public int b16857;
+  public int b16858;
+  public int b16859;
+  public int b16860;
+  public int b16861;
+  public int b16862;
+  public int b16863;
+  public int b16864;
+  public int b16865;
+  public int b16866;
+  public int b16867;
+  public int b16868;
+  public int b16869;
+  public int b16870;
+  public int b16871;
+  public int b16872;
+  public int b16873;
+  public int b16874;
+  public int b16875;
+  public int b16876;
+  public int b16877;
+  public int b16878;
+  public int b16879;
+  public int b16880;
+  public int b16881;
+  public int b16882;
+  public int b16883;
+  public int b16884;
+  public int b16885;
+  public int b16886;
+  public int b16887;
+  public int b16888;
+  public int b16889;
+  public int b16890;
+  public int b16891;
+  public int b16892;
+  public int b16893;
+  public int b16894;
+  public int b16895;
+  public int b16896;
+  public int b16897;
+  public int b16898;
+  public int b16899;
+  public int b16900;
+  public int b16901;
+  public int b16902;
+  public int b16903;
+  public int b16904;
+  public int b16905;
+  public int b16906;
+  public int b16907;
+  public int b16908;
+  public int b16909;
+  public int b16910;
+  public int b16911;
+  public int b16912;
+  public int b16913;
+  public int b16914;
+  public int b16915;
+  public int b16916;
+  public int b16917;
+  public int b16918;
+  public int b16919;
+  public int b16920;
+  public int b16921;
+  public int b16922;
+  public int b16923;
+  public int b16924;
+  public int b16925;
+  public int b16926;
+  public int b16927;
+  public int b16928;
+  public int b16929;
+  public int b16930;
+  public int b16931;
+  public int b16932;
+  public int b16933;
+  public int b16934;
+  public int b16935;
+  public int b16936;
+  public int b16937;
+  public int b16938;
+  public int b16939;
+  public int b16940;
+  public int b16941;
+  public int b16942;
+  public int b16943;
+  public int b16944;
+  public int b16945;
+  public int b16946;
+  public int b16947;
+  public int b16948;
+  public int b16949;
+  public int b16950;
+  public int b16951;
+  public int b16952;
+  public int b16953;
+  public int b16954;
+  public int b16955;
+  public int b16956;
+  public int b16957;
+  public int b16958;
+  public int b16959;
+  public int b16960;
+  public int b16961;
+  public int b16962;
+  public int b16963;
+  public int b16964;
+  public int b16965;
+  public int b16966;
+  public int b16967;
+  public int b16968;
+  public int b16969;
+  public int b16970;
+  public int b16971;
+  public int b16972;
+  public int b16973;
+  public int b16974;
+  public int b16975;
+  public int b16976;
+  public int b16977;
+  public int b16978;
+  public int b16979;
+  public int b16980;
+  public int b16981;
+  public int b16982;
+  public int b16983;
+  public int b16984;
+  public int b16985;
+  public int b16986;
+  public int b16987;
+  public int b16988;
+  public int b16989;
+  public int b16990;
+  public int b16991;
+  public int b16992;
+  public int b16993;
+  public int b16994;
+  public int b16995;
+  public int b16996;
+  public int b16997;
+  public int b16998;
+  public int b16999;
+  public int b17000;
+  public int b17001;
+  public int b17002;
+  public int b17003;
+  public int b17004;
+  public int b17005;
+  public int b17006;
+  public int b17007;
+  public int b17008;
+  public int b17009;
+  public int b17010;
+  public int b17011;
+  public int b17012;
+  public int b17013;
+  public int b17014;
+  public int b17015;
+  public int b17016;
+  public int b17017;
+  public int b17018;
+  public int b17019;
+  public int b17020;
+  public int b17021;
+  public int b17022;
+  public int b17023;
+  public int b17024;
+  public int b17025;
+  public int b17026;
+  public int b17027;
+  public int b17028;
+  public int b17029;
+  public int b17030;
+  public int b17031;
+  public int b17032;
+  public int b17033;
+  public int b17034;
+  public int b17035;
+  public int b17036;
+  public int b17037;
+  public int b17038;
+  public int b17039;
+  public int b17040;
+  public int b17041;
+  public int b17042;
+  public int b17043;
+  public int b17044;
+  public int b17045;
+  public int b17046;
+  public int b17047;
+  public int b17048;
+  public int b17049;
+  public int b17050;
+  public int b17051;
+  public int b17052;
+  public int b17053;
+  public int b17054;
+  public int b17055;
+  public int b17056;
+  public int b17057;
+  public int b17058;
+  public int b17059;
+  public int b17060;
+  public int b17061;
+  public int b17062;
+  public int b17063;
+  public int b17064;
+  public int b17065;
+  public int b17066;
+  public int b17067;
+  public int b17068;
+  public int b17069;
+  public int b17070;
+  public int b17071;
+  public int b17072;
+  public int b17073;
+  public int b17074;
+  public int b17075;
+  public int b17076;
+  public int b17077;
+  public int b17078;
+  public int b17079;
+  public int b17080;
+  public int b17081;
+  public int b17082;
+  public int b17083;
+  public int b17084;
+  public int b17085;
+  public int b17086;
+  public int b17087;
+  public int b17088;
+  public int b17089;
+  public int b17090;
+  public int b17091;
+  public int b17092;
+  public int b17093;
+  public int b17094;
+  public int b17095;
+  public int b17096;
+  public int b17097;
+  public int b17098;
+  public int b17099;
+  public int b17100;
+  public int b17101;
+  public int b17102;
+  public int b17103;
+  public int b17104;
+  public int b17105;
+  public int b17106;
+  public int b17107;
+  public int b17108;
+  public int b17109;
+  public int b17110;
+  public int b17111;
+  public int b17112;
+  public int b17113;
+  public int b17114;
+  public int b17115;
+  public int b17116;
+  public int b17117;
+  public int b17118;
+  public int b17119;
+  public int b17120;
+  public int b17121;
+  public int b17122;
+  public int b17123;
+  public int b17124;
+  public int b17125;
+  public int b17126;
+  public int b17127;
+  public int b17128;
+  public int b17129;
+  public int b17130;
+  public int b17131;
+  public int b17132;
+  public int b17133;
+  public int b17134;
+  public int b17135;
+  public int b17136;
+  public int b17137;
+  public int b17138;
+  public int b17139;
+  public int b17140;
+  public int b17141;
+  public int b17142;
+  public int b17143;
+  public int b17144;
+  public int b17145;
+  public int b17146;
+  public int b17147;
+  public int b17148;
+  public int b17149;
+  public int b17150;
+  public int b17151;
+  public int b17152;
+  public int b17153;
+  public int b17154;
+  public int b17155;
+  public int b17156;
+  public int b17157;
+  public int b17158;
+  public int b17159;
+  public int b17160;
+  public int b17161;
+  public int b17162;
+  public int b17163;
+  public int b17164;
+  public int b17165;
+  public int b17166;
+  public int b17167;
+  public int b17168;
+  public int b17169;
+  public int b17170;
+  public int b17171;
+  public int b17172;
+  public int b17173;
+  public int b17174;
+  public int b17175;
+  public int b17176;
+  public int b17177;
+  public int b17178;
+  public int b17179;
+  public int b17180;
+  public int b17181;
+  public int b17182;
+  public int b17183;
+  public int b17184;
+  public int b17185;
+  public int b17186;
+  public int b17187;
+  public int b17188;
+  public int b17189;
+  public int b17190;
+  public int b17191;
+  public int b17192;
+  public int b17193;
+  public int b17194;
+  public int b17195;
+  public int b17196;
+  public int b17197;
+  public int b17198;
+  public int b17199;
+  public int b17200;
+  public int b17201;
+  public int b17202;
+  public int b17203;
+  public int b17204;
+  public int b17205;
+  public int b17206;
+  public int b17207;
+  public int b17208;
+  public int b17209;
+  public int b17210;
+  public int b17211;
+  public int b17212;
+  public int b17213;
+  public int b17214;
+  public int b17215;
+  public int b17216;
+  public int b17217;
+  public int b17218;
+  public int b17219;
+  public int b17220;
+  public int b17221;
+  public int b17222;
+  public int b17223;
+  public int b17224;
+  public int b17225;
+  public int b17226;
+  public int b17227;
+  public int b17228;
+  public int b17229;
+  public int b17230;
+  public int b17231;
+  public int b17232;
+  public int b17233;
+  public int b17234;
+  public int b17235;
+  public int b17236;
+  public int b17237;
+  public int b17238;
+  public int b17239;
+  public int b17240;
+  public int b17241;
+  public int b17242;
+  public int b17243;
+  public int b17244;
+  public int b17245;
+  public int b17246;
+  public int b17247;
+  public int b17248;
+  public int b17249;
+  public int b17250;
+  public int b17251;
+  public int b17252;
+  public int b17253;
+  public int b17254;
+  public int b17255;
+  public int b17256;
+  public int b17257;
+  public int b17258;
+  public int b17259;
+  public int b17260;
+  public int b17261;
+  public int b17262;
+  public int b17263;
+  public int b17264;
+  public int b17265;
+  public int b17266;
+  public int b17267;
+  public int b17268;
+  public int b17269;
+  public int b17270;
+  public int b17271;
+  public int b17272;
+  public int b17273;
+  public int b17274;
+  public int b17275;
+  public int b17276;
+  public int b17277;
+  public int b17278;
+  public int b17279;
+  public int b17280;
+  public int b17281;
+  public int b17282;
+  public int b17283;
+  public int b17284;
+  public int b17285;
+  public int b17286;
+  public int b17287;
+  public int b17288;
+  public int b17289;
+  public int b17290;
+  public int b17291;
+  public int b17292;
+  public int b17293;
+  public int b17294;
+  public int b17295;
+  public int b17296;
+  public int b17297;
+  public int b17298;
+  public int b17299;
+  public int b17300;
+  public int b17301;
+  public int b17302;
+  public int b17303;
+  public int b17304;
+  public int b17305;
+  public int b17306;
+  public int b17307;
+  public int b17308;
+  public int b17309;
+  public int b17310;
+  public int b17311;
+  public int b17312;
+  public int b17313;
+  public int b17314;
+  public int b17315;
+  public int b17316;
+  public int b17317;
+  public int b17318;
+  public int b17319;
+  public int b17320;
+  public int b17321;
+  public int b17322;
+  public int b17323;
+  public int b17324;
+  public int b17325;
+  public int b17326;
+  public int b17327;
+  public int b17328;
+  public int b17329;
+  public int b17330;
+  public int b17331;
+  public int b17332;
+  public int b17333;
+  public int b17334;
+  public int b17335;
+  public int b17336;
+  public int b17337;
+  public int b17338;
+  public int b17339;
+  public int b17340;
+  public int b17341;
+  public int b17342;
+  public int b17343;
+  public int b17344;
+  public int b17345;
+  public int b17346;
+  public int b17347;
+  public int b17348;
+  public int b17349;
+  public int b17350;
+  public int b17351;
+  public int b17352;
+  public int b17353;
+  public int b17354;
+  public int b17355;
+  public int b17356;
+  public int b17357;
+  public int b17358;
+  public int b17359;
+  public int b17360;
+  public int b17361;
+  public int b17362;
+  public int b17363;
+  public int b17364;
+  public int b17365;
+  public int b17366;
+  public int b17367;
+  public int b17368;
+  public int b17369;
+  public int b17370;
+  public int b17371;
+  public int b17372;
+  public int b17373;
+  public int b17374;
+  public int b17375;
+  public int b17376;
+  public int b17377;
+  public int b17378;
+  public int b17379;
+  public int b17380;
+  public int b17381;
+  public int b17382;
+  public int b17383;
+  public int b17384;
+  public int b17385;
+  public int b17386;
+  public int b17387;
+  public int b17388;
+  public int b17389;
+  public int b17390;
+  public int b17391;
+  public int b17392;
+  public int b17393;
+  public int b17394;
+  public int b17395;
+  public int b17396;
+  public int b17397;
+  public int b17398;
+  public int b17399;
+  public int b17400;
+  public int b17401;
+  public int b17402;
+  public int b17403;
+  public int b17404;
+  public int b17405;
+  public int b17406;
+  public int b17407;
+  public int b17408;
+  public int b17409;
+  public int b17410;
+  public int b17411;
+  public int b17412;
+  public int b17413;
+  public int b17414;
+  public int b17415;
+  public int b17416;
+  public int b17417;
+  public int b17418;
+  public int b17419;
+  public int b17420;
+  public int b17421;
+  public int b17422;
+  public int b17423;
+  public int b17424;
+  public int b17425;
+  public int b17426;
+  public int b17427;
+  public int b17428;
+  public int b17429;
+  public int b17430;
+  public int b17431;
+  public int b17432;
+  public int b17433;
+  public int b17434;
+  public int b17435;
+  public int b17436;
+  public int b17437;
+  public int b17438;
+  public int b17439;
+  public int b17440;
+  public int b17441;
+  public int b17442;
+  public int b17443;
+  public int b17444;
+  public int b17445;
+  public int b17446;
+  public int b17447;
+  public int b17448;
+  public int b17449;
+  public int b17450;
+  public int b17451;
+  public int b17452;
+  public int b17453;
+  public int b17454;
+  public int b17455;
+  public int b17456;
+  public int b17457;
+  public int b17458;
+  public int b17459;
+  public int b17460;
+  public int b17461;
+  public int b17462;
+  public int b17463;
+  public int b17464;
+  public int b17465;
+  public int b17466;
+  public int b17467;
+  public int b17468;
+  public int b17469;
+  public int b17470;
+  public int b17471;
+  public int b17472;
+  public int b17473;
+  public int b17474;
+  public int b17475;
+  public int b17476;
+  public int b17477;
+  public int b17478;
+  public int b17479;
+  public int b17480;
+  public int b17481;
+  public int b17482;
+  public int b17483;
+  public int b17484;
+  public int b17485;
+  public int b17486;
+  public int b17487;
+  public int b17488;
+  public int b17489;
+  public int b17490;
+  public int b17491;
+  public int b17492;
+  public int b17493;
+  public int b17494;
+  public int b17495;
+  public int b17496;
+  public int b17497;
+  public int b17498;
+  public int b17499;
+  public int b17500;
+  public int b17501;
+  public int b17502;
+  public int b17503;
+  public int b17504;
+  public int b17505;
+  public int b17506;
+  public int b17507;
+  public int b17508;
+  public int b17509;
+  public int b17510;
+  public int b17511;
+  public int b17512;
+  public int b17513;
+  public int b17514;
+  public int b17515;
+  public int b17516;
+  public int b17517;
+  public int b17518;
+  public int b17519;
+  public int b17520;
+  public int b17521;
+  public int b17522;
+  public int b17523;
+  public int b17524;
+  public int b17525;
+  public int b17526;
+  public int b17527;
+  public int b17528;
+  public int b17529;
+  public int b17530;
+  public int b17531;
+  public int b17532;
+  public int b17533;
+  public int b17534;
+  public int b17535;
+  public int b17536;
+  public int b17537;
+  public int b17538;
+  public int b17539;
+  public int b17540;
+  public int b17541;
+  public int b17542;
+  public int b17543;
+  public int b17544;
+  public int b17545;
+  public int b17546;
+  public int b17547;
+  public int b17548;
+  public int b17549;
+  public int b17550;
+  public int b17551;
+  public int b17552;
+  public int b17553;
+  public int b17554;
+  public int b17555;
+  public int b17556;
+  public int b17557;
+  public int b17558;
+  public int b17559;
+  public int b17560;
+  public int b17561;
+  public int b17562;
+  public int b17563;
+  public int b17564;
+  public int b17565;
+  public int b17566;
+  public int b17567;
+  public int b17568;
+  public int b17569;
+  public int b17570;
+  public int b17571;
+  public int b17572;
+  public int b17573;
+  public int b17574;
+  public int b17575;
+  public int b17576;
+  public int b17577;
+  public int b17578;
+  public int b17579;
+  public int b17580;
+  public int b17581;
+  public int b17582;
+  public int b17583;
+  public int b17584;
+  public int b17585;
+  public int b17586;
+  public int b17587;
+  public int b17588;
+  public int b17589;
+  public int b17590;
+  public int b17591;
+  public int b17592;
+  public int b17593;
+  public int b17594;
+  public int b17595;
+  public int b17596;
+  public int b17597;
+  public int b17598;
+  public int b17599;
+  public int b17600;
+  public int b17601;
+  public int b17602;
+  public int b17603;
+  public int b17604;
+  public int b17605;
+  public int b17606;
+  public int b17607;
+  public int b17608;
+  public int b17609;
+  public int b17610;
+  public int b17611;
+  public int b17612;
+  public int b17613;
+  public int b17614;
+  public int b17615;
+  public int b17616;
+  public int b17617;
+  public int b17618;
+  public int b17619;
+  public int b17620;
+  public int b17621;
+  public int b17622;
+  public int b17623;
+  public int b17624;
+  public int b17625;
+  public int b17626;
+  public int b17627;
+  public int b17628;
+  public int b17629;
+  public int b17630;
+  public int b17631;
+  public int b17632;
+  public int b17633;
+  public int b17634;
+  public int b17635;
+  public int b17636;
+  public int b17637;
+  public int b17638;
+  public int b17639;
+  public int b17640;
+  public int b17641;
+  public int b17642;
+  public int b17643;
+  public int b17644;
+  public int b17645;
+  public int b17646;
+  public int b17647;
+  public int b17648;
+  public int b17649;
+  public int b17650;
+  public int b17651;
+  public int b17652;
+  public int b17653;
+  public int b17654;
+  public int b17655;
+  public int b17656;
+  public int b17657;
+  public int b17658;
+  public int b17659;
+  public int b17660;
+  public int b17661;
+  public int b17662;
+  public int b17663;
+  public int b17664;
+  public int b17665;
+  public int b17666;
+  public int b17667;
+  public int b17668;
+  public int b17669;
+  public int b17670;
+  public int b17671;
+  public int b17672;
+  public int b17673;
+  public int b17674;
+  public int b17675;
+  public int b17676;
+  public int b17677;
+  public int b17678;
+  public int b17679;
+  public int b17680;
+  public int b17681;
+  public int b17682;
+  public int b17683;
+  public int b17684;
+  public int b17685;
+  public int b17686;
+  public int b17687;
+  public int b17688;
+  public int b17689;
+  public int b17690;
+  public int b17691;
+  public int b17692;
+  public int b17693;
+  public int b17694;
+  public int b17695;
+  public int b17696;
+  public int b17697;
+  public int b17698;
+  public int b17699;
+  public int b17700;
+  public int b17701;
+  public int b17702;
+  public int b17703;
+  public int b17704;
+  public int b17705;
+  public int b17706;
+  public int b17707;
+  public int b17708;
+  public int b17709;
+  public int b17710;
+  public int b17711;
+  public int b17712;
+  public int b17713;
+  public int b17714;
+  public int b17715;
+  public int b17716;
+  public int b17717;
+  public int b17718;
+  public int b17719;
+  public int b17720;
+  public int b17721;
+  public int b17722;
+  public int b17723;
+  public int b17724;
+  public int b17725;
+  public int b17726;
+  public int b17727;
+  public int b17728;
+  public int b17729;
+  public int b17730;
+  public int b17731;
+  public int b17732;
+  public int b17733;
+  public int b17734;
+  public int b17735;
+  public int b17736;
+  public int b17737;
+  public int b17738;
+  public int b17739;
+  public int b17740;
+  public int b17741;
+  public int b17742;
+  public int b17743;
+  public int b17744;
+  public int b17745;
+  public int b17746;
+  public int b17747;
+  public int b17748;
+  public int b17749;
+  public int b17750;
+  public int b17751;
+  public int b17752;
+  public int b17753;
+  public int b17754;
+  public int b17755;
+  public int b17756;
+  public int b17757;
+  public int b17758;
+  public int b17759;
+  public int b17760;
+  public int b17761;
+  public int b17762;
+  public int b17763;
+  public int b17764;
+  public int b17765;
+  public int b17766;
+  public int b17767;
+  public int b17768;
+  public int b17769;
+  public int b17770;
+  public int b17771;
+  public int b17772;
+  public int b17773;
+  public int b17774;
+  public int b17775;
+  public int b17776;
+  public int b17777;
+  public int b17778;
+  public int b17779;
+  public int b17780;
+  public int b17781;
+  public int b17782;
+  public int b17783;
+  public int b17784;
+  public int b17785;
+  public int b17786;
+  public int b17787;
+  public int b17788;
+  public int b17789;
+  public int b17790;
+  public int b17791;
+  public int b17792;
+  public int b17793;
+  public int b17794;
+  public int b17795;
+  public int b17796;
+  public int b17797;
+  public int b17798;
+  public int b17799;
+  public int b17800;
+  public int b17801;
+  public int b17802;
+  public int b17803;
+  public int b17804;
+  public int b17805;
+  public int b17806;
+  public int b17807;
+  public int b17808;
+  public int b17809;
+  public int b17810;
+  public int b17811;
+  public int b17812;
+  public int b17813;
+  public int b17814;
+  public int b17815;
+  public int b17816;
+  public int b17817;
+  public int b17818;
+  public int b17819;
+  public int b17820;
+  public int b17821;
+  public int b17822;
+  public int b17823;
+  public int b17824;
+  public int b17825;
+  public int b17826;
+  public int b17827;
+  public int b17828;
+  public int b17829;
+  public int b17830;
+  public int b17831;
+  public int b17832;
+  public int b17833;
+  public int b17834;
+  public int b17835;
+  public int b17836;
+  public int b17837;
+  public int b17838;
+  public int b17839;
+  public int b17840;
+  public int b17841;
+  public int b17842;
+  public int b17843;
+  public int b17844;
+  public int b17845;
+  public int b17846;
+  public int b17847;
+  public int b17848;
+  public int b17849;
+  public int b17850;
+  public int b17851;
+  public int b17852;
+  public int b17853;
+  public int b17854;
+  public int b17855;
+  public int b17856;
+  public int b17857;
+  public int b17858;
+  public int b17859;
+  public int b17860;
+  public int b17861;
+  public int b17862;
+  public int b17863;
+  public int b17864;
+  public int b17865;
+  public int b17866;
+  public int b17867;
+  public int b17868;
+  public int b17869;
+  public int b17870;
+  public int b17871;
+  public int b17872;
+  public int b17873;
+  public int b17874;
+  public int b17875;
+  public int b17876;
+  public int b17877;
+  public int b17878;
+  public int b17879;
+  public int b17880;
+  public int b17881;
+  public int b17882;
+  public int b17883;
+  public int b17884;
+  public int b17885;
+  public int b17886;
+  public int b17887;
+  public int b17888;
+  public int b17889;
+  public int b17890;
+  public int b17891;
+  public int b17892;
+  public int b17893;
+  public int b17894;
+  public int b17895;
+  public int b17896;
+  public int b17897;
+  public int b17898;
+  public int b17899;
+  public int b17900;
+  public int b17901;
+  public int b17902;
+  public int b17903;
+  public int b17904;
+  public int b17905;
+  public int b17906;
+  public int b17907;
+  public int b17908;
+  public int b17909;
+  public int b17910;
+  public int b17911;
+  public int b17912;
+  public int b17913;
+  public int b17914;
+  public int b17915;
+  public int b17916;
+  public int b17917;
+  public int b17918;
+  public int b17919;
+  public int b17920;
+  public int b17921;
+  public int b17922;
+  public int b17923;
+  public int b17924;
+  public int b17925;
+  public int b17926;
+  public int b17927;
+  public int b17928;
+  public int b17929;
+  public int b17930;
+  public int b17931;
+  public int b17932;
+  public int b17933;
+  public int b17934;
+  public int b17935;
+  public int b17936;
+  public int b17937;
+  public int b17938;
+  public int b17939;
+  public int b17940;
+  public int b17941;
+  public int b17942;
+  public int b17943;
+  public int b17944;
+  public int b17945;
+  public int b17946;
+  public int b17947;
+  public int b17948;
+  public int b17949;
+  public int b17950;
+  public int b17951;
+  public int b17952;
+  public int b17953;
+  public int b17954;
+  public int b17955;
+  public int b17956;
+  public int b17957;
+  public int b17958;
+  public int b17959;
+  public int b17960;
+  public int b17961;
+  public int b17962;
+  public int b17963;
+  public int b17964;
+  public int b17965;
+  public int b17966;
+  public int b17967;
+  public int b17968;
+  public int b17969;
+  public int b17970;
+  public int b17971;
+  public int b17972;
+  public int b17973;
+  public int b17974;
+  public int b17975;
+  public int b17976;
+  public int b17977;
+  public int b17978;
+  public int b17979;
+  public int b17980;
+  public int b17981;
+  public int b17982;
+  public int b17983;
+  public int b17984;
+  public int b17985;
+  public int b17986;
+  public int b17987;
+  public int b17988;
+  public int b17989;
+  public int b17990;
+  public int b17991;
+  public int b17992;
+  public int b17993;
+  public int b17994;
+  public int b17995;
+  public int b17996;
+  public int b17997;
+  public int b17998;
+  public int b17999;
+  public int b18000;
+  public int b18001;
+  public int b18002;
+  public int b18003;
+  public int b18004;
+  public int b18005;
+  public int b18006;
+  public int b18007;
+  public int b18008;
+  public int b18009;
+  public int b18010;
+  public int b18011;
+  public int b18012;
+  public int b18013;
+  public int b18014;
+  public int b18015;
+  public int b18016;
+  public int b18017;
+  public int b18018;
+  public int b18019;
+  public int b18020;
+  public int b18021;
+  public int b18022;
+  public int b18023;
+  public int b18024;
+  public int b18025;
+  public int b18026;
+  public int b18027;
+  public int b18028;
+  public int b18029;
+  public int b18030;
+  public int b18031;
+  public int b18032;
+  public int b18033;
+  public int b18034;
+  public int b18035;
+  public int b18036;
+  public int b18037;
+  public int b18038;
+  public int b18039;
+  public int b18040;
+  public int b18041;
+  public int b18042;
+  public int b18043;
+  public int b18044;
+  public int b18045;
+  public int b18046;
+  public int b18047;
+  public int b18048;
+  public int b18049;
+  public int b18050;
+  public int b18051;
+  public int b18052;
+  public int b18053;
+  public int b18054;
+  public int b18055;
+  public int b18056;
+  public int b18057;
+  public int b18058;
+  public int b18059;
+  public int b18060;
+  public int b18061;
+  public int b18062;
+  public int b18063;
+  public int b18064;
+  public int b18065;
+  public int b18066;
+  public int b18067;
+  public int b18068;
+  public int b18069;
+  public int b18070;
+  public int b18071;
+  public int b18072;
+  public int b18073;
+  public int b18074;
+  public int b18075;
+  public int b18076;
+  public int b18077;
+  public int b18078;
+  public int b18079;
+  public int b18080;
+  public int b18081;
+  public int b18082;
+  public int b18083;
+  public int b18084;
+  public int b18085;
+  public int b18086;
+  public int b18087;
+  public int b18088;
+  public int b18089;
+  public int b18090;
+  public int b18091;
+  public int b18092;
+  public int b18093;
+  public int b18094;
+  public int b18095;
+  public int b18096;
+  public int b18097;
+  public int b18098;
+  public int b18099;
+  public int b18100;
+  public int b18101;
+  public int b18102;
+  public int b18103;
+  public int b18104;
+  public int b18105;
+  public int b18106;
+  public int b18107;
+  public int b18108;
+  public int b18109;
+  public int b18110;
+  public int b18111;
+  public int b18112;
+  public int b18113;
+  public int b18114;
+  public int b18115;
+  public int b18116;
+  public int b18117;
+  public int b18118;
+  public int b18119;
+  public int b18120;
+  public int b18121;
+  public int b18122;
+  public int b18123;
+  public int b18124;
+  public int b18125;
+  public int b18126;
+  public int b18127;
+  public int b18128;
+  public int b18129;
+  public int b18130;
+  public int b18131;
+  public int b18132;
+  public int b18133;
+  public int b18134;
+  public int b18135;
+  public int b18136;
+  public int b18137;
+  public int b18138;
+  public int b18139;
+  public int b18140;
+  public int b18141;
+  public int b18142;
+  public int b18143;
+  public int b18144;
+  public int b18145;
+  public int b18146;
+  public int b18147;
+  public int b18148;
+  public int b18149;
+  public int b18150;
+  public int b18151;
+  public int b18152;
+  public int b18153;
+  public int b18154;
+  public int b18155;
+  public int b18156;
+  public int b18157;
+  public int b18158;
+  public int b18159;
+  public int b18160;
+  public int b18161;
+  public int b18162;
+  public int b18163;
+  public int b18164;
+  public int b18165;
+  public int b18166;
+  public int b18167;
+  public int b18168;
+  public int b18169;
+  public int b18170;
+  public int b18171;
+  public int b18172;
+  public int b18173;
+  public int b18174;
+  public int b18175;
+  public int b18176;
+  public int b18177;
+  public int b18178;
+  public int b18179;
+  public int b18180;
+  public int b18181;
+  public int b18182;
+  public int b18183;
+  public int b18184;
+  public int b18185;
+  public int b18186;
+  public int b18187;
+  public int b18188;
+  public int b18189;
+  public int b18190;
+  public int b18191;
+  public int b18192;
+  public int b18193;
+  public int b18194;
+  public int b18195;
+  public int b18196;
+  public int b18197;
+  public int b18198;
+  public int b18199;
+  public int b18200;
+  public int b18201;
+  public int b18202;
+  public int b18203;
+  public int b18204;
+  public int b18205;
+  public int b18206;
+  public int b18207;
+  public int b18208;
+  public int b18209;
+  public int b18210;
+  public int b18211;
+  public int b18212;
+  public int b18213;
+  public int b18214;
+  public int b18215;
+  public int b18216;
+  public int b18217;
+  public int b18218;
+  public int b18219;
+  public int b18220;
+  public int b18221;
+  public int b18222;
+  public int b18223;
+  public int b18224;
+  public int b18225;
+  public int b18226;
+  public int b18227;
+  public int b18228;
+  public int b18229;
+  public int b18230;
+  public int b18231;
+  public int b18232;
+  public int b18233;
+  public int b18234;
+  public int b18235;
+  public int b18236;
+  public int b18237;
+  public int b18238;
+  public int b18239;
+  public int b18240;
+  public int b18241;
+  public int b18242;
+  public int b18243;
+  public int b18244;
+  public int b18245;
+  public int b18246;
+  public int b18247;
+  public int b18248;
+  public int b18249;
+  public int b18250;
+  public int b18251;
+  public int b18252;
+  public int b18253;
+  public int b18254;
+  public int b18255;
+  public int b18256;
+  public int b18257;
+  public int b18258;
+  public int b18259;
+  public int b18260;
+  public int b18261;
+  public int b18262;
+  public int b18263;
+  public int b18264;
+  public int b18265;
+  public int b18266;
+  public int b18267;
+  public int b18268;
+  public int b18269;
+  public int b18270;
+  public int b18271;
+  public int b18272;
+  public int b18273;
+  public int b18274;
+  public int b18275;
+  public int b18276;
+  public int b18277;
+  public int b18278;
+  public int b18279;
+  public int b18280;
+  public int b18281;
+  public int b18282;
+  public int b18283;
+  public int b18284;
+  public int b18285;
+  public int b18286;
+  public int b18287;
+  public int b18288;
+  public int b18289;
+  public int b18290;
+  public int b18291;
+  public int b18292;
+  public int b18293;
+  public int b18294;
+  public int b18295;
+  public int b18296;
+  public int b18297;
+  public int b18298;
+  public int b18299;
+  public int b18300;
+  public int b18301;
+  public int b18302;
+  public int b18303;
+  public int b18304;
+  public int b18305;
+  public int b18306;
+  public int b18307;
+  public int b18308;
+  public int b18309;
+  public int b18310;
+  public int b18311;
+  public int b18312;
+  public int b18313;
+  public int b18314;
+  public int b18315;
+  public int b18316;
+  public int b18317;
+  public int b18318;
+  public int b18319;
+  public int b18320;
+  public int b18321;
+  public int b18322;
+  public int b18323;
+  public int b18324;
+  public int b18325;
+  public int b18326;
+  public int b18327;
+  public int b18328;
+  public int b18329;
+  public int b18330;
+  public int b18331;
+  public int b18332;
+  public int b18333;
+  public int b18334;
+  public int b18335;
+  public int b18336;
+  public int b18337;
+  public int b18338;
+  public int b18339;
+  public int b18340;
+  public int b18341;
+  public int b18342;
+  public int b18343;
+  public int b18344;
+  public int b18345;
+  public int b18346;
+  public int b18347;
+  public int b18348;
+  public int b18349;
+  public int b18350;
+  public int b18351;
+  public int b18352;
+  public int b18353;
+  public int b18354;
+  public int b18355;
+  public int b18356;
+  public int b18357;
+  public int b18358;
+  public int b18359;
+  public int b18360;
+  public int b18361;
+  public int b18362;
+  public int b18363;
+  public int b18364;
+  public int b18365;
+  public int b18366;
+  public int b18367;
+  public int b18368;
+  public int b18369;
+  public int b18370;
+  public int b18371;
+  public int b18372;
+  public int b18373;
+  public int b18374;
+  public int b18375;
+  public int b18376;
+  public int b18377;
+  public int b18378;
+  public int b18379;
+  public int b18380;
+  public int b18381;
+  public int b18382;
+  public int b18383;
+  public int b18384;
+  public int b18385;
+  public int b18386;
+  public int b18387;
+  public int b18388;
+  public int b18389;
+  public int b18390;
+  public int b18391;
+  public int b18392;
+  public int b18393;
+  public int b18394;
+  public int b18395;
+  public int b18396;
+  public int b18397;
+  public int b18398;
+  public int b18399;
+  public int b18400;
+  public int b18401;
+  public int b18402;
+  public int b18403;
+  public int b18404;
+  public int b18405;
+  public int b18406;
+  public int b18407;
+  public int b18408;
+  public int b18409;
+  public int b18410;
+  public int b18411;
+  public int b18412;
+  public int b18413;
+  public int b18414;
+  public int b18415;
+  public int b18416;
+  public int b18417;
+  public int b18418;
+  public int b18419;
+  public int b18420;
+  public int b18421;
+  public int b18422;
+  public int b18423;
+  public int b18424;
+  public int b18425;
+  public int b18426;
+  public int b18427;
+  public int b18428;
+  public int b18429;
+  public int b18430;
+  public int b18431;
+  public int b18432;
+  public int b18433;
+  public int b18434;
+  public int b18435;
+  public int b18436;
+  public int b18437;
+  public int b18438;
+  public int b18439;
+  public int b18440;
+  public int b18441;
+  public int b18442;
+  public int b18443;
+  public int b18444;
+  public int b18445;
+  public int b18446;
+  public int b18447;
+  public int b18448;
+  public int b18449;
+  public int b18450;
+  public int b18451;
+  public int b18452;
+  public int b18453;
+  public int b18454;
+  public int b18455;
+  public int b18456;
+  public int b18457;
+  public int b18458;
+  public int b18459;
+  public int b18460;
+  public int b18461;
+  public int b18462;
+  public int b18463;
+  public int b18464;
+  public int b18465;
+  public int b18466;
+  public int b18467;
+  public int b18468;
+  public int b18469;
+  public int b18470;
+  public int b18471;
+  public int b18472;
+  public int b18473;
+  public int b18474;
+  public int b18475;
+  public int b18476;
+  public int b18477;
+  public int b18478;
+  public int b18479;
+  public int b18480;
+  public int b18481;
+  public int b18482;
+  public int b18483;
+  public int b18484;
+  public int b18485;
+  public int b18486;
+  public int b18487;
+  public int b18488;
+  public int b18489;
+  public int b18490;
+  public int b18491;
+  public int b18492;
+  public int b18493;
+  public int b18494;
+  public int b18495;
+  public int b18496;
+  public int b18497;
+  public int b18498;
+  public int b18499;
+  public int b18500;
+  public int b18501;
+  public int b18502;
+  public int b18503;
+  public int b18504;
+  public int b18505;
+  public int b18506;
+  public int b18507;
+  public int b18508;
+  public int b18509;
+  public int b18510;
+  public int b18511;
+  public int b18512;
+  public int b18513;
+  public int b18514;
+  public int b18515;
+  public int b18516;
+  public int b18517;
+  public int b18518;
+  public int b18519;
+  public int b18520;
+  public int b18521;
+  public int b18522;
+  public int b18523;
+  public int b18524;
+  public int b18525;
+  public int b18526;
+  public int b18527;
+  public int b18528;
+  public int b18529;
+  public int b18530;
+  public int b18531;
+  public int b18532;
+  public int b18533;
+  public int b18534;
+  public int b18535;
+  public int b18536;
+  public int b18537;
+  public int b18538;
+  public int b18539;
+  public int b18540;
+  public int b18541;
+  public int b18542;
+  public int b18543;
+  public int b18544;
+  public int b18545;
+  public int b18546;
+  public int b18547;
+  public int b18548;
+  public int b18549;
+  public int b18550;
+  public int b18551;
+  public int b18552;
+  public int b18553;
+  public int b18554;
+  public int b18555;
+  public int b18556;
+  public int b18557;
+  public int b18558;
+  public int b18559;
+  public int b18560;
+  public int b18561;
+  public int b18562;
+  public int b18563;
+  public int b18564;
+  public int b18565;
+  public int b18566;
+  public int b18567;
+  public int b18568;
+  public int b18569;
+  public int b18570;
+  public int b18571;
+  public int b18572;
+  public int b18573;
+  public int b18574;
+  public int b18575;
+  public int b18576;
+  public int b18577;
+  public int b18578;
+  public int b18579;
+  public int b18580;
+  public int b18581;
+  public int b18582;
+  public int b18583;
+  public int b18584;
+  public int b18585;
+  public int b18586;
+  public int b18587;
+  public int b18588;
+  public int b18589;
+  public int b18590;
+  public int b18591;
+  public int b18592;
+  public int b18593;
+  public int b18594;
+  public int b18595;
+  public int b18596;
+  public int b18597;
+  public int b18598;
+  public int b18599;
+  public int b18600;
+  public int b18601;
+  public int b18602;
+  public int b18603;
+  public int b18604;
+  public int b18605;
+  public int b18606;
+  public int b18607;
+  public int b18608;
+  public int b18609;
+  public int b18610;
+  public int b18611;
+  public int b18612;
+  public int b18613;
+  public int b18614;
+  public int b18615;
+  public int b18616;
+  public int b18617;
+  public int b18618;
+  public int b18619;
+  public int b18620;
+  public int b18621;
+  public int b18622;
+  public int b18623;
+  public int b18624;
+  public int b18625;
+  public int b18626;
+  public int b18627;
+  public int b18628;
+  public int b18629;
+  public int b18630;
+  public int b18631;
+  public int b18632;
+  public int b18633;
+  public int b18634;
+  public int b18635;
+  public int b18636;
+  public int b18637;
+  public int b18638;
+  public int b18639;
+  public int b18640;
+  public int b18641;
+  public int b18642;
+  public int b18643;
+  public int b18644;
+  public int b18645;
+  public int b18646;
+  public int b18647;
+  public int b18648;
+  public int b18649;
+  public int b18650;
+  public int b18651;
+  public int b18652;
+  public int b18653;
+  public int b18654;
+  public int b18655;
+  public int b18656;
+  public int b18657;
+  public int b18658;
+  public int b18659;
+  public int b18660;
+  public int b18661;
+  public int b18662;
+  public int b18663;
+  public int b18664;
+  public int b18665;
+  public int b18666;
+  public int b18667;
+  public int b18668;
+  public int b18669;
+  public int b18670;
+  public int b18671;
+  public int b18672;
+  public int b18673;
+  public int b18674;
+  public int b18675;
+  public int b18676;
+  public int b18677;
+  public int b18678;
+  public int b18679;
+  public int b18680;
+  public int b18681;
+  public int b18682;
+  public int b18683;
+  public int b18684;
+  public int b18685;
+  public int b18686;
+  public int b18687;
+  public int b18688;
+  public int b18689;
+  public int b18690;
+  public int b18691;
+  public int b18692;
+  public int b18693;
+  public int b18694;
+  public int b18695;
+  public int b18696;
+  public int b18697;
+  public int b18698;
+  public int b18699;
+  public int b18700;
+  public int b18701;
+  public int b18702;
+  public int b18703;
+  public int b18704;
+  public int b18705;
+  public int b18706;
+  public int b18707;
+  public int b18708;
+  public int b18709;
+  public int b18710;
+  public int b18711;
+  public int b18712;
+  public int b18713;
+  public int b18714;
+  public int b18715;
+  public int b18716;
+  public int b18717;
+  public int b18718;
+  public int b18719;
+  public int b18720;
+  public int b18721;
+  public int b18722;
+  public int b18723;
+  public int b18724;
+  public int b18725;
+  public int b18726;
+  public int b18727;
+  public int b18728;
+  public int b18729;
+  public int b18730;
+  public int b18731;
+  public int b18732;
+  public int b18733;
+  public int b18734;
+  public int b18735;
+  public int b18736;
+  public int b18737;
+  public int b18738;
+  public int b18739;
+  public int b18740;
+  public int b18741;
+  public int b18742;
+  public int b18743;
+  public int b18744;
+  public int b18745;
+  public int b18746;
+  public int b18747;
+  public int b18748;
+  public int b18749;
+  public int b18750;
+  public int b18751;
+  public int b18752;
+  public int b18753;
+  public int b18754;
+  public int b18755;
+  public int b18756;
+  public int b18757;
+  public int b18758;
+  public int b18759;
+  public int b18760;
+  public int b18761;
+  public int b18762;
+  public int b18763;
+  public int b18764;
+  public int b18765;
+  public int b18766;
+  public int b18767;
+  public int b18768;
+  public int b18769;
+  public int b18770;
+  public int b18771;
+  public int b18772;
+  public int b18773;
+  public int b18774;
+  public int b18775;
+  public int b18776;
+  public int b18777;
+  public int b18778;
+  public int b18779;
+  public int b18780;
+  public int b18781;
+  public int b18782;
+  public int b18783;
+  public int b18784;
+  public int b18785;
+  public int b18786;
+  public int b18787;
+  public int b18788;
+  public int b18789;
+  public int b18790;
+  public int b18791;
+  public int b18792;
+  public int b18793;
+  public int b18794;
+  public int b18795;
+  public int b18796;
+  public int b18797;
+  public int b18798;
+  public int b18799;
+  public int b18800;
+  public int b18801;
+  public int b18802;
+  public int b18803;
+  public int b18804;
+  public int b18805;
+  public int b18806;
+  public int b18807;
+  public int b18808;
+  public int b18809;
+  public int b18810;
+  public int b18811;
+  public int b18812;
+  public int b18813;
+  public int b18814;
+  public int b18815;
+  public int b18816;
+  public int b18817;
+  public int b18818;
+  public int b18819;
+  public int b18820;
+  public int b18821;
+  public int b18822;
+  public int b18823;
+  public int b18824;
+  public int b18825;
+  public int b18826;
+  public int b18827;
+  public int b18828;
+  public int b18829;
+  public int b18830;
+  public int b18831;
+  public int b18832;
+  public int b18833;
+  public int b18834;
+  public int b18835;
+  public int b18836;
+  public int b18837;
+  public int b18838;
+  public int b18839;
+  public int b18840;
+  public int b18841;
+  public int b18842;
+  public int b18843;
+  public int b18844;
+  public int b18845;
+  public int b18846;
+  public int b18847;
+  public int b18848;
+  public int b18849;
+  public int b18850;
+  public int b18851;
+  public int b18852;
+  public int b18853;
+  public int b18854;
+  public int b18855;
+  public int b18856;
+  public int b18857;
+  public int b18858;
+  public int b18859;
+  public int b18860;
+  public int b18861;
+  public int b18862;
+  public int b18863;
+  public int b18864;
+  public int b18865;
+  public int b18866;
+  public int b18867;
+  public int b18868;
+  public int b18869;
+  public int b18870;
+  public int b18871;
+  public int b18872;
+  public int b18873;
+  public int b18874;
+  public int b18875;
+  public int b18876;
+  public int b18877;
+  public int b18878;
+  public int b18879;
+  public int b18880;
+  public int b18881;
+  public int b18882;
+  public int b18883;
+  public int b18884;
+  public int b18885;
+  public int b18886;
+  public int b18887;
+  public int b18888;
+  public int b18889;
+  public int b18890;
+  public int b18891;
+  public int b18892;
+  public int b18893;
+  public int b18894;
+  public int b18895;
+  public int b18896;
+  public int b18897;
+  public int b18898;
+  public int b18899;
+  public int b18900;
+  public int b18901;
+  public int b18902;
+  public int b18903;
+  public int b18904;
+  public int b18905;
+  public int b18906;
+  public int b18907;
+  public int b18908;
+  public int b18909;
+  public int b18910;
+  public int b18911;
+  public int b18912;
+  public int b18913;
+  public int b18914;
+  public int b18915;
+  public int b18916;
+  public int b18917;
+  public int b18918;
+  public int b18919;
+  public int b18920;
+  public int b18921;
+  public int b18922;
+  public int b18923;
+  public int b18924;
+  public int b18925;
+  public int b18926;
+  public int b18927;
+  public int b18928;
+  public int b18929;
+  public int b18930;
+  public int b18931;
+  public int b18932;
+  public int b18933;
+  public int b18934;
+  public int b18935;
+  public int b18936;
+  public int b18937;
+  public int b18938;
+  public int b18939;
+  public int b18940;
+  public int b18941;
+  public int b18942;
+  public int b18943;
+  public int b18944;
+  public int b18945;
+  public int b18946;
+  public int b18947;
+  public int b18948;
+  public int b18949;
+  public int b18950;
+  public int b18951;
+  public int b18952;
+  public int b18953;
+  public int b18954;
+  public int b18955;
+  public int b18956;
+  public int b18957;
+  public int b18958;
+  public int b18959;
+  public int b18960;
+  public int b18961;
+  public int b18962;
+  public int b18963;
+  public int b18964;
+  public int b18965;
+  public int b18966;
+  public int b18967;
+  public int b18968;
+  public int b18969;
+  public int b18970;
+  public int b18971;
+  public int b18972;
+  public int b18973;
+  public int b18974;
+  public int b18975;
+  public int b18976;
+  public int b18977;
+  public int b18978;
+  public int b18979;
+  public int b18980;
+  public int b18981;
+  public int b18982;
+  public int b18983;
+  public int b18984;
+  public int b18985;
+  public int b18986;
+  public int b18987;
+  public int b18988;
+  public int b18989;
+  public int b18990;
+  public int b18991;
+  public int b18992;
+  public int b18993;
+  public int b18994;
+  public int b18995;
+  public int b18996;
+  public int b18997;
+  public int b18998;
+  public int b18999;
+  public int b19000;
+  public int b19001;
+  public int b19002;
+  public int b19003;
+  public int b19004;
+  public int b19005;
+  public int b19006;
+  public int b19007;
+  public int b19008;
+  public int b19009;
+  public int b19010;
+  public int b19011;
+  public int b19012;
+  public int b19013;
+  public int b19014;
+  public int b19015;
+  public int b19016;
+  public int b19017;
+  public int b19018;
+  public int b19019;
+  public int b19020;
+  public int b19021;
+  public int b19022;
+  public int b19023;
+  public int b19024;
+  public int b19025;
+  public int b19026;
+  public int b19027;
+  public int b19028;
+  public int b19029;
+  public int b19030;
+  public int b19031;
+  public int b19032;
+  public int b19033;
+  public int b19034;
+  public int b19035;
+  public int b19036;
+  public int b19037;
+  public int b19038;
+  public int b19039;
+  public int b19040;
+  public int b19041;
+  public int b19042;
+  public int b19043;
+  public int b19044;
+  public int b19045;
+  public int b19046;
+  public int b19047;
+  public int b19048;
+  public int b19049;
+  public int b19050;
+  public int b19051;
+  public int b19052;
+  public int b19053;
+  public int b19054;
+  public int b19055;
+  public int b19056;
+  public int b19057;
+  public int b19058;
+  public int b19059;
+  public int b19060;
+  public int b19061;
+  public int b19062;
+  public int b19063;
+  public int b19064;
+  public int b19065;
+  public int b19066;
+  public int b19067;
+  public int b19068;
+  public int b19069;
+  public int b19070;
+  public int b19071;
+  public int b19072;
+  public int b19073;
+  public int b19074;
+  public int b19075;
+  public int b19076;
+  public int b19077;
+  public int b19078;
+  public int b19079;
+  public int b19080;
+  public int b19081;
+  public int b19082;
+  public int b19083;
+  public int b19084;
+  public int b19085;
+  public int b19086;
+  public int b19087;
+  public int b19088;
+  public int b19089;
+  public int b19090;
+  public int b19091;
+  public int b19092;
+  public int b19093;
+  public int b19094;
+  public int b19095;
+  public int b19096;
+  public int b19097;
+  public int b19098;
+  public int b19099;
+  public int b19100;
+  public int b19101;
+  public int b19102;
+  public int b19103;
+  public int b19104;
+  public int b19105;
+  public int b19106;
+  public int b19107;
+  public int b19108;
+  public int b19109;
+  public int b19110;
+  public int b19111;
+  public int b19112;
+  public int b19113;
+  public int b19114;
+  public int b19115;
+  public int b19116;
+  public int b19117;
+  public int b19118;
+  public int b19119;
+  public int b19120;
+  public int b19121;
+  public int b19122;
+  public int b19123;
+  public int b19124;
+  public int b19125;
+  public int b19126;
+  public int b19127;
+  public int b19128;
+  public int b19129;
+  public int b19130;
+  public int b19131;
+  public int b19132;
+  public int b19133;
+  public int b19134;
+  public int b19135;
+  public int b19136;
+  public int b19137;
+  public int b19138;
+  public int b19139;
+  public int b19140;
+  public int b19141;
+  public int b19142;
+  public int b19143;
+  public int b19144;
+  public int b19145;
+  public int b19146;
+  public int b19147;
+  public int b19148;
+  public int b19149;
+  public int b19150;
+  public int b19151;
+  public int b19152;
+  public int b19153;
+  public int b19154;
+  public int b19155;
+  public int b19156;
+  public int b19157;
+  public int b19158;
+  public int b19159;
+  public int b19160;
+  public int b19161;
+  public int b19162;
+  public int b19163;
+  public int b19164;
+  public int b19165;
+  public int b19166;
+  public int b19167;
+  public int b19168;
+  public int b19169;
+  public int b19170;
+  public int b19171;
+  public int b19172;
+  public int b19173;
+  public int b19174;
+  public int b19175;
+  public int b19176;
+  public int b19177;
+  public int b19178;
+  public int b19179;
+  public int b19180;
+  public int b19181;
+  public int b19182;
+  public int b19183;
+  public int b19184;
+  public int b19185;
+  public int b19186;
+  public int b19187;
+  public int b19188;
+  public int b19189;
+  public int b19190;
+  public int b19191;
+  public int b19192;
+  public int b19193;
+  public int b19194;
+  public int b19195;
+  public int b19196;
+  public int b19197;
+  public int b19198;
+  public int b19199;
+  public int b19200;
+  public int b19201;
+  public int b19202;
+  public int b19203;
+  public int b19204;
+  public int b19205;
+  public int b19206;
+  public int b19207;
+  public int b19208;
+  public int b19209;
+  public int b19210;
+  public int b19211;
+  public int b19212;
+  public int b19213;
+  public int b19214;
+  public int b19215;
+  public int b19216;
+  public int b19217;
+  public int b19218;
+  public int b19219;
+  public int b19220;
+  public int b19221;
+  public int b19222;
+  public int b19223;
+  public int b19224;
+  public int b19225;
+  public int b19226;
+  public int b19227;
+  public int b19228;
+  public int b19229;
+  public int b19230;
+  public int b19231;
+  public int b19232;
+  public int b19233;
+  public int b19234;
+  public int b19235;
+  public int b19236;
+  public int b19237;
+  public int b19238;
+  public int b19239;
+  public int b19240;
+  public int b19241;
+  public int b19242;
+  public int b19243;
+  public int b19244;
+  public int b19245;
+  public int b19246;
+  public int b19247;
+  public int b19248;
+  public int b19249;
+  public int b19250;
+  public int b19251;
+  public int b19252;
+  public int b19253;
+  public int b19254;
+  public int b19255;
+  public int b19256;
+  public int b19257;
+  public int b19258;
+  public int b19259;
+  public int b19260;
+  public int b19261;
+  public int b19262;
+  public int b19263;
+  public int b19264;
+  public int b19265;
+  public int b19266;
+  public int b19267;
+  public int b19268;
+  public int b19269;
+  public int b19270;
+  public int b19271;
+  public int b19272;
+  public int b19273;
+  public int b19274;
+  public int b19275;
+  public int b19276;
+  public int b19277;
+  public int b19278;
+  public int b19279;
+  public int b19280;
+  public int b19281;
+  public int b19282;
+  public int b19283;
+  public int b19284;
+  public int b19285;
+  public int b19286;
+  public int b19287;
+  public int b19288;
+  public int b19289;
+  public int b19290;
+  public int b19291;
+  public int b19292;
+  public int b19293;
+  public int b19294;
+  public int b19295;
+  public int b19296;
+  public int b19297;
+  public int b19298;
+  public int b19299;
+  public int b19300;
+  public int b19301;
+  public int b19302;
+  public int b19303;
+  public int b19304;
+  public int b19305;
+  public int b19306;
+  public int b19307;
+  public int b19308;
+  public int b19309;
+  public int b19310;
+  public int b19311;
+  public int b19312;
+  public int b19313;
+  public int b19314;
+  public int b19315;
+  public int b19316;
+  public int b19317;
+  public int b19318;
+  public int b19319;
+  public int b19320;
+  public int b19321;
+  public int b19322;
+  public int b19323;
+  public int b19324;
+  public int b19325;
+  public int b19326;
+  public int b19327;
+  public int b19328;
+  public int b19329;
+  public int b19330;
+  public int b19331;
+  public int b19332;
+  public int b19333;
+  public int b19334;
+  public int b19335;
+  public int b19336;
+  public int b19337;
+  public int b19338;
+  public int b19339;
+  public int b19340;
+  public int b19341;
+  public int b19342;
+  public int b19343;
+  public int b19344;
+  public int b19345;
+  public int b19346;
+  public int b19347;
+  public int b19348;
+  public int b19349;
+  public int b19350;
+  public int b19351;
+  public int b19352;
+  public int b19353;
+  public int b19354;
+  public int b19355;
+  public int b19356;
+  public int b19357;
+  public int b19358;
+  public int b19359;
+  public int b19360;
+  public int b19361;
+  public int b19362;
+  public int b19363;
+  public int b19364;
+  public int b19365;
+  public int b19366;
+  public int b19367;
+  public int b19368;
+  public int b19369;
+  public int b19370;
+  public int b19371;
+  public int b19372;
+  public int b19373;
+  public int b19374;
+  public int b19375;
+  public int b19376;
+  public int b19377;
+  public int b19378;
+  public int b19379;
+  public int b19380;
+  public int b19381;
+  public int b19382;
+  public int b19383;
+  public int b19384;
+  public int b19385;
+  public int b19386;
+  public int b19387;
+  public int b19388;
+  public int b19389;
+  public int b19390;
+  public int b19391;
+  public int b19392;
+  public int b19393;
+  public int b19394;
+  public int b19395;
+  public int b19396;
+  public int b19397;
+  public int b19398;
+  public int b19399;
+  public int b19400;
+  public int b19401;
+  public int b19402;
+  public int b19403;
+  public int b19404;
+  public int b19405;
+  public int b19406;
+  public int b19407;
+  public int b19408;
+  public int b19409;
+  public int b19410;
+  public int b19411;
+  public int b19412;
+  public int b19413;
+  public int b19414;
+  public int b19415;
+  public int b19416;
+  public int b19417;
+  public int b19418;
+  public int b19419;
+  public int b19420;
+  public int b19421;
+  public int b19422;
+  public int b19423;
+  public int b19424;
+  public int b19425;
+  public int b19426;
+  public int b19427;
+  public int b19428;
+  public int b19429;
+  public int b19430;
+  public int b19431;
+  public int b19432;
+  public int b19433;
+  public int b19434;
+  public int b19435;
+  public int b19436;
+  public int b19437;
+  public int b19438;
+  public int b19439;
+  public int b19440;
+  public int b19441;
+  public int b19442;
+  public int b19443;
+  public int b19444;
+  public int b19445;
+  public int b19446;
+  public int b19447;
+  public int b19448;
+  public int b19449;
+  public int b19450;
+  public int b19451;
+  public int b19452;
+  public int b19453;
+  public int b19454;
+  public int b19455;
+  public int b19456;
+  public int b19457;
+  public int b19458;
+  public int b19459;
+  public int b19460;
+  public int b19461;
+  public int b19462;
+  public int b19463;
+  public int b19464;
+  public int b19465;
+  public int b19466;
+  public int b19467;
+  public int b19468;
+  public int b19469;
+  public int b19470;
+  public int b19471;
+  public int b19472;
+  public int b19473;
+  public int b19474;
+  public int b19475;
+  public int b19476;
+  public int b19477;
+  public int b19478;
+  public int b19479;
+  public int b19480;
+  public int b19481;
+  public int b19482;
+  public int b19483;
+  public int b19484;
+  public int b19485;
+  public int b19486;
+  public int b19487;
+  public int b19488;
+  public int b19489;
+  public int b19490;
+  public int b19491;
+  public int b19492;
+  public int b19493;
+  public int b19494;
+  public int b19495;
+  public int b19496;
+  public int b19497;
+  public int b19498;
+  public int b19499;
+  public int b19500;
+  public int b19501;
+  public int b19502;
+  public int b19503;
+  public int b19504;
+  public int b19505;
+  public int b19506;
+  public int b19507;
+  public int b19508;
+  public int b19509;
+  public int b19510;
+  public int b19511;
+  public int b19512;
+  public int b19513;
+  public int b19514;
+  public int b19515;
+  public int b19516;
+  public int b19517;
+  public int b19518;
+  public int b19519;
+  public int b19520;
+  public int b19521;
+  public int b19522;
+  public int b19523;
+  public int b19524;
+  public int b19525;
+  public int b19526;
+  public int b19527;
+  public int b19528;
+  public int b19529;
+  public int b19530;
+  public int b19531;
+  public int b19532;
+  public int b19533;
+  public int b19534;
+  public int b19535;
+  public int b19536;
+  public int b19537;
+  public int b19538;
+  public int b19539;
+  public int b19540;
+  public int b19541;
+  public int b19542;
+  public int b19543;
+  public int b19544;
+  public int b19545;
+  public int b19546;
+  public int b19547;
+  public int b19548;
+  public int b19549;
+  public int b19550;
+  public int b19551;
+  public int b19552;
+  public int b19553;
+  public int b19554;
+  public int b19555;
+  public int b19556;
+  public int b19557;
+  public int b19558;
+  public int b19559;
+  public int b19560;
+  public int b19561;
+  public int b19562;
+  public int b19563;
+  public int b19564;
+  public int b19565;
+  public int b19566;
+  public int b19567;
+  public int b19568;
+  public int b19569;
+  public int b19570;
+  public int b19571;
+  public int b19572;
+  public int b19573;
+  public int b19574;
+  public int b19575;
+  public int b19576;
+  public int b19577;
+  public int b19578;
+  public int b19579;
+  public int b19580;
+  public int b19581;
+  public int b19582;
+  public int b19583;
+  public int b19584;
+  public int b19585;
+  public int b19586;
+  public int b19587;
+  public int b19588;
+  public int b19589;
+  public int b19590;
+  public int b19591;
+  public int b19592;
+  public int b19593;
+  public int b19594;
+  public int b19595;
+  public int b19596;
+  public int b19597;
+  public int b19598;
+  public int b19599;
+  public int b19600;
+  public int b19601;
+  public int b19602;
+  public int b19603;
+  public int b19604;
+  public int b19605;
+  public int b19606;
+  public int b19607;
+  public int b19608;
+  public int b19609;
+  public int b19610;
+  public int b19611;
+  public int b19612;
+  public int b19613;
+  public int b19614;
+  public int b19615;
+  public int b19616;
+  public int b19617;
+  public int b19618;
+  public int b19619;
+  public int b19620;
+  public int b19621;
+  public int b19622;
+  public int b19623;
+  public int b19624;
+  public int b19625;
+  public int b19626;
+  public int b19627;
+  public int b19628;
+  public int b19629;
+  public int b19630;
+  public int b19631;
+  public int b19632;
+  public int b19633;
+  public int b19634;
+  public int b19635;
+  public int b19636;
+  public int b19637;
+  public int b19638;
+  public int b19639;
+  public int b19640;
+  public int b19641;
+  public int b19642;
+  public int b19643;
+  public int b19644;
+  public int b19645;
+  public int b19646;
+  public int b19647;
+  public int b19648;
+  public int b19649;
+  public int b19650;
+  public int b19651;
+  public int b19652;
+  public int b19653;
+  public int b19654;
+  public int b19655;
+  public int b19656;
+  public int b19657;
+  public int b19658;
+  public int b19659;
+  public int b19660;
+  public int b19661;
+  public int b19662;
+  public int b19663;
+  public int b19664;
+  public int b19665;
+  public int b19666;
+  public int b19667;
+  public int b19668;
+  public int b19669;
+  public int b19670;
+  public int b19671;
+  public int b19672;
+  public int b19673;
+  public int b19674;
+  public int b19675;
+  public int b19676;
+  public int b19677;
+  public int b19678;
+  public int b19679;
+  public int b19680;
+  public int b19681;
+  public int b19682;
+  public int b19683;
+  public int b19684;
+  public int b19685;
+  public int b19686;
+  public int b19687;
+  public int b19688;
+  public int b19689;
+  public int b19690;
+  public int b19691;
+  public int b19692;
+  public int b19693;
+  public int b19694;
+  public int b19695;
+  public int b19696;
+  public int b19697;
+  public int b19698;
+  public int b19699;
+  public int b19700;
+  public int b19701;
+  public int b19702;
+  public int b19703;
+  public int b19704;
+  public int b19705;
+  public int b19706;
+  public int b19707;
+  public int b19708;
+  public int b19709;
+  public int b19710;
+  public int b19711;
+  public int b19712;
+  public int b19713;
+  public int b19714;
+  public int b19715;
+  public int b19716;
+  public int b19717;
+  public int b19718;
+  public int b19719;
+  public int b19720;
+  public int b19721;
+  public int b19722;
+  public int b19723;
+  public int b19724;
+  public int b19725;
+  public int b19726;
+  public int b19727;
+  public int b19728;
+  public int b19729;
+  public int b19730;
+  public int b19731;
+  public int b19732;
+  public int b19733;
+  public int b19734;
+  public int b19735;
+  public int b19736;
+  public int b19737;
+  public int b19738;
+  public int b19739;
+  public int b19740;
+  public int b19741;
+  public int b19742;
+  public int b19743;
+  public int b19744;
+  public int b19745;
+  public int b19746;
+  public int b19747;
+  public int b19748;
+  public int b19749;
+  public int b19750;
+  public int b19751;
+  public int b19752;
+  public int b19753;
+  public int b19754;
+  public int b19755;
+  public int b19756;
+  public int b19757;
+  public int b19758;
+  public int b19759;
+  public int b19760;
+  public int b19761;
+  public int b19762;
+  public int b19763;
+  public int b19764;
+  public int b19765;
+  public int b19766;
+  public int b19767;
+  public int b19768;
+  public int b19769;
+  public int b19770;
+  public int b19771;
+  public int b19772;
+  public int b19773;
+  public int b19774;
+  public int b19775;
+  public int b19776;
+  public int b19777;
+  public int b19778;
+  public int b19779;
+  public int b19780;
+  public int b19781;
+  public int b19782;
+  public int b19783;
+  public int b19784;
+  public int b19785;
+  public int b19786;
+  public int b19787;
+  public int b19788;
+  public int b19789;
+  public int b19790;
+  public int b19791;
+  public int b19792;
+  public int b19793;
+  public int b19794;
+  public int b19795;
+  public int b19796;
+  public int b19797;
+  public int b19798;
+  public int b19799;
+  public int b19800;
+  public int b19801;
+  public int b19802;
+  public int b19803;
+  public int b19804;
+  public int b19805;
+  public int b19806;
+  public int b19807;
+  public int b19808;
+  public int b19809;
+  public int b19810;
+  public int b19811;
+  public int b19812;
+  public int b19813;
+  public int b19814;
+  public int b19815;
+  public int b19816;
+  public int b19817;
+  public int b19818;
+  public int b19819;
+  public int b19820;
+  public int b19821;
+  public int b19822;
+  public int b19823;
+  public int b19824;
+  public int b19825;
+  public int b19826;
+  public int b19827;
+  public int b19828;
+  public int b19829;
+  public int b19830;
+  public int b19831;
+  public int b19832;
+  public int b19833;
+  public int b19834;
+  public int b19835;
+  public int b19836;
+  public int b19837;
+  public int b19838;
+  public int b19839;
+  public int b19840;
+  public int b19841;
+  public int b19842;
+  public int b19843;
+  public int b19844;
+  public int b19845;
+  public int b19846;
+  public int b19847;
+  public int b19848;
+  public int b19849;
+  public int b19850;
+  public int b19851;
+  public int b19852;
+  public int b19853;
+  public int b19854;
+  public int b19855;
+  public int b19856;
+  public int b19857;
+  public int b19858;
+  public int b19859;
+  public int b19860;
+  public int b19861;
+  public int b19862;
+  public int b19863;
+  public int b19864;
+  public int b19865;
+  public int b19866;
+  public int b19867;
+  public int b19868;
+  public int b19869;
+  public int b19870;
+  public int b19871;
+  public int b19872;
+  public int b19873;
+  public int b19874;
+  public int b19875;
+  public int b19876;
+  public int b19877;
+  public int b19878;
+  public int b19879;
+  public int b19880;
+  public int b19881;
+  public int b19882;
+  public int b19883;
+  public int b19884;
+  public int b19885;
+  public int b19886;
+  public int b19887;
+  public int b19888;
+  public int b19889;
+  public int b19890;
+  public int b19891;
+  public int b19892;
+  public int b19893;
+  public int b19894;
+  public int b19895;
+  public int b19896;
+  public int b19897;
+  public int b19898;
+  public int b19899;
+  public int b19900;
+  public int b19901;
+  public int b19902;
+  public int b19903;
+  public int b19904;
+  public int b19905;
+  public int b19906;
+  public int b19907;
+  public int b19908;
+  public int b19909;
+  public int b19910;
+  public int b19911;
+  public int b19912;
+  public int b19913;
+  public int b19914;
+  public int b19915;
+  public int b19916;
+  public int b19917;
+  public int b19918;
+  public int b19919;
+  public int b19920;
+  public int b19921;
+  public int b19922;
+  public int b19923;
+  public int b19924;
+  public int b19925;
+  public int b19926;
+  public int b19927;
+  public int b19928;
+  public int b19929;
+  public int b19930;
+  public int b19931;
+  public int b19932;
+  public int b19933;
+  public int b19934;
+  public int b19935;
+  public int b19936;
+  public int b19937;
+  public int b19938;
+  public int b19939;
+  public int b19940;
+  public int b19941;
+  public int b19942;
+  public int b19943;
+  public int b19944;
+  public int b19945;
+  public int b19946;
+  public int b19947;
+  public int b19948;
+  public int b19949;
+  public int b19950;
+  public int b19951;
+  public int b19952;
+  public int b19953;
+  public int b19954;
+  public int b19955;
+  public int b19956;
+  public int b19957;
+  public int b19958;
+  public int b19959;
+  public int b19960;
+  public int b19961;
+  public int b19962;
+  public int b19963;
+  public int b19964;
+  public int b19965;
+  public int b19966;
+  public int b19967;
+  public int b19968;
+  public int b19969;
+  public int b19970;
+  public int b19971;
+  public int b19972;
+  public int b19973;
+  public int b19974;
+  public int b19975;
+  public int b19976;
+  public int b19977;
+  public int b19978;
+  public int b19979;
+  public int b19980;
+  public int b19981;
+  public int b19982;
+  public int b19983;
+  public int b19984;
+  public int b19985;
+  public int b19986;
+  public int b19987;
+  public int b19988;
+  public int b19989;
+  public int b19990;
+  public int b19991;
+  public int b19992;
+  public int b19993;
+  public int b19994;
+  public int b19995;
+  public int b19996;
+  public int b19997;
+  public int b19998;
+  public int b19999;
+  public int b20000;
+  public int b20001;
+  public int b20002;
+  public int b20003;
+  public int b20004;
+  public int b20005;
+  public int b20006;
+  public int b20007;
+  public int b20008;
+  public int b20009;
+  public int b20010;
+  public int b20011;
+  public int b20012;
+  public int b20013;
+  public int b20014;
+  public int b20015;
+  public int b20016;
+  public int b20017;
+  public int b20018;
+  public int b20019;
+  public int b20020;
+  public int b20021;
+  public int b20022;
+  public int b20023;
+  public int b20024;
+  public int b20025;
+  public int b20026;
+  public int b20027;
+  public int b20028;
+  public int b20029;
+  public int b20030;
+  public int b20031;
+  public int b20032;
+  public int b20033;
+  public int b20034;
+  public int b20035;
+  public int b20036;
+  public int b20037;
+  public int b20038;
+  public int b20039;
+  public int b20040;
+  public int b20041;
+  public int b20042;
+  public int b20043;
+  public int b20044;
+  public int b20045;
+  public int b20046;
+  public int b20047;
+  public int b20048;
+  public int b20049;
+  public int b20050;
+  public int b20051;
+  public int b20052;
+  public int b20053;
+  public int b20054;
+  public int b20055;
+  public int b20056;
+  public int b20057;
+  public int b20058;
+  public int b20059;
+  public int b20060;
+  public int b20061;
+  public int b20062;
+  public int b20063;
+  public int b20064;
+  public int b20065;
+  public int b20066;
+  public int b20067;
+  public int b20068;
+  public int b20069;
+  public int b20070;
+  public int b20071;
+  public int b20072;
+  public int b20073;
+  public int b20074;
+  public int b20075;
+  public int b20076;
+  public int b20077;
+  public int b20078;
+  public int b20079;
+  public int b20080;
+  public int b20081;
+  public int b20082;
+  public int b20083;
+  public int b20084;
+  public int b20085;
+  public int b20086;
+  public int b20087;
+  public int b20088;
+  public int b20089;
+  public int b20090;
+  public int b20091;
+  public int b20092;
+  public int b20093;
+  public int b20094;
+  public int b20095;
+  public int b20096;
+  public int b20097;
+  public int b20098;
+  public int b20099;
+  public int b20100;
+  public int b20101;
+  public int b20102;
+  public int b20103;
+  public int b20104;
+  public int b20105;
+  public int b20106;
+  public int b20107;
+  public int b20108;
+  public int b20109;
+  public int b20110;
+  public int b20111;
+  public int b20112;
+  public int b20113;
+  public int b20114;
+  public int b20115;
+  public int b20116;
+  public int b20117;
+  public int b20118;
+  public int b20119;
+  public int b20120;
+  public int b20121;
+  public int b20122;
+  public int b20123;
+  public int b20124;
+  public int b20125;
+  public int b20126;
+  public int b20127;
+  public int b20128;
+  public int b20129;
+  public int b20130;
+  public int b20131;
+  public int b20132;
+  public int b20133;
+  public int b20134;
+  public int b20135;
+  public int b20136;
+  public int b20137;
+  public int b20138;
+  public int b20139;
+  public int b20140;
+  public int b20141;
+  public int b20142;
+  public int b20143;
+  public int b20144;
+  public int b20145;
+  public int b20146;
+  public int b20147;
+  public int b20148;
+  public int b20149;
+  public int b20150;
+  public int b20151;
+  public int b20152;
+  public int b20153;
+  public int b20154;
+  public int b20155;
+  public int b20156;
+  public int b20157;
+  public int b20158;
+  public int b20159;
+  public int b20160;
+  public int b20161;
+  public int b20162;
+  public int b20163;
+  public int b20164;
+  public int b20165;
+  public int b20166;
+  public int b20167;
+  public int b20168;
+  public int b20169;
+  public int b20170;
+  public int b20171;
+  public int b20172;
+  public int b20173;
+  public int b20174;
+  public int b20175;
+  public int b20176;
+  public int b20177;
+  public int b20178;
+  public int b20179;
+  public int b20180;
+  public int b20181;
+  public int b20182;
+  public int b20183;
+  public int b20184;
+  public int b20185;
+  public int b20186;
+  public int b20187;
+  public int b20188;
+  public int b20189;
+  public int b20190;
+  public int b20191;
+  public int b20192;
+  public int b20193;
+  public int b20194;
+  public int b20195;
+  public int b20196;
+  public int b20197;
+  public int b20198;
+  public int b20199;
+  public int b20200;
+  public int b20201;
+  public int b20202;
+  public int b20203;
+  public int b20204;
+  public int b20205;
+  public int b20206;
+  public int b20207;
+  public int b20208;
+  public int b20209;
+  public int b20210;
+  public int b20211;
+  public int b20212;
+  public int b20213;
+  public int b20214;
+  public int b20215;
+  public int b20216;
+  public int b20217;
+  public int b20218;
+  public int b20219;
+  public int b20220;
+  public int b20221;
+  public int b20222;
+  public int b20223;
+  public int b20224;
+  public int b20225;
+  public int b20226;
+  public int b20227;
+  public int b20228;
+  public int b20229;
+  public int b20230;
+  public int b20231;
+  public int b20232;
+  public int b20233;
+  public int b20234;
+  public int b20235;
+  public int b20236;
+  public int b20237;
+  public int b20238;
+  public int b20239;
+  public int b20240;
+  public int b20241;
+  public int b20242;
+  public int b20243;
+  public int b20244;
+  public int b20245;
+  public int b20246;
+  public int b20247;
+  public int b20248;
+  public int b20249;
+  public int b20250;
+  public int b20251;
+  public int b20252;
+  public int b20253;
+  public int b20254;
+  public int b20255;
+  public int b20256;
+  public int b20257;
+  public int b20258;
+  public int b20259;
+  public int b20260;
+  public int b20261;
+  public int b20262;
+  public int b20263;
+  public int b20264;
+  public int b20265;
+  public int b20266;
+  public int b20267;
+  public int b20268;
+  public int b20269;
+  public int b20270;
+  public int b20271;
+  public int b20272;
+  public int b20273;
+  public int b20274;
+  public int b20275;
+  public int b20276;
+  public int b20277;
+  public int b20278;
+  public int b20279;
+  public int b20280;
+  public int b20281;
+  public int b20282;
+  public int b20283;
+  public int b20284;
+  public int b20285;
+  public int b20286;
+  public int b20287;
+  public int b20288;
+  public int b20289;
+  public int b20290;
+  public int b20291;
+  public int b20292;
+  public int b20293;
+  public int b20294;
+  public int b20295;
+  public int b20296;
+  public int b20297;
+  public int b20298;
+  public int b20299;
+  public int b20300;
+  public int b20301;
+  public int b20302;
+  public int b20303;
+  public int b20304;
+  public int b20305;
+  public int b20306;
+  public int b20307;
+  public int b20308;
+  public int b20309;
+  public int b20310;
+  public int b20311;
+  public int b20312;
+  public int b20313;
+  public int b20314;
+  public int b20315;
+  public int b20316;
+  public int b20317;
+  public int b20318;
+  public int b20319;
+  public int b20320;
+  public int b20321;
+  public int b20322;
+  public int b20323;
+  public int b20324;
+  public int b20325;
+  public int b20326;
+  public int b20327;
+  public int b20328;
+  public int b20329;
+  public int b20330;
+  public int b20331;
+  public int b20332;
+  public int b20333;
+  public int b20334;
+  public int b20335;
+  public int b20336;
+  public int b20337;
+  public int b20338;
+  public int b20339;
+  public int b20340;
+  public int b20341;
+  public int b20342;
+  public int b20343;
+  public int b20344;
+  public int b20345;
+  public int b20346;
+  public int b20347;
+  public int b20348;
+  public int b20349;
+  public int b20350;
+  public int b20351;
+  public int b20352;
+  public int b20353;
+  public int b20354;
+  public int b20355;
+  public int b20356;
+  public int b20357;
+  public int b20358;
+  public int b20359;
+  public int b20360;
+  public int b20361;
+  public int b20362;
+  public int b20363;
+  public int b20364;
+  public int b20365;
+  public int b20366;
+  public int b20367;
+  public int b20368;
+  public int b20369;
+  public int b20370;
+  public int b20371;
+  public int b20372;
+  public int b20373;
+  public int b20374;
+  public int b20375;
+  public int b20376;
+  public int b20377;
+  public int b20378;
+  public int b20379;
+  public int b20380;
+  public int b20381;
+  public int b20382;
+  public int b20383;
+  public int b20384;
+  public int b20385;
+  public int b20386;
+  public int b20387;
+  public int b20388;
+  public int b20389;
+  public int b20390;
+  public int b20391;
+  public int b20392;
+  public int b20393;
+  public int b20394;
+  public int b20395;
+  public int b20396;
+  public int b20397;
+  public int b20398;
+  public int b20399;
+  public int b20400;
+  public int b20401;
+  public int b20402;
+  public int b20403;
+  public int b20404;
+  public int b20405;
+  public int b20406;
+  public int b20407;
+  public int b20408;
+  public int b20409;
+  public int b20410;
+  public int b20411;
+  public int b20412;
+  public int b20413;
+  public int b20414;
+  public int b20415;
+  public int b20416;
+  public int b20417;
+  public int b20418;
+  public int b20419;
+  public int b20420;
+  public int b20421;
+  public int b20422;
+  public int b20423;
+  public int b20424;
+  public int b20425;
+  public int b20426;
+  public int b20427;
+  public int b20428;
+  public int b20429;
+  public int b20430;
+  public int b20431;
+  public int b20432;
+  public int b20433;
+  public int b20434;
+  public int b20435;
+  public int b20436;
+  public int b20437;
+  public int b20438;
+  public int b20439;
+  public int b20440;
+  public int b20441;
+  public int b20442;
+  public int b20443;
+  public int b20444;
+  public int b20445;
+  public int b20446;
+  public int b20447;
+  public int b20448;
+  public int b20449;
+  public int b20450;
+  public int b20451;
+  public int b20452;
+  public int b20453;
+  public int b20454;
+  public int b20455;
+  public int b20456;
+  public int b20457;
+  public int b20458;
+  public int b20459;
+  public int b20460;
+  public int b20461;
+  public int b20462;
+  public int b20463;
+  public int b20464;
+  public int b20465;
+  public int b20466;
+  public int b20467;
+  public int b20468;
+  public int b20469;
+  public int b20470;
+  public int b20471;
+  public int b20472;
+  public int b20473;
+  public int b20474;
+  public int b20475;
+  public int b20476;
+  public int b20477;
+  public int b20478;
+  public int b20479;
+  public int b20480;
+  public int b20481;
+  public int b20482;
+  public int b20483;
+  public int b20484;
+  public int b20485;
+  public int b20486;
+  public int b20487;
+  public int b20488;
+  public int b20489;
+  public int b20490;
+  public int b20491;
+  public int b20492;
+  public int b20493;
+  public int b20494;
+  public int b20495;
+  public int b20496;
+  public int b20497;
+  public int b20498;
+  public int b20499;
+  public int b20500;
+  public int b20501;
+  public int b20502;
+  public int b20503;
+  public int b20504;
+  public int b20505;
+  public int b20506;
+  public int b20507;
+  public int b20508;
+  public int b20509;
+  public int b20510;
+  public int b20511;
+  public int b20512;
+  public int b20513;
+  public int b20514;
+  public int b20515;
+  public int b20516;
+  public int b20517;
+  public int b20518;
+  public int b20519;
+  public int b20520;
+  public int b20521;
+  public int b20522;
+  public int b20523;
+  public int b20524;
+  public int b20525;
+  public int b20526;
+  public int b20527;
+  public int b20528;
+  public int b20529;
+  public int b20530;
+  public int b20531;
+  public int b20532;
+  public int b20533;
+  public int b20534;
+  public int b20535;
+  public int b20536;
+  public int b20537;
+  public int b20538;
+  public int b20539;
+  public int b20540;
+  public int b20541;
+  public int b20542;
+  public int b20543;
+  public int b20544;
+  public int b20545;
+  public int b20546;
+  public int b20547;
+  public int b20548;
+  public int b20549;
+  public int b20550;
+  public int b20551;
+  public int b20552;
+  public int b20553;
+  public int b20554;
+  public int b20555;
+  public int b20556;
+  public int b20557;
+  public int b20558;
+  public int b20559;
+  public int b20560;
+  public int b20561;
+  public int b20562;
+  public int b20563;
+  public int b20564;
+  public int b20565;
+  public int b20566;
+  public int b20567;
+  public int b20568;
+  public int b20569;
+  public int b20570;
+  public int b20571;
+  public int b20572;
+  public int b20573;
+  public int b20574;
+  public int b20575;
+  public int b20576;
+  public int b20577;
+  public int b20578;
+  public int b20579;
+  public int b20580;
+  public int b20581;
+  public int b20582;
+  public int b20583;
+  public int b20584;
+  public int b20585;
+  public int b20586;
+  public int b20587;
+  public int b20588;
+  public int b20589;
+  public int b20590;
+  public int b20591;
+  public int b20592;
+  public int b20593;
+  public int b20594;
+  public int b20595;
+  public int b20596;
+  public int b20597;
+  public int b20598;
+  public int b20599;
+  public int b20600;
+  public int b20601;
+  public int b20602;
+  public int b20603;
+  public int b20604;
+  public int b20605;
+  public int b20606;
+  public int b20607;
+  public int b20608;
+  public int b20609;
+  public int b20610;
+  public int b20611;
+  public int b20612;
+  public int b20613;
+  public int b20614;
+  public int b20615;
+  public int b20616;
+  public int b20617;
+  public int b20618;
+  public int b20619;
+  public int b20620;
+  public int b20621;
+  public int b20622;
+  public int b20623;
+  public int b20624;
+  public int b20625;
+  public int b20626;
+  public int b20627;
+  public int b20628;
+  public int b20629;
+  public int b20630;
+  public int b20631;
+  public int b20632;
+  public int b20633;
+  public int b20634;
+  public int b20635;
+  public int b20636;
+  public int b20637;
+  public int b20638;
+  public int b20639;
+  public int b20640;
+  public int b20641;
+  public int b20642;
+  public int b20643;
+  public int b20644;
+  public int b20645;
+  public int b20646;
+  public int b20647;
+  public int b20648;
+  public int b20649;
+  public int b20650;
+  public int b20651;
+  public int b20652;
+  public int b20653;
+  public int b20654;
+  public int b20655;
+  public int b20656;
+  public int b20657;
+  public int b20658;
+  public int b20659;
+  public int b20660;
+  public int b20661;
+  public int b20662;
+  public int b20663;
+  public int b20664;
+  public int b20665;
+  public int b20666;
+  public int b20667;
+  public int b20668;
+  public int b20669;
+  public int b20670;
+  public int b20671;
+  public int b20672;
+  public int b20673;
+  public int b20674;
+  public int b20675;
+  public int b20676;
+  public int b20677;
+  public int b20678;
+  public int b20679;
+  public int b20680;
+  public int b20681;
+  public int b20682;
+  public int b20683;
+  public int b20684;
+  public int b20685;
+  public int b20686;
+  public int b20687;
+  public int b20688;
+  public int b20689;
+  public int b20690;
+  public int b20691;
+  public int b20692;
+  public int b20693;
+  public int b20694;
+  public int b20695;
+  public int b20696;
+  public int b20697;
+  public int b20698;
+  public int b20699;
+  public int b20700;
+  public int b20701;
+  public int b20702;
+  public int b20703;
+  public int b20704;
+  public int b20705;
+  public int b20706;
+  public int b20707;
+  public int b20708;
+  public int b20709;
+  public int b20710;
+  public int b20711;
+  public int b20712;
+  public int b20713;
+  public int b20714;
+  public int b20715;
+  public int b20716;
+  public int b20717;
+  public int b20718;
+  public int b20719;
+  public int b20720;
+  public int b20721;
+  public int b20722;
+  public int b20723;
+  public int b20724;
+  public int b20725;
+  public int b20726;
+  public int b20727;
+  public int b20728;
+  public int b20729;
+  public int b20730;
+  public int b20731;
+  public int b20732;
+  public int b20733;
+  public int b20734;
+  public int b20735;
+  public int b20736;
+  public int b20737;
+  public int b20738;
+  public int b20739;
+  public int b20740;
+  public int b20741;
+  public int b20742;
+  public int b20743;
+  public int b20744;
+  public int b20745;
+  public int b20746;
+  public int b20747;
+  public int b20748;
+  public int b20749;
+  public int b20750;
+  public int b20751;
+  public int b20752;
+  public int b20753;
+  public int b20754;
+  public int b20755;
+  public int b20756;
+  public int b20757;
+  public int b20758;
+  public int b20759;
+  public int b20760;
+  public int b20761;
+  public int b20762;
+  public int b20763;
+  public int b20764;
+  public int b20765;
+  public int b20766;
+  public int b20767;
+  public int b20768;
+  public int b20769;
+  public int b20770;
+  public int b20771;
+  public int b20772;
+  public int b20773;
+  public int b20774;
+  public int b20775;
+  public int b20776;
+  public int b20777;
+  public int b20778;
+  public int b20779;
+  public int b20780;
+  public int b20781;
+  public int b20782;
+  public int b20783;
+  public int b20784;
+  public int b20785;
+  public int b20786;
+  public int b20787;
+  public int b20788;
+  public int b20789;
+  public int b20790;
+  public int b20791;
+  public int b20792;
+  public int b20793;
+  public int b20794;
+  public int b20795;
+  public int b20796;
+  public int b20797;
+  public int b20798;
+  public int b20799;
+  public int b20800;
+  public int b20801;
+  public int b20802;
+  public int b20803;
+  public int b20804;
+  public int b20805;
+  public int b20806;
+  public int b20807;
+  public int b20808;
+  public int b20809;
+  public int b20810;
+  public int b20811;
+  public int b20812;
+  public int b20813;
+  public int b20814;
+  public int b20815;
+  public int b20816;
+  public int b20817;
+  public int b20818;
+  public int b20819;
+  public int b20820;
+  public int b20821;
+  public int b20822;
+  public int b20823;
+  public int b20824;
+  public int b20825;
+  public int b20826;
+  public int b20827;
+  public int b20828;
+  public int b20829;
+  public int b20830;
+  public int b20831;
+  public int b20832;
+  public int b20833;
+  public int b20834;
+  public int b20835;
+  public int b20836;
+  public int b20837;
+  public int b20838;
+  public int b20839;
+  public int b20840;
+  public int b20841;
+  public int b20842;
+  public int b20843;
+  public int b20844;
+  public int b20845;
+  public int b20846;
+  public int b20847;
+  public int b20848;
+  public int b20849;
+  public int b20850;
+  public int b20851;
+  public int b20852;
+  public int b20853;
+  public int b20854;
+  public int b20855;
+  public int b20856;
+  public int b20857;
+  public int b20858;
+  public int b20859;
+  public int b20860;
+  public int b20861;
+  public int b20862;
+  public int b20863;
+  public int b20864;
+  public int b20865;
+  public int b20866;
+  public int b20867;
+  public int b20868;
+  public int b20869;
+  public int b20870;
+  public int b20871;
+  public int b20872;
+  public int b20873;
+  public int b20874;
+  public int b20875;
+  public int b20876;
+  public int b20877;
+  public int b20878;
+  public int b20879;
+  public int b20880;
+  public int b20881;
+  public int b20882;
+  public int b20883;
+  public int b20884;
+  public int b20885;
+  public int b20886;
+  public int b20887;
+  public int b20888;
+  public int b20889;
+  public int b20890;
+  public int b20891;
+  public int b20892;
+  public int b20893;
+  public int b20894;
+  public int b20895;
+  public int b20896;
+  public int b20897;
+  public int b20898;
+  public int b20899;
+  public int b20900;
+  public int b20901;
+  public int b20902;
+  public int b20903;
+  public int b20904;
+  public int b20905;
+  public int b20906;
+  public int b20907;
+  public int b20908;
+  public int b20909;
+  public int b20910;
+  public int b20911;
+  public int b20912;
+  public int b20913;
+  public int b20914;
+  public int b20915;
+  public int b20916;
+  public int b20917;
+  public int b20918;
+  public int b20919;
+  public int b20920;
+  public int b20921;
+  public int b20922;
+  public int b20923;
+  public int b20924;
+  public int b20925;
+  public int b20926;
+  public int b20927;
+  public int b20928;
+  public int b20929;
+  public int b20930;
+  public int b20931;
+  public int b20932;
+  public int b20933;
+  public int b20934;
+  public int b20935;
+  public int b20936;
+  public int b20937;
+  public int b20938;
+  public int b20939;
+  public int b20940;
+  public int b20941;
+  public int b20942;
+  public int b20943;
+  public int b20944;
+  public int b20945;
+  public int b20946;
+  public int b20947;
+  public int b20948;
+  public int b20949;
+  public int b20950;
+  public int b20951;
+  public int b20952;
+  public int b20953;
+  public int b20954;
+  public int b20955;
+  public int b20956;
+  public int b20957;
+  public int b20958;
+  public int b20959;
+  public int b20960;
+  public int b20961;
+  public int b20962;
+  public int b20963;
+  public int b20964;
+  public int b20965;
+  public int b20966;
+  public int b20967;
+  public int b20968;
+  public int b20969;
+  public int b20970;
+  public int b20971;
+  public int b20972;
+  public int b20973;
+  public int b20974;
+  public int b20975;
+  public int b20976;
+  public int b20977;
+  public int b20978;
+  public int b20979;
+  public int b20980;
+  public int b20981;
+  public int b20982;
+  public int b20983;
+  public int b20984;
+  public int b20985;
+  public int b20986;
+  public int b20987;
+  public int b20988;
+  public int b20989;
+  public int b20990;
+  public int b20991;
+  public int b20992;
+  public int b20993;
+  public int b20994;
+  public int b20995;
+  public int b20996;
+  public int b20997;
+  public int b20998;
+  public int b20999;
+  public int b21000;
+  public int b21001;
+  public int b21002;
+  public int b21003;
+  public int b21004;
+  public int b21005;
+  public int b21006;
+  public int b21007;
+  public int b21008;
+  public int b21009;
+  public int b21010;
+  public int b21011;
+  public int b21012;
+  public int b21013;
+  public int b21014;
+  public int b21015;
+  public int b21016;
+  public int b21017;
+  public int b21018;
+  public int b21019;
+  public int b21020;
+  public int b21021;
+  public int b21022;
+  public int b21023;
+  public int b21024;
+  public int b21025;
+  public int b21026;
+  public int b21027;
+  public int b21028;
+  public int b21029;
+  public int b21030;
+  public int b21031;
+  public int b21032;
+  public int b21033;
+  public int b21034;
+  public int b21035;
+  public int b21036;
+  public int b21037;
+  public int b21038;
+  public int b21039;
+  public int b21040;
+  public int b21041;
+  public int b21042;
+  public int b21043;
+  public int b21044;
+  public int b21045;
+  public int b21046;
+  public int b21047;
+  public int b21048;
+  public int b21049;
+  public int b21050;
+  public int b21051;
+  public int b21052;
+  public int b21053;
+  public int b21054;
+  public int b21055;
+  public int b21056;
+  public int b21057;
+  public int b21058;
+  public int b21059;
+  public int b21060;
+  public int b21061;
+  public int b21062;
+  public int b21063;
+  public int b21064;
+  public int b21065;
+  public int b21066;
+  public int b21067;
+  public int b21068;
+  public int b21069;
+  public int b21070;
+  public int b21071;
+  public int b21072;
+  public int b21073;
+  public int b21074;
+  public int b21075;
+  public int b21076;
+  public int b21077;
+  public int b21078;
+  public int b21079;
+  public int b21080;
+  public int b21081;
+  public int b21082;
+  public int b21083;
+  public int b21084;
+  public int b21085;
+  public int b21086;
+  public int b21087;
+  public int b21088;
+  public int b21089;
+  public int b21090;
+  public int b21091;
+  public int b21092;
+  public int b21093;
+  public int b21094;
+  public int b21095;
+  public int b21096;
+  public int b21097;
+  public int b21098;
+  public int b21099;
+  public int b21100;
+  public int b21101;
+  public int b21102;
+  public int b21103;
+  public int b21104;
+  public int b21105;
+  public int b21106;
+  public int b21107;
+  public int b21108;
+  public int b21109;
+  public int b21110;
+  public int b21111;
+  public int b21112;
+  public int b21113;
+  public int b21114;
+  public int b21115;
+  public int b21116;
+  public int b21117;
+  public int b21118;
+  public int b21119;
+  public int b21120;
+  public int b21121;
+  public int b21122;
+  public int b21123;
+  public int b21124;
+  public int b21125;
+  public int b21126;
+  public int b21127;
+  public int b21128;
+  public int b21129;
+  public int b21130;
+  public int b21131;
+  public int b21132;
+  public int b21133;
+  public int b21134;
+  public int b21135;
+  public int b21136;
+  public int b21137;
+  public int b21138;
+  public int b21139;
+  public int b21140;
+  public int b21141;
+  public int b21142;
+  public int b21143;
+  public int b21144;
+  public int b21145;
+  public int b21146;
+  public int b21147;
+  public int b21148;
+  public int b21149;
+  public int b21150;
+  public int b21151;
+  public int b21152;
+  public int b21153;
+  public int b21154;
+  public int b21155;
+  public int b21156;
+  public int b21157;
+  public int b21158;
+  public int b21159;
+  public int b21160;
+  public int b21161;
+  public int b21162;
+  public int b21163;
+  public int b21164;
+  public int b21165;
+  public int b21166;
+  public int b21167;
+  public int b21168;
+  public int b21169;
+  public int b21170;
+  public int b21171;
+  public int b21172;
+  public int b21173;
+  public int b21174;
+  public int b21175;
+  public int b21176;
+  public int b21177;
+  public int b21178;
+  public int b21179;
+  public int b21180;
+  public int b21181;
+  public int b21182;
+  public int b21183;
+  public int b21184;
+  public int b21185;
+  public int b21186;
+  public int b21187;
+  public int b21188;
+  public int b21189;
+  public int b21190;
+  public int b21191;
+  public int b21192;
+  public int b21193;
+  public int b21194;
+  public int b21195;
+  public int b21196;
+  public int b21197;
+  public int b21198;
+  public int b21199;
+  public int b21200;
+  public int b21201;
+  public int b21202;
+  public int b21203;
+  public int b21204;
+  public int b21205;
+  public int b21206;
+  public int b21207;
+  public int b21208;
+  public int b21209;
+  public int b21210;
+  public int b21211;
+  public int b21212;
+  public int b21213;
+  public int b21214;
+  public int b21215;
+  public int b21216;
+  public int b21217;
+  public int b21218;
+  public int b21219;
+  public int b21220;
+  public int b21221;
+  public int b21222;
+  public int b21223;
+  public int b21224;
+  public int b21225;
+  public int b21226;
+  public int b21227;
+  public int b21228;
+  public int b21229;
+  public int b21230;
+  public int b21231;
+  public int b21232;
+  public int b21233;
+  public int b21234;
+  public int b21235;
+  public int b21236;
+  public int b21237;
+  public int b21238;
+  public int b21239;
+  public int b21240;
+  public int b21241;
+  public int b21242;
+  public int b21243;
+  public int b21244;
+  public int b21245;
+  public int b21246;
+  public int b21247;
+  public int b21248;
+  public int b21249;
+  public int b21250;
+  public int b21251;
+  public int b21252;
+  public int b21253;
+  public int b21254;
+  public int b21255;
+  public int b21256;
+  public int b21257;
+  public int b21258;
+  public int b21259;
+  public int b21260;
+  public int b21261;
+  public int b21262;
+  public int b21263;
+  public int b21264;
+  public int b21265;
+  public int b21266;
+  public int b21267;
+  public int b21268;
+  public int b21269;
+  public int b21270;
+  public int b21271;
+  public int b21272;
+  public int b21273;
+  public int b21274;
+  public int b21275;
+  public int b21276;
+  public int b21277;
+  public int b21278;
+  public int b21279;
+  public int b21280;
+  public int b21281;
+  public int b21282;
+  public int b21283;
+  public int b21284;
+  public int b21285;
+  public int b21286;
+  public int b21287;
+  public int b21288;
+  public int b21289;
+  public int b21290;
+  public int b21291;
+  public int b21292;
+  public int b21293;
+  public int b21294;
+  public int b21295;
+  public int b21296;
+  public int b21297;
+  public int b21298;
+  public int b21299;
+  public int b21300;
+  public int b21301;
+  public int b21302;
+  public int b21303;
+  public int b21304;
+  public int b21305;
+  public int b21306;
+  public int b21307;
+  public int b21308;
+  public int b21309;
+  public int b21310;
+  public int b21311;
+  public int b21312;
+  public int b21313;
+  public int b21314;
+  public int b21315;
+  public int b21316;
+  public int b21317;
+  public int b21318;
+  public int b21319;
+  public int b21320;
+  public int b21321;
+  public int b21322;
+  public int b21323;
+  public int b21324;
+  public int b21325;
+  public int b21326;
+  public int b21327;
+  public int b21328;
+  public int b21329;
+  public int b21330;
+  public int b21331;
+  public int b21332;
+  public int b21333;
+  public int b21334;
+  public int b21335;
+  public int b21336;
+  public int b21337;
+  public int b21338;
+  public int b21339;
+  public int b21340;
+  public int b21341;
+  public int b21342;
+  public int b21343;
+  public int b21344;
+  public int b21345;
+  public int b21346;
+  public int b21347;
+  public int b21348;
+  public int b21349;
+  public int b21350;
+  public int b21351;
+  public int b21352;
+  public int b21353;
+  public int b21354;
+  public int b21355;
+  public int b21356;
+  public int b21357;
+  public int b21358;
+  public int b21359;
+  public int b21360;
+  public int b21361;
+  public int b21362;
+  public int b21363;
+  public int b21364;
+  public int b21365;
+  public int b21366;
+  public int b21367;
+  public int b21368;
+  public int b21369;
+  public int b21370;
+  public int b21371;
+  public int b21372;
+  public int b21373;
+  public int b21374;
+  public int b21375;
+  public int b21376;
+  public int b21377;
+  public int b21378;
+  public int b21379;
+  public int b21380;
+  public int b21381;
+  public int b21382;
+  public int b21383;
+  public int b21384;
+  public int b21385;
+  public int b21386;
+  public int b21387;
+  public int b21388;
+  public int b21389;
+  public int b21390;
+  public int b21391;
+  public int b21392;
+  public int b21393;
+  public int b21394;
+  public int b21395;
+  public int b21396;
+  public int b21397;
+  public int b21398;
+  public int b21399;
+  public int b21400;
+  public int b21401;
+  public int b21402;
+  public int b21403;
+  public int b21404;
+  public int b21405;
+  public int b21406;
+  public int b21407;
+  public int b21408;
+  public int b21409;
+  public int b21410;
+  public int b21411;
+  public int b21412;
+  public int b21413;
+  public int b21414;
+  public int b21415;
+  public int b21416;
+  public int b21417;
+  public int b21418;
+  public int b21419;
+  public int b21420;
+  public int b21421;
+  public int b21422;
+  public int b21423;
+  public int b21424;
+  public int b21425;
+  public int b21426;
+  public int b21427;
+  public int b21428;
+  public int b21429;
+  public int b21430;
+  public int b21431;
+  public int b21432;
+  public int b21433;
+  public int b21434;
+  public int b21435;
+  public int b21436;
+  public int b21437;
+  public int b21438;
+  public int b21439;
+  public int b21440;
+  public int b21441;
+  public int b21442;
+  public int b21443;
+  public int b21444;
+  public int b21445;
+  public int b21446;
+  public int b21447;
+  public int b21448;
+  public int b21449;
+  public int b21450;
+  public int b21451;
+  public int b21452;
+  public int b21453;
+  public int b21454;
+  public int b21455;
+  public int b21456;
+  public int b21457;
+  public int b21458;
+  public int b21459;
+  public int b21460;
+  public int b21461;
+  public int b21462;
+  public int b21463;
+  public int b21464;
+  public int b21465;
+  public int b21466;
+  public int b21467;
+  public int b21468;
+  public int b21469;
+  public int b21470;
+  public int b21471;
+  public int b21472;
+  public int b21473;
+  public int b21474;
+  public int b21475;
+  public int b21476;
+  public int b21477;
+  public int b21478;
+  public int b21479;
+  public int b21480;
+  public int b21481;
+  public int b21482;
+  public int b21483;
+  public int b21484;
+  public int b21485;
+  public int b21486;
+  public int b21487;
+  public int b21488;
+  public int b21489;
+  public int b21490;
+  public int b21491;
+  public int b21492;
+  public int b21493;
+  public int b21494;
+  public int b21495;
+  public int b21496;
+  public int b21497;
+  public int b21498;
+  public int b21499;
+  public int b21500;
+  public int b21501;
+  public int b21502;
+  public int b21503;
+  public int b21504;
+  public int b21505;
+  public int b21506;
+  public int b21507;
+  public int b21508;
+  public int b21509;
+  public int b21510;
+  public int b21511;
+  public int b21512;
+  public int b21513;
+  public int b21514;
+  public int b21515;
+  public int b21516;
+  public int b21517;
+  public int b21518;
+  public int b21519;
+  public int b21520;
+  public int b21521;
+  public int b21522;
+  public int b21523;
+  public int b21524;
+  public int b21525;
+  public int b21526;
+  public int b21527;
+  public int b21528;
+  public int b21529;
+  public int b21530;
+  public int b21531;
+  public int b21532;
+  public int b21533;
+  public int b21534;
+  public int b21535;
+  public int b21536;
+  public int b21537;
+  public int b21538;
+  public int b21539;
+  public int b21540;
+  public int b21541;
+  public int b21542;
+  public int b21543;
+  public int b21544;
+  public int b21545;
+  public int b21546;
+  public int b21547;
+  public int b21548;
+  public int b21549;
+  public int b21550;
+  public int b21551;
+  public int b21552;
+  public int b21553;
+  public int b21554;
+  public int b21555;
+  public int b21556;
+  public int b21557;
+  public int b21558;
+  public int b21559;
+  public int b21560;
+  public int b21561;
+  public int b21562;
+  public int b21563;
+  public int b21564;
+  public int b21565;
+  public int b21566;
+  public int b21567;
+  public int b21568;
+  public int b21569;
+  public int b21570;
+  public int b21571;
+  public int b21572;
+  public int b21573;
+  public int b21574;
+  public int b21575;
+  public int b21576;
+  public int b21577;
+  public int b21578;
+  public int b21579;
+  public int b21580;
+  public int b21581;
+  public int b21582;
+  public int b21583;
+  public int b21584;
+  public int b21585;
+  public int b21586;
+  public int b21587;
+  public int b21588;
+  public int b21589;
+  public int b21590;
+  public int b21591;
+  public int b21592;
+  public int b21593;
+  public int b21594;
+  public int b21595;
+  public int b21596;
+  public int b21597;
+  public int b21598;
+  public int b21599;
+  public int b21600;
+  public int b21601;
+  public int b21602;
+  public int b21603;
+  public int b21604;
+  public int b21605;
+  public int b21606;
+  public int b21607;
+  public int b21608;
+  public int b21609;
+  public int b21610;
+  public int b21611;
+  public int b21612;
+  public int b21613;
+  public int b21614;
+  public int b21615;
+  public int b21616;
+  public int b21617;
+  public int b21618;
+  public int b21619;
+  public int b21620;
+  public int b21621;
+  public int b21622;
+  public int b21623;
+  public int b21624;
+  public int b21625;
+  public int b21626;
+  public int b21627;
+  public int b21628;
+  public int b21629;
+  public int b21630;
+  public int b21631;
+  public int b21632;
+  public int b21633;
+  public int b21634;
+  public int b21635;
+  public int b21636;
+  public int b21637;
+  public int b21638;
+  public int b21639;
+  public int b21640;
+  public int b21641;
+  public int b21642;
+  public int b21643;
+  public int b21644;
+  public int b21645;
+  public int b21646;
+  public int b21647;
+  public int b21648;
+  public int b21649;
+  public int b21650;
+  public int b21651;
+  public int b21652;
+  public int b21653;
+  public int b21654;
+  public int b21655;
+  public int b21656;
+  public int b21657;
+  public int b21658;
+  public int b21659;
+  public int b21660;
+  public int b21661;
+  public int b21662;
+  public int b21663;
+  public int b21664;
+  public int b21665;
+  public int b21666;
+  public int b21667;
+  public int b21668;
+  public int b21669;
+  public int b21670;
+  public int b21671;
+  public int b21672;
+  public int b21673;
+  public int b21674;
+  public int b21675;
+  public int b21676;
+  public int b21677;
+  public int b21678;
+  public int b21679;
+  public int b21680;
+  public int b21681;
+  public int b21682;
+  public int b21683;
+  public int b21684;
+  public int b21685;
+  public int b21686;
+  public int b21687;
+  public int b21688;
+  public int b21689;
+  public int b21690;
+  public int b21691;
+  public int b21692;
+  public int b21693;
+  public int b21694;
+  public int b21695;
+  public int b21696;
+  public int b21697;
+  public int b21698;
+  public int b21699;
+  public int b21700;
+  public int b21701;
+  public int b21702;
+  public int b21703;
+  public int b21704;
+  public int b21705;
+  public int b21706;
+  public int b21707;
+  public int b21708;
+  public int b21709;
+  public int b21710;
+  public int b21711;
+  public int b21712;
+  public int b21713;
+  public int b21714;
+  public int b21715;
+  public int b21716;
+  public int b21717;
+  public int b21718;
+  public int b21719;
+  public int b21720;
+  public int b21721;
+  public int b21722;
+  public int b21723;
+  public int b21724;
+  public int b21725;
+  public int b21726;
+  public int b21727;
+  public int b21728;
+  public int b21729;
+  public int b21730;
+  public int b21731;
+  public int b21732;
+  public int b21733;
+  public int b21734;
+  public int b21735;
+  public int b21736;
+  public int b21737;
+  public int b21738;
+  public int b21739;
+  public int b21740;
+  public int b21741;
+  public int b21742;
+  public int b21743;
+  public int b21744;
+  public int b21745;
+  public int b21746;
+  public int b21747;
+  public int b21748;
+  public int b21749;
+  public int b21750;
+  public int b21751;
+  public int b21752;
+  public int b21753;
+  public int b21754;
+  public int b21755;
+  public int b21756;
+  public int b21757;
+  public int b21758;
+  public int b21759;
+  public int b21760;
+  public int b21761;
+  public int b21762;
+  public int b21763;
+  public int b21764;
+  public int b21765;
+  public int b21766;
+  public int b21767;
+  public int b21768;
+  public int b21769;
+  public int b21770;
+  public int b21771;
+  public int b21772;
+  public int b21773;
+  public int b21774;
+  public int b21775;
+  public int b21776;
+  public int b21777;
+  public int b21778;
+  public int b21779;
+  public int b21780;
+  public int b21781;
+  public int b21782;
+  public int b21783;
+  public int b21784;
+  public int b21785;
+  public int b21786;
+  public int b21787;
+  public int b21788;
+  public int b21789;
+  public int b21790;
+  public int b21791;
+  public int b21792;
+  public int b21793;
+  public int b21794;
+  public int b21795;
+  public int b21796;
+  public int b21797;
+  public int b21798;
+  public int b21799;
+  public int b21800;
+  public int b21801;
+  public int b21802;
+  public int b21803;
+  public int b21804;
+  public int b21805;
+  public int b21806;
+  public int b21807;
+  public int b21808;
+  public int b21809;
+  public int b21810;
+  public int b21811;
+  public int b21812;
+  public int b21813;
+  public int b21814;
+  public int b21815;
+  public int b21816;
+  public int b21817;
+  public int b21818;
+  public int b21819;
+  public int b21820;
+  public int b21821;
+  public int b21822;
+  public int b21823;
+  public int b21824;
+  public int b21825;
+  public int b21826;
+  public int b21827;
+  public int b21828;
+  public int b21829;
+  public int b21830;
+  public int b21831;
+  public int b21832;
+  public int b21833;
+  public int b21834;
+  public int b21835;
+  public int b21836;
+  public int b21837;
+  public int b21838;
+  public int b21839;
+  public int b21840;
+  public int b21841;
+  public int b21842;
+  public int b21843;
+  public int b21844;
+  public int b21845;
+  public int b21846;
+  public int b21847;
+  public int b21848;
+  public int b21849;
+  public int b21850;
+  public int b21851;
+  public int b21852;
+  public int b21853;
+  public int b21854;
+  public int b21855;
+  public int b21856;
+  public int b21857;
+  public int b21858;
+  public int b21859;
+  public int b21860;
+  public int b21861;
+  public int b21862;
+  public int b21863;
+  public int b21864;
+  public int b21865;
+  public int b21866;
+  public int b21867;
+  public int b21868;
+  public int b21869;
+  public int b21870;
+  public int b21871;
+  public int b21872;
+  public int b21873;
+  public int b21874;
+  public int b21875;
+  public int b21876;
+  public int b21877;
+  public int b21878;
+  public int b21879;
+  public int b21880;
+  public int b21881;
+  public int b21882;
+  public int b21883;
+  public int b21884;
+  public int b21885;
+  public int b21886;
+  public int b21887;
+  public int b21888;
+  public int b21889;
+  public int b21890;
+  public int b21891;
+  public int b21892;
+  public int b21893;
+  public int b21894;
+  public int b21895;
+  public int b21896;
+  public int b21897;
+  public int b21898;
+  public int b21899;
+  public int b21900;
+  public int b21901;
+  public int b21902;
+  public int b21903;
+  public int b21904;
+  public int b21905;
+  public int b21906;
+  public int b21907;
+  public int b21908;
+  public int b21909;
+  public int b21910;
+  public int b21911;
+  public int b21912;
+  public int b21913;
+  public int b21914;
+  public int b21915;
+  public int b21916;
+  public int b21917;
+  public int b21918;
+  public int b21919;
+  public int b21920;
+  public int b21921;
+  public int b21922;
+  public int b21923;
+  public int b21924;
+  public int b21925;
+  public int b21926;
+  public int b21927;
+  public int b21928;
+  public int b21929;
+  public int b21930;
+  public int b21931;
+  public int b21932;
+  public int b21933;
+  public int b21934;
+  public int b21935;
+  public int b21936;
+  public int b21937;
+  public int b21938;
+  public int b21939;
+  public int b21940;
+  public int b21941;
+  public int b21942;
+  public int b21943;
+  public int b21944;
+  public int b21945;
+  public int b21946;
+  public int b21947;
+  public int b21948;
+  public int b21949;
+  public int b21950;
+  public int b21951;
+  public int b21952;
+  public int b21953;
+  public int b21954;
+  public int b21955;
+  public int b21956;
+  public int b21957;
+  public int b21958;
+  public int b21959;
+  public int b21960;
+  public int b21961;
+  public int b21962;
+  public int b21963;
+  public int b21964;
+  public int b21965;
+  public int b21966;
+  public int b21967;
+  public int b21968;
+  public int b21969;
+  public int b21970;
+  public int b21971;
+  public int b21972;
+  public int b21973;
+  public int b21974;
+  public int b21975;
+  public int b21976;
+  public int b21977;
+  public int b21978;
+  public int b21979;
+  public int b21980;
+  public int b21981;
+  public int b21982;
+  public int b21983;
+  public int b21984;
+  public int b21985;
+  public int b21986;
+  public int b21987;
+  public int b21988;
+  public int b21989;
+  public int b21990;
+  public int b21991;
+  public int b21992;
+  public int b21993;
+  public int b21994;
+  public int b21995;
+  public int b21996;
+  public int b21997;
+  public int b21998;
+  public int b21999;
+  public int b22000;
+  public int b22001;
+  public int b22002;
+  public int b22003;
+  public int b22004;
+  public int b22005;
+  public int b22006;
+  public int b22007;
+  public int b22008;
+  public int b22009;
+  public int b22010;
+  public int b22011;
+  public int b22012;
+  public int b22013;
+  public int b22014;
+  public int b22015;
+  public int b22016;
+  public int b22017;
+  public int b22018;
+  public int b22019;
+  public int b22020;
+  public int b22021;
+  public int b22022;
+  public int b22023;
+  public int b22024;
+  public int b22025;
+  public int b22026;
+  public int b22027;
+  public int b22028;
+  public int b22029;
+  public int b22030;
+  public int b22031;
+  public int b22032;
+  public int b22033;
+  public int b22034;
+  public int b22035;
+  public int b22036;
+  public int b22037;
+  public int b22038;
+  public int b22039;
+  public int b22040;
+  public int b22041;
+  public int b22042;
+  public int b22043;
+  public int b22044;
+  public int b22045;
+  public int b22046;
+  public int b22047;
+  public int b22048;
+  public int b22049;
+  public int b22050;
+  public int b22051;
+  public int b22052;
+  public int b22053;
+  public int b22054;
+  public int b22055;
+  public int b22056;
+  public int b22057;
+  public int b22058;
+  public int b22059;
+  public int b22060;
+  public int b22061;
+  public int b22062;
+  public int b22063;
+  public int b22064;
+  public int b22065;
+  public int b22066;
+  public int b22067;
+  public int b22068;
+  public int b22069;
+  public int b22070;
+  public int b22071;
+  public int b22072;
+  public int b22073;
+  public int b22074;
+  public int b22075;
+  public int b22076;
+  public int b22077;
+  public int b22078;
+  public int b22079;
+  public int b22080;
+  public int b22081;
+  public int b22082;
+  public int b22083;
+  public int b22084;
+  public int b22085;
+  public int b22086;
+  public int b22087;
+  public int b22088;
+  public int b22089;
+  public int b22090;
+  public int b22091;
+  public int b22092;
+  public int b22093;
+  public int b22094;
+  public int b22095;
+  public int b22096;
+  public int b22097;
+  public int b22098;
+  public int b22099;
+  public int b22100;
+  public int b22101;
+  public int b22102;
+  public int b22103;
+  public int b22104;
+  public int b22105;
+  public int b22106;
+  public int b22107;
+  public int b22108;
+  public int b22109;
+  public int b22110;
+  public int b22111;
+  public int b22112;
+  public int b22113;
+  public int b22114;
+  public int b22115;
+  public int b22116;
+  public int b22117;
+  public int b22118;
+  public int b22119;
+  public int b22120;
+  public int b22121;
+  public int b22122;
+  public int b22123;
+  public int b22124;
+  public int b22125;
+  public int b22126;
+  public int b22127;
+  public int b22128;
+  public int b22129;
+  public int b22130;
+  public int b22131;
+  public int b22132;
+  public int b22133;
+  public int b22134;
+  public int b22135;
+  public int b22136;
+  public int b22137;
+  public int b22138;
+  public int b22139;
+  public int b22140;
+  public int b22141;
+  public int b22142;
+  public int b22143;
+  public int b22144;
+  public int b22145;
+  public int b22146;
+  public int b22147;
+  public int b22148;
+  public int b22149;
+  public int b22150;
+  public int b22151;
+  public int b22152;
+  public int b22153;
+  public int b22154;
+  public int b22155;
+  public int b22156;
+  public int b22157;
+  public int b22158;
+  public int b22159;
+  public int b22160;
+  public int b22161;
+  public int b22162;
+  public int b22163;
+  public int b22164;
+  public int b22165;
+  public int b22166;
+  public int b22167;
+  public int b22168;
+  public int b22169;
+  public int b22170;
+  public int b22171;
+  public int b22172;
+  public int b22173;
+  public int b22174;
+  public int b22175;
+  public int b22176;
+  public int b22177;
+  public int b22178;
+  public int b22179;
+  public int b22180;
+  public int b22181;
+  public int b22182;
+  public int b22183;
+  public int b22184;
+  public int b22185;
+  public int b22186;
+  public int b22187;
+  public int b22188;
+  public int b22189;
+  public int b22190;
+  public int b22191;
+  public int b22192;
+  public int b22193;
+  public int b22194;
+  public int b22195;
+  public int b22196;
+  public int b22197;
+  public int b22198;
+  public int b22199;
+  public int b22200;
+  public int b22201;
+  public int b22202;
+  public int b22203;
+  public int b22204;
+  public int b22205;
+  public int b22206;
+  public int b22207;
+  public int b22208;
+  public int b22209;
+  public int b22210;
+  public int b22211;
+  public int b22212;
+  public int b22213;
+  public int b22214;
+  public int b22215;
+  public int b22216;
+  public int b22217;
+  public int b22218;
+  public int b22219;
+  public int b22220;
+  public int b22221;
+  public int b22222;
+  public int b22223;
+  public int b22224;
+  public int b22225;
+  public int b22226;
+  public int b22227;
+  public int b22228;
+  public int b22229;
+  public int b22230;
+  public int b22231;
+  public int b22232;
+  public int b22233;
+  public int b22234;
+  public int b22235;
+  public int b22236;
+  public int b22237;
+  public int b22238;
+  public int b22239;
+  public int b22240;
+  public int b22241;
+  public int b22242;
+  public int b22243;
+  public int b22244;
+  public int b22245;
+  public int b22246;
+  public int b22247;
+  public int b22248;
+  public int b22249;
+  public int b22250;
+  public int b22251;
+  public int b22252;
+  public int b22253;
+  public int b22254;
+  public int b22255;
+  public int b22256;
+  public int b22257;
+  public int b22258;
+  public int b22259;
+  public int b22260;
+  public int b22261;
+  public int b22262;
+  public int b22263;
+  public int b22264;
+  public int b22265;
+  public int b22266;
+  public int b22267;
+  public int b22268;
+  public int b22269;
+  public int b22270;
+  public int b22271;
+  public int b22272;
+  public int b22273;
+  public int b22274;
+  public int b22275;
+  public int b22276;
+  public int b22277;
+  public int b22278;
+  public int b22279;
+  public int b22280;
+  public int b22281;
+  public int b22282;
+  public int b22283;
+  public int b22284;
+  public int b22285;
+  public int b22286;
+  public int b22287;
+  public int b22288;
+  public int b22289;
+  public int b22290;
+  public int b22291;
+  public int b22292;
+  public int b22293;
+  public int b22294;
+  public int b22295;
+  public int b22296;
+  public int b22297;
+  public int b22298;
+  public int b22299;
+  public int b22300;
+  public int b22301;
+  public int b22302;
+  public int b22303;
+  public int b22304;
+  public int b22305;
+  public int b22306;
+  public int b22307;
+  public int b22308;
+  public int b22309;
+  public int b22310;
+  public int b22311;
+  public int b22312;
+  public int b22313;
+  public int b22314;
+  public int b22315;
+  public int b22316;
+  public int b22317;
+  public int b22318;
+  public int b22319;
+  public int b22320;
+  public int b22321;
+  public int b22322;
+  public int b22323;
+  public int b22324;
+  public int b22325;
+  public int b22326;
+  public int b22327;
+  public int b22328;
+  public int b22329;
+  public int b22330;
+  public int b22331;
+  public int b22332;
+  public int b22333;
+  public int b22334;
+  public int b22335;
+  public int b22336;
+  public int b22337;
+  public int b22338;
+  public int b22339;
+  public int b22340;
+  public int b22341;
+  public int b22342;
+  public int b22343;
+  public int b22344;
+  public int b22345;
+  public int b22346;
+  public int b22347;
+  public int b22348;
+  public int b22349;
+  public int b22350;
+  public int b22351;
+  public int b22352;
+  public int b22353;
+  public int b22354;
+  public int b22355;
+  public int b22356;
+  public int b22357;
+  public int b22358;
+  public int b22359;
+  public int b22360;
+  public int b22361;
+  public int b22362;
+  public int b22363;
+  public int b22364;
+  public int b22365;
+  public int b22366;
+  public int b22367;
+  public int b22368;
+  public int b22369;
+  public int b22370;
+  public int b22371;
+  public int b22372;
+  public int b22373;
+  public int b22374;
+  public int b22375;
+  public int b22376;
+  public int b22377;
+  public int b22378;
+  public int b22379;
+  public int b22380;
+  public int b22381;
+  public int b22382;
+  public int b22383;
+  public int b22384;
+  public int b22385;
+  public int b22386;
+  public int b22387;
+  public int b22388;
+  public int b22389;
+  public int b22390;
+  public int b22391;
+  public int b22392;
+  public int b22393;
+  public int b22394;
+  public int b22395;
+  public int b22396;
+  public int b22397;
+  public int b22398;
+  public int b22399;
+  public int b22400;
+  public int b22401;
+  public int b22402;
+  public int b22403;
+  public int b22404;
+  public int b22405;
+  public int b22406;
+  public int b22407;
+  public int b22408;
+  public int b22409;
+  public int b22410;
+  public int b22411;
+  public int b22412;
+  public int b22413;
+  public int b22414;
+  public int b22415;
+  public int b22416;
+  public int b22417;
+  public int b22418;
+  public int b22419;
+  public int b22420;
+  public int b22421;
+  public int b22422;
+  public int b22423;
+  public int b22424;
+  public int b22425;
+  public int b22426;
+  public int b22427;
+  public int b22428;
+  public int b22429;
+  public int b22430;
+  public int b22431;
+  public int b22432;
+  public int b22433;
+  public int b22434;
+  public int b22435;
+  public int b22436;
+  public int b22437;
+  public int b22438;
+  public int b22439;
+  public int b22440;
+  public int b22441;
+  public int b22442;
+  public int b22443;
+  public int b22444;
+  public int b22445;
+  public int b22446;
+  public int b22447;
+  public int b22448;
+  public int b22449;
+  public int b22450;
+  public int b22451;
+  public int b22452;
+  public int b22453;
+  public int b22454;
+  public int b22455;
+  public int b22456;
+  public int b22457;
+  public int b22458;
+  public int b22459;
+  public int b22460;
+  public int b22461;
+  public int b22462;
+  public int b22463;
+  public int b22464;
+  public int b22465;
+  public int b22466;
+  public int b22467;
+  public int b22468;
+  public int b22469;
+  public int b22470;
+  public int b22471;
+  public int b22472;
+  public int b22473;
+  public int b22474;
+  public int b22475;
+  public int b22476;
+  public int b22477;
+  public int b22478;
+  public int b22479;
+  public int b22480;
+  public int b22481;
+  public int b22482;
+  public int b22483;
+  public int b22484;
+  public int b22485;
+  public int b22486;
+  public int b22487;
+  public int b22488;
+  public int b22489;
+  public int b22490;
+  public int b22491;
+  public int b22492;
+  public int b22493;
+  public int b22494;
+  public int b22495;
+  public int b22496;
+  public int b22497;
+  public int b22498;
+  public int b22499;
+  public int b22500;
+  public int b22501;
+  public int b22502;
+  public int b22503;
+  public int b22504;
+  public int b22505;
+  public int b22506;
+  public int b22507;
+  public int b22508;
+  public int b22509;
+  public int b22510;
+  public int b22511;
+  public int b22512;
+  public int b22513;
+  public int b22514;
+  public int b22515;
+  public int b22516;
+  public int b22517;
+  public int b22518;
+  public int b22519;
+  public int b22520;
+  public int b22521;
+  public int b22522;
+  public int b22523;
+  public int b22524;
+  public int b22525;
+  public int b22526;
+  public int b22527;
+  public int b22528;
+  public int b22529;
+  public int b22530;
+  public int b22531;
+  public int b22532;
+  public int b22533;
+  public int b22534;
+  public int b22535;
+  public int b22536;
+  public int b22537;
+  public int b22538;
+  public int b22539;
+  public int b22540;
+  public int b22541;
+  public int b22542;
+  public int b22543;
+  public int b22544;
+  public int b22545;
+  public int b22546;
+  public int b22547;
+  public int b22548;
+  public int b22549;
+  public int b22550;
+  public int b22551;
+  public int b22552;
+  public int b22553;
+  public int b22554;
+  public int b22555;
+  public int b22556;
+  public int b22557;
+  public int b22558;
+  public int b22559;
+  public int b22560;
+  public int b22561;
+  public int b22562;
+  public int b22563;
+  public int b22564;
+  public int b22565;
+  public int b22566;
+  public int b22567;
+  public int b22568;
+  public int b22569;
+  public int b22570;
+  public int b22571;
+  public int b22572;
+  public int b22573;
+  public int b22574;
+  public int b22575;
+  public int b22576;
+  public int b22577;
+  public int b22578;
+  public int b22579;
+  public int b22580;
+  public int b22581;
+  public int b22582;
+  public int b22583;
+  public int b22584;
+  public int b22585;
+  public int b22586;
+  public int b22587;
+  public int b22588;
+  public int b22589;
+  public int b22590;
+  public int b22591;
+  public int b22592;
+  public int b22593;
+  public int b22594;
+  public int b22595;
+  public int b22596;
+  public int b22597;
+  public int b22598;
+  public int b22599;
+  public int b22600;
+  public int b22601;
+  public int b22602;
+  public int b22603;
+  public int b22604;
+  public int b22605;
+  public int b22606;
+  public int b22607;
+  public int b22608;
+  public int b22609;
+  public int b22610;
+  public int b22611;
+  public int b22612;
+  public int b22613;
+  public int b22614;
+  public int b22615;
+  public int b22616;
+  public int b22617;
+  public int b22618;
+  public int b22619;
+  public int b22620;
+  public int b22621;
+  public int b22622;
+  public int b22623;
+  public int b22624;
+  public int b22625;
+  public int b22626;
+  public int b22627;
+  public int b22628;
+  public int b22629;
+  public int b22630;
+  public int b22631;
+  public int b22632;
+  public int b22633;
+  public int b22634;
+  public int b22635;
+  public int b22636;
+  public int b22637;
+  public int b22638;
+  public int b22639;
+  public int b22640;
+  public int b22641;
+  public int b22642;
+  public int b22643;
+  public int b22644;
+  public int b22645;
+  public int b22646;
+  public int b22647;
+  public int b22648;
+  public int b22649;
+  public int b22650;
+  public int b22651;
+  public int b22652;
+  public int b22653;
+  public int b22654;
+  public int b22655;
+  public int b22656;
+  public int b22657;
+  public int b22658;
+  public int b22659;
+  public int b22660;
+  public int b22661;
+  public int b22662;
+  public int b22663;
+  public int b22664;
+  public int b22665;
+  public int b22666;
+  public int b22667;
+  public int b22668;
+  public int b22669;
+  public int b22670;
+  public int b22671;
+  public int b22672;
+  public int b22673;
+  public int b22674;
+  public int b22675;
+  public int b22676;
+  public int b22677;
+  public int b22678;
+  public int b22679;
+  public int b22680;
+  public int b22681;
+  public int b22682;
+  public int b22683;
+  public int b22684;
+  public int b22685;
+  public int b22686;
+  public int b22687;
+  public int b22688;
+  public int b22689;
+  public int b22690;
+  public int b22691;
+  public int b22692;
+  public int b22693;
+  public int b22694;
+  public int b22695;
+  public int b22696;
+  public int b22697;
+  public int b22698;
+  public int b22699;
+  public int b22700;
+  public int b22701;
+  public int b22702;
+  public int b22703;
+  public int b22704;
+  public int b22705;
+  public int b22706;
+  public int b22707;
+  public int b22708;
+  public int b22709;
+  public int b22710;
+  public int b22711;
+  public int b22712;
+  public int b22713;
+  public int b22714;
+  public int b22715;
+  public int b22716;
+  public int b22717;
+  public int b22718;
+  public int b22719;
+  public int b22720;
+  public int b22721;
+  public int b22722;
+  public int b22723;
+  public int b22724;
+  public int b22725;
+  public int b22726;
+  public int b22727;
+  public int b22728;
+  public int b22729;
+  public int b22730;
+  public int b22731;
+  public int b22732;
+  public int b22733;
+  public int b22734;
+  public int b22735;
+  public int b22736;
+  public int b22737;
+  public int b22738;
+  public int b22739;
+  public int b22740;
+  public int b22741;
+  public int b22742;
+  public int b22743;
+  public int b22744;
+  public int b22745;
+  public int b22746;
+  public int b22747;
+  public int b22748;
+  public int b22749;
+  public int b22750;
+  public int b22751;
+  public int b22752;
+  public int b22753;
+  public int b22754;
+  public int b22755;
+  public int b22756;
+  public int b22757;
+  public int b22758;
+  public int b22759;
+  public int b22760;
+  public int b22761;
+  public int b22762;
+  public int b22763;
+  public int b22764;
+  public int b22765;
+  public int b22766;
+  public int b22767;
+  public int b22768;
+  public int b22769;
+  public int b22770;
+  public int b22771;
+  public int b22772;
+  public int b22773;
+  public int b22774;
+  public int b22775;
+  public int b22776;
+  public int b22777;
+  public int b22778;
+  public int b22779;
+  public int b22780;
+  public int b22781;
+  public int b22782;
+  public int b22783;
+  public int b22784;
+  public int b22785;
+  public int b22786;
+  public int b22787;
+  public int b22788;
+  public int b22789;
+  public int b22790;
+  public int b22791;
+  public int b22792;
+  public int b22793;
+  public int b22794;
+  public int b22795;
+  public int b22796;
+  public int b22797;
+  public int b22798;
+  public int b22799;
+  public int b22800;
+  public int b22801;
+  public int b22802;
+  public int b22803;
+  public int b22804;
+  public int b22805;
+  public int b22806;
+  public int b22807;
+  public int b22808;
+  public int b22809;
+  public int b22810;
+  public int b22811;
+  public int b22812;
+  public int b22813;
+  public int b22814;
+  public int b22815;
+  public int b22816;
+  public int b22817;
+  public int b22818;
+  public int b22819;
+  public int b22820;
+  public int b22821;
+  public int b22822;
+  public int b22823;
+  public int b22824;
+  public int b22825;
+  public int b22826;
+  public int b22827;
+  public int b22828;
+  public int b22829;
+  public int b22830;
+  public int b22831;
+  public int b22832;
+  public int b22833;
+  public int b22834;
+  public int b22835;
+  public int b22836;
+  public int b22837;
+  public int b22838;
+  public int b22839;
+  public int b22840;
+  public int b22841;
+  public int b22842;
+  public int b22843;
+  public int b22844;
+  public int b22845;
+  public int b22846;
+  public int b22847;
+  public int b22848;
+  public int b22849;
+  public int b22850;
+  public int b22851;
+  public int b22852;
+  public int b22853;
+  public int b22854;
+  public int b22855;
+  public int b22856;
+  public int b22857;
+  public int b22858;
+  public int b22859;
+  public int b22860;
+  public int b22861;
+  public int b22862;
+  public int b22863;
+  public int b22864;
+  public int b22865;
+  public int b22866;
+  public int b22867;
+  public int b22868;
+  public int b22869;
+  public int b22870;
+  public int b22871;
+  public int b22872;
+  public int b22873;
+  public int b22874;
+  public int b22875;
+  public int b22876;
+  public int b22877;
+  public int b22878;
+  public int b22879;
+  public int b22880;
+  public int b22881;
+  public int b22882;
+  public int b22883;
+  public int b22884;
+  public int b22885;
+  public int b22886;
+  public int b22887;
+  public int b22888;
+  public int b22889;
+  public int b22890;
+  public int b22891;
+  public int b22892;
+  public int b22893;
+  public int b22894;
+  public int b22895;
+  public int b22896;
+  public int b22897;
+  public int b22898;
+  public int b22899;
+  public int b22900;
+  public int b22901;
+  public int b22902;
+  public int b22903;
+  public int b22904;
+  public int b22905;
+  public int b22906;
+  public int b22907;
+  public int b22908;
+  public int b22909;
+  public int b22910;
+  public int b22911;
+  public int b22912;
+  public int b22913;
+  public int b22914;
+  public int b22915;
+  public int b22916;
+  public int b22917;
+  public int b22918;
+  public int b22919;
+  public int b22920;
+  public int b22921;
+  public int b22922;
+  public int b22923;
+  public int b22924;
+  public int b22925;
+  public int b22926;
+  public int b22927;
+  public int b22928;
+  public int b22929;
+  public int b22930;
+  public int b22931;
+  public int b22932;
+  public int b22933;
+  public int b22934;
+  public int b22935;
+  public int b22936;
+  public int b22937;
+  public int b22938;
+  public int b22939;
+  public int b22940;
+  public int b22941;
+  public int b22942;
+  public int b22943;
+  public int b22944;
+  public int b22945;
+  public int b22946;
+  public int b22947;
+  public int b22948;
+  public int b22949;
+  public int b22950;
+  public int b22951;
+  public int b22952;
+  public int b22953;
+  public int b22954;
+  public int b22955;
+  public int b22956;
+  public int b22957;
+  public int b22958;
+  public int b22959;
+  public int b22960;
+  public int b22961;
+  public int b22962;
+  public int b22963;
+  public int b22964;
+  public int b22965;
+  public int b22966;
+  public int b22967;
+  public int b22968;
+  public int b22969;
+  public int b22970;
+  public int b22971;
+  public int b22972;
+  public int b22973;
+  public int b22974;
+  public int b22975;
+  public int b22976;
+  public int b22977;
+  public int b22978;
+  public int b22979;
+  public int b22980;
+  public int b22981;
+  public int b22982;
+  public int b22983;
+  public int b22984;
+  public int b22985;
+  public int b22986;
+  public int b22987;
+  public int b22988;
+  public int b22989;
+  public int b22990;
+  public int b22991;
+  public int b22992;
+  public int b22993;
+  public int b22994;
+  public int b22995;
+  public int b22996;
+  public int b22997;
+  public int b22998;
+  public int b22999;
+  public int b23000;
+  public int b23001;
+  public int b23002;
+  public int b23003;
+  public int b23004;
+  public int b23005;
+  public int b23006;
+  public int b23007;
+  public int b23008;
+  public int b23009;
+  public int b23010;
+  public int b23011;
+  public int b23012;
+  public int b23013;
+  public int b23014;
+  public int b23015;
+  public int b23016;
+  public int b23017;
+  public int b23018;
+  public int b23019;
+  public int b23020;
+  public int b23021;
+  public int b23022;
+  public int b23023;
+  public int b23024;
+  public int b23025;
+  public int b23026;
+  public int b23027;
+  public int b23028;
+  public int b23029;
+  public int b23030;
+  public int b23031;
+  public int b23032;
+  public int b23033;
+  public int b23034;
+  public int b23035;
+  public int b23036;
+  public int b23037;
+  public int b23038;
+  public int b23039;
+  public int b23040;
+  public int b23041;
+  public int b23042;
+  public int b23043;
+  public int b23044;
+  public int b23045;
+  public int b23046;
+  public int b23047;
+  public int b23048;
+  public int b23049;
+  public int b23050;
+  public int b23051;
+  public int b23052;
+  public int b23053;
+  public int b23054;
+  public int b23055;
+  public int b23056;
+  public int b23057;
+  public int b23058;
+  public int b23059;
+  public int b23060;
+  public int b23061;
+  public int b23062;
+  public int b23063;
+  public int b23064;
+  public int b23065;
+  public int b23066;
+  public int b23067;
+  public int b23068;
+  public int b23069;
+  public int b23070;
+  public int b23071;
+  public int b23072;
+  public int b23073;
+  public int b23074;
+  public int b23075;
+  public int b23076;
+  public int b23077;
+  public int b23078;
+  public int b23079;
+  public int b23080;
+  public int b23081;
+  public int b23082;
+  public int b23083;
+  public int b23084;
+  public int b23085;
+  public int b23086;
+  public int b23087;
+  public int b23088;
+  public int b23089;
+  public int b23090;
+  public int b23091;
+  public int b23092;
+  public int b23093;
+  public int b23094;
+  public int b23095;
+  public int b23096;
+  public int b23097;
+  public int b23098;
+  public int b23099;
+  public int b23100;
+  public int b23101;
+  public int b23102;
+  public int b23103;
+  public int b23104;
+  public int b23105;
+  public int b23106;
+  public int b23107;
+  public int b23108;
+  public int b23109;
+  public int b23110;
+  public int b23111;
+  public int b23112;
+  public int b23113;
+  public int b23114;
+  public int b23115;
+  public int b23116;
+  public int b23117;
+  public int b23118;
+  public int b23119;
+  public int b23120;
+  public int b23121;
+  public int b23122;
+  public int b23123;
+  public int b23124;
+  public int b23125;
+  public int b23126;
+  public int b23127;
+  public int b23128;
+  public int b23129;
+  public int b23130;
+  public int b23131;
+  public int b23132;
+  public int b23133;
+  public int b23134;
+  public int b23135;
+  public int b23136;
+  public int b23137;
+  public int b23138;
+  public int b23139;
+  public int b23140;
+  public int b23141;
+  public int b23142;
+  public int b23143;
+  public int b23144;
+  public int b23145;
+  public int b23146;
+  public int b23147;
+  public int b23148;
+  public int b23149;
+  public int b23150;
+  public int b23151;
+  public int b23152;
+  public int b23153;
+  public int b23154;
+  public int b23155;
+  public int b23156;
+  public int b23157;
+  public int b23158;
+  public int b23159;
+  public int b23160;
+  public int b23161;
+  public int b23162;
+  public int b23163;
+  public int b23164;
+  public int b23165;
+  public int b23166;
+  public int b23167;
+  public int b23168;
+  public int b23169;
+  public int b23170;
+  public int b23171;
+  public int b23172;
+  public int b23173;
+  public int b23174;
+  public int b23175;
+  public int b23176;
+  public int b23177;
+  public int b23178;
+  public int b23179;
+  public int b23180;
+  public int b23181;
+  public int b23182;
+  public int b23183;
+  public int b23184;
+  public int b23185;
+  public int b23186;
+  public int b23187;
+  public int b23188;
+  public int b23189;
+  public int b23190;
+  public int b23191;
+  public int b23192;
+  public int b23193;
+  public int b23194;
+  public int b23195;
+  public int b23196;
+  public int b23197;
+  public int b23198;
+  public int b23199;
+  public int b23200;
+  public int b23201;
+  public int b23202;
+  public int b23203;
+  public int b23204;
+  public int b23205;
+  public int b23206;
+  public int b23207;
+  public int b23208;
+  public int b23209;
+  public int b23210;
+  public int b23211;
+  public int b23212;
+  public int b23213;
+  public int b23214;
+  public int b23215;
+  public int b23216;
+  public int b23217;
+  public int b23218;
+  public int b23219;
+  public int b23220;
+  public int b23221;
+  public int b23222;
+  public int b23223;
+  public int b23224;
+  public int b23225;
+  public int b23226;
+  public int b23227;
+  public int b23228;
+  public int b23229;
+  public int b23230;
+  public int b23231;
+  public int b23232;
+  public int b23233;
+  public int b23234;
+  public int b23235;
+  public int b23236;
+  public int b23237;
+  public int b23238;
+  public int b23239;
+  public int b23240;
+  public int b23241;
+  public int b23242;
+  public int b23243;
+  public int b23244;
+  public int b23245;
+  public int b23246;
+  public int b23247;
+  public int b23248;
+  public int b23249;
+  public int b23250;
+  public int b23251;
+  public int b23252;
+  public int b23253;
+  public int b23254;
+  public int b23255;
+  public int b23256;
+  public int b23257;
+  public int b23258;
+  public int b23259;
+  public int b23260;
+  public int b23261;
+  public int b23262;
+  public int b23263;
+  public int b23264;
+  public int b23265;
+  public int b23266;
+  public int b23267;
+  public int b23268;
+  public int b23269;
+  public int b23270;
+  public int b23271;
+  public int b23272;
+  public int b23273;
+  public int b23274;
+  public int b23275;
+  public int b23276;
+  public int b23277;
+  public int b23278;
+  public int b23279;
+  public int b23280;
+  public int b23281;
+  public int b23282;
+  public int b23283;
+  public int b23284;
+  public int b23285;
+  public int b23286;
+  public int b23287;
+  public int b23288;
+  public int b23289;
+  public int b23290;
+  public int b23291;
+  public int b23292;
+  public int b23293;
+  public int b23294;
+  public int b23295;
+  public int b23296;
+  public int b23297;
+  public int b23298;
+  public int b23299;
+  public int b23300;
+  public int b23301;
+  public int b23302;
+  public int b23303;
+  public int b23304;
+  public int b23305;
+  public int b23306;
+  public int b23307;
+  public int b23308;
+  public int b23309;
+  public int b23310;
+  public int b23311;
+  public int b23312;
+  public int b23313;
+  public int b23314;
+  public int b23315;
+  public int b23316;
+  public int b23317;
+  public int b23318;
+  public int b23319;
+  public int b23320;
+  public int b23321;
+  public int b23322;
+  public int b23323;
+  public int b23324;
+  public int b23325;
+  public int b23326;
+  public int b23327;
+  public int b23328;
+  public int b23329;
+  public int b23330;
+  public int b23331;
+  public int b23332;
+  public int b23333;
+  public int b23334;
+  public int b23335;
+  public int b23336;
+  public int b23337;
+  public int b23338;
+  public int b23339;
+  public int b23340;
+  public int b23341;
+  public int b23342;
+  public int b23343;
+  public int b23344;
+  public int b23345;
+  public int b23346;
+  public int b23347;
+  public int b23348;
+  public int b23349;
+  public int b23350;
+  public int b23351;
+  public int b23352;
+  public int b23353;
+  public int b23354;
+  public int b23355;
+  public int b23356;
+  public int b23357;
+  public int b23358;
+  public int b23359;
+  public int b23360;
+  public int b23361;
+  public int b23362;
+  public int b23363;
+  public int b23364;
+  public int b23365;
+  public int b23366;
+  public int b23367;
+  public int b23368;
+  public int b23369;
+  public int b23370;
+  public int b23371;
+  public int b23372;
+  public int b23373;
+  public int b23374;
+  public int b23375;
+  public int b23376;
+  public int b23377;
+  public int b23378;
+  public int b23379;
+  public int b23380;
+  public int b23381;
+  public int b23382;
+  public int b23383;
+  public int b23384;
+  public int b23385;
+  public int b23386;
+  public int b23387;
+  public int b23388;
+  public int b23389;
+  public int b23390;
+  public int b23391;
+  public int b23392;
+  public int b23393;
+  public int b23394;
+  public int b23395;
+  public int b23396;
+  public int b23397;
+  public int b23398;
+  public int b23399;
+  public int b23400;
+  public int b23401;
+  public int b23402;
+  public int b23403;
+  public int b23404;
+  public int b23405;
+  public int b23406;
+  public int b23407;
+  public int b23408;
+  public int b23409;
+  public int b23410;
+  public int b23411;
+  public int b23412;
+  public int b23413;
+  public int b23414;
+  public int b23415;
+  public int b23416;
+  public int b23417;
+  public int b23418;
+  public int b23419;
+  public int b23420;
+  public int b23421;
+  public int b23422;
+  public int b23423;
+  public int b23424;
+  public int b23425;
+  public int b23426;
+  public int b23427;
+  public int b23428;
+  public int b23429;
+  public int b23430;
+  public int b23431;
+  public int b23432;
+  public int b23433;
+  public int b23434;
+  public int b23435;
+  public int b23436;
+  public int b23437;
+  public int b23438;
+  public int b23439;
+  public int b23440;
+  public int b23441;
+  public int b23442;
+  public int b23443;
+  public int b23444;
+  public int b23445;
+  public int b23446;
+  public int b23447;
+  public int b23448;
+  public int b23449;
+  public int b23450;
+  public int b23451;
+  public int b23452;
+  public int b23453;
+  public int b23454;
+  public int b23455;
+  public int b23456;
+  public int b23457;
+  public int b23458;
+  public int b23459;
+  public int b23460;
+  public int b23461;
+  public int b23462;
+  public int b23463;
+  public int b23464;
+  public int b23465;
+  public int b23466;
+  public int b23467;
+  public int b23468;
+  public int b23469;
+  public int b23470;
+  public int b23471;
+  public int b23472;
+  public int b23473;
+  public int b23474;
+  public int b23475;
+  public int b23476;
+  public int b23477;
+  public int b23478;
+  public int b23479;
+  public int b23480;
+  public int b23481;
+  public int b23482;
+  public int b23483;
+  public int b23484;
+  public int b23485;
+  public int b23486;
+  public int b23487;
+  public int b23488;
+  public int b23489;
+  public int b23490;
+  public int b23491;
+  public int b23492;
+  public int b23493;
+  public int b23494;
+  public int b23495;
+  public int b23496;
+  public int b23497;
+  public int b23498;
+  public int b23499;
+  public int b23500;
+  public int b23501;
+  public int b23502;
+  public int b23503;
+  public int b23504;
+  public int b23505;
+  public int b23506;
+  public int b23507;
+  public int b23508;
+  public int b23509;
+  public int b23510;
+  public int b23511;
+  public int b23512;
+  public int b23513;
+  public int b23514;
+  public int b23515;
+  public int b23516;
+  public int b23517;
+  public int b23518;
+  public int b23519;
+  public int b23520;
+  public int b23521;
+  public int b23522;
+  public int b23523;
+  public int b23524;
+  public int b23525;
+  public int b23526;
+  public int b23527;
+  public int b23528;
+  public int b23529;
+  public int b23530;
+  public int b23531;
+  public int b23532;
+  public int b23533;
+  public int b23534;
+  public int b23535;
+  public int b23536;
+  public int b23537;
+  public int b23538;
+  public int b23539;
+  public int b23540;
+  public int b23541;
+  public int b23542;
+  public int b23543;
+  public int b23544;
+  public int b23545;
+  public int b23546;
+  public int b23547;
+  public int b23548;
+  public int b23549;
+  public int b23550;
+  public int b23551;
+  public int b23552;
+  public int b23553;
+  public int b23554;
+  public int b23555;
+  public int b23556;
+  public int b23557;
+  public int b23558;
+  public int b23559;
+  public int b23560;
+  public int b23561;
+  public int b23562;
+  public int b23563;
+  public int b23564;
+  public int b23565;
+  public int b23566;
+  public int b23567;
+  public int b23568;
+  public int b23569;
+  public int b23570;
+  public int b23571;
+  public int b23572;
+  public int b23573;
+  public int b23574;
+  public int b23575;
+  public int b23576;
+  public int b23577;
+  public int b23578;
+  public int b23579;
+  public int b23580;
+  public int b23581;
+  public int b23582;
+  public int b23583;
+  public int b23584;
+  public int b23585;
+  public int b23586;
+  public int b23587;
+  public int b23588;
+  public int b23589;
+  public int b23590;
+  public int b23591;
+  public int b23592;
+  public int b23593;
+  public int b23594;
+  public int b23595;
+  public int b23596;
+  public int b23597;
+  public int b23598;
+  public int b23599;
+  public int b23600;
+  public int b23601;
+  public int b23602;
+  public int b23603;
+  public int b23604;
+  public int b23605;
+  public int b23606;
+  public int b23607;
+  public int b23608;
+  public int b23609;
+  public int b23610;
+  public int b23611;
+  public int b23612;
+  public int b23613;
+  public int b23614;
+  public int b23615;
+  public int b23616;
+  public int b23617;
+  public int b23618;
+  public int b23619;
+  public int b23620;
+  public int b23621;
+  public int b23622;
+  public int b23623;
+  public int b23624;
+  public int b23625;
+  public int b23626;
+  public int b23627;
+  public int b23628;
+  public int b23629;
+  public int b23630;
+  public int b23631;
+  public int b23632;
+  public int b23633;
+  public int b23634;
+  public int b23635;
+  public int b23636;
+  public int b23637;
+  public int b23638;
+  public int b23639;
+  public int b23640;
+  public int b23641;
+  public int b23642;
+  public int b23643;
+  public int b23644;
+  public int b23645;
+  public int b23646;
+  public int b23647;
+  public int b23648;
+  public int b23649;
+  public int b23650;
+  public int b23651;
+  public int b23652;
+  public int b23653;
+  public int b23654;
+  public int b23655;
+  public int b23656;
+  public int b23657;
+  public int b23658;
+  public int b23659;
+  public int b23660;
+  public int b23661;
+  public int b23662;
+  public int b23663;
+  public int b23664;
+  public int b23665;
+  public int b23666;
+  public int b23667;
+  public int b23668;
+  public int b23669;
+  public int b23670;
+  public int b23671;
+  public int b23672;
+  public int b23673;
+  public int b23674;
+  public int b23675;
+  public int b23676;
+  public int b23677;
+  public int b23678;
+  public int b23679;
+  public int b23680;
+  public int b23681;
+  public int b23682;
+  public int b23683;
+  public int b23684;
+  public int b23685;
+  public int b23686;
+  public int b23687;
+  public int b23688;
+  public int b23689;
+  public int b23690;
+  public int b23691;
+  public int b23692;
+  public int b23693;
+  public int b23694;
+  public int b23695;
+  public int b23696;
+  public int b23697;
+  public int b23698;
+  public int b23699;
+  public int b23700;
+  public int b23701;
+  public int b23702;
+  public int b23703;
+  public int b23704;
+  public int b23705;
+  public int b23706;
+  public int b23707;
+  public int b23708;
+  public int b23709;
+  public int b23710;
+  public int b23711;
+  public int b23712;
+  public int b23713;
+  public int b23714;
+  public int b23715;
+  public int b23716;
+  public int b23717;
+  public int b23718;
+  public int b23719;
+  public int b23720;
+  public int b23721;
+  public int b23722;
+  public int b23723;
+  public int b23724;
+  public int b23725;
+  public int b23726;
+  public int b23727;
+  public int b23728;
+  public int b23729;
+  public int b23730;
+  public int b23731;
+  public int b23732;
+  public int b23733;
+  public int b23734;
+  public int b23735;
+  public int b23736;
+  public int b23737;
+  public int b23738;
+  public int b23739;
+  public int b23740;
+  public int b23741;
+  public int b23742;
+  public int b23743;
+  public int b23744;
+  public int b23745;
+  public int b23746;
+  public int b23747;
+  public int b23748;
+  public int b23749;
+  public int b23750;
+  public int b23751;
+  public int b23752;
+  public int b23753;
+  public int b23754;
+  public int b23755;
+  public int b23756;
+  public int b23757;
+  public int b23758;
+  public int b23759;
+  public int b23760;
+  public int b23761;
+  public int b23762;
+  public int b23763;
+  public int b23764;
+  public int b23765;
+  public int b23766;
+  public int b23767;
+  public int b23768;
+  public int b23769;
+  public int b23770;
+  public int b23771;
+  public int b23772;
+  public int b23773;
+  public int b23774;
+  public int b23775;
+  public int b23776;
+  public int b23777;
+  public int b23778;
+  public int b23779;
+  public int b23780;
+  public int b23781;
+  public int b23782;
+  public int b23783;
+  public int b23784;
+  public int b23785;
+  public int b23786;
+  public int b23787;
+  public int b23788;
+  public int b23789;
+  public int b23790;
+  public int b23791;
+  public int b23792;
+  public int b23793;
+  public int b23794;
+  public int b23795;
+  public int b23796;
+  public int b23797;
+  public int b23798;
+  public int b23799;
+  public int b23800;
+  public int b23801;
+  public int b23802;
+  public int b23803;
+  public int b23804;
+  public int b23805;
+  public int b23806;
+  public int b23807;
+  public int b23808;
+  public int b23809;
+  public int b23810;
+  public int b23811;
+  public int b23812;
+  public int b23813;
+  public int b23814;
+  public int b23815;
+  public int b23816;
+  public int b23817;
+  public int b23818;
+  public int b23819;
+  public int b23820;
+  public int b23821;
+  public int b23822;
+  public int b23823;
+  public int b23824;
+  public int b23825;
+  public int b23826;
+  public int b23827;
+  public int b23828;
+  public int b23829;
+  public int b23830;
+  public int b23831;
+  public int b23832;
+  public int b23833;
+  public int b23834;
+  public int b23835;
+  public int b23836;
+  public int b23837;
+  public int b23838;
+  public int b23839;
+  public int b23840;
+  public int b23841;
+  public int b23842;
+  public int b23843;
+  public int b23844;
+  public int b23845;
+  public int b23846;
+  public int b23847;
+  public int b23848;
+  public int b23849;
+  public int b23850;
+  public int b23851;
+  public int b23852;
+  public int b23853;
+  public int b23854;
+  public int b23855;
+  public int b23856;
+  public int b23857;
+  public int b23858;
+  public int b23859;
+  public int b23860;
+  public int b23861;
+  public int b23862;
+  public int b23863;
+  public int b23864;
+  public int b23865;
+  public int b23866;
+  public int b23867;
+  public int b23868;
+  public int b23869;
+  public int b23870;
+  public int b23871;
+  public int b23872;
+  public int b23873;
+  public int b23874;
+  public int b23875;
+  public int b23876;
+  public int b23877;
+  public int b23878;
+  public int b23879;
+  public int b23880;
+  public int b23881;
+  public int b23882;
+  public int b23883;
+  public int b23884;
+  public int b23885;
+  public int b23886;
+  public int b23887;
+  public int b23888;
+  public int b23889;
+  public int b23890;
+  public int b23891;
+  public int b23892;
+  public int b23893;
+  public int b23894;
+  public int b23895;
+  public int b23896;
+  public int b23897;
+  public int b23898;
+  public int b23899;
+  public int b23900;
+  public int b23901;
+  public int b23902;
+  public int b23903;
+  public int b23904;
+  public int b23905;
+  public int b23906;
+  public int b23907;
+  public int b23908;
+  public int b23909;
+  public int b23910;
+  public int b23911;
+  public int b23912;
+  public int b23913;
+  public int b23914;
+  public int b23915;
+  public int b23916;
+  public int b23917;
+  public int b23918;
+  public int b23919;
+  public int b23920;
+  public int b23921;
+  public int b23922;
+  public int b23923;
+  public int b23924;
+  public int b23925;
+  public int b23926;
+  public int b23927;
+  public int b23928;
+  public int b23929;
+  public int b23930;
+  public int b23931;
+  public int b23932;
+  public int b23933;
+  public int b23934;
+  public int b23935;
+  public int b23936;
+  public int b23937;
+  public int b23938;
+  public int b23939;
+  public int b23940;
+  public int b23941;
+  public int b23942;
+  public int b23943;
+  public int b23944;
+  public int b23945;
+  public int b23946;
+  public int b23947;
+  public int b23948;
+  public int b23949;
+  public int b23950;
+  public int b23951;
+  public int b23952;
+  public int b23953;
+  public int b23954;
+  public int b23955;
+  public int b23956;
+  public int b23957;
+  public int b23958;
+  public int b23959;
+  public int b23960;
+  public int b23961;
+  public int b23962;
+  public int b23963;
+  public int b23964;
+  public int b23965;
+  public int b23966;
+  public int b23967;
+  public int b23968;
+  public int b23969;
+  public int b23970;
+  public int b23971;
+  public int b23972;
+  public int b23973;
+  public int b23974;
+  public int b23975;
+  public int b23976;
+  public int b23977;
+  public int b23978;
+  public int b23979;
+  public int b23980;
+  public int b23981;
+  public int b23982;
+  public int b23983;
+  public int b23984;
+  public int b23985;
+  public int b23986;
+  public int b23987;
+  public int b23988;
+  public int b23989;
+  public int b23990;
+  public int b23991;
+  public int b23992;
+  public int b23993;
+  public int b23994;
+  public int b23995;
+  public int b23996;
+  public int b23997;
+  public int b23998;
+  public int b23999;
+  public int b24000;
+  public int b24001;
+  public int b24002;
+  public int b24003;
+  public int b24004;
+  public int b24005;
+  public int b24006;
+  public int b24007;
+  public int b24008;
+  public int b24009;
+  public int b24010;
+  public int b24011;
+  public int b24012;
+  public int b24013;
+  public int b24014;
+  public int b24015;
+  public int b24016;
+  public int b24017;
+  public int b24018;
+  public int b24019;
+  public int b24020;
+  public int b24021;
+  public int b24022;
+  public int b24023;
+  public int b24024;
+  public int b24025;
+  public int b24026;
+  public int b24027;
+  public int b24028;
+  public int b24029;
+  public int b24030;
+  public int b24031;
+  public int b24032;
+  public int b24033;
+  public int b24034;
+  public int b24035;
+  public int b24036;
+  public int b24037;
+  public int b24038;
+  public int b24039;
+  public int b24040;
+  public int b24041;
+  public int b24042;
+  public int b24043;
+  public int b24044;
+  public int b24045;
+  public int b24046;
+  public int b24047;
+  public int b24048;
+  public int b24049;
+  public int b24050;
+  public int b24051;
+  public int b24052;
+  public int b24053;
+  public int b24054;
+  public int b24055;
+  public int b24056;
+  public int b24057;
+  public int b24058;
+  public int b24059;
+  public int b24060;
+  public int b24061;
+  public int b24062;
+  public int b24063;
+  public int b24064;
+  public int b24065;
+  public int b24066;
+  public int b24067;
+  public int b24068;
+  public int b24069;
+  public int b24070;
+  public int b24071;
+  public int b24072;
+  public int b24073;
+  public int b24074;
+  public int b24075;
+  public int b24076;
+  public int b24077;
+  public int b24078;
+  public int b24079;
+  public int b24080;
+  public int b24081;
+  public int b24082;
+  public int b24083;
+  public int b24084;
+  public int b24085;
+  public int b24086;
+  public int b24087;
+  public int b24088;
+  public int b24089;
+  public int b24090;
+  public int b24091;
+  public int b24092;
+  public int b24093;
+  public int b24094;
+  public int b24095;
+  public int b24096;
+  public int b24097;
+  public int b24098;
+  public int b24099;
+  public int b24100;
+  public int b24101;
+  public int b24102;
+  public int b24103;
+  public int b24104;
+  public int b24105;
+  public int b24106;
+  public int b24107;
+  public int b24108;
+  public int b24109;
+  public int b24110;
+  public int b24111;
+  public int b24112;
+  public int b24113;
+  public int b24114;
+  public int b24115;
+  public int b24116;
+  public int b24117;
+  public int b24118;
+  public int b24119;
+  public int b24120;
+  public int b24121;
+  public int b24122;
+  public int b24123;
+  public int b24124;
+  public int b24125;
+  public int b24126;
+  public int b24127;
+  public int b24128;
+  public int b24129;
+  public int b24130;
+  public int b24131;
+  public int b24132;
+  public int b24133;
+  public int b24134;
+  public int b24135;
+  public int b24136;
+  public int b24137;
+  public int b24138;
+  public int b24139;
+  public int b24140;
+  public int b24141;
+  public int b24142;
+  public int b24143;
+  public int b24144;
+  public int b24145;
+  public int b24146;
+  public int b24147;
+  public int b24148;
+  public int b24149;
+  public int b24150;
+  public int b24151;
+  public int b24152;
+  public int b24153;
+  public int b24154;
+  public int b24155;
+  public int b24156;
+  public int b24157;
+  public int b24158;
+  public int b24159;
+  public int b24160;
+  public int b24161;
+  public int b24162;
+  public int b24163;
+  public int b24164;
+  public int b24165;
+  public int b24166;
+  public int b24167;
+  public int b24168;
+  public int b24169;
+  public int b24170;
+  public int b24171;
+  public int b24172;
+  public int b24173;
+  public int b24174;
+  public int b24175;
+  public int b24176;
+  public int b24177;
+  public int b24178;
+  public int b24179;
+  public int b24180;
+  public int b24181;
+  public int b24182;
+  public int b24183;
+  public int b24184;
+  public int b24185;
+  public int b24186;
+  public int b24187;
+  public int b24188;
+  public int b24189;
+  public int b24190;
+  public int b24191;
+  public int b24192;
+  public int b24193;
+  public int b24194;
+  public int b24195;
+  public int b24196;
+  public int b24197;
+  public int b24198;
+  public int b24199;
+  public int b24200;
+  public int b24201;
+  public int b24202;
+  public int b24203;
+  public int b24204;
+  public int b24205;
+  public int b24206;
+  public int b24207;
+  public int b24208;
+  public int b24209;
+  public int b24210;
+  public int b24211;
+  public int b24212;
+  public int b24213;
+  public int b24214;
+  public int b24215;
+  public int b24216;
+  public int b24217;
+  public int b24218;
+  public int b24219;
+  public int b24220;
+  public int b24221;
+  public int b24222;
+  public int b24223;
+  public int b24224;
+  public int b24225;
+  public int b24226;
+  public int b24227;
+  public int b24228;
+  public int b24229;
+  public int b24230;
+  public int b24231;
+  public int b24232;
+  public int b24233;
+  public int b24234;
+  public int b24235;
+  public int b24236;
+  public int b24237;
+  public int b24238;
+  public int b24239;
+  public int b24240;
+  public int b24241;
+  public int b24242;
+  public int b24243;
+  public int b24244;
+  public int b24245;
+  public int b24246;
+  public int b24247;
+  public int b24248;
+  public int b24249;
+  public int b24250;
+  public int b24251;
+  public int b24252;
+  public int b24253;
+  public int b24254;
+  public int b24255;
+  public int b24256;
+  public int b24257;
+  public int b24258;
+  public int b24259;
+  public int b24260;
+  public int b24261;
+  public int b24262;
+  public int b24263;
+  public int b24264;
+  public int b24265;
+  public int b24266;
+  public int b24267;
+  public int b24268;
+  public int b24269;
+  public int b24270;
+  public int b24271;
+  public int b24272;
+  public int b24273;
+  public int b24274;
+  public int b24275;
+  public int b24276;
+  public int b24277;
+  public int b24278;
+  public int b24279;
+  public int b24280;
+  public int b24281;
+  public int b24282;
+  public int b24283;
+  public int b24284;
+  public int b24285;
+  public int b24286;
+  public int b24287;
+  public int b24288;
+  public int b24289;
+  public int b24290;
+  public int b24291;
+  public int b24292;
+  public int b24293;
+  public int b24294;
+  public int b24295;
+  public int b24296;
+  public int b24297;
+  public int b24298;
+  public int b24299;
+  public int b24300;
+  public int b24301;
+  public int b24302;
+  public int b24303;
+  public int b24304;
+  public int b24305;
+  public int b24306;
+  public int b24307;
+  public int b24308;
+  public int b24309;
+  public int b24310;
+  public int b24311;
+  public int b24312;
+  public int b24313;
+  public int b24314;
+  public int b24315;
+  public int b24316;
+  public int b24317;
+  public int b24318;
+  public int b24319;
+  public int b24320;
+  public int b24321;
+  public int b24322;
+  public int b24323;
+  public int b24324;
+  public int b24325;
+  public int b24326;
+  public int b24327;
+  public int b24328;
+  public int b24329;
+  public int b24330;
+  public int b24331;
+  public int b24332;
+  public int b24333;
+  public int b24334;
+  public int b24335;
+  public int b24336;
+  public int b24337;
+  public int b24338;
+  public int b24339;
+  public int b24340;
+  public int b24341;
+  public int b24342;
+  public int b24343;
+  public int b24344;
+  public int b24345;
+  public int b24346;
+  public int b24347;
+  public int b24348;
+  public int b24349;
+  public int b24350;
+  public int b24351;
+  public int b24352;
+  public int b24353;
+  public int b24354;
+  public int b24355;
+  public int b24356;
+  public int b24357;
+  public int b24358;
+  public int b24359;
+  public int b24360;
+  public int b24361;
+  public int b24362;
+  public int b24363;
+  public int b24364;
+  public int b24365;
+  public int b24366;
+  public int b24367;
+  public int b24368;
+  public int b24369;
+  public int b24370;
+  public int b24371;
+  public int b24372;
+  public int b24373;
+  public int b24374;
+  public int b24375;
+  public int b24376;
+  public int b24377;
+  public int b24378;
+  public int b24379;
+  public int b24380;
+  public int b24381;
+  public int b24382;
+  public int b24383;
+  public int b24384;
+  public int b24385;
+  public int b24386;
+  public int b24387;
+  public int b24388;
+  public int b24389;
+  public int b24390;
+  public int b24391;
+  public int b24392;
+  public int b24393;
+  public int b24394;
+  public int b24395;
+  public int b24396;
+  public int b24397;
+  public int b24398;
+  public int b24399;
+  public int b24400;
+  public int b24401;
+  public int b24402;
+  public int b24403;
+  public int b24404;
+  public int b24405;
+  public int b24406;
+  public int b24407;
+  public int b24408;
+  public int b24409;
+  public int b24410;
+  public int b24411;
+  public int b24412;
+  public int b24413;
+  public int b24414;
+  public int b24415;
+  public int b24416;
+  public int b24417;
+  public int b24418;
+  public int b24419;
+  public int b24420;
+  public int b24421;
+  public int b24422;
+  public int b24423;
+  public int b24424;
+  public int b24425;
+  public int b24426;
+  public int b24427;
+  public int b24428;
+  public int b24429;
+  public int b24430;
+  public int b24431;
+  public int b24432;
+  public int b24433;
+  public int b24434;
+  public int b24435;
+  public int b24436;
+  public int b24437;
+  public int b24438;
+  public int b24439;
+  public int b24440;
+  public int b24441;
+  public int b24442;
+  public int b24443;
+  public int b24444;
+  public int b24445;
+  public int b24446;
+  public int b24447;
+  public int b24448;
+  public int b24449;
+  public int b24450;
+  public int b24451;
+  public int b24452;
+  public int b24453;
+  public int b24454;
+  public int b24455;
+  public int b24456;
+  public int b24457;
+  public int b24458;
+  public int b24459;
+  public int b24460;
+  public int b24461;
+  public int b24462;
+  public int b24463;
+  public int b24464;
+  public int b24465;
+  public int b24466;
+  public int b24467;
+  public int b24468;
+  public int b24469;
+  public int b24470;
+  public int b24471;
+  public int b24472;
+  public int b24473;
+  public int b24474;
+  public int b24475;
+  public int b24476;
+  public int b24477;
+  public int b24478;
+  public int b24479;
+  public int b24480;
+  public int b24481;
+  public int b24482;
+  public int b24483;
+  public int b24484;
+  public int b24485;
+  public int b24486;
+  public int b24487;
+  public int b24488;
+  public int b24489;
+  public int b24490;
+  public int b24491;
+  public int b24492;
+  public int b24493;
+  public int b24494;
+  public int b24495;
+  public int b24496;
+  public int b24497;
+  public int b24498;
+  public int b24499;
+  public int b24500;
+  public int b24501;
+  public int b24502;
+  public int b24503;
+  public int b24504;
+  public int b24505;
+  public int b24506;
+  public int b24507;
+  public int b24508;
+  public int b24509;
+  public int b24510;
+  public int b24511;
+  public int b24512;
+  public int b24513;
+  public int b24514;
+  public int b24515;
+  public int b24516;
+  public int b24517;
+  public int b24518;
+  public int b24519;
+  public int b24520;
+  public int b24521;
+  public int b24522;
+  public int b24523;
+  public int b24524;
+  public int b24525;
+  public int b24526;
+  public int b24527;
+  public int b24528;
+  public int b24529;
+  public int b24530;
+  public int b24531;
+  public int b24532;
+  public int b24533;
+  public int b24534;
+  public int b24535;
+  public int b24536;
+  public int b24537;
+  public int b24538;
+  public int b24539;
+  public int b24540;
+  public int b24541;
+  public int b24542;
+  public int b24543;
+  public int b24544;
+  public int b24545;
+  public int b24546;
+  public int b24547;
+  public int b24548;
+  public int b24549;
+  public int b24550;
+  public int b24551;
+  public int b24552;
+  public int b24553;
+  public int b24554;
+  public int b24555;
+  public int b24556;
+  public int b24557;
+  public int b24558;
+  public int b24559;
+  public int b24560;
+  public int b24561;
+  public int b24562;
+  public int b24563;
+  public int b24564;
+  public int b24565;
+  public int b24566;
+  public int b24567;
+  public int b24568;
+  public int b24569;
+  public int b24570;
+  public int b24571;
+  public int b24572;
+  public int b24573;
+  public int b24574;
+  public int b24575;
+  public int b24576;
+  public int b24577;
+  public int b24578;
+  public int b24579;
+  public int b24580;
+  public int b24581;
+  public int b24582;
+  public int b24583;
+  public int b24584;
+  public int b24585;
+  public int b24586;
+  public int b24587;
+  public int b24588;
+  public int b24589;
+  public int b24590;
+  public int b24591;
+  public int b24592;
+  public int b24593;
+  public int b24594;
+  public int b24595;
+  public int b24596;
+  public int b24597;
+  public int b24598;
+  public int b24599;
+  public int b24600;
+  public int b24601;
+  public int b24602;
+  public int b24603;
+  public int b24604;
+  public int b24605;
+  public int b24606;
+  public int b24607;
+  public int b24608;
+  public int b24609;
+  public int b24610;
+  public int b24611;
+  public int b24612;
+  public int b24613;
+  public int b24614;
+  public int b24615;
+  public int b24616;
+  public int b24617;
+  public int b24618;
+  public int b24619;
+  public int b24620;
+  public int b24621;
+  public int b24622;
+  public int b24623;
+  public int b24624;
+  public int b24625;
+  public int b24626;
+  public int b24627;
+  public int b24628;
+  public int b24629;
+  public int b24630;
+  public int b24631;
+  public int b24632;
+  public int b24633;
+  public int b24634;
+  public int b24635;
+  public int b24636;
+  public int b24637;
+  public int b24638;
+  public int b24639;
+  public int b24640;
+  public int b24641;
+  public int b24642;
+  public int b24643;
+  public int b24644;
+  public int b24645;
+  public int b24646;
+  public int b24647;
+  public int b24648;
+  public int b24649;
+  public int b24650;
+  public int b24651;
+  public int b24652;
+  public int b24653;
+  public int b24654;
+  public int b24655;
+  public int b24656;
+  public int b24657;
+  public int b24658;
+  public int b24659;
+  public int b24660;
+  public int b24661;
+  public int b24662;
+  public int b24663;
+  public int b24664;
+  public int b24665;
+  public int b24666;
+  public int b24667;
+  public int b24668;
+  public int b24669;
+  public int b24670;
+  public int b24671;
+  public int b24672;
+  public int b24673;
+  public int b24674;
+  public int b24675;
+  public int b24676;
+  public int b24677;
+  public int b24678;
+  public int b24679;
+  public int b24680;
+  public int b24681;
+  public int b24682;
+  public int b24683;
+  public int b24684;
+  public int b24685;
+  public int b24686;
+  public int b24687;
+  public int b24688;
+  public int b24689;
+  public int b24690;
+  public int b24691;
+  public int b24692;
+  public int b24693;
+  public int b24694;
+  public int b24695;
+  public int b24696;
+  public int b24697;
+  public int b24698;
+  public int b24699;
+  public int b24700;
+  public int b24701;
+  public int b24702;
+  public int b24703;
+  public int b24704;
+  public int b24705;
+  public int b24706;
+  public int b24707;
+  public int b24708;
+  public int b24709;
+  public int b24710;
+  public int b24711;
+  public int b24712;
+  public int b24713;
+  public int b24714;
+  public int b24715;
+  public int b24716;
+  public int b24717;
+  public int b24718;
+  public int b24719;
+  public int b24720;
+  public int b24721;
+  public int b24722;
+  public int b24723;
+  public int b24724;
+  public int b24725;
+  public int b24726;
+  public int b24727;
+  public int b24728;
+  public int b24729;
+  public int b24730;
+  public int b24731;
+  public int b24732;
+  public int b24733;
+  public int b24734;
+  public int b24735;
+  public int b24736;
+  public int b24737;
+  public int b24738;
+  public int b24739;
+  public int b24740;
+  public int b24741;
+  public int b24742;
+  public int b24743;
+  public int b24744;
+  public int b24745;
+  public int b24746;
+  public int b24747;
+  public int b24748;
+  public int b24749;
+  public int b24750;
+  public int b24751;
+  public int b24752;
+  public int b24753;
+  public int b24754;
+  public int b24755;
+  public int b24756;
+  public int b24757;
+  public int b24758;
+  public int b24759;
+  public int b24760;
+  public int b24761;
+  public int b24762;
+  public int b24763;
+  public int b24764;
+  public int b24765;
+  public int b24766;
+  public int b24767;
+  public int b24768;
+  public int b24769;
+  public int b24770;
+  public int b24771;
+  public int b24772;
+  public int b24773;
+  public int b24774;
+  public int b24775;
+  public int b24776;
+  public int b24777;
+  public int b24778;
+  public int b24779;
+  public int b24780;
+  public int b24781;
+  public int b24782;
+  public int b24783;
+  public int b24784;
+  public int b24785;
+  public int b24786;
+  public int b24787;
+  public int b24788;
+  public int b24789;
+  public int b24790;
+  public int b24791;
+  public int b24792;
+  public int b24793;
+  public int b24794;
+  public int b24795;
+  public int b24796;
+  public int b24797;
+  public int b24798;
+  public int b24799;
+  public int b24800;
+  public int b24801;
+  public int b24802;
+  public int b24803;
+  public int b24804;
+  public int b24805;
+  public int b24806;
+  public int b24807;
+  public int b24808;
+  public int b24809;
+  public int b24810;
+  public int b24811;
+  public int b24812;
+  public int b24813;
+  public int b24814;
+  public int b24815;
+  public int b24816;
+  public int b24817;
+  public int b24818;
+  public int b24819;
+  public int b24820;
+  public int b24821;
+  public int b24822;
+  public int b24823;
+  public int b24824;
+  public int b24825;
+  public int b24826;
+  public int b24827;
+  public int b24828;
+  public int b24829;
+  public int b24830;
+  public int b24831;
+  public int b24832;
+  public int b24833;
+  public int b24834;
+  public int b24835;
+  public int b24836;
+  public int b24837;
+  public int b24838;
+  public int b24839;
+  public int b24840;
+  public int b24841;
+  public int b24842;
+  public int b24843;
+  public int b24844;
+  public int b24845;
+  public int b24846;
+  public int b24847;
+  public int b24848;
+  public int b24849;
+  public int b24850;
+  public int b24851;
+  public int b24852;
+  public int b24853;
+  public int b24854;
+  public int b24855;
+  public int b24856;
+  public int b24857;
+  public int b24858;
+  public int b24859;
+  public int b24860;
+  public int b24861;
+  public int b24862;
+  public int b24863;
+  public int b24864;
+  public int b24865;
+  public int b24866;
+  public int b24867;
+  public int b24868;
+  public int b24869;
+  public int b24870;
+  public int b24871;
+  public int b24872;
+  public int b24873;
+  public int b24874;
+  public int b24875;
+  public int b24876;
+  public int b24877;
+  public int b24878;
+  public int b24879;
+  public int b24880;
+  public int b24881;
+  public int b24882;
+  public int b24883;
+  public int b24884;
+  public int b24885;
+  public int b24886;
+  public int b24887;
+  public int b24888;
+  public int b24889;
+  public int b24890;
+  public int b24891;
+  public int b24892;
+  public int b24893;
+  public int b24894;
+  public int b24895;
+  public int b24896;
+  public int b24897;
+  public int b24898;
+  public int b24899;
+  public int b24900;
+  public int b24901;
+  public int b24902;
+  public int b24903;
+  public int b24904;
+  public int b24905;
+  public int b24906;
+  public int b24907;
+  public int b24908;
+  public int b24909;
+  public int b24910;
+  public int b24911;
+  public int b24912;
+  public int b24913;
+  public int b24914;
+  public int b24915;
+  public int b24916;
+  public int b24917;
+  public int b24918;
+  public int b24919;
+  public int b24920;
+  public int b24921;
+  public int b24922;
+  public int b24923;
+  public int b24924;
+  public int b24925;
+  public int b24926;
+  public int b24927;
+  public int b24928;
+  public int b24929;
+  public int b24930;
+  public int b24931;
+  public int b24932;
+  public int b24933;
+  public int b24934;
+  public int b24935;
+  public int b24936;
+  public int b24937;
+  public int b24938;
+  public int b24939;
+  public int b24940;
+  public int b24941;
+  public int b24942;
+  public int b24943;
+  public int b24944;
+  public int b24945;
+  public int b24946;
+  public int b24947;
+  public int b24948;
+  public int b24949;
+  public int b24950;
+  public int b24951;
+  public int b24952;
+  public int b24953;
+  public int b24954;
+  public int b24955;
+  public int b24956;
+  public int b24957;
+  public int b24958;
+  public int b24959;
+  public int b24960;
+  public int b24961;
+  public int b24962;
+  public int b24963;
+  public int b24964;
+  public int b24965;
+  public int b24966;
+  public int b24967;
+  public int b24968;
+  public int b24969;
+  public int b24970;
+  public int b24971;
+  public int b24972;
+  public int b24973;
+  public int b24974;
+  public int b24975;
+  public int b24976;
+  public int b24977;
+  public int b24978;
+  public int b24979;
+  public int b24980;
+  public int b24981;
+  public int b24982;
+  public int b24983;
+  public int b24984;
+  public int b24985;
+  public int b24986;
+  public int b24987;
+  public int b24988;
+  public int b24989;
+  public int b24990;
+  public int b24991;
+  public int b24992;
+  public int b24993;
+  public int b24994;
+  public int b24995;
+  public int b24996;
+  public int b24997;
+  public int b24998;
+  public int b24999;
+  public int b25000;
+  public int b25001;
+  public int b25002;
+  public int b25003;
+  public int b25004;
+  public int b25005;
+  public int b25006;
+  public int b25007;
+  public int b25008;
+  public int b25009;
+  public int b25010;
+  public int b25011;
+  public int b25012;
+  public int b25013;
+  public int b25014;
+  public int b25015;
+  public int b25016;
+  public int b25017;
+  public int b25018;
+  public int b25019;
+  public int b25020;
+  public int b25021;
+  public int b25022;
+  public int b25023;
+  public int b25024;
+  public int b25025;
+  public int b25026;
+  public int b25027;
+  public int b25028;
+  public int b25029;
+  public int b25030;
+  public int b25031;
+  public int b25032;
+  public int b25033;
+  public int b25034;
+  public int b25035;
+  public int b25036;
+  public int b25037;
+  public int b25038;
+  public int b25039;
+  public int b25040;
+  public int b25041;
+  public int b25042;
+  public int b25043;
+  public int b25044;
+  public int b25045;
+  public int b25046;
+  public int b25047;
+  public int b25048;
+  public int b25049;
+  public int b25050;
+  public int b25051;
+  public int b25052;
+  public int b25053;
+  public int b25054;
+  public int b25055;
+  public int b25056;
+  public int b25057;
+  public int b25058;
+  public int b25059;
+  public int b25060;
+  public int b25061;
+  public int b25062;
+  public int b25063;
+  public int b25064;
+  public int b25065;
+  public int b25066;
+  public int b25067;
+  public int b25068;
+  public int b25069;
+  public int b25070;
+  public int b25071;
+  public int b25072;
+  public int b25073;
+  public int b25074;
+  public int b25075;
+  public int b25076;
+  public int b25077;
+  public int b25078;
+  public int b25079;
+  public int b25080;
+  public int b25081;
+  public int b25082;
+  public int b25083;
+  public int b25084;
+  public int b25085;
+  public int b25086;
+  public int b25087;
+  public int b25088;
+  public int b25089;
+  public int b25090;
+  public int b25091;
+  public int b25092;
+  public int b25093;
+  public int b25094;
+  public int b25095;
+  public int b25096;
+  public int b25097;
+  public int b25098;
+  public int b25099;
+  public int b25100;
+  public int b25101;
+  public int b25102;
+  public int b25103;
+  public int b25104;
+  public int b25105;
+  public int b25106;
+  public int b25107;
+  public int b25108;
+  public int b25109;
+  public int b25110;
+  public int b25111;
+  public int b25112;
+  public int b25113;
+  public int b25114;
+  public int b25115;
+  public int b25116;
+  public int b25117;
+  public int b25118;
+  public int b25119;
+  public int b25120;
+  public int b25121;
+  public int b25122;
+  public int b25123;
+  public int b25124;
+  public int b25125;
+  public int b25126;
+  public int b25127;
+  public int b25128;
+  public int b25129;
+  public int b25130;
+  public int b25131;
+  public int b25132;
+  public int b25133;
+  public int b25134;
+  public int b25135;
+  public int b25136;
+  public int b25137;
+  public int b25138;
+  public int b25139;
+  public int b25140;
+  public int b25141;
+  public int b25142;
+  public int b25143;
+  public int b25144;
+  public int b25145;
+  public int b25146;
+  public int b25147;
+  public int b25148;
+  public int b25149;
+  public int b25150;
+  public int b25151;
+  public int b25152;
+  public int b25153;
+  public int b25154;
+  public int b25155;
+  public int b25156;
+  public int b25157;
+  public int b25158;
+  public int b25159;
+  public int b25160;
+  public int b25161;
+  public int b25162;
+  public int b25163;
+  public int b25164;
+  public int b25165;
+  public int b25166;
+  public int b25167;
+  public int b25168;
+  public int b25169;
+  public int b25170;
+  public int b25171;
+  public int b25172;
+  public int b25173;
+  public int b25174;
+  public int b25175;
+  public int b25176;
+  public int b25177;
+  public int b25178;
+  public int b25179;
+  public int b25180;
+  public int b25181;
+  public int b25182;
+  public int b25183;
+  public int b25184;
+  public int b25185;
+  public int b25186;
+  public int b25187;
+  public int b25188;
+  public int b25189;
+  public int b25190;
+  public int b25191;
+  public int b25192;
+  public int b25193;
+  public int b25194;
+  public int b25195;
+  public int b25196;
+  public int b25197;
+  public int b25198;
+  public int b25199;
+  public int b25200;
+  public int b25201;
+  public int b25202;
+  public int b25203;
+  public int b25204;
+  public int b25205;
+  public int b25206;
+  public int b25207;
+  public int b25208;
+  public int b25209;
+  public int b25210;
+  public int b25211;
+  public int b25212;
+  public int b25213;
+  public int b25214;
+  public int b25215;
+  public int b25216;
+  public int b25217;
+  public int b25218;
+  public int b25219;
+  public int b25220;
+  public int b25221;
+  public int b25222;
+  public int b25223;
+  public int b25224;
+  public int b25225;
+  public int b25226;
+  public int b25227;
+  public int b25228;
+  public int b25229;
+  public int b25230;
+  public int b25231;
+  public int b25232;
+  public int b25233;
+  public int b25234;
+  public int b25235;
+  public int b25236;
+  public int b25237;
+  public int b25238;
+  public int b25239;
+  public int b25240;
+  public int b25241;
+  public int b25242;
+  public int b25243;
+  public int b25244;
+  public int b25245;
+  public int b25246;
+  public int b25247;
+  public int b25248;
+  public int b25249;
+  public int b25250;
+  public int b25251;
+  public int b25252;
+  public int b25253;
+  public int b25254;
+  public int b25255;
+  public int b25256;
+  public int b25257;
+  public int b25258;
+  public int b25259;
+  public int b25260;
+  public int b25261;
+  public int b25262;
+  public int b25263;
+  public int b25264;
+  public int b25265;
+  public int b25266;
+  public int b25267;
+  public int b25268;
+  public int b25269;
+  public int b25270;
+  public int b25271;
+  public int b25272;
+  public int b25273;
+  public int b25274;
+  public int b25275;
+  public int b25276;
+  public int b25277;
+  public int b25278;
+  public int b25279;
+  public int b25280;
+  public int b25281;
+  public int b25282;
+  public int b25283;
+  public int b25284;
+  public int b25285;
+  public int b25286;
+  public int b25287;
+  public int b25288;
+  public int b25289;
+  public int b25290;
+  public int b25291;
+  public int b25292;
+  public int b25293;
+  public int b25294;
+  public int b25295;
+  public int b25296;
+  public int b25297;
+  public int b25298;
+  public int b25299;
+  public int b25300;
+  public int b25301;
+  public int b25302;
+  public int b25303;
+  public int b25304;
+  public int b25305;
+  public int b25306;
+  public int b25307;
+  public int b25308;
+  public int b25309;
+  public int b25310;
+  public int b25311;
+  public int b25312;
+  public int b25313;
+  public int b25314;
+  public int b25315;
+  public int b25316;
+  public int b25317;
+  public int b25318;
+  public int b25319;
+  public int b25320;
+  public int b25321;
+  public int b25322;
+  public int b25323;
+  public int b25324;
+  public int b25325;
+  public int b25326;
+  public int b25327;
+  public int b25328;
+  public int b25329;
+  public int b25330;
+  public int b25331;
+  public int b25332;
+  public int b25333;
+  public int b25334;
+  public int b25335;
+  public int b25336;
+  public int b25337;
+  public int b25338;
+  public int b25339;
+  public int b25340;
+  public int b25341;
+  public int b25342;
+  public int b25343;
+  public int b25344;
+  public int b25345;
+  public int b25346;
+  public int b25347;
+  public int b25348;
+  public int b25349;
+  public int b25350;
+  public int b25351;
+  public int b25352;
+  public int b25353;
+  public int b25354;
+  public int b25355;
+  public int b25356;
+  public int b25357;
+  public int b25358;
+  public int b25359;
+  public int b25360;
+  public int b25361;
+  public int b25362;
+  public int b25363;
+  public int b25364;
+  public int b25365;
+  public int b25366;
+  public int b25367;
+  public int b25368;
+  public int b25369;
+  public int b25370;
+  public int b25371;
+  public int b25372;
+  public int b25373;
+  public int b25374;
+  public int b25375;
+  public int b25376;
+  public int b25377;
+  public int b25378;
+  public int b25379;
+  public int b25380;
+  public int b25381;
+  public int b25382;
+  public int b25383;
+  public int b25384;
+  public int b25385;
+  public int b25386;
+  public int b25387;
+  public int b25388;
+  public int b25389;
+  public int b25390;
+  public int b25391;
+  public int b25392;
+  public int b25393;
+  public int b25394;
+  public int b25395;
+  public int b25396;
+  public int b25397;
+  public int b25398;
+  public int b25399;
+  public int b25400;
+  public int b25401;
+  public int b25402;
+  public int b25403;
+  public int b25404;
+  public int b25405;
+  public int b25406;
+  public int b25407;
+  public int b25408;
+  public int b25409;
+  public int b25410;
+  public int b25411;
+  public int b25412;
+  public int b25413;
+  public int b25414;
+  public int b25415;
+  public int b25416;
+  public int b25417;
+  public int b25418;
+  public int b25419;
+  public int b25420;
+  public int b25421;
+  public int b25422;
+  public int b25423;
+  public int b25424;
+  public int b25425;
+  public int b25426;
+  public int b25427;
+  public int b25428;
+  public int b25429;
+  public int b25430;
+  public int b25431;
+  public int b25432;
+  public int b25433;
+  public int b25434;
+  public int b25435;
+  public int b25436;
+  public int b25437;
+  public int b25438;
+  public int b25439;
+  public int b25440;
+  public int b25441;
+  public int b25442;
+  public int b25443;
+  public int b25444;
+  public int b25445;
+  public int b25446;
+  public int b25447;
+  public int b25448;
+  public int b25449;
+  public int b25450;
+  public int b25451;
+  public int b25452;
+  public int b25453;
+  public int b25454;
+  public int b25455;
+  public int b25456;
+  public int b25457;
+  public int b25458;
+  public int b25459;
+  public int b25460;
+  public int b25461;
+  public int b25462;
+  public int b25463;
+  public int b25464;
+  public int b25465;
+  public int b25466;
+  public int b25467;
+  public int b25468;
+  public int b25469;
+  public int b25470;
+  public int b25471;
+  public int b25472;
+  public int b25473;
+  public int b25474;
+  public int b25475;
+  public int b25476;
+  public int b25477;
+  public int b25478;
+  public int b25479;
+  public int b25480;
+  public int b25481;
+  public int b25482;
+  public int b25483;
+  public int b25484;
+  public int b25485;
+  public int b25486;
+  public int b25487;
+  public int b25488;
+  public int b25489;
+  public int b25490;
+  public int b25491;
+  public int b25492;
+  public int b25493;
+  public int b25494;
+  public int b25495;
+  public int b25496;
+  public int b25497;
+  public int b25498;
+  public int b25499;
+  public int b25500;
+  public int b25501;
+  public int b25502;
+  public int b25503;
+  public int b25504;
+  public int b25505;
+  public int b25506;
+  public int b25507;
+  public int b25508;
+  public int b25509;
+  public int b25510;
+  public int b25511;
+  public int b25512;
+  public int b25513;
+  public int b25514;
+  public int b25515;
+  public int b25516;
+  public int b25517;
+  public int b25518;
+  public int b25519;
+  public int b25520;
+  public int b25521;
+  public int b25522;
+  public int b25523;
+  public int b25524;
+  public int b25525;
+  public int b25526;
+  public int b25527;
+  public int b25528;
+  public int b25529;
+  public int b25530;
+  public int b25531;
+  public int b25532;
+  public int b25533;
+  public int b25534;
+  public int b25535;
+  public int b25536;
+  public int b25537;
+  public int b25538;
+  public int b25539;
+  public int b25540;
+  public int b25541;
+  public int b25542;
+  public int b25543;
+  public int b25544;
+  public int b25545;
+  public int b25546;
+  public int b25547;
+  public int b25548;
+  public int b25549;
+  public int b25550;
+  public int b25551;
+  public int b25552;
+  public int b25553;
+  public int b25554;
+  public int b25555;
+  public int b25556;
+  public int b25557;
+  public int b25558;
+  public int b25559;
+  public int b25560;
+  public int b25561;
+  public int b25562;
+  public int b25563;
+  public int b25564;
+  public int b25565;
+  public int b25566;
+  public int b25567;
+  public int b25568;
+  public int b25569;
+  public int b25570;
+  public int b25571;
+  public int b25572;
+  public int b25573;
+  public int b25574;
+  public int b25575;
+  public int b25576;
+  public int b25577;
+  public int b25578;
+  public int b25579;
+  public int b25580;
+  public int b25581;
+  public int b25582;
+  public int b25583;
+  public int b25584;
+  public int b25585;
+  public int b25586;
+  public int b25587;
+  public int b25588;
+  public int b25589;
+  public int b25590;
+  public int b25591;
+  public int b25592;
+  public int b25593;
+  public int b25594;
+  public int b25595;
+  public int b25596;
+  public int b25597;
+  public int b25598;
+  public int b25599;
+  public int b25600;
+  public int b25601;
+  public int b25602;
+  public int b25603;
+  public int b25604;
+  public int b25605;
+  public int b25606;
+  public int b25607;
+  public int b25608;
+  public int b25609;
+  public int b25610;
+  public int b25611;
+  public int b25612;
+  public int b25613;
+  public int b25614;
+  public int b25615;
+  public int b25616;
+  public int b25617;
+  public int b25618;
+  public int b25619;
+  public int b25620;
+  public int b25621;
+  public int b25622;
+  public int b25623;
+  public int b25624;
+  public int b25625;
+  public int b25626;
+  public int b25627;
+  public int b25628;
+  public int b25629;
+  public int b25630;
+  public int b25631;
+  public int b25632;
+  public int b25633;
+  public int b25634;
+  public int b25635;
+  public int b25636;
+  public int b25637;
+  public int b25638;
+  public int b25639;
+  public int b25640;
+  public int b25641;
+  public int b25642;
+  public int b25643;
+  public int b25644;
+  public int b25645;
+  public int b25646;
+  public int b25647;
+  public int b25648;
+  public int b25649;
+  public int b25650;
+  public int b25651;
+  public int b25652;
+  public int b25653;
+  public int b25654;
+  public int b25655;
+  public int b25656;
+  public int b25657;
+  public int b25658;
+  public int b25659;
+  public int b25660;
+  public int b25661;
+  public int b25662;
+  public int b25663;
+  public int b25664;
+  public int b25665;
+  public int b25666;
+  public int b25667;
+  public int b25668;
+  public int b25669;
+  public int b25670;
+  public int b25671;
+  public int b25672;
+  public int b25673;
+  public int b25674;
+  public int b25675;
+  public int b25676;
+  public int b25677;
+  public int b25678;
+  public int b25679;
+  public int b25680;
+  public int b25681;
+  public int b25682;
+  public int b25683;
+  public int b25684;
+  public int b25685;
+  public int b25686;
+  public int b25687;
+  public int b25688;
+  public int b25689;
+  public int b25690;
+  public int b25691;
+  public int b25692;
+  public int b25693;
+  public int b25694;
+  public int b25695;
+  public int b25696;
+  public int b25697;
+  public int b25698;
+  public int b25699;
+  public int b25700;
+  public int b25701;
+  public int b25702;
+  public int b25703;
+  public int b25704;
+  public int b25705;
+  public int b25706;
+  public int b25707;
+  public int b25708;
+  public int b25709;
+  public int b25710;
+  public int b25711;
+  public int b25712;
+  public int b25713;
+  public int b25714;
+  public int b25715;
+  public int b25716;
+  public int b25717;
+  public int b25718;
+  public int b25719;
+  public int b25720;
+  public int b25721;
+  public int b25722;
+  public int b25723;
+  public int b25724;
+  public int b25725;
+  public int b25726;
+  public int b25727;
+  public int b25728;
+  public int b25729;
+  public int b25730;
+  public int b25731;
+  public int b25732;
+  public int b25733;
+  public int b25734;
+  public int b25735;
+  public int b25736;
+  public int b25737;
+  public int b25738;
+  public int b25739;
+  public int b25740;
+  public int b25741;
+  public int b25742;
+  public int b25743;
+  public int b25744;
+  public int b25745;
+  public int b25746;
+  public int b25747;
+  public int b25748;
+  public int b25749;
+  public int b25750;
+  public int b25751;
+  public int b25752;
+  public int b25753;
+  public int b25754;
+  public int b25755;
+  public int b25756;
+  public int b25757;
+  public int b25758;
+  public int b25759;
+  public int b25760;
+  public int b25761;
+  public int b25762;
+  public int b25763;
+  public int b25764;
+  public int b25765;
+  public int b25766;
+  public int b25767;
+  public int b25768;
+  public int b25769;
+  public int b25770;
+  public int b25771;
+  public int b25772;
+  public int b25773;
+  public int b25774;
+  public int b25775;
+  public int b25776;
+  public int b25777;
+  public int b25778;
+  public int b25779;
+  public int b25780;
+  public int b25781;
+  public int b25782;
+  public int b25783;
+  public int b25784;
+  public int b25785;
+  public int b25786;
+  public int b25787;
+  public int b25788;
+  public int b25789;
+  public int b25790;
+  public int b25791;
+  public int b25792;
+  public int b25793;
+  public int b25794;
+  public int b25795;
+  public int b25796;
+  public int b25797;
+  public int b25798;
+  public int b25799;
+  public int b25800;
+  public int b25801;
+  public int b25802;
+  public int b25803;
+  public int b25804;
+  public int b25805;
+  public int b25806;
+  public int b25807;
+  public int b25808;
+  public int b25809;
+  public int b25810;
+  public int b25811;
+  public int b25812;
+  public int b25813;
+  public int b25814;
+  public int b25815;
+  public int b25816;
+  public int b25817;
+  public int b25818;
+  public int b25819;
+  public int b25820;
+  public int b25821;
+  public int b25822;
+  public int b25823;
+  public int b25824;
+  public int b25825;
+  public int b25826;
+  public int b25827;
+  public int b25828;
+  public int b25829;
+  public int b25830;
+  public int b25831;
+  public int b25832;
+  public int b25833;
+  public int b25834;
+  public int b25835;
+  public int b25836;
+  public int b25837;
+  public int b25838;
+  public int b25839;
+  public int b25840;
+  public int b25841;
+  public int b25842;
+  public int b25843;
+  public int b25844;
+  public int b25845;
+  public int b25846;
+  public int b25847;
+  public int b25848;
+  public int b25849;
+  public int b25850;
+  public int b25851;
+  public int b25852;
+  public int b25853;
+  public int b25854;
+  public int b25855;
+  public int b25856;
+  public int b25857;
+  public int b25858;
+  public int b25859;
+  public int b25860;
+  public int b25861;
+  public int b25862;
+  public int b25863;
+  public int b25864;
+  public int b25865;
+  public int b25866;
+  public int b25867;
+  public int b25868;
+  public int b25869;
+  public int b25870;
+  public int b25871;
+  public int b25872;
+  public int b25873;
+  public int b25874;
+  public int b25875;
+  public int b25876;
+  public int b25877;
+  public int b25878;
+  public int b25879;
+  public int b25880;
+  public int b25881;
+  public int b25882;
+  public int b25883;
+  public int b25884;
+  public int b25885;
+  public int b25886;
+  public int b25887;
+  public int b25888;
+  public int b25889;
+  public int b25890;
+  public int b25891;
+  public int b25892;
+  public int b25893;
+  public int b25894;
+  public int b25895;
+  public int b25896;
+  public int b25897;
+  public int b25898;
+  public int b25899;
+  public int b25900;
+  public int b25901;
+  public int b25902;
+  public int b25903;
+  public int b25904;
+  public int b25905;
+  public int b25906;
+  public int b25907;
+  public int b25908;
+  public int b25909;
+  public int b25910;
+  public int b25911;
+  public int b25912;
+  public int b25913;
+  public int b25914;
+  public int b25915;
+  public int b25916;
+  public int b25917;
+  public int b25918;
+  public int b25919;
+  public int b25920;
+  public int b25921;
+  public int b25922;
+  public int b25923;
+  public int b25924;
+  public int b25925;
+  public int b25926;
+  public int b25927;
+  public int b25928;
+  public int b25929;
+  public int b25930;
+  public int b25931;
+  public int b25932;
+  public int b25933;
+  public int b25934;
+  public int b25935;
+  public int b25936;
+  public int b25937;
+  public int b25938;
+  public int b25939;
+  public int b25940;
+  public int b25941;
+  public int b25942;
+  public int b25943;
+  public int b25944;
+  public int b25945;
+  public int b25946;
+  public int b25947;
+  public int b25948;
+  public int b25949;
+  public int b25950;
+  public int b25951;
+  public int b25952;
+  public int b25953;
+  public int b25954;
+  public int b25955;
+  public int b25956;
+  public int b25957;
+  public int b25958;
+  public int b25959;
+  public int b25960;
+  public int b25961;
+  public int b25962;
+  public int b25963;
+  public int b25964;
+  public int b25965;
+  public int b25966;
+  public int b25967;
+  public int b25968;
+  public int b25969;
+  public int b25970;
+  public int b25971;
+  public int b25972;
+  public int b25973;
+  public int b25974;
+  public int b25975;
+  public int b25976;
+  public int b25977;
+  public int b25978;
+  public int b25979;
+  public int b25980;
+  public int b25981;
+  public int b25982;
+  public int b25983;
+  public int b25984;
+  public int b25985;
+  public int b25986;
+  public int b25987;
+  public int b25988;
+  public int b25989;
+  public int b25990;
+  public int b25991;
+  public int b25992;
+  public int b25993;
+  public int b25994;
+  public int b25995;
+  public int b25996;
+  public int b25997;
+  public int b25998;
+  public int b25999;
+  public int b26000;
+  public int b26001;
+  public int b26002;
+  public int b26003;
+  public int b26004;
+  public int b26005;
+  public int b26006;
+  public int b26007;
+  public int b26008;
+  public int b26009;
+  public int b26010;
+  public int b26011;
+  public int b26012;
+  public int b26013;
+  public int b26014;
+  public int b26015;
+  public int b26016;
+  public int b26017;
+  public int b26018;
+  public int b26019;
+  public int b26020;
+  public int b26021;
+  public int b26022;
+  public int b26023;
+  public int b26024;
+  public int b26025;
+  public int b26026;
+  public int b26027;
+  public int b26028;
+  public int b26029;
+  public int b26030;
+  public int b26031;
+  public int b26032;
+  public int b26033;
+  public int b26034;
+  public int b26035;
+  public int b26036;
+  public int b26037;
+  public int b26038;
+  public int b26039;
+  public int b26040;
+  public int b26041;
+  public int b26042;
+  public int b26043;
+  public int b26044;
+  public int b26045;
+  public int b26046;
+  public int b26047;
+  public int b26048;
+  public int b26049;
+  public int b26050;
+  public int b26051;
+  public int b26052;
+  public int b26053;
+  public int b26054;
+  public int b26055;
+  public int b26056;
+  public int b26057;
+  public int b26058;
+  public int b26059;
+  public int b26060;
+  public int b26061;
+  public int b26062;
+  public int b26063;
+  public int b26064;
+  public int b26065;
+  public int b26066;
+  public int b26067;
+  public int b26068;
+  public int b26069;
+  public int b26070;
+  public int b26071;
+  public int b26072;
+  public int b26073;
+  public int b26074;
+  public int b26075;
+  public int b26076;
+  public int b26077;
+  public int b26078;
+  public int b26079;
+  public int b26080;
+  public int b26081;
+  public int b26082;
+  public int b26083;
+  public int b26084;
+  public int b26085;
+  public int b26086;
+  public int b26087;
+  public int b26088;
+  public int b26089;
+  public int b26090;
+  public int b26091;
+  public int b26092;
+  public int b26093;
+  public int b26094;
+  public int b26095;
+  public int b26096;
+  public int b26097;
+  public int b26098;
+  public int b26099;
+  public int b26100;
+  public int b26101;
+  public int b26102;
+  public int b26103;
+  public int b26104;
+  public int b26105;
+  public int b26106;
+  public int b26107;
+  public int b26108;
+  public int b26109;
+  public int b26110;
+  public int b26111;
+  public int b26112;
+  public int b26113;
+  public int b26114;
+  public int b26115;
+  public int b26116;
+  public int b26117;
+  public int b26118;
+  public int b26119;
+  public int b26120;
+  public int b26121;
+  public int b26122;
+  public int b26123;
+  public int b26124;
+  public int b26125;
+  public int b26126;
+  public int b26127;
+  public int b26128;
+  public int b26129;
+  public int b26130;
+  public int b26131;
+  public int b26132;
+  public int b26133;
+  public int b26134;
+  public int b26135;
+  public int b26136;
+  public int b26137;
+  public int b26138;
+  public int b26139;
+  public int b26140;
+  public int b26141;
+  public int b26142;
+  public int b26143;
+  public int b26144;
+  public int b26145;
+  public int b26146;
+  public int b26147;
+  public int b26148;
+  public int b26149;
+  public int b26150;
+  public int b26151;
+  public int b26152;
+  public int b26153;
+  public int b26154;
+  public int b26155;
+  public int b26156;
+  public int b26157;
+  public int b26158;
+  public int b26159;
+  public int b26160;
+  public int b26161;
+  public int b26162;
+  public int b26163;
+  public int b26164;
+  public int b26165;
+  public int b26166;
+  public int b26167;
+  public int b26168;
+  public int b26169;
+  public int b26170;
+  public int b26171;
+  public int b26172;
+  public int b26173;
+  public int b26174;
+  public int b26175;
+  public int b26176;
+  public int b26177;
+  public int b26178;
+  public int b26179;
+  public int b26180;
+  public int b26181;
+  public int b26182;
+  public int b26183;
+  public int b26184;
+  public int b26185;
+  public int b26186;
+  public int b26187;
+  public int b26188;
+  public int b26189;
+  public int b26190;
+  public int b26191;
+  public int b26192;
+  public int b26193;
+  public int b26194;
+  public int b26195;
+  public int b26196;
+  public int b26197;
+  public int b26198;
+  public int b26199;
+  public int b26200;
+  public int b26201;
+  public int b26202;
+  public int b26203;
+  public int b26204;
+  public int b26205;
+  public int b26206;
+  public int b26207;
+  public int b26208;
+  public int b26209;
+  public int b26210;
+  public int b26211;
+  public int b26212;
+  public int b26213;
+  public int b26214;
+  public int b26215;
+  public int b26216;
+  public int b26217;
+  public int b26218;
+  public int b26219;
+  public int b26220;
+  public int b26221;
+  public int b26222;
+  public int b26223;
+  public int b26224;
+  public int b26225;
+  public int b26226;
+  public int b26227;
+  public int b26228;
+  public int b26229;
+  public int b26230;
+  public int b26231;
+  public int b26232;
+  public int b26233;
+  public int b26234;
+  public int b26235;
+  public int b26236;
+  public int b26237;
+  public int b26238;
+  public int b26239;
+  public int b26240;
+  public int b26241;
+  public int b26242;
+  public int b26243;
+  public int b26244;
+  public int b26245;
+  public int b26246;
+  public int b26247;
+  public int b26248;
+  public int b26249;
+  public int b26250;
+  public int b26251;
+  public int b26252;
+  public int b26253;
+  public int b26254;
+  public int b26255;
+  public int b26256;
+  public int b26257;
+  public int b26258;
+  public int b26259;
+  public int b26260;
+  public int b26261;
+  public int b26262;
+  public int b26263;
+  public int b26264;
+  public int b26265;
+  public int b26266;
+  public int b26267;
+  public int b26268;
+  public int b26269;
+  public int b26270;
+  public int b26271;
+  public int b26272;
+  public int b26273;
+  public int b26274;
+  public int b26275;
+  public int b26276;
+  public int b26277;
+  public int b26278;
+  public int b26279;
+  public int b26280;
+  public int b26281;
+  public int b26282;
+  public int b26283;
+  public int b26284;
+  public int b26285;
+  public int b26286;
+  public int b26287;
+  public int b26288;
+  public int b26289;
+  public int b26290;
+  public int b26291;
+  public int b26292;
+  public int b26293;
+  public int b26294;
+  public int b26295;
+  public int b26296;
+  public int b26297;
+  public int b26298;
+  public int b26299;
+  public int b26300;
+  public int b26301;
+  public int b26302;
+  public int b26303;
+  public int b26304;
+  public int b26305;
+  public int b26306;
+  public int b26307;
+  public int b26308;
+  public int b26309;
+  public int b26310;
+  public int b26311;
+  public int b26312;
+  public int b26313;
+  public int b26314;
+  public int b26315;
+  public int b26316;
+  public int b26317;
+  public int b26318;
+  public int b26319;
+  public int b26320;
+  public int b26321;
+  public int b26322;
+  public int b26323;
+  public int b26324;
+  public int b26325;
+  public int b26326;
+  public int b26327;
+  public int b26328;
+  public int b26329;
+  public int b26330;
+  public int b26331;
+  public int b26332;
+  public int b26333;
+  public int b26334;
+  public int b26335;
+  public int b26336;
+  public int b26337;
+  public int b26338;
+  public int b26339;
+  public int b26340;
+  public int b26341;
+  public int b26342;
+  public int b26343;
+  public int b26344;
+  public int b26345;
+  public int b26346;
+  public int b26347;
+  public int b26348;
+  public int b26349;
+  public int b26350;
+  public int b26351;
+  public int b26352;
+  public int b26353;
+  public int b26354;
+  public int b26355;
+  public int b26356;
+  public int b26357;
+  public int b26358;
+  public int b26359;
+  public int b26360;
+  public int b26361;
+  public int b26362;
+  public int b26363;
+  public int b26364;
+  public int b26365;
+  public int b26366;
+  public int b26367;
+  public int b26368;
+  public int b26369;
+  public int b26370;
+  public int b26371;
+  public int b26372;
+  public int b26373;
+  public int b26374;
+  public int b26375;
+  public int b26376;
+  public int b26377;
+  public int b26378;
+  public int b26379;
+  public int b26380;
+  public int b26381;
+  public int b26382;
+  public int b26383;
+  public int b26384;
+  public int b26385;
+  public int b26386;
+  public int b26387;
+  public int b26388;
+  public int b26389;
+  public int b26390;
+  public int b26391;
+  public int b26392;
+  public int b26393;
+  public int b26394;
+  public int b26395;
+  public int b26396;
+  public int b26397;
+  public int b26398;
+  public int b26399;
+  public int b26400;
+  public int b26401;
+  public int b26402;
+  public int b26403;
+  public int b26404;
+  public int b26405;
+  public int b26406;
+  public int b26407;
+  public int b26408;
+  public int b26409;
+  public int b26410;
+  public int b26411;
+  public int b26412;
+  public int b26413;
+  public int b26414;
+  public int b26415;
+  public int b26416;
+  public int b26417;
+  public int b26418;
+  public int b26419;
+  public int b26420;
+  public int b26421;
+  public int b26422;
+  public int b26423;
+  public int b26424;
+  public int b26425;
+  public int b26426;
+  public int b26427;
+  public int b26428;
+  public int b26429;
+  public int b26430;
+  public int b26431;
+  public int b26432;
+  public int b26433;
+  public int b26434;
+  public int b26435;
+  public int b26436;
+  public int b26437;
+  public int b26438;
+  public int b26439;
+  public int b26440;
+  public int b26441;
+  public int b26442;
+  public int b26443;
+  public int b26444;
+  public int b26445;
+  public int b26446;
+  public int b26447;
+  public int b26448;
+  public int b26449;
+  public int b26450;
+  public int b26451;
+  public int b26452;
+  public int b26453;
+  public int b26454;
+  public int b26455;
+  public int b26456;
+  public int b26457;
+  public int b26458;
+  public int b26459;
+  public int b26460;
+  public int b26461;
+  public int b26462;
+  public int b26463;
+  public int b26464;
+  public int b26465;
+  public int b26466;
+  public int b26467;
+  public int b26468;
+  public int b26469;
+  public int b26470;
+  public int b26471;
+  public int b26472;
+  public int b26473;
+  public int b26474;
+  public int b26475;
+  public int b26476;
+  public int b26477;
+  public int b26478;
+  public int b26479;
+  public int b26480;
+  public int b26481;
+  public int b26482;
+  public int b26483;
+  public int b26484;
+  public int b26485;
+  public int b26486;
+  public int b26487;
+  public int b26488;
+  public int b26489;
+  public int b26490;
+  public int b26491;
+  public int b26492;
+  public int b26493;
+  public int b26494;
+  public int b26495;
+  public int b26496;
+  public int b26497;
+  public int b26498;
+  public int b26499;
+  public int b26500;
+  public int b26501;
+  public int b26502;
+  public int b26503;
+  public int b26504;
+  public int b26505;
+  public int b26506;
+  public int b26507;
+  public int b26508;
+  public int b26509;
+  public int b26510;
+  public int b26511;
+  public int b26512;
+  public int b26513;
+  public int b26514;
+  public int b26515;
+  public int b26516;
+  public int b26517;
+  public int b26518;
+  public int b26519;
+  public int b26520;
+  public int b26521;
+  public int b26522;
+  public int b26523;
+  public int b26524;
+  public int b26525;
+  public int b26526;
+  public int b26527;
+  public int b26528;
+  public int b26529;
+  public int b26530;
+  public int b26531;
+  public int b26532;
+  public int b26533;
+  public int b26534;
+  public int b26535;
+  public int b26536;
+  public int b26537;
+  public int b26538;
+  public int b26539;
+  public int b26540;
+  public int b26541;
+  public int b26542;
+  public int b26543;
+  public int b26544;
+  public int b26545;
+  public int b26546;
+  public int b26547;
+  public int b26548;
+  public int b26549;
+  public int b26550;
+  public int b26551;
+  public int b26552;
+  public int b26553;
+  public int b26554;
+  public int b26555;
+  public int b26556;
+  public int b26557;
+  public int b26558;
+  public int b26559;
+  public int b26560;
+  public int b26561;
+  public int b26562;
+  public int b26563;
+  public int b26564;
+  public int b26565;
+  public int b26566;
+  public int b26567;
+  public int b26568;
+  public int b26569;
+  public int b26570;
+  public int b26571;
+  public int b26572;
+  public int b26573;
+  public int b26574;
+  public int b26575;
+  public int b26576;
+  public int b26577;
+  public int b26578;
+  public int b26579;
+  public int b26580;
+  public int b26581;
+  public int b26582;
+  public int b26583;
+  public int b26584;
+  public int b26585;
+  public int b26586;
+  public int b26587;
+  public int b26588;
+  public int b26589;
+  public int b26590;
+  public int b26591;
+  public int b26592;
+  public int b26593;
+  public int b26594;
+  public int b26595;
+  public int b26596;
+  public int b26597;
+  public int b26598;
+  public int b26599;
+  public int b26600;
+  public int b26601;
+  public int b26602;
+  public int b26603;
+  public int b26604;
+  public int b26605;
+  public int b26606;
+  public int b26607;
+  public int b26608;
+  public int b26609;
+  public int b26610;
+  public int b26611;
+  public int b26612;
+  public int b26613;
+  public int b26614;
+  public int b26615;
+  public int b26616;
+  public int b26617;
+  public int b26618;
+  public int b26619;
+  public int b26620;
+  public int b26621;
+  public int b26622;
+  public int b26623;
+  public int b26624;
+  public int b26625;
+  public int b26626;
+  public int b26627;
+  public int b26628;
+  public int b26629;
+  public int b26630;
+  public int b26631;
+  public int b26632;
+  public int b26633;
+  public int b26634;
+  public int b26635;
+  public int b26636;
+  public int b26637;
+  public int b26638;
+  public int b26639;
+  public int b26640;
+  public int b26641;
+  public int b26642;
+  public int b26643;
+  public int b26644;
+  public int b26645;
+  public int b26646;
+  public int b26647;
+  public int b26648;
+  public int b26649;
+  public int b26650;
+  public int b26651;
+  public int b26652;
+  public int b26653;
+  public int b26654;
+  public int b26655;
+  public int b26656;
+  public int b26657;
+  public int b26658;
+  public int b26659;
+  public int b26660;
+  public int b26661;
+  public int b26662;
+  public int b26663;
+  public int b26664;
+  public int b26665;
+  public int b26666;
+  public int b26667;
+  public int b26668;
+  public int b26669;
+  public int b26670;
+  public int b26671;
+  public int b26672;
+  public int b26673;
+  public int b26674;
+  public int b26675;
+  public int b26676;
+  public int b26677;
+  public int b26678;
+  public int b26679;
+  public int b26680;
+  public int b26681;
+  public int b26682;
+  public int b26683;
+  public int b26684;
+  public int b26685;
+  public int b26686;
+  public int b26687;
+  public int b26688;
+  public int b26689;
+  public int b26690;
+  public int b26691;
+  public int b26692;
+  public int b26693;
+  public int b26694;
+  public int b26695;
+  public int b26696;
+  public int b26697;
+  public int b26698;
+  public int b26699;
+  public int b26700;
+  public int b26701;
+  public int b26702;
+  public int b26703;
+  public int b26704;
+  public int b26705;
+  public int b26706;
+  public int b26707;
+  public int b26708;
+  public int b26709;
+  public int b26710;
+  public int b26711;
+  public int b26712;
+  public int b26713;
+  public int b26714;
+  public int b26715;
+  public int b26716;
+  public int b26717;
+  public int b26718;
+  public int b26719;
+  public int b26720;
+  public int b26721;
+  public int b26722;
+  public int b26723;
+  public int b26724;
+  public int b26725;
+  public int b26726;
+  public int b26727;
+  public int b26728;
+  public int b26729;
+  public int b26730;
+  public int b26731;
+  public int b26732;
+  public int b26733;
+  public int b26734;
+  public int b26735;
+  public int b26736;
+  public int b26737;
+  public int b26738;
+  public int b26739;
+  public int b26740;
+  public int b26741;
+  public int b26742;
+  public int b26743;
+  public int b26744;
+  public int b26745;
+  public int b26746;
+  public int b26747;
+  public int b26748;
+  public int b26749;
+  public int b26750;
+  public int b26751;
+  public int b26752;
+  public int b26753;
+  public int b26754;
+  public int b26755;
+  public int b26756;
+  public int b26757;
+  public int b26758;
+  public int b26759;
+  public int b26760;
+  public int b26761;
+  public int b26762;
+  public int b26763;
+  public int b26764;
+  public int b26765;
+  public int b26766;
+  public int b26767;
+  public int b26768;
+  public int b26769;
+  public int b26770;
+  public int b26771;
+  public int b26772;
+  public int b26773;
+  public int b26774;
+  public int b26775;
+  public int b26776;
+  public int b26777;
+  public int b26778;
+  public int b26779;
+  public int b26780;
+  public int b26781;
+  public int b26782;
+  public int b26783;
+  public int b26784;
+  public int b26785;
+  public int b26786;
+  public int b26787;
+  public int b26788;
+  public int b26789;
+  public int b26790;
+  public int b26791;
+  public int b26792;
+  public int b26793;
+  public int b26794;
+  public int b26795;
+  public int b26796;
+  public int b26797;
+  public int b26798;
+  public int b26799;
+  public int b26800;
+  public int b26801;
+  public int b26802;
+  public int b26803;
+  public int b26804;
+  public int b26805;
+  public int b26806;
+  public int b26807;
+  public int b26808;
+  public int b26809;
+  public int b26810;
+  public int b26811;
+  public int b26812;
+  public int b26813;
+  public int b26814;
+  public int b26815;
+  public int b26816;
+  public int b26817;
+  public int b26818;
+  public int b26819;
+  public int b26820;
+  public int b26821;
+  public int b26822;
+  public int b26823;
+  public int b26824;
+  public int b26825;
+  public int b26826;
+  public int b26827;
+  public int b26828;
+  public int b26829;
+  public int b26830;
+  public int b26831;
+  public int b26832;
+  public int b26833;
+  public int b26834;
+  public int b26835;
+  public int b26836;
+  public int b26837;
+  public int b26838;
+  public int b26839;
+  public int b26840;
+  public int b26841;
+  public int b26842;
+  public int b26843;
+  public int b26844;
+  public int b26845;
+  public int b26846;
+  public int b26847;
+  public int b26848;
+  public int b26849;
+  public int b26850;
+  public int b26851;
+  public int b26852;
+  public int b26853;
+  public int b26854;
+  public int b26855;
+  public int b26856;
+  public int b26857;
+  public int b26858;
+  public int b26859;
+  public int b26860;
+  public int b26861;
+  public int b26862;
+  public int b26863;
+  public int b26864;
+  public int b26865;
+  public int b26866;
+  public int b26867;
+  public int b26868;
+  public int b26869;
+  public int b26870;
+  public int b26871;
+  public int b26872;
+  public int b26873;
+  public int b26874;
+  public int b26875;
+  public int b26876;
+  public int b26877;
+  public int b26878;
+  public int b26879;
+  public int b26880;
+  public int b26881;
+  public int b26882;
+  public int b26883;
+  public int b26884;
+  public int b26885;
+  public int b26886;
+  public int b26887;
+  public int b26888;
+  public int b26889;
+  public int b26890;
+  public int b26891;
+  public int b26892;
+  public int b26893;
+  public int b26894;
+  public int b26895;
+  public int b26896;
+  public int b26897;
+  public int b26898;
+  public int b26899;
+  public int b26900;
+  public int b26901;
+  public int b26902;
+  public int b26903;
+  public int b26904;
+  public int b26905;
+  public int b26906;
+  public int b26907;
+  public int b26908;
+  public int b26909;
+  public int b26910;
+  public int b26911;
+  public int b26912;
+  public int b26913;
+  public int b26914;
+  public int b26915;
+  public int b26916;
+  public int b26917;
+  public int b26918;
+  public int b26919;
+  public int b26920;
+  public int b26921;
+  public int b26922;
+  public int b26923;
+  public int b26924;
+  public int b26925;
+  public int b26926;
+  public int b26927;
+  public int b26928;
+  public int b26929;
+  public int b26930;
+  public int b26931;
+  public int b26932;
+  public int b26933;
+  public int b26934;
+  public int b26935;
+  public int b26936;
+  public int b26937;
+  public int b26938;
+  public int b26939;
+  public int b26940;
+  public int b26941;
+  public int b26942;
+  public int b26943;
+  public int b26944;
+  public int b26945;
+  public int b26946;
+  public int b26947;
+  public int b26948;
+  public int b26949;
+  public int b26950;
+  public int b26951;
+  public int b26952;
+  public int b26953;
+  public int b26954;
+  public int b26955;
+  public int b26956;
+  public int b26957;
+  public int b26958;
+  public int b26959;
+  public int b26960;
+  public int b26961;
+  public int b26962;
+  public int b26963;
+  public int b26964;
+  public int b26965;
+  public int b26966;
+  public int b26967;
+  public int b26968;
+  public int b26969;
+  public int b26970;
+  public int b26971;
+  public int b26972;
+  public int b26973;
+  public int b26974;
+  public int b26975;
+  public int b26976;
+  public int b26977;
+  public int b26978;
+  public int b26979;
+  public int b26980;
+  public int b26981;
+  public int b26982;
+  public int b26983;
+  public int b26984;
+  public int b26985;
+  public int b26986;
+  public int b26987;
+  public int b26988;
+  public int b26989;
+  public int b26990;
+  public int b26991;
+  public int b26992;
+  public int b26993;
+  public int b26994;
+  public int b26995;
+  public int b26996;
+  public int b26997;
+  public int b26998;
+  public int b26999;
+  public int b27000;
+  public int b27001;
+  public int b27002;
+  public int b27003;
+  public int b27004;
+  public int b27005;
+  public int b27006;
+  public int b27007;
+  public int b27008;
+  public int b27009;
+  public int b27010;
+  public int b27011;
+  public int b27012;
+  public int b27013;
+  public int b27014;
+  public int b27015;
+  public int b27016;
+  public int b27017;
+  public int b27018;
+  public int b27019;
+  public int b27020;
+  public int b27021;
+  public int b27022;
+  public int b27023;
+  public int b27024;
+  public int b27025;
+  public int b27026;
+  public int b27027;
+  public int b27028;
+  public int b27029;
+  public int b27030;
+  public int b27031;
+  public int b27032;
+  public int b27033;
+  public int b27034;
+  public int b27035;
+  public int b27036;
+  public int b27037;
+  public int b27038;
+  public int b27039;
+  public int b27040;
+  public int b27041;
+  public int b27042;
+  public int b27043;
+  public int b27044;
+  public int b27045;
+  public int b27046;
+  public int b27047;
+  public int b27048;
+  public int b27049;
+  public int b27050;
+  public int b27051;
+  public int b27052;
+  public int b27053;
+  public int b27054;
+  public int b27055;
+  public int b27056;
+  public int b27057;
+  public int b27058;
+  public int b27059;
+  public int b27060;
+  public int b27061;
+  public int b27062;
+  public int b27063;
+  public int b27064;
+  public int b27065;
+  public int b27066;
+  public int b27067;
+  public int b27068;
+  public int b27069;
+  public int b27070;
+  public int b27071;
+  public int b27072;
+  public int b27073;
+  public int b27074;
+  public int b27075;
+  public int b27076;
+  public int b27077;
+  public int b27078;
+  public int b27079;
+  public int b27080;
+  public int b27081;
+  public int b27082;
+  public int b27083;
+  public int b27084;
+  public int b27085;
+  public int b27086;
+  public int b27087;
+  public int b27088;
+  public int b27089;
+  public int b27090;
+  public int b27091;
+  public int b27092;
+  public int b27093;
+  public int b27094;
+  public int b27095;
+  public int b27096;
+  public int b27097;
+  public int b27098;
+  public int b27099;
+  public int b27100;
+  public int b27101;
+  public int b27102;
+  public int b27103;
+  public int b27104;
+  public int b27105;
+  public int b27106;
+  public int b27107;
+  public int b27108;
+  public int b27109;
+  public int b27110;
+  public int b27111;
+  public int b27112;
+  public int b27113;
+  public int b27114;
+  public int b27115;
+  public int b27116;
+  public int b27117;
+  public int b27118;
+  public int b27119;
+  public int b27120;
+  public int b27121;
+  public int b27122;
+  public int b27123;
+  public int b27124;
+  public int b27125;
+  public int b27126;
+  public int b27127;
+  public int b27128;
+  public int b27129;
+  public int b27130;
+  public int b27131;
+  public int b27132;
+  public int b27133;
+  public int b27134;
+  public int b27135;
+  public int b27136;
+  public int b27137;
+  public int b27138;
+  public int b27139;
+  public int b27140;
+  public int b27141;
+  public int b27142;
+  public int b27143;
+  public int b27144;
+  public int b27145;
+  public int b27146;
+  public int b27147;
+  public int b27148;
+  public int b27149;
+  public int b27150;
+  public int b27151;
+  public int b27152;
+  public int b27153;
+  public int b27154;
+  public int b27155;
+  public int b27156;
+  public int b27157;
+  public int b27158;
+  public int b27159;
+  public int b27160;
+  public int b27161;
+  public int b27162;
+  public int b27163;
+  public int b27164;
+  public int b27165;
+  public int b27166;
+  public int b27167;
+  public int b27168;
+  public int b27169;
+  public int b27170;
+  public int b27171;
+  public int b27172;
+  public int b27173;
+  public int b27174;
+  public int b27175;
+  public int b27176;
+  public int b27177;
+  public int b27178;
+  public int b27179;
+  public int b27180;
+  public int b27181;
+  public int b27182;
+  public int b27183;
+  public int b27184;
+  public int b27185;
+  public int b27186;
+  public int b27187;
+  public int b27188;
+  public int b27189;
+  public int b27190;
+  public int b27191;
+  public int b27192;
+  public int b27193;
+  public int b27194;
+  public int b27195;
+  public int b27196;
+  public int b27197;
+  public int b27198;
+  public int b27199;
+  public int b27200;
+  public int b27201;
+  public int b27202;
+  public int b27203;
+  public int b27204;
+  public int b27205;
+  public int b27206;
+  public int b27207;
+  public int b27208;
+  public int b27209;
+  public int b27210;
+  public int b27211;
+  public int b27212;
+  public int b27213;
+  public int b27214;
+  public int b27215;
+  public int b27216;
+  public int b27217;
+  public int b27218;
+  public int b27219;
+  public int b27220;
+  public int b27221;
+  public int b27222;
+  public int b27223;
+  public int b27224;
+  public int b27225;
+  public int b27226;
+  public int b27227;
+  public int b27228;
+  public int b27229;
+  public int b27230;
+  public int b27231;
+  public int b27232;
+  public int b27233;
+  public int b27234;
+  public int b27235;
+  public int b27236;
+  public int b27237;
+  public int b27238;
+  public int b27239;
+  public int b27240;
+  public int b27241;
+  public int b27242;
+  public int b27243;
+  public int b27244;
+  public int b27245;
+  public int b27246;
+  public int b27247;
+  public int b27248;
+  public int b27249;
+  public int b27250;
+  public int b27251;
+  public int b27252;
+  public int b27253;
+  public int b27254;
+  public int b27255;
+  public int b27256;
+  public int b27257;
+  public int b27258;
+  public int b27259;
+  public int b27260;
+  public int b27261;
+  public int b27262;
+  public int b27263;
+  public int b27264;
+  public int b27265;
+  public int b27266;
+  public int b27267;
+  public int b27268;
+  public int b27269;
+  public int b27270;
+  public int b27271;
+  public int b27272;
+  public int b27273;
+  public int b27274;
+  public int b27275;
+  public int b27276;
+  public int b27277;
+  public int b27278;
+  public int b27279;
+  public int b27280;
+  public int b27281;
+  public int b27282;
+  public int b27283;
+  public int b27284;
+  public int b27285;
+  public int b27286;
+  public int b27287;
+  public int b27288;
+  public int b27289;
+  public int b27290;
+  public int b27291;
+  public int b27292;
+  public int b27293;
+  public int b27294;
+  public int b27295;
+  public int b27296;
+  public int b27297;
+  public int b27298;
+  public int b27299;
+  public int b27300;
+  public int b27301;
+  public int b27302;
+  public int b27303;
+  public int b27304;
+  public int b27305;
+  public int b27306;
+  public int b27307;
+  public int b27308;
+  public int b27309;
+  public int b27310;
+  public int b27311;
+  public int b27312;
+  public int b27313;
+  public int b27314;
+  public int b27315;
+  public int b27316;
+  public int b27317;
+  public int b27318;
+  public int b27319;
+  public int b27320;
+  public int b27321;
+  public int b27322;
+  public int b27323;
+  public int b27324;
+  public int b27325;
+  public int b27326;
+  public int b27327;
+  public int b27328;
+  public int b27329;
+  public int b27330;
+  public int b27331;
+  public int b27332;
+  public int b27333;
+  public int b27334;
+  public int b27335;
+  public int b27336;
+  public int b27337;
+  public int b27338;
+  public int b27339;
+  public int b27340;
+  public int b27341;
+  public int b27342;
+  public int b27343;
+  public int b27344;
+  public int b27345;
+  public int b27346;
+  public int b27347;
+  public int b27348;
+  public int b27349;
+  public int b27350;
+  public int b27351;
+  public int b27352;
+  public int b27353;
+  public int b27354;
+  public int b27355;
+  public int b27356;
+  public int b27357;
+  public int b27358;
+  public int b27359;
+  public int b27360;
+  public int b27361;
+  public int b27362;
+  public int b27363;
+  public int b27364;
+  public int b27365;
+  public int b27366;
+  public int b27367;
+  public int b27368;
+  public int b27369;
+  public int b27370;
+  public int b27371;
+  public int b27372;
+  public int b27373;
+  public int b27374;
+  public int b27375;
+  public int b27376;
+  public int b27377;
+  public int b27378;
+  public int b27379;
+  public int b27380;
+  public int b27381;
+  public int b27382;
+  public int b27383;
+  public int b27384;
+  public int b27385;
+  public int b27386;
+  public int b27387;
+  public int b27388;
+  public int b27389;
+  public int b27390;
+  public int b27391;
+  public int b27392;
+  public int b27393;
+  public int b27394;
+  public int b27395;
+  public int b27396;
+  public int b27397;
+  public int b27398;
+  public int b27399;
+  public int b27400;
+  public int b27401;
+  public int b27402;
+  public int b27403;
+  public int b27404;
+  public int b27405;
+  public int b27406;
+  public int b27407;
+  public int b27408;
+  public int b27409;
+  public int b27410;
+  public int b27411;
+  public int b27412;
+  public int b27413;
+  public int b27414;
+  public int b27415;
+  public int b27416;
+  public int b27417;
+  public int b27418;
+  public int b27419;
+  public int b27420;
+  public int b27421;
+  public int b27422;
+  public int b27423;
+  public int b27424;
+  public int b27425;
+  public int b27426;
+  public int b27427;
+  public int b27428;
+  public int b27429;
+  public int b27430;
+  public int b27431;
+  public int b27432;
+  public int b27433;
+  public int b27434;
+  public int b27435;
+  public int b27436;
+  public int b27437;
+  public int b27438;
+  public int b27439;
+  public int b27440;
+  public int b27441;
+  public int b27442;
+  public int b27443;
+  public int b27444;
+  public int b27445;
+  public int b27446;
+  public int b27447;
+  public int b27448;
+  public int b27449;
+  public int b27450;
+  public int b27451;
+  public int b27452;
+  public int b27453;
+  public int b27454;
+  public int b27455;
+  public int b27456;
+  public int b27457;
+  public int b27458;
+  public int b27459;
+  public int b27460;
+  public int b27461;
+  public int b27462;
+  public int b27463;
+  public int b27464;
+  public int b27465;
+  public int b27466;
+  public int b27467;
+  public int b27468;
+  public int b27469;
+  public int b27470;
+  public int b27471;
+  public int b27472;
+  public int b27473;
+  public int b27474;
+  public int b27475;
+  public int b27476;
+  public int b27477;
+  public int b27478;
+  public int b27479;
+  public int b27480;
+  public int b27481;
+  public int b27482;
+  public int b27483;
+  public int b27484;
+  public int b27485;
+  public int b27486;
+  public int b27487;
+  public int b27488;
+  public int b27489;
+  public int b27490;
+  public int b27491;
+  public int b27492;
+  public int b27493;
+  public int b27494;
+  public int b27495;
+  public int b27496;
+  public int b27497;
+  public int b27498;
+  public int b27499;
+  public int b27500;
+  public int b27501;
+  public int b27502;
+  public int b27503;
+  public int b27504;
+  public int b27505;
+  public int b27506;
+  public int b27507;
+  public int b27508;
+  public int b27509;
+  public int b27510;
+  public int b27511;
+  public int b27512;
+  public int b27513;
+  public int b27514;
+  public int b27515;
+  public int b27516;
+  public int b27517;
+  public int b27518;
+  public int b27519;
+  public int b27520;
+  public int b27521;
+  public int b27522;
+  public int b27523;
+  public int b27524;
+  public int b27525;
+  public int b27526;
+  public int b27527;
+  public int b27528;
+  public int b27529;
+  public int b27530;
+  public int b27531;
+  public int b27532;
+  public int b27533;
+  public int b27534;
+  public int b27535;
+  public int b27536;
+  public int b27537;
+  public int b27538;
+  public int b27539;
+  public int b27540;
+  public int b27541;
+  public int b27542;
+  public int b27543;
+  public int b27544;
+  public int b27545;
+  public int b27546;
+  public int b27547;
+  public int b27548;
+  public int b27549;
+  public int b27550;
+  public int b27551;
+  public int b27552;
+  public int b27553;
+  public int b27554;
+  public int b27555;
+  public int b27556;
+  public int b27557;
+  public int b27558;
+  public int b27559;
+  public int b27560;
+  public int b27561;
+  public int b27562;
+  public int b27563;
+  public int b27564;
+  public int b27565;
+  public int b27566;
+  public int b27567;
+  public int b27568;
+  public int b27569;
+  public int b27570;
+  public int b27571;
+  public int b27572;
+  public int b27573;
+  public int b27574;
+  public int b27575;
+  public int b27576;
+  public int b27577;
+  public int b27578;
+  public int b27579;
+  public int b27580;
+  public int b27581;
+  public int b27582;
+  public int b27583;
+  public int b27584;
+  public int b27585;
+  public int b27586;
+  public int b27587;
+  public int b27588;
+  public int b27589;
+  public int b27590;
+  public int b27591;
+  public int b27592;
+  public int b27593;
+  public int b27594;
+  public int b27595;
+  public int b27596;
+  public int b27597;
+  public int b27598;
+  public int b27599;
+  public int b27600;
+  public int b27601;
+  public int b27602;
+  public int b27603;
+  public int b27604;
+  public int b27605;
+  public int b27606;
+  public int b27607;
+  public int b27608;
+  public int b27609;
+  public int b27610;
+  public int b27611;
+  public int b27612;
+  public int b27613;
+  public int b27614;
+  public int b27615;
+  public int b27616;
+  public int b27617;
+  public int b27618;
+  public int b27619;
+  public int b27620;
+  public int b27621;
+  public int b27622;
+  public int b27623;
+  public int b27624;
+  public int b27625;
+  public int b27626;
+  public int b27627;
+  public int b27628;
+  public int b27629;
+  public int b27630;
+  public int b27631;
+  public int b27632;
+  public int b27633;
+  public int b27634;
+  public int b27635;
+  public int b27636;
+  public int b27637;
+  public int b27638;
+  public int b27639;
+  public int b27640;
+  public int b27641;
+  public int b27642;
+  public int b27643;
+  public int b27644;
+  public int b27645;
+  public int b27646;
+  public int b27647;
+  public int b27648;
+  public int b27649;
+  public int b27650;
+  public int b27651;
+  public int b27652;
+  public int b27653;
+  public int b27654;
+  public int b27655;
+  public int b27656;
+  public int b27657;
+  public int b27658;
+  public int b27659;
+  public int b27660;
+  public int b27661;
+  public int b27662;
+  public int b27663;
+  public int b27664;
+  public int b27665;
+  public int b27666;
+  public int b27667;
+  public int b27668;
+  public int b27669;
+  public int b27670;
+  public int b27671;
+  public int b27672;
+  public int b27673;
+  public int b27674;
+  public int b27675;
+  public int b27676;
+  public int b27677;
+  public int b27678;
+  public int b27679;
+  public int b27680;
+  public int b27681;
+  public int b27682;
+  public int b27683;
+  public int b27684;
+  public int b27685;
+  public int b27686;
+  public int b27687;
+  public int b27688;
+  public int b27689;
+  public int b27690;
+  public int b27691;
+  public int b27692;
+  public int b27693;
+  public int b27694;
+  public int b27695;
+  public int b27696;
+  public int b27697;
+  public int b27698;
+  public int b27699;
+  public int b27700;
+  public int b27701;
+  public int b27702;
+  public int b27703;
+  public int b27704;
+  public int b27705;
+  public int b27706;
+  public int b27707;
+  public int b27708;
+  public int b27709;
+  public int b27710;
+  public int b27711;
+  public int b27712;
+  public int b27713;
+  public int b27714;
+  public int b27715;
+  public int b27716;
+  public int b27717;
+  public int b27718;
+  public int b27719;
+  public int b27720;
+  public int b27721;
+  public int b27722;
+  public int b27723;
+  public int b27724;
+  public int b27725;
+  public int b27726;
+  public int b27727;
+  public int b27728;
+  public int b27729;
+  public int b27730;
+  public int b27731;
+  public int b27732;
+  public int b27733;
+  public int b27734;
+  public int b27735;
+  public int b27736;
+  public int b27737;
+  public int b27738;
+  public int b27739;
+  public int b27740;
+  public int b27741;
+  public int b27742;
+  public int b27743;
+  public int b27744;
+  public int b27745;
+  public int b27746;
+  public int b27747;
+  public int b27748;
+  public int b27749;
+  public int b27750;
+  public int b27751;
+  public int b27752;
+  public int b27753;
+  public int b27754;
+  public int b27755;
+  public int b27756;
+  public int b27757;
+  public int b27758;
+  public int b27759;
+  public int b27760;
+  public int b27761;
+  public int b27762;
+  public int b27763;
+  public int b27764;
+  public int b27765;
+  public int b27766;
+  public int b27767;
+  public int b27768;
+  public int b27769;
+  public int b27770;
+  public int b27771;
+  public int b27772;
+  public int b27773;
+  public int b27774;
+  public int b27775;
+  public int b27776;
+  public int b27777;
+  public int b27778;
+  public int b27779;
+  public int b27780;
+  public int b27781;
+  public int b27782;
+  public int b27783;
+  public int b27784;
+  public int b27785;
+  public int b27786;
+  public int b27787;
+  public int b27788;
+  public int b27789;
+  public int b27790;
+  public int b27791;
+  public int b27792;
+  public int b27793;
+  public int b27794;
+  public int b27795;
+  public int b27796;
+  public int b27797;
+  public int b27798;
+  public int b27799;
+  public int b27800;
+  public int b27801;
+  public int b27802;
+  public int b27803;
+  public int b27804;
+  public int b27805;
+  public int b27806;
+  public int b27807;
+  public int b27808;
+  public int b27809;
+  public int b27810;
+  public int b27811;
+  public int b27812;
+  public int b27813;
+  public int b27814;
+  public int b27815;
+  public int b27816;
+  public int b27817;
+  public int b27818;
+  public int b27819;
+  public int b27820;
+  public int b27821;
+  public int b27822;
+  public int b27823;
+  public int b27824;
+  public int b27825;
+  public int b27826;
+  public int b27827;
+  public int b27828;
+  public int b27829;
+  public int b27830;
+  public int b27831;
+  public int b27832;
+  public int b27833;
+  public int b27834;
+  public int b27835;
+  public int b27836;
+  public int b27837;
+  public int b27838;
+  public int b27839;
+  public int b27840;
+  public int b27841;
+  public int b27842;
+  public int b27843;
+  public int b27844;
+  public int b27845;
+  public int b27846;
+  public int b27847;
+  public int b27848;
+  public int b27849;
+  public int b27850;
+  public int b27851;
+  public int b27852;
+  public int b27853;
+  public int b27854;
+  public int b27855;
+  public int b27856;
+  public int b27857;
+  public int b27858;
+  public int b27859;
+  public int b27860;
+  public int b27861;
+  public int b27862;
+  public int b27863;
+  public int b27864;
+  public int b27865;
+  public int b27866;
+  public int b27867;
+  public int b27868;
+  public int b27869;
+  public int b27870;
+  public int b27871;
+  public int b27872;
+  public int b27873;
+  public int b27874;
+  public int b27875;
+  public int b27876;
+  public int b27877;
+  public int b27878;
+  public int b27879;
+  public int b27880;
+  public int b27881;
+  public int b27882;
+  public int b27883;
+  public int b27884;
+  public int b27885;
+  public int b27886;
+  public int b27887;
+  public int b27888;
+  public int b27889;
+  public int b27890;
+  public int b27891;
+  public int b27892;
+  public int b27893;
+  public int b27894;
+  public int b27895;
+  public int b27896;
+  public int b27897;
+  public int b27898;
+  public int b27899;
+  public int b27900;
+  public int b27901;
+  public int b27902;
+  public int b27903;
+  public int b27904;
+  public int b27905;
+  public int b27906;
+  public int b27907;
+  public int b27908;
+  public int b27909;
+  public int b27910;
+  public int b27911;
+  public int b27912;
+  public int b27913;
+  public int b27914;
+  public int b27915;
+  public int b27916;
+  public int b27917;
+  public int b27918;
+  public int b27919;
+  public int b27920;
+  public int b27921;
+  public int b27922;
+  public int b27923;
+  public int b27924;
+  public int b27925;
+  public int b27926;
+  public int b27927;
+  public int b27928;
+  public int b27929;
+  public int b27930;
+  public int b27931;
+  public int b27932;
+  public int b27933;
+  public int b27934;
+  public int b27935;
+  public int b27936;
+  public int b27937;
+  public int b27938;
+  public int b27939;
+  public int b27940;
+  public int b27941;
+  public int b27942;
+  public int b27943;
+  public int b27944;
+  public int b27945;
+  public int b27946;
+  public int b27947;
+  public int b27948;
+  public int b27949;
+  public int b27950;
+  public int b27951;
+  public int b27952;
+  public int b27953;
+  public int b27954;
+  public int b27955;
+  public int b27956;
+  public int b27957;
+  public int b27958;
+  public int b27959;
+  public int b27960;
+  public int b27961;
+  public int b27962;
+  public int b27963;
+  public int b27964;
+  public int b27965;
+  public int b27966;
+  public int b27967;
+  public int b27968;
+  public int b27969;
+  public int b27970;
+  public int b27971;
+  public int b27972;
+  public int b27973;
+  public int b27974;
+  public int b27975;
+  public int b27976;
+  public int b27977;
+  public int b27978;
+  public int b27979;
+  public int b27980;
+  public int b27981;
+  public int b27982;
+  public int b27983;
+  public int b27984;
+  public int b27985;
+  public int b27986;
+  public int b27987;
+  public int b27988;
+  public int b27989;
+  public int b27990;
+  public int b27991;
+  public int b27992;
+  public int b27993;
+  public int b27994;
+  public int b27995;
+  public int b27996;
+  public int b27997;
+  public int b27998;
+  public int b27999;
+  public int b28000;
+  public int b28001;
+  public int b28002;
+  public int b28003;
+  public int b28004;
+  public int b28005;
+  public int b28006;
+  public int b28007;
+  public int b28008;
+  public int b28009;
+  public int b28010;
+  public int b28011;
+  public int b28012;
+  public int b28013;
+  public int b28014;
+  public int b28015;
+  public int b28016;
+  public int b28017;
+  public int b28018;
+  public int b28019;
+  public int b28020;
+  public int b28021;
+  public int b28022;
+  public int b28023;
+  public int b28024;
+  public int b28025;
+  public int b28026;
+  public int b28027;
+  public int b28028;
+  public int b28029;
+  public int b28030;
+  public int b28031;
+  public int b28032;
+  public int b28033;
+  public int b28034;
+  public int b28035;
+  public int b28036;
+  public int b28037;
+  public int b28038;
+  public int b28039;
+  public int b28040;
+  public int b28041;
+  public int b28042;
+  public int b28043;
+  public int b28044;
+  public int b28045;
+  public int b28046;
+  public int b28047;
+  public int b28048;
+  public int b28049;
+  public int b28050;
+  public int b28051;
+  public int b28052;
+  public int b28053;
+  public int b28054;
+  public int b28055;
+  public int b28056;
+  public int b28057;
+  public int b28058;
+  public int b28059;
+  public int b28060;
+  public int b28061;
+  public int b28062;
+  public int b28063;
+  public int b28064;
+  public int b28065;
+  public int b28066;
+  public int b28067;
+  public int b28068;
+  public int b28069;
+  public int b28070;
+  public int b28071;
+  public int b28072;
+  public int b28073;
+  public int b28074;
+  public int b28075;
+  public int b28076;
+  public int b28077;
+  public int b28078;
+  public int b28079;
+  public int b28080;
+  public int b28081;
+  public int b28082;
+  public int b28083;
+  public int b28084;
+  public int b28085;
+  public int b28086;
+  public int b28087;
+  public int b28088;
+  public int b28089;
+  public int b28090;
+  public int b28091;
+  public int b28092;
+  public int b28093;
+  public int b28094;
+  public int b28095;
+  public int b28096;
+  public int b28097;
+  public int b28098;
+  public int b28099;
+  public int b28100;
+  public int b28101;
+  public int b28102;
+  public int b28103;
+  public int b28104;
+  public int b28105;
+  public int b28106;
+  public int b28107;
+  public int b28108;
+  public int b28109;
+  public int b28110;
+  public int b28111;
+  public int b28112;
+  public int b28113;
+  public int b28114;
+  public int b28115;
+  public int b28116;
+  public int b28117;
+  public int b28118;
+  public int b28119;
+  public int b28120;
+  public int b28121;
+  public int b28122;
+  public int b28123;
+  public int b28124;
+  public int b28125;
+  public int b28126;
+  public int b28127;
+  public int b28128;
+  public int b28129;
+  public int b28130;
+  public int b28131;
+  public int b28132;
+  public int b28133;
+  public int b28134;
+  public int b28135;
+  public int b28136;
+  public int b28137;
+  public int b28138;
+  public int b28139;
+  public int b28140;
+  public int b28141;
+  public int b28142;
+  public int b28143;
+  public int b28144;
+  public int b28145;
+  public int b28146;
+  public int b28147;
+  public int b28148;
+  public int b28149;
+  public int b28150;
+  public int b28151;
+  public int b28152;
+  public int b28153;
+  public int b28154;
+  public int b28155;
+  public int b28156;
+  public int b28157;
+  public int b28158;
+  public int b28159;
+  public int b28160;
+  public int b28161;
+  public int b28162;
+  public int b28163;
+  public int b28164;
+  public int b28165;
+  public int b28166;
+  public int b28167;
+  public int b28168;
+  public int b28169;
+  public int b28170;
+  public int b28171;
+  public int b28172;
+  public int b28173;
+  public int b28174;
+  public int b28175;
+  public int b28176;
+  public int b28177;
+  public int b28178;
+  public int b28179;
+  public int b28180;
+  public int b28181;
+  public int b28182;
+  public int b28183;
+  public int b28184;
+  public int b28185;
+  public int b28186;
+  public int b28187;
+  public int b28188;
+  public int b28189;
+  public int b28190;
+  public int b28191;
+  public int b28192;
+  public int b28193;
+  public int b28194;
+  public int b28195;
+  public int b28196;
+  public int b28197;
+  public int b28198;
+  public int b28199;
+  public int b28200;
+  public int b28201;
+  public int b28202;
+  public int b28203;
+  public int b28204;
+  public int b28205;
+  public int b28206;
+  public int b28207;
+  public int b28208;
+  public int b28209;
+  public int b28210;
+  public int b28211;
+  public int b28212;
+  public int b28213;
+  public int b28214;
+  public int b28215;
+  public int b28216;
+  public int b28217;
+  public int b28218;
+  public int b28219;
+  public int b28220;
+  public int b28221;
+  public int b28222;
+  public int b28223;
+  public int b28224;
+  public int b28225;
+  public int b28226;
+  public int b28227;
+  public int b28228;
+  public int b28229;
+  public int b28230;
+  public int b28231;
+  public int b28232;
+  public int b28233;
+  public int b28234;
+  public int b28235;
+  public int b28236;
+  public int b28237;
+  public int b28238;
+  public int b28239;
+  public int b28240;
+  public int b28241;
+  public int b28242;
+  public int b28243;
+  public int b28244;
+  public int b28245;
+  public int b28246;
+  public int b28247;
+  public int b28248;
+  public int b28249;
+  public int b28250;
+  public int b28251;
+  public int b28252;
+  public int b28253;
+  public int b28254;
+  public int b28255;
+  public int b28256;
+  public int b28257;
+  public int b28258;
+  public int b28259;
+  public int b28260;
+  public int b28261;
+  public int b28262;
+  public int b28263;
+  public int b28264;
+  public int b28265;
+  public int b28266;
+  public int b28267;
+  public int b28268;
+  public int b28269;
+  public int b28270;
+  public int b28271;
+  public int b28272;
+  public int b28273;
+  public int b28274;
+  public int b28275;
+  public int b28276;
+  public int b28277;
+  public int b28278;
+  public int b28279;
+  public int b28280;
+  public int b28281;
+  public int b28282;
+  public int b28283;
+  public int b28284;
+  public int b28285;
+  public int b28286;
+  public int b28287;
+  public int b28288;
+  public int b28289;
+  public int b28290;
+  public int b28291;
+  public int b28292;
+  public int b28293;
+  public int b28294;
+  public int b28295;
+  public int b28296;
+  public int b28297;
+  public int b28298;
+  public int b28299;
+  public int b28300;
+  public int b28301;
+  public int b28302;
+  public int b28303;
+  public int b28304;
+  public int b28305;
+  public int b28306;
+  public int b28307;
+  public int b28308;
+  public int b28309;
+  public int b28310;
+  public int b28311;
+  public int b28312;
+  public int b28313;
+  public int b28314;
+  public int b28315;
+  public int b28316;
+  public int b28317;
+  public int b28318;
+  public int b28319;
+  public int b28320;
+  public int b28321;
+  public int b28322;
+  public int b28323;
+  public int b28324;
+  public int b28325;
+  public int b28326;
+  public int b28327;
+  public int b28328;
+  public int b28329;
+  public int b28330;
+  public int b28331;
+  public int b28332;
+  public int b28333;
+  public int b28334;
+  public int b28335;
+  public int b28336;
+  public int b28337;
+  public int b28338;
+  public int b28339;
+  public int b28340;
+  public int b28341;
+  public int b28342;
+  public int b28343;
+  public int b28344;
+  public int b28345;
+  public int b28346;
+  public int b28347;
+  public int b28348;
+  public int b28349;
+  public int b28350;
+  public int b28351;
+  public int b28352;
+  public int b28353;
+  public int b28354;
+  public int b28355;
+  public int b28356;
+  public int b28357;
+  public int b28358;
+  public int b28359;
+  public int b28360;
+  public int b28361;
+  public int b28362;
+  public int b28363;
+  public int b28364;
+  public int b28365;
+  public int b28366;
+  public int b28367;
+  public int b28368;
+  public int b28369;
+  public int b28370;
+  public int b28371;
+  public int b28372;
+  public int b28373;
+  public int b28374;
+  public int b28375;
+  public int b28376;
+  public int b28377;
+  public int b28378;
+  public int b28379;
+  public int b28380;
+  public int b28381;
+  public int b28382;
+  public int b28383;
+  public int b28384;
+  public int b28385;
+  public int b28386;
+  public int b28387;
+  public int b28388;
+  public int b28389;
+  public int b28390;
+  public int b28391;
+  public int b28392;
+  public int b28393;
+  public int b28394;
+  public int b28395;
+  public int b28396;
+  public int b28397;
+  public int b28398;
+  public int b28399;
+  public int b28400;
+  public int b28401;
+  public int b28402;
+  public int b28403;
+  public int b28404;
+  public int b28405;
+  public int b28406;
+  public int b28407;
+  public int b28408;
+  public int b28409;
+  public int b28410;
+  public int b28411;
+  public int b28412;
+  public int b28413;
+  public int b28414;
+  public int b28415;
+  public int b28416;
+  public int b28417;
+  public int b28418;
+  public int b28419;
+  public int b28420;
+  public int b28421;
+  public int b28422;
+  public int b28423;
+  public int b28424;
+  public int b28425;
+  public int b28426;
+  public int b28427;
+  public int b28428;
+  public int b28429;
+  public int b28430;
+  public int b28431;
+  public int b28432;
+  public int b28433;
+  public int b28434;
+  public int b28435;
+  public int b28436;
+  public int b28437;
+  public int b28438;
+  public int b28439;
+  public int b28440;
+  public int b28441;
+  public int b28442;
+  public int b28443;
+  public int b28444;
+  public int b28445;
+  public int b28446;
+  public int b28447;
+  public int b28448;
+  public int b28449;
+  public int b28450;
+  public int b28451;
+  public int b28452;
+  public int b28453;
+  public int b28454;
+  public int b28455;
+  public int b28456;
+  public int b28457;
+  public int b28458;
+  public int b28459;
+  public int b28460;
+  public int b28461;
+  public int b28462;
+  public int b28463;
+  public int b28464;
+  public int b28465;
+  public int b28466;
+  public int b28467;
+  public int b28468;
+  public int b28469;
+  public int b28470;
+  public int b28471;
+  public int b28472;
+  public int b28473;
+  public int b28474;
+  public int b28475;
+  public int b28476;
+  public int b28477;
+  public int b28478;
+  public int b28479;
+  public int b28480;
+  public int b28481;
+  public int b28482;
+  public int b28483;
+  public int b28484;
+  public int b28485;
+  public int b28486;
+  public int b28487;
+  public int b28488;
+  public int b28489;
+  public int b28490;
+  public int b28491;
+  public int b28492;
+  public int b28493;
+  public int b28494;
+  public int b28495;
+  public int b28496;
+  public int b28497;
+  public int b28498;
+  public int b28499;
+  public int b28500;
+  public int b28501;
+  public int b28502;
+  public int b28503;
+  public int b28504;
+  public int b28505;
+  public int b28506;
+  public int b28507;
+  public int b28508;
+  public int b28509;
+  public int b28510;
+  public int b28511;
+  public int b28512;
+  public int b28513;
+  public int b28514;
+  public int b28515;
+  public int b28516;
+  public int b28517;
+  public int b28518;
+  public int b28519;
+  public int b28520;
+  public int b28521;
+  public int b28522;
+  public int b28523;
+  public int b28524;
+  public int b28525;
+  public int b28526;
+  public int b28527;
+  public int b28528;
+  public int b28529;
+  public int b28530;
+  public int b28531;
+  public int b28532;
+  public int b28533;
+  public int b28534;
+  public int b28535;
+  public int b28536;
+  public int b28537;
+  public int b28538;
+  public int b28539;
+  public int b28540;
+  public int b28541;
+  public int b28542;
+  public int b28543;
+  public int b28544;
+  public int b28545;
+  public int b28546;
+  public int b28547;
+  public int b28548;
+  public int b28549;
+  public int b28550;
+  public int b28551;
+  public int b28552;
+  public int b28553;
+  public int b28554;
+  public int b28555;
+  public int b28556;
+  public int b28557;
+  public int b28558;
+  public int b28559;
+  public int b28560;
+  public int b28561;
+  public int b28562;
+  public int b28563;
+  public int b28564;
+  public int b28565;
+  public int b28566;
+  public int b28567;
+  public int b28568;
+  public int b28569;
+  public int b28570;
+  public int b28571;
+  public int b28572;
+  public int b28573;
+  public int b28574;
+  public int b28575;
+  public int b28576;
+  public int b28577;
+  public int b28578;
+  public int b28579;
+  public int b28580;
+  public int b28581;
+  public int b28582;
+  public int b28583;
+  public int b28584;
+  public int b28585;
+  public int b28586;
+  public int b28587;
+  public int b28588;
+  public int b28589;
+  public int b28590;
+  public int b28591;
+  public int b28592;
+  public int b28593;
+  public int b28594;
+  public int b28595;
+  public int b28596;
+  public int b28597;
+  public int b28598;
+  public int b28599;
+  public int b28600;
+  public int b28601;
+  public int b28602;
+  public int b28603;
+  public int b28604;
+  public int b28605;
+  public int b28606;
+  public int b28607;
+  public int b28608;
+  public int b28609;
+  public int b28610;
+  public int b28611;
+  public int b28612;
+  public int b28613;
+  public int b28614;
+  public int b28615;
+  public int b28616;
+  public int b28617;
+  public int b28618;
+  public int b28619;
+  public int b28620;
+  public int b28621;
+  public int b28622;
+  public int b28623;
+  public int b28624;
+  public int b28625;
+  public int b28626;
+  public int b28627;
+  public int b28628;
+  public int b28629;
+  public int b28630;
+  public int b28631;
+  public int b28632;
+  public int b28633;
+  public int b28634;
+  public int b28635;
+  public int b28636;
+  public int b28637;
+  public int b28638;
+  public int b28639;
+  public int b28640;
+  public int b28641;
+  public int b28642;
+  public int b28643;
+  public int b28644;
+  public int b28645;
+  public int b28646;
+  public int b28647;
+  public int b28648;
+  public int b28649;
+  public int b28650;
+  public int b28651;
+  public int b28652;
+  public int b28653;
+  public int b28654;
+  public int b28655;
+  public int b28656;
+  public int b28657;
+  public int b28658;
+  public int b28659;
+  public int b28660;
+  public int b28661;
+  public int b28662;
+  public int b28663;
+  public int b28664;
+  public int b28665;
+  public int b28666;
+  public int b28667;
+  public int b28668;
+  public int b28669;
+  public int b28670;
+  public int b28671;
+  public int b28672;
+  public int b28673;
+  public int b28674;
+  public int b28675;
+  public int b28676;
+  public int b28677;
+  public int b28678;
+  public int b28679;
+  public int b28680;
+  public int b28681;
+  public int b28682;
+  public int b28683;
+  public int b28684;
+  public int b28685;
+  public int b28686;
+  public int b28687;
+  public int b28688;
+  public int b28689;
+  public int b28690;
+  public int b28691;
+  public int b28692;
+  public int b28693;
+  public int b28694;
+  public int b28695;
+  public int b28696;
+  public int b28697;
+  public int b28698;
+  public int b28699;
+  public int b28700;
+  public int b28701;
+  public int b28702;
+  public int b28703;
+  public int b28704;
+  public int b28705;
+  public int b28706;
+  public int b28707;
+  public int b28708;
+  public int b28709;
+  public int b28710;
+  public int b28711;
+  public int b28712;
+  public int b28713;
+  public int b28714;
+  public int b28715;
+  public int b28716;
+  public int b28717;
+  public int b28718;
+  public int b28719;
+  public int b28720;
+  public int b28721;
+  public int b28722;
+  public int b28723;
+  public int b28724;
+  public int b28725;
+  public int b28726;
+  public int b28727;
+  public int b28728;
+  public int b28729;
+  public int b28730;
+  public int b28731;
+  public int b28732;
+  public int b28733;
+  public int b28734;
+  public int b28735;
+  public int b28736;
+  public int b28737;
+  public int b28738;
+  public int b28739;
+  public int b28740;
+  public int b28741;
+  public int b28742;
+  public int b28743;
+  public int b28744;
+  public int b28745;
+  public int b28746;
+  public int b28747;
+  public int b28748;
+  public int b28749;
+  public int b28750;
+  public int b28751;
+  public int b28752;
+  public int b28753;
+  public int b28754;
+  public int b28755;
+  public int b28756;
+  public int b28757;
+  public int b28758;
+  public int b28759;
+  public int b28760;
+  public int b28761;
+  public int b28762;
+  public int b28763;
+  public int b28764;
+  public int b28765;
+  public int b28766;
+  public int b28767;
+  public int b28768;
+  public int b28769;
+  public int b28770;
+  public int b28771;
+  public int b28772;
+  public int b28773;
+  public int b28774;
+  public int b28775;
+  public int b28776;
+  public int b28777;
+  public int b28778;
+  public int b28779;
+  public int b28780;
+  public int b28781;
+  public int b28782;
+  public int b28783;
+  public int b28784;
+  public int b28785;
+  public int b28786;
+  public int b28787;
+  public int b28788;
+  public int b28789;
+  public int b28790;
+  public int b28791;
+  public int b28792;
+  public int b28793;
+  public int b28794;
+  public int b28795;
+  public int b28796;
+  public int b28797;
+  public int b28798;
+  public int b28799;
+  public int b28800;
+  public int b28801;
+  public int b28802;
+  public int b28803;
+  public int b28804;
+  public int b28805;
+  public int b28806;
+  public int b28807;
+  public int b28808;
+  public int b28809;
+  public int b28810;
+  public int b28811;
+  public int b28812;
+  public int b28813;
+  public int b28814;
+  public int b28815;
+  public int b28816;
+  public int b28817;
+  public int b28818;
+  public int b28819;
+  public int b28820;
+  public int b28821;
+  public int b28822;
+  public int b28823;
+  public int b28824;
+  public int b28825;
+  public int b28826;
+  public int b28827;
+  public int b28828;
+  public int b28829;
+  public int b28830;
+  public int b28831;
+  public int b28832;
+  public int b28833;
+  public int b28834;
+  public int b28835;
+  public int b28836;
+  public int b28837;
+  public int b28838;
+  public int b28839;
+  public int b28840;
+  public int b28841;
+  public int b28842;
+  public int b28843;
+  public int b28844;
+  public int b28845;
+  public int b28846;
+  public int b28847;
+  public int b28848;
+  public int b28849;
+  public int b28850;
+  public int b28851;
+  public int b28852;
+  public int b28853;
+  public int b28854;
+  public int b28855;
+  public int b28856;
+  public int b28857;
+  public int b28858;
+  public int b28859;
+  public int b28860;
+  public int b28861;
+  public int b28862;
+  public int b28863;
+  public int b28864;
+  public int b28865;
+  public int b28866;
+  public int b28867;
+  public int b28868;
+  public int b28869;
+  public int b28870;
+  public int b28871;
+  public int b28872;
+  public int b28873;
+  public int b28874;
+  public int b28875;
+  public int b28876;
+  public int b28877;
+  public int b28878;
+  public int b28879;
+  public int b28880;
+  public int b28881;
+  public int b28882;
+  public int b28883;
+  public int b28884;
+  public int b28885;
+  public int b28886;
+  public int b28887;
+  public int b28888;
+  public int b28889;
+  public int b28890;
+  public int b28891;
+  public int b28892;
+  public int b28893;
+  public int b28894;
+  public int b28895;
+  public int b28896;
+  public int b28897;
+  public int b28898;
+  public int b28899;
+  public int b28900;
+  public int b28901;
+  public int b28902;
+  public int b28903;
+  public int b28904;
+  public int b28905;
+  public int b28906;
+  public int b28907;
+  public int b28908;
+  public int b28909;
+  public int b28910;
+  public int b28911;
+  public int b28912;
+  public int b28913;
+  public int b28914;
+  public int b28915;
+  public int b28916;
+  public int b28917;
+  public int b28918;
+  public int b28919;
+  public int b28920;
+  public int b28921;
+  public int b28922;
+  public int b28923;
+  public int b28924;
+  public int b28925;
+  public int b28926;
+  public int b28927;
+  public int b28928;
+  public int b28929;
+  public int b28930;
+  public int b28931;
+  public int b28932;
+  public int b28933;
+  public int b28934;
+  public int b28935;
+  public int b28936;
+  public int b28937;
+  public int b28938;
+  public int b28939;
+  public int b28940;
+  public int b28941;
+  public int b28942;
+  public int b28943;
+  public int b28944;
+  public int b28945;
+  public int b28946;
+  public int b28947;
+  public int b28948;
+  public int b28949;
+  public int b28950;
+  public int b28951;
+  public int b28952;
+  public int b28953;
+  public int b28954;
+  public int b28955;
+  public int b28956;
+  public int b28957;
+  public int b28958;
+  public int b28959;
+  public int b28960;
+  public int b28961;
+  public int b28962;
+  public int b28963;
+  public int b28964;
+  public int b28965;
+  public int b28966;
+  public int b28967;
+  public int b28968;
+  public int b28969;
+  public int b28970;
+  public int b28971;
+  public int b28972;
+  public int b28973;
+  public int b28974;
+  public int b28975;
+  public int b28976;
+  public int b28977;
+  public int b28978;
+  public int b28979;
+  public int b28980;
+  public int b28981;
+  public int b28982;
+  public int b28983;
+  public int b28984;
+  public int b28985;
+  public int b28986;
+  public int b28987;
+  public int b28988;
+  public int b28989;
+  public int b28990;
+  public int b28991;
+  public int b28992;
+  public int b28993;
+  public int b28994;
+  public int b28995;
+  public int b28996;
+  public int b28997;
+  public int b28998;
+  public int b28999;
+  public int b29000;
+  public int b29001;
+  public int b29002;
+  public int b29003;
+  public int b29004;
+  public int b29005;
+  public int b29006;
+  public int b29007;
+  public int b29008;
+  public int b29009;
+  public int b29010;
+  public int b29011;
+  public int b29012;
+  public int b29013;
+  public int b29014;
+  public int b29015;
+  public int b29016;
+  public int b29017;
+  public int b29018;
+  public int b29019;
+  public int b29020;
+  public int b29021;
+  public int b29022;
+  public int b29023;
+  public int b29024;
+  public int b29025;
+  public int b29026;
+  public int b29027;
+  public int b29028;
+  public int b29029;
+  public int b29030;
+  public int b29031;
+  public int b29032;
+  public int b29033;
+  public int b29034;
+  public int b29035;
+  public int b29036;
+  public int b29037;
+  public int b29038;
+  public int b29039;
+  public int b29040;
+  public int b29041;
+  public int b29042;
+  public int b29043;
+  public int b29044;
+  public int b29045;
+  public int b29046;
+  public int b29047;
+  public int b29048;
+  public int b29049;
+  public int b29050;
+  public int b29051;
+  public int b29052;
+  public int b29053;
+  public int b29054;
+  public int b29055;
+  public int b29056;
+  public int b29057;
+  public int b29058;
+  public int b29059;
+  public int b29060;
+  public int b29061;
+  public int b29062;
+  public int b29063;
+  public int b29064;
+  public int b29065;
+  public int b29066;
+  public int b29067;
+  public int b29068;
+  public int b29069;
+  public int b29070;
+  public int b29071;
+  public int b29072;
+  public int b29073;
+  public int b29074;
+  public int b29075;
+  public int b29076;
+  public int b29077;
+  public int b29078;
+  public int b29079;
+  public int b29080;
+  public int b29081;
+  public int b29082;
+  public int b29083;
+  public int b29084;
+  public int b29085;
+  public int b29086;
+  public int b29087;
+  public int b29088;
+  public int b29089;
+  public int b29090;
+  public int b29091;
+  public int b29092;
+  public int b29093;
+  public int b29094;
+  public int b29095;
+  public int b29096;
+  public int b29097;
+  public int b29098;
+  public int b29099;
+  public int b29100;
+  public int b29101;
+  public int b29102;
+  public int b29103;
+  public int b29104;
+  public int b29105;
+  public int b29106;
+  public int b29107;
+  public int b29108;
+  public int b29109;
+  public int b29110;
+  public int b29111;
+  public int b29112;
+  public int b29113;
+  public int b29114;
+  public int b29115;
+  public int b29116;
+  public int b29117;
+  public int b29118;
+  public int b29119;
+  public int b29120;
+  public int b29121;
+  public int b29122;
+  public int b29123;
+  public int b29124;
+  public int b29125;
+  public int b29126;
+  public int b29127;
+  public int b29128;
+  public int b29129;
+  public int b29130;
+  public int b29131;
+  public int b29132;
+  public int b29133;
+  public int b29134;
+  public int b29135;
+  public int b29136;
+  public int b29137;
+  public int b29138;
+  public int b29139;
+  public int b29140;
+  public int b29141;
+  public int b29142;
+  public int b29143;
+  public int b29144;
+  public int b29145;
+  public int b29146;
+  public int b29147;
+  public int b29148;
+  public int b29149;
+  public int b29150;
+  public int b29151;
+  public int b29152;
+  public int b29153;
+  public int b29154;
+  public int b29155;
+  public int b29156;
+  public int b29157;
+  public int b29158;
+  public int b29159;
+  public int b29160;
+  public int b29161;
+  public int b29162;
+  public int b29163;
+  public int b29164;
+  public int b29165;
+  public int b29166;
+  public int b29167;
+  public int b29168;
+  public int b29169;
+  public int b29170;
+  public int b29171;
+  public int b29172;
+  public int b29173;
+  public int b29174;
+  public int b29175;
+  public int b29176;
+  public int b29177;
+  public int b29178;
+  public int b29179;
+  public int b29180;
+  public int b29181;
+  public int b29182;
+  public int b29183;
+  public int b29184;
+  public int b29185;
+  public int b29186;
+  public int b29187;
+  public int b29188;
+  public int b29189;
+  public int b29190;
+  public int b29191;
+  public int b29192;
+  public int b29193;
+  public int b29194;
+  public int b29195;
+  public int b29196;
+  public int b29197;
+  public int b29198;
+  public int b29199;
+  public int b29200;
+  public int b29201;
+  public int b29202;
+  public int b29203;
+  public int b29204;
+  public int b29205;
+  public int b29206;
+  public int b29207;
+  public int b29208;
+  public int b29209;
+  public int b29210;
+  public int b29211;
+  public int b29212;
+  public int b29213;
+  public int b29214;
+  public int b29215;
+  public int b29216;
+  public int b29217;
+  public int b29218;
+  public int b29219;
+  public int b29220;
+  public int b29221;
+  public int b29222;
+  public int b29223;
+  public int b29224;
+  public int b29225;
+  public int b29226;
+  public int b29227;
+  public int b29228;
+  public int b29229;
+  public int b29230;
+  public int b29231;
+  public int b29232;
+  public int b29233;
+  public int b29234;
+  public int b29235;
+  public int b29236;
+  public int b29237;
+  public int b29238;
+  public int b29239;
+  public int b29240;
+  public int b29241;
+  public int b29242;
+  public int b29243;
+  public int b29244;
+  public int b29245;
+  public int b29246;
+  public int b29247;
+  public int b29248;
+  public int b29249;
+  public int b29250;
+  public int b29251;
+  public int b29252;
+  public int b29253;
+  public int b29254;
+  public int b29255;
+  public int b29256;
+  public int b29257;
+  public int b29258;
+  public int b29259;
+  public int b29260;
+  public int b29261;
+  public int b29262;
+  public int b29263;
+  public int b29264;
+  public int b29265;
+  public int b29266;
+  public int b29267;
+  public int b29268;
+  public int b29269;
+  public int b29270;
+  public int b29271;
+  public int b29272;
+  public int b29273;
+  public int b29274;
+  public int b29275;
+  public int b29276;
+  public int b29277;
+  public int b29278;
+  public int b29279;
+  public int b29280;
+  public int b29281;
+  public int b29282;
+  public int b29283;
+  public int b29284;
+  public int b29285;
+  public int b29286;
+  public int b29287;
+  public int b29288;
+  public int b29289;
+  public int b29290;
+  public int b29291;
+  public int b29292;
+  public int b29293;
+  public int b29294;
+  public int b29295;
+  public int b29296;
+  public int b29297;
+  public int b29298;
+  public int b29299;
+  public int b29300;
+  public int b29301;
+  public int b29302;
+  public int b29303;
+  public int b29304;
+  public int b29305;
+  public int b29306;
+  public int b29307;
+  public int b29308;
+  public int b29309;
+  public int b29310;
+  public int b29311;
+  public int b29312;
+  public int b29313;
+  public int b29314;
+  public int b29315;
+  public int b29316;
+  public int b29317;
+  public int b29318;
+  public int b29319;
+  public int b29320;
+  public int b29321;
+  public int b29322;
+  public int b29323;
+  public int b29324;
+  public int b29325;
+  public int b29326;
+  public int b29327;
+  public int b29328;
+  public int b29329;
+  public int b29330;
+  public int b29331;
+  public int b29332;
+  public int b29333;
+  public int b29334;
+  public int b29335;
+  public int b29336;
+  public int b29337;
+  public int b29338;
+  public int b29339;
+  public int b29340;
+  public int b29341;
+  public int b29342;
+  public int b29343;
+  public int b29344;
+  public int b29345;
+  public int b29346;
+  public int b29347;
+  public int b29348;
+  public int b29349;
+  public int b29350;
+  public int b29351;
+  public int b29352;
+  public int b29353;
+  public int b29354;
+  public int b29355;
+  public int b29356;
+  public int b29357;
+  public int b29358;
+  public int b29359;
+  public int b29360;
+  public int b29361;
+  public int b29362;
+  public int b29363;
+  public int b29364;
+  public int b29365;
+  public int b29366;
+  public int b29367;
+  public int b29368;
+  public int b29369;
+  public int b29370;
+  public int b29371;
+  public int b29372;
+  public int b29373;
+  public int b29374;
+  public int b29375;
+  public int b29376;
+  public int b29377;
+  public int b29378;
+  public int b29379;
+  public int b29380;
+  public int b29381;
+  public int b29382;
+  public int b29383;
+  public int b29384;
+  public int b29385;
+  public int b29386;
+  public int b29387;
+  public int b29388;
+  public int b29389;
+  public int b29390;
+  public int b29391;
+  public int b29392;
+  public int b29393;
+  public int b29394;
+  public int b29395;
+  public int b29396;
+  public int b29397;
+  public int b29398;
+  public int b29399;
+  public int b29400;
+  public int b29401;
+  public int b29402;
+  public int b29403;
+  public int b29404;
+  public int b29405;
+  public int b29406;
+  public int b29407;
+  public int b29408;
+  public int b29409;
+  public int b29410;
+  public int b29411;
+  public int b29412;
+  public int b29413;
+  public int b29414;
+  public int b29415;
+  public int b29416;
+  public int b29417;
+  public int b29418;
+  public int b29419;
+  public int b29420;
+  public int b29421;
+  public int b29422;
+  public int b29423;
+  public int b29424;
+  public int b29425;
+  public int b29426;
+  public int b29427;
+  public int b29428;
+  public int b29429;
+  public int b29430;
+  public int b29431;
+  public int b29432;
+  public int b29433;
+  public int b29434;
+  public int b29435;
+  public int b29436;
+  public int b29437;
+  public int b29438;
+  public int b29439;
+  public int b29440;
+  public int b29441;
+  public int b29442;
+  public int b29443;
+  public int b29444;
+  public int b29445;
+  public int b29446;
+  public int b29447;
+  public int b29448;
+  public int b29449;
+  public int b29450;
+  public int b29451;
+  public int b29452;
+  public int b29453;
+  public int b29454;
+  public int b29455;
+  public int b29456;
+  public int b29457;
+  public int b29458;
+  public int b29459;
+  public int b29460;
+  public int b29461;
+  public int b29462;
+  public int b29463;
+  public int b29464;
+  public int b29465;
+  public int b29466;
+  public int b29467;
+  public int b29468;
+  public int b29469;
+  public int b29470;
+  public int b29471;
+  public int b29472;
+  public int b29473;
+  public int b29474;
+  public int b29475;
+  public int b29476;
+  public int b29477;
+  public int b29478;
+  public int b29479;
+  public int b29480;
+  public int b29481;
+  public int b29482;
+  public int b29483;
+  public int b29484;
+  public int b29485;
+  public int b29486;
+  public int b29487;
+  public int b29488;
+  public int b29489;
+  public int b29490;
+  public int b29491;
+  public int b29492;
+  public int b29493;
+  public int b29494;
+  public int b29495;
+  public int b29496;
+  public int b29497;
+  public int b29498;
+  public int b29499;
+  public int b29500;
+  public int b29501;
+  public int b29502;
+  public int b29503;
+  public int b29504;
+  public int b29505;
+  public int b29506;
+  public int b29507;
+  public int b29508;
+  public int b29509;
+  public int b29510;
+  public int b29511;
+  public int b29512;
+  public int b29513;
+  public int b29514;
+  public int b29515;
+  public int b29516;
+  public int b29517;
+  public int b29518;
+  public int b29519;
+  public int b29520;
+  public int b29521;
+  public int b29522;
+  public int b29523;
+  public int b29524;
+  public int b29525;
+  public int b29526;
+  public int b29527;
+  public int b29528;
+  public int b29529;
+  public int b29530;
+  public int b29531;
+  public int b29532;
+  public int b29533;
+  public int b29534;
+  public int b29535;
+  public int b29536;
+  public int b29537;
+  public int b29538;
+  public int b29539;
+  public int b29540;
+  public int b29541;
+  public int b29542;
+  public int b29543;
+  public int b29544;
+  public int b29545;
+  public int b29546;
+  public int b29547;
+  public int b29548;
+  public int b29549;
+  public int b29550;
+  public int b29551;
+  public int b29552;
+  public int b29553;
+  public int b29554;
+  public int b29555;
+  public int b29556;
+  public int b29557;
+  public int b29558;
+  public int b29559;
+  public int b29560;
+  public int b29561;
+  public int b29562;
+  public int b29563;
+  public int b29564;
+  public int b29565;
+  public int b29566;
+  public int b29567;
+  public int b29568;
+  public int b29569;
+  public int b29570;
+  public int b29571;
+  public int b29572;
+  public int b29573;
+  public int b29574;
+  public int b29575;
+  public int b29576;
+  public int b29577;
+  public int b29578;
+  public int b29579;
+  public int b29580;
+  public int b29581;
+  public int b29582;
+  public int b29583;
+  public int b29584;
+  public int b29585;
+  public int b29586;
+  public int b29587;
+  public int b29588;
+  public int b29589;
+  public int b29590;
+  public int b29591;
+  public int b29592;
+  public int b29593;
+  public int b29594;
+  public int b29595;
+  public int b29596;
+  public int b29597;
+  public int b29598;
+  public int b29599;
+  public int b29600;
+  public int b29601;
+  public int b29602;
+  public int b29603;
+  public int b29604;
+  public int b29605;
+  public int b29606;
+  public int b29607;
+  public int b29608;
+  public int b29609;
+  public int b29610;
+  public int b29611;
+  public int b29612;
+  public int b29613;
+  public int b29614;
+  public int b29615;
+  public int b29616;
+  public int b29617;
+  public int b29618;
+  public int b29619;
+  public int b29620;
+  public int b29621;
+  public int b29622;
+  public int b29623;
+  public int b29624;
+  public int b29625;
+  public int b29626;
+  public int b29627;
+  public int b29628;
+  public int b29629;
+  public int b29630;
+  public int b29631;
+  public int b29632;
+  public int b29633;
+  public int b29634;
+  public int b29635;
+  public int b29636;
+  public int b29637;
+  public int b29638;
+  public int b29639;
+  public int b29640;
+  public int b29641;
+  public int b29642;
+  public int b29643;
+  public int b29644;
+  public int b29645;
+  public int b29646;
+  public int b29647;
+  public int b29648;
+  public int b29649;
+  public int b29650;
+  public int b29651;
+  public int b29652;
+  public int b29653;
+  public int b29654;
+  public int b29655;
+  public int b29656;
+  public int b29657;
+  public int b29658;
+  public int b29659;
+  public int b29660;
+  public int b29661;
+  public int b29662;
+  public int b29663;
+  public int b29664;
+  public int b29665;
+  public int b29666;
+  public int b29667;
+  public int b29668;
+  public int b29669;
+  public int b29670;
+  public int b29671;
+  public int b29672;
+  public int b29673;
+  public int b29674;
+  public int b29675;
+  public int b29676;
+  public int b29677;
+  public int b29678;
+  public int b29679;
+  public int b29680;
+  public int b29681;
+  public int b29682;
+  public int b29683;
+  public int b29684;
+  public int b29685;
+  public int b29686;
+  public int b29687;
+  public int b29688;
+  public int b29689;
+  public int b29690;
+  public int b29691;
+  public int b29692;
+  public int b29693;
+  public int b29694;
+  public int b29695;
+  public int b29696;
+  public int b29697;
+  public int b29698;
+  public int b29699;
+  public int b29700;
+  public int b29701;
+  public int b29702;
+  public int b29703;
+  public int b29704;
+  public int b29705;
+  public int b29706;
+  public int b29707;
+  public int b29708;
+  public int b29709;
+  public int b29710;
+  public int b29711;
+  public int b29712;
+  public int b29713;
+  public int b29714;
+  public int b29715;
+  public int b29716;
+  public int b29717;
+  public int b29718;
+  public int b29719;
+  public int b29720;
+  public int b29721;
+  public int b29722;
+  public int b29723;
+  public int b29724;
+  public int b29725;
+  public int b29726;
+  public int b29727;
+  public int b29728;
+  public int b29729;
+  public int b29730;
+  public int b29731;
+  public int b29732;
+  public int b29733;
+  public int b29734;
+  public int b29735;
+  public int b29736;
+  public int b29737;
+  public int b29738;
+  public int b29739;
+  public int b29740;
+  public int b29741;
+  public int b29742;
+  public int b29743;
+  public int b29744;
+  public int b29745;
+  public int b29746;
+  public int b29747;
+  public int b29748;
+  public int b29749;
+  public int b29750;
+  public int b29751;
+  public int b29752;
+  public int b29753;
+  public int b29754;
+  public int b29755;
+  public int b29756;
+  public int b29757;
+  public int b29758;
+  public int b29759;
+  public int b29760;
+  public int b29761;
+  public int b29762;
+  public int b29763;
+  public int b29764;
+  public int b29765;
+  public int b29766;
+  public int b29767;
+  public int b29768;
+  public int b29769;
+  public int b29770;
+  public int b29771;
+  public int b29772;
+  public int b29773;
+  public int b29774;
+  public int b29775;
+  public int b29776;
+  public int b29777;
+  public int b29778;
+  public int b29779;
+  public int b29780;
+  public int b29781;
+  public int b29782;
+  public int b29783;
+  public int b29784;
+  public int b29785;
+  public int b29786;
+  public int b29787;
+  public int b29788;
+  public int b29789;
+  public int b29790;
+  public int b29791;
+  public int b29792;
+  public int b29793;
+  public int b29794;
+  public int b29795;
+  public int b29796;
+  public int b29797;
+  public int b29798;
+  public int b29799;
+  public int b29800;
+  public int b29801;
+  public int b29802;
+  public int b29803;
+  public int b29804;
+  public int b29805;
+  public int b29806;
+  public int b29807;
+  public int b29808;
+  public int b29809;
+  public int b29810;
+  public int b29811;
+  public int b29812;
+  public int b29813;
+  public int b29814;
+  public int b29815;
+  public int b29816;
+  public int b29817;
+  public int b29818;
+  public int b29819;
+  public int b29820;
+  public int b29821;
+  public int b29822;
+  public int b29823;
+  public int b29824;
+  public int b29825;
+  public int b29826;
+  public int b29827;
+  public int b29828;
+  public int b29829;
+  public int b29830;
+  public int b29831;
+  public int b29832;
+  public int b29833;
+  public int b29834;
+  public int b29835;
+  public int b29836;
+  public int b29837;
+  public int b29838;
+  public int b29839;
+  public int b29840;
+  public int b29841;
+  public int b29842;
+  public int b29843;
+  public int b29844;
+  public int b29845;
+  public int b29846;
+  public int b29847;
+  public int b29848;
+  public int b29849;
+  public int b29850;
+  public int b29851;
+  public int b29852;
+  public int b29853;
+  public int b29854;
+  public int b29855;
+  public int b29856;
+  public int b29857;
+  public int b29858;
+  public int b29859;
+  public int b29860;
+  public int b29861;
+  public int b29862;
+  public int b29863;
+  public int b29864;
+  public int b29865;
+  public int b29866;
+  public int b29867;
+  public int b29868;
+  public int b29869;
+  public int b29870;
+  public int b29871;
+  public int b29872;
+  public int b29873;
+  public int b29874;
+  public int b29875;
+  public int b29876;
+  public int b29877;
+  public int b29878;
+  public int b29879;
+  public int b29880;
+  public int b29881;
+  public int b29882;
+  public int b29883;
+  public int b29884;
+  public int b29885;
+  public int b29886;
+  public int b29887;
+  public int b29888;
+  public int b29889;
+  public int b29890;
+  public int b29891;
+  public int b29892;
+  public int b29893;
+  public int b29894;
+  public int b29895;
+  public int b29896;
+  public int b29897;
+  public int b29898;
+  public int b29899;
+  public int b29900;
+  public int b29901;
+  public int b29902;
+  public int b29903;
+  public int b29904;
+  public int b29905;
+  public int b29906;
+  public int b29907;
+  public int b29908;
+  public int b29909;
+  public int b29910;
+  public int b29911;
+  public int b29912;
+  public int b29913;
+  public int b29914;
+  public int b29915;
+  public int b29916;
+  public int b29917;
+  public int b29918;
+  public int b29919;
+  public int b29920;
+  public int b29921;
+  public int b29922;
+  public int b29923;
+  public int b29924;
+  public int b29925;
+  public int b29926;
+  public int b29927;
+  public int b29928;
+  public int b29929;
+  public int b29930;
+  public int b29931;
+  public int b29932;
+  public int b29933;
+  public int b29934;
+  public int b29935;
+  public int b29936;
+  public int b29937;
+  public int b29938;
+  public int b29939;
+  public int b29940;
+  public int b29941;
+  public int b29942;
+  public int b29943;
+  public int b29944;
+  public int b29945;
+  public int b29946;
+  public int b29947;
+  public int b29948;
+  public int b29949;
+  public int b29950;
+  public int b29951;
+  public int b29952;
+  public int b29953;
+  public int b29954;
+  public int b29955;
+  public int b29956;
+  public int b29957;
+  public int b29958;
+  public int b29959;
+  public int b29960;
+  public int b29961;
+  public int b29962;
+  public int b29963;
+  public int b29964;
+  public int b29965;
+  public int b29966;
+  public int b29967;
+  public int b29968;
+  public int b29969;
+  public int b29970;
+  public int b29971;
+  public int b29972;
+  public int b29973;
+  public int b29974;
+  public int b29975;
+  public int b29976;
+  public int b29977;
+  public int b29978;
+  public int b29979;
+  public int b29980;
+  public int b29981;
+  public int b29982;
+  public int b29983;
+  public int b29984;
+  public int b29985;
+  public int b29986;
+  public int b29987;
+  public int b29988;
+  public int b29989;
+  public int b29990;
+  public int b29991;
+  public int b29992;
+  public int b29993;
+  public int b29994;
+  public int b29995;
+  public int b29996;
+  public int b29997;
+  public int b29998;
+  public int b29999;
+  public int b30000;
+  public int b30001;
+  public int b30002;
+  public int b30003;
+  public int b30004;
+  public int b30005;
+  public int b30006;
+  public int b30007;
+  public int b30008;
+  public int b30009;
+  public int b30010;
+  public int b30011;
+  public int b30012;
+  public int b30013;
+  public int b30014;
+  public int b30015;
+  public int b30016;
+  public int b30017;
+  public int b30018;
+  public int b30019;
+  public int b30020;
+  public int b30021;
+  public int b30022;
+  public int b30023;
+  public int b30024;
+  public int b30025;
+  public int b30026;
+  public int b30027;
+  public int b30028;
+  public int b30029;
+  public int b30030;
+  public int b30031;
+  public int b30032;
+  public int b30033;
+  public int b30034;
+  public int b30035;
+  public int b30036;
+  public int b30037;
+  public int b30038;
+  public int b30039;
+  public int b30040;
+  public int b30041;
+  public int b30042;
+  public int b30043;
+  public int b30044;
+  public int b30045;
+  public int b30046;
+  public int b30047;
+  public int b30048;
+  public int b30049;
+  public int b30050;
+  public int b30051;
+  public int b30052;
+  public int b30053;
+  public int b30054;
+  public int b30055;
+  public int b30056;
+  public int b30057;
+  public int b30058;
+  public int b30059;
+  public int b30060;
+  public int b30061;
+  public int b30062;
+  public int b30063;
+  public int b30064;
+  public int b30065;
+  public int b30066;
+  public int b30067;
+  public int b30068;
+  public int b30069;
+  public int b30070;
+  public int b30071;
+  public int b30072;
+  public int b30073;
+  public int b30074;
+  public int b30075;
+  public int b30076;
+  public int b30077;
+  public int b30078;
+  public int b30079;
+  public int b30080;
+  public int b30081;
+  public int b30082;
+  public int b30083;
+  public int b30084;
+  public int b30085;
+  public int b30086;
+  public int b30087;
+  public int b30088;
+  public int b30089;
+  public int b30090;
+  public int b30091;
+  public int b30092;
+  public int b30093;
+  public int b30094;
+  public int b30095;
+  public int b30096;
+  public int b30097;
+  public int b30098;
+  public int b30099;
+  public int b30100;
+  public int b30101;
+  public int b30102;
+  public int b30103;
+  public int b30104;
+  public int b30105;
+  public int b30106;
+  public int b30107;
+  public int b30108;
+  public int b30109;
+  public int b30110;
+  public int b30111;
+  public int b30112;
+  public int b30113;
+  public int b30114;
+  public int b30115;
+  public int b30116;
+  public int b30117;
+  public int b30118;
+  public int b30119;
+  public int b30120;
+  public int b30121;
+  public int b30122;
+  public int b30123;
+  public int b30124;
+  public int b30125;
+  public int b30126;
+  public int b30127;
+  public int b30128;
+  public int b30129;
+  public int b30130;
+  public int b30131;
+  public int b30132;
+  public int b30133;
+  public int b30134;
+  public int b30135;
+  public int b30136;
+  public int b30137;
+  public int b30138;
+  public int b30139;
+  public int b30140;
+  public int b30141;
+  public int b30142;
+  public int b30143;
+  public int b30144;
+  public int b30145;
+  public int b30146;
+  public int b30147;
+  public int b30148;
+  public int b30149;
+  public int b30150;
+  public int b30151;
+  public int b30152;
+  public int b30153;
+  public int b30154;
+  public int b30155;
+  public int b30156;
+  public int b30157;
+  public int b30158;
+  public int b30159;
+  public int b30160;
+  public int b30161;
+  public int b30162;
+  public int b30163;
+  public int b30164;
+  public int b30165;
+  public int b30166;
+  public int b30167;
+  public int b30168;
+  public int b30169;
+  public int b30170;
+  public int b30171;
+  public int b30172;
+  public int b30173;
+  public int b30174;
+  public int b30175;
+  public int b30176;
+  public int b30177;
+  public int b30178;
+  public int b30179;
+  public int b30180;
+  public int b30181;
+  public int b30182;
+  public int b30183;
+  public int b30184;
+  public int b30185;
+  public int b30186;
+  public int b30187;
+  public int b30188;
+  public int b30189;
+  public int b30190;
+  public int b30191;
+  public int b30192;
+  public int b30193;
+  public int b30194;
+  public int b30195;
+  public int b30196;
+  public int b30197;
+  public int b30198;
+  public int b30199;
+  public int b30200;
+  public int b30201;
+  public int b30202;
+  public int b30203;
+  public int b30204;
+  public int b30205;
+  public int b30206;
+  public int b30207;
+  public int b30208;
+  public int b30209;
+  public int b30210;
+  public int b30211;
+  public int b30212;
+  public int b30213;
+  public int b30214;
+  public int b30215;
+  public int b30216;
+  public int b30217;
+  public int b30218;
+  public int b30219;
+  public int b30220;
+  public int b30221;
+  public int b30222;
+  public int b30223;
+  public int b30224;
+  public int b30225;
+  public int b30226;
+  public int b30227;
+  public int b30228;
+  public int b30229;
+  public int b30230;
+  public int b30231;
+  public int b30232;
+  public int b30233;
+  public int b30234;
+  public int b30235;
+  public int b30236;
+  public int b30237;
+  public int b30238;
+  public int b30239;
+  public int b30240;
+  public int b30241;
+  public int b30242;
+  public int b30243;
+  public int b30244;
+  public int b30245;
+  public int b30246;
+  public int b30247;
+  public int b30248;
+  public int b30249;
+  public int b30250;
+  public int b30251;
+  public int b30252;
+  public int b30253;
+  public int b30254;
+  public int b30255;
+  public int b30256;
+  public int b30257;
+  public int b30258;
+  public int b30259;
+  public int b30260;
+  public int b30261;
+  public int b30262;
+  public int b30263;
+  public int b30264;
+  public int b30265;
+  public int b30266;
+  public int b30267;
+  public int b30268;
+  public int b30269;
+  public int b30270;
+  public int b30271;
+  public int b30272;
+  public int b30273;
+  public int b30274;
+  public int b30275;
+  public int b30276;
+  public int b30277;
+  public int b30278;
+  public int b30279;
+  public int b30280;
+  public int b30281;
+  public int b30282;
+  public int b30283;
+  public int b30284;
+  public int b30285;
+  public int b30286;
+  public int b30287;
+  public int b30288;
+  public int b30289;
+  public int b30290;
+  public int b30291;
+  public int b30292;
+  public int b30293;
+  public int b30294;
+  public int b30295;
+  public int b30296;
+  public int b30297;
+  public int b30298;
+  public int b30299;
+  public int b30300;
+  public int b30301;
+  public int b30302;
+  public int b30303;
+  public int b30304;
+  public int b30305;
+  public int b30306;
+  public int b30307;
+  public int b30308;
+  public int b30309;
+  public int b30310;
+  public int b30311;
+  public int b30312;
+  public int b30313;
+  public int b30314;
+  public int b30315;
+  public int b30316;
+  public int b30317;
+  public int b30318;
+  public int b30319;
+  public int b30320;
+  public int b30321;
+  public int b30322;
+  public int b30323;
+  public int b30324;
+  public int b30325;
+  public int b30326;
+  public int b30327;
+  public int b30328;
+  public int b30329;
+  public int b30330;
+  public int b30331;
+  public int b30332;
+  public int b30333;
+  public int b30334;
+  public int b30335;
+  public int b30336;
+  public int b30337;
+  public int b30338;
+  public int b30339;
+  public int b30340;
+  public int b30341;
+  public int b30342;
+  public int b30343;
+  public int b30344;
+  public int b30345;
+  public int b30346;
+  public int b30347;
+  public int b30348;
+  public int b30349;
+  public int b30350;
+  public int b30351;
+  public int b30352;
+  public int b30353;
+  public int b30354;
+  public int b30355;
+  public int b30356;
+  public int b30357;
+  public int b30358;
+  public int b30359;
+  public int b30360;
+  public int b30361;
+  public int b30362;
+  public int b30363;
+  public int b30364;
+  public int b30365;
+  public int b30366;
+  public int b30367;
+  public int b30368;
+  public int b30369;
+  public int b30370;
+  public int b30371;
+  public int b30372;
+  public int b30373;
+  public int b30374;
+  public int b30375;
+  public int b30376;
+  public int b30377;
+  public int b30378;
+  public int b30379;
+  public int b30380;
+  public int b30381;
+  public int b30382;
+  public int b30383;
+  public int b30384;
+  public int b30385;
+  public int b30386;
+  public int b30387;
+  public int b30388;
+  public int b30389;
+  public int b30390;
+  public int b30391;
+  public int b30392;
+  public int b30393;
+  public int b30394;
+  public int b30395;
+  public int b30396;
+  public int b30397;
+  public int b30398;
+  public int b30399;
+  public int b30400;
+  public int b30401;
+  public int b30402;
+  public int b30403;
+  public int b30404;
+  public int b30405;
+  public int b30406;
+  public int b30407;
+  public int b30408;
+  public int b30409;
+  public int b30410;
+  public int b30411;
+  public int b30412;
+  public int b30413;
+  public int b30414;
+  public int b30415;
+  public int b30416;
+  public int b30417;
+  public int b30418;
+  public int b30419;
+  public int b30420;
+  public int b30421;
+  public int b30422;
+  public int b30423;
+  public int b30424;
+  public int b30425;
+  public int b30426;
+  public int b30427;
+  public int b30428;
+  public int b30429;
+  public int b30430;
+  public int b30431;
+  public int b30432;
+  public int b30433;
+  public int b30434;
+  public int b30435;
+  public int b30436;
+  public int b30437;
+  public int b30438;
+  public int b30439;
+  public int b30440;
+  public int b30441;
+  public int b30442;
+  public int b30443;
+  public int b30444;
+  public int b30445;
+  public int b30446;
+  public int b30447;
+  public int b30448;
+  public int b30449;
+  public int b30450;
+  public int b30451;
+  public int b30452;
+  public int b30453;
+  public int b30454;
+  public int b30455;
+  public int b30456;
+  public int b30457;
+  public int b30458;
+  public int b30459;
+  public int b30460;
+  public int b30461;
+  public int b30462;
+  public int b30463;
+  public int b30464;
+  public int b30465;
+  public int b30466;
+  public int b30467;
+  public int b30468;
+  public int b30469;
+  public int b30470;
+  public int b30471;
+  public int b30472;
+  public int b30473;
+  public int b30474;
+  public int b30475;
+  public int b30476;
+  public int b30477;
+  public int b30478;
+  public int b30479;
+  public int b30480;
+  public int b30481;
+  public int b30482;
+  public int b30483;
+  public int b30484;
+  public int b30485;
+  public int b30486;
+  public int b30487;
+  public int b30488;
+  public int b30489;
+  public int b30490;
+  public int b30491;
+  public int b30492;
+  public int b30493;
+  public int b30494;
+  public int b30495;
+  public int b30496;
+  public int b30497;
+  public int b30498;
+  public int b30499;
+  public int b30500;
+  public int b30501;
+  public int b30502;
+  public int b30503;
+  public int b30504;
+  public int b30505;
+  public int b30506;
+  public int b30507;
+  public int b30508;
+  public int b30509;
+  public int b30510;
+  public int b30511;
+  public int b30512;
+  public int b30513;
+  public int b30514;
+  public int b30515;
+  public int b30516;
+  public int b30517;
+  public int b30518;
+  public int b30519;
+  public int b30520;
+  public int b30521;
+  public int b30522;
+  public int b30523;
+  public int b30524;
+  public int b30525;
+  public int b30526;
+  public int b30527;
+  public int b30528;
+  public int b30529;
+  public int b30530;
+  public int b30531;
+  public int b30532;
+  public int b30533;
+  public int b30534;
+  public int b30535;
+  public int b30536;
+  public int b30537;
+  public int b30538;
+  public int b30539;
+  public int b30540;
+  public int b30541;
+  public int b30542;
+  public int b30543;
+  public int b30544;
+  public int b30545;
+  public int b30546;
+  public int b30547;
+  public int b30548;
+  public int b30549;
+  public int b30550;
+  public int b30551;
+  public int b30552;
+  public int b30553;
+  public int b30554;
+  public int b30555;
+  public int b30556;
+  public int b30557;
+  public int b30558;
+  public int b30559;
+  public int b30560;
+  public int b30561;
+  public int b30562;
+  public int b30563;
+  public int b30564;
+  public int b30565;
+  public int b30566;
+  public int b30567;
+  public int b30568;
+  public int b30569;
+  public int b30570;
+  public int b30571;
+  public int b30572;
+  public int b30573;
+  public int b30574;
+  public int b30575;
+  public int b30576;
+  public int b30577;
+  public int b30578;
+  public int b30579;
+  public int b30580;
+  public int b30581;
+  public int b30582;
+  public int b30583;
+  public int b30584;
+  public int b30585;
+  public int b30586;
+  public int b30587;
+  public int b30588;
+  public int b30589;
+  public int b30590;
+  public int b30591;
+  public int b30592;
+  public int b30593;
+  public int b30594;
+  public int b30595;
+  public int b30596;
+  public int b30597;
+  public int b30598;
+  public int b30599;
+  public int b30600;
+  public int b30601;
+  public int b30602;
+  public int b30603;
+  public int b30604;
+  public int b30605;
+  public int b30606;
+  public int b30607;
+  public int b30608;
+  public int b30609;
+  public int b30610;
+  public int b30611;
+  public int b30612;
+  public int b30613;
+  public int b30614;
+  public int b30615;
+  public int b30616;
+  public int b30617;
+  public int b30618;
+  public int b30619;
+  public int b30620;
+  public int b30621;
+  public int b30622;
+  public int b30623;
+  public int b30624;
+  public int b30625;
+  public int b30626;
+  public int b30627;
+  public int b30628;
+  public int b30629;
+  public int b30630;
+  public int b30631;
+  public int b30632;
+  public int b30633;
+  public int b30634;
+  public int b30635;
+  public int b30636;
+  public int b30637;
+  public int b30638;
+  public int b30639;
+  public int b30640;
+  public int b30641;
+  public int b30642;
+  public int b30643;
+  public int b30644;
+  public int b30645;
+  public int b30646;
+  public int b30647;
+  public int b30648;
+  public int b30649;
+  public int b30650;
+  public int b30651;
+  public int b30652;
+  public int b30653;
+  public int b30654;
+  public int b30655;
+  public int b30656;
+  public int b30657;
+  public int b30658;
+  public int b30659;
+  public int b30660;
+  public int b30661;
+  public int b30662;
+  public int b30663;
+  public int b30664;
+  public int b30665;
+  public int b30666;
+  public int b30667;
+  public int b30668;
+  public int b30669;
+  public int b30670;
+  public int b30671;
+  public int b30672;
+  public int b30673;
+  public int b30674;
+  public int b30675;
+  public int b30676;
+  public int b30677;
+  public int b30678;
+  public int b30679;
+  public int b30680;
+  public int b30681;
+  public int b30682;
+  public int b30683;
+  public int b30684;
+  public int b30685;
+  public int b30686;
+  public int b30687;
+  public int b30688;
+  public int b30689;
+  public int b30690;
+  public int b30691;
+  public int b30692;
+  public int b30693;
+  public int b30694;
+  public int b30695;
+  public int b30696;
+  public int b30697;
+  public int b30698;
+  public int b30699;
+  public int b30700;
+  public int b30701;
+  public int b30702;
+  public int b30703;
+  public int b30704;
+  public int b30705;
+  public int b30706;
+  public int b30707;
+  public int b30708;
+  public int b30709;
+  public int b30710;
+  public int b30711;
+  public int b30712;
+  public int b30713;
+  public int b30714;
+  public int b30715;
+  public int b30716;
+  public int b30717;
+  public int b30718;
+  public int b30719;
+  public int b30720;
+  public int b30721;
+  public int b30722;
+  public int b30723;
+  public int b30724;
+  public int b30725;
+  public int b30726;
+  public int b30727;
+  public int b30728;
+  public int b30729;
+  public int b30730;
+  public int b30731;
+  public int b30732;
+  public int b30733;
+  public int b30734;
+  public int b30735;
+  public int b30736;
+  public int b30737;
+  public int b30738;
+  public int b30739;
+  public int b30740;
+  public int b30741;
+  public int b30742;
+  public int b30743;
+  public int b30744;
+  public int b30745;
+  public int b30746;
+  public int b30747;
+  public int b30748;
+  public int b30749;
+  public int b30750;
+  public int b30751;
+  public int b30752;
+  public int b30753;
+  public int b30754;
+  public int b30755;
+  public int b30756;
+  public int b30757;
+  public int b30758;
+  public int b30759;
+  public int b30760;
+  public int b30761;
+  public int b30762;
+  public int b30763;
+  public int b30764;
+  public int b30765;
+  public int b30766;
+  public int b30767;
+  public int b30768;
+  public int b30769;
+  public int b30770;
+  public int b30771;
+  public int b30772;
+  public int b30773;
+  public int b30774;
+  public int b30775;
+  public int b30776;
+  public int b30777;
+  public int b30778;
+  public int b30779;
+  public int b30780;
+  public int b30781;
+  public int b30782;
+  public int b30783;
+  public int b30784;
+  public int b30785;
+  public int b30786;
+  public int b30787;
+  public int b30788;
+  public int b30789;
+  public int b30790;
+  public int b30791;
+  public int b30792;
+  public int b30793;
+  public int b30794;
+  public int b30795;
+  public int b30796;
+  public int b30797;
+  public int b30798;
+  public int b30799;
+  public int b30800;
+  public int b30801;
+  public int b30802;
+  public int b30803;
+  public int b30804;
+  public int b30805;
+  public int b30806;
+  public int b30807;
+  public int b30808;
+  public int b30809;
+  public int b30810;
+  public int b30811;
+  public int b30812;
+  public int b30813;
+  public int b30814;
+  public int b30815;
+  public int b30816;
+  public int b30817;
+  public int b30818;
+  public int b30819;
+  public int b30820;
+  public int b30821;
+  public int b30822;
+  public int b30823;
+  public int b30824;
+  public int b30825;
+  public int b30826;
+  public int b30827;
+  public int b30828;
+  public int b30829;
+  public int b30830;
+  public int b30831;
+  public int b30832;
+  public int b30833;
+  public int b30834;
+  public int b30835;
+  public int b30836;
+  public int b30837;
+  public int b30838;
+  public int b30839;
+  public int b30840;
+  public int b30841;
+  public int b30842;
+  public int b30843;
+  public int b30844;
+  public int b30845;
+  public int b30846;
+  public int b30847;
+  public int b30848;
+  public int b30849;
+  public int b30850;
+  public int b30851;
+  public int b30852;
+  public int b30853;
+  public int b30854;
+  public int b30855;
+  public int b30856;
+  public int b30857;
+  public int b30858;
+  public int b30859;
+  public int b30860;
+  public int b30861;
+  public int b30862;
+  public int b30863;
+  public int b30864;
+  public int b30865;
+  public int b30866;
+  public int b30867;
+  public int b30868;
+  public int b30869;
+  public int b30870;
+  public int b30871;
+  public int b30872;
+  public int b30873;
+  public int b30874;
+  public int b30875;
+  public int b30876;
+  public int b30877;
+  public int b30878;
+  public int b30879;
+  public int b30880;
+  public int b30881;
+  public int b30882;
+  public int b30883;
+  public int b30884;
+  public int b30885;
+  public int b30886;
+  public int b30887;
+  public int b30888;
+  public int b30889;
+  public int b30890;
+  public int b30891;
+  public int b30892;
+  public int b30893;
+  public int b30894;
+  public int b30895;
+  public int b30896;
+  public int b30897;
+  public int b30898;
+  public int b30899;
+  public int b30900;
+  public int b30901;
+  public int b30902;
+  public int b30903;
+  public int b30904;
+  public int b30905;
+  public int b30906;
+  public int b30907;
+  public int b30908;
+  public int b30909;
+  public int b30910;
+  public int b30911;
+  public int b30912;
+  public int b30913;
+  public int b30914;
+  public int b30915;
+  public int b30916;
+  public int b30917;
+  public int b30918;
+  public int b30919;
+  public int b30920;
+  public int b30921;
+  public int b30922;
+  public int b30923;
+  public int b30924;
+  public int b30925;
+  public int b30926;
+  public int b30927;
+  public int b30928;
+  public int b30929;
+  public int b30930;
+  public int b30931;
+  public int b30932;
+  public int b30933;
+  public int b30934;
+  public int b30935;
+  public int b30936;
+  public int b30937;
+  public int b30938;
+  public int b30939;
+  public int b30940;
+  public int b30941;
+  public int b30942;
+  public int b30943;
+  public int b30944;
+  public int b30945;
+  public int b30946;
+  public int b30947;
+  public int b30948;
+  public int b30949;
+  public int b30950;
+  public int b30951;
+  public int b30952;
+  public int b30953;
+  public int b30954;
+  public int b30955;
+  public int b30956;
+  public int b30957;
+  public int b30958;
+  public int b30959;
+  public int b30960;
+  public int b30961;
+  public int b30962;
+  public int b30963;
+  public int b30964;
+  public int b30965;
+  public int b30966;
+  public int b30967;
+  public int b30968;
+  public int b30969;
+  public int b30970;
+  public int b30971;
+  public int b30972;
+  public int b30973;
+  public int b30974;
+  public int b30975;
+  public int b30976;
+  public int b30977;
+  public int b30978;
+  public int b30979;
+  public int b30980;
+  public int b30981;
+  public int b30982;
+  public int b30983;
+  public int b30984;
+  public int b30985;
+  public int b30986;
+  public int b30987;
+  public int b30988;
+  public int b30989;
+  public int b30990;
+  public int b30991;
+  public int b30992;
+  public int b30993;
+  public int b30994;
+  public int b30995;
+  public int b30996;
+  public int b30997;
+  public int b30998;
+  public int b30999;
+  public int b31000;
+  public int b31001;
+  public int b31002;
+  public int b31003;
+  public int b31004;
+  public int b31005;
+  public int b31006;
+  public int b31007;
+  public int b31008;
+  public int b31009;
+  public int b31010;
+  public int b31011;
+  public int b31012;
+  public int b31013;
+  public int b31014;
+  public int b31015;
+  public int b31016;
+  public int b31017;
+  public int b31018;
+  public int b31019;
+  public int b31020;
+  public int b31021;
+  public int b31022;
+  public int b31023;
+  public int b31024;
+  public int b31025;
+  public int b31026;
+  public int b31027;
+  public int b31028;
+  public int b31029;
+  public int b31030;
+  public int b31031;
+  public int b31032;
+  public int b31033;
+  public int b31034;
+  public int b31035;
+  public int b31036;
+  public int b31037;
+  public int b31038;
+  public int b31039;
+  public int b31040;
+  public int b31041;
+  public int b31042;
+  public int b31043;
+  public int b31044;
+  public int b31045;
+  public int b31046;
+  public int b31047;
+  public int b31048;
+  public int b31049;
+  public int b31050;
+  public int b31051;
+  public int b31052;
+  public int b31053;
+  public int b31054;
+  public int b31055;
+  public int b31056;
+  public int b31057;
+  public int b31058;
+  public int b31059;
+  public int b31060;
+  public int b31061;
+  public int b31062;
+  public int b31063;
+  public int b31064;
+  public int b31065;
+  public int b31066;
+  public int b31067;
+  public int b31068;
+  public int b31069;
+  public int b31070;
+  public int b31071;
+  public int b31072;
+  public int b31073;
+  public int b31074;
+  public int b31075;
+  public int b31076;
+  public int b31077;
+  public int b31078;
+  public int b31079;
+  public int b31080;
+  public int b31081;
+  public int b31082;
+  public int b31083;
+  public int b31084;
+  public int b31085;
+  public int b31086;
+  public int b31087;
+  public int b31088;
+  public int b31089;
+  public int b31090;
+  public int b31091;
+  public int b31092;
+  public int b31093;
+  public int b31094;
+  public int b31095;
+  public int b31096;
+  public int b31097;
+  public int b31098;
+  public int b31099;
+  public int b31100;
+  public int b31101;
+  public int b31102;
+  public int b31103;
+  public int b31104;
+  public int b31105;
+  public int b31106;
+  public int b31107;
+  public int b31108;
+  public int b31109;
+  public int b31110;
+  public int b31111;
+  public int b31112;
+  public int b31113;
+  public int b31114;
+  public int b31115;
+  public int b31116;
+  public int b31117;
+  public int b31118;
+  public int b31119;
+  public int b31120;
+  public int b31121;
+  public int b31122;
+  public int b31123;
+  public int b31124;
+  public int b31125;
+  public int b31126;
+  public int b31127;
+  public int b31128;
+  public int b31129;
+  public int b31130;
+  public int b31131;
+  public int b31132;
+  public int b31133;
+  public int b31134;
+  public int b31135;
+  public int b31136;
+  public int b31137;
+  public int b31138;
+  public int b31139;
+  public int b31140;
+  public int b31141;
+  public int b31142;
+  public int b31143;
+  public int b31144;
+  public int b31145;
+  public int b31146;
+  public int b31147;
+  public int b31148;
+  public int b31149;
+  public int b31150;
+  public int b31151;
+  public int b31152;
+  public int b31153;
+  public int b31154;
+  public int b31155;
+  public int b31156;
+  public int b31157;
+  public int b31158;
+  public int b31159;
+  public int b31160;
+  public int b31161;
+  public int b31162;
+  public int b31163;
+  public int b31164;
+  public int b31165;
+  public int b31166;
+  public int b31167;
+  public int b31168;
+  public int b31169;
+  public int b31170;
+  public int b31171;
+  public int b31172;
+  public int b31173;
+  public int b31174;
+  public int b31175;
+  public int b31176;
+  public int b31177;
+  public int b31178;
+  public int b31179;
+  public int b31180;
+  public int b31181;
+  public int b31182;
+  public int b31183;
+  public int b31184;
+  public int b31185;
+  public int b31186;
+  public int b31187;
+  public int b31188;
+  public int b31189;
+  public int b31190;
+  public int b31191;
+  public int b31192;
+  public int b31193;
+  public int b31194;
+  public int b31195;
+  public int b31196;
+  public int b31197;
+  public int b31198;
+  public int b31199;
+  public int b31200;
+  public int b31201;
+  public int b31202;
+  public int b31203;
+  public int b31204;
+  public int b31205;
+  public int b31206;
+  public int b31207;
+  public int b31208;
+  public int b31209;
+  public int b31210;
+  public int b31211;
+  public int b31212;
+  public int b31213;
+  public int b31214;
+  public int b31215;
+  public int b31216;
+  public int b31217;
+  public int b31218;
+  public int b31219;
+  public int b31220;
+  public int b31221;
+  public int b31222;
+  public int b31223;
+  public int b31224;
+  public int b31225;
+  public int b31226;
+  public int b31227;
+  public int b31228;
+  public int b31229;
+  public int b31230;
+  public int b31231;
+  public int b31232;
+  public int b31233;
+  public int b31234;
+  public int b31235;
+  public int b31236;
+  public int b31237;
+  public int b31238;
+  public int b31239;
+  public int b31240;
+  public int b31241;
+  public int b31242;
+  public int b31243;
+  public int b31244;
+  public int b31245;
+  public int b31246;
+  public int b31247;
+  public int b31248;
+  public int b31249;
+  public int b31250;
+  public int b31251;
+  public int b31252;
+  public int b31253;
+  public int b31254;
+  public int b31255;
+  public int b31256;
+  public int b31257;
+  public int b31258;
+  public int b31259;
+  public int b31260;
+  public int b31261;
+  public int b31262;
+  public int b31263;
+  public int b31264;
+  public int b31265;
+  public int b31266;
+  public int b31267;
+  public int b31268;
+  public int b31269;
+  public int b31270;
+  public int b31271;
+  public int b31272;
+  public int b31273;
+  public int b31274;
+  public int b31275;
+  public int b31276;
+  public int b31277;
+  public int b31278;
+  public int b31279;
+  public int b31280;
+  public int b31281;
+  public int b31282;
+  public int b31283;
+  public int b31284;
+  public int b31285;
+  public int b31286;
+  public int b31287;
+  public int b31288;
+  public int b31289;
+  public int b31290;
+  public int b31291;
+  public int b31292;
+  public int b31293;
+  public int b31294;
+  public int b31295;
+  public int b31296;
+  public int b31297;
+  public int b31298;
+  public int b31299;
+  public int b31300;
+  public int b31301;
+  public int b31302;
+  public int b31303;
+  public int b31304;
+  public int b31305;
+  public int b31306;
+  public int b31307;
+  public int b31308;
+  public int b31309;
+  public int b31310;
+  public int b31311;
+  public int b31312;
+  public int b31313;
+  public int b31314;
+  public int b31315;
+  public int b31316;
+  public int b31317;
+  public int b31318;
+  public int b31319;
+  public int b31320;
+  public int b31321;
+  public int b31322;
+  public int b31323;
+  public int b31324;
+  public int b31325;
+  public int b31326;
+  public int b31327;
+  public int b31328;
+  public int b31329;
+  public int b31330;
+  public int b31331;
+  public int b31332;
+  public int b31333;
+  public int b31334;
+  public int b31335;
+  public int b31336;
+  public int b31337;
+  public int b31338;
+  public int b31339;
+  public int b31340;
+  public int b31341;
+  public int b31342;
+  public int b31343;
+  public int b31344;
+  public int b31345;
+  public int b31346;
+  public int b31347;
+  public int b31348;
+  public int b31349;
+  public int b31350;
+  public int b31351;
+  public int b31352;
+  public int b31353;
+  public int b31354;
+  public int b31355;
+  public int b31356;
+  public int b31357;
+  public int b31358;
+  public int b31359;
+  public int b31360;
+  public int b31361;
+  public int b31362;
+  public int b31363;
+  public int b31364;
+  public int b31365;
+  public int b31366;
+  public int b31367;
+  public int b31368;
+  public int b31369;
+  public int b31370;
+  public int b31371;
+  public int b31372;
+  public int b31373;
+  public int b31374;
+  public int b31375;
+  public int b31376;
+  public int b31377;
+  public int b31378;
+  public int b31379;
+  public int b31380;
+  public int b31381;
+  public int b31382;
+  public int b31383;
+  public int b31384;
+  public int b31385;
+  public int b31386;
+  public int b31387;
+  public int b31388;
+  public int b31389;
+  public int b31390;
+  public int b31391;
+  public int b31392;
+  public int b31393;
+  public int b31394;
+  public int b31395;
+  public int b31396;
+  public int b31397;
+  public int b31398;
+  public int b31399;
+  public int b31400;
+  public int b31401;
+  public int b31402;
+  public int b31403;
+  public int b31404;
+  public int b31405;
+  public int b31406;
+  public int b31407;
+  public int b31408;
+  public int b31409;
+  public int b31410;
+  public int b31411;
+  public int b31412;
+  public int b31413;
+  public int b31414;
+  public int b31415;
+  public int b31416;
+  public int b31417;
+  public int b31418;
+  public int b31419;
+  public int b31420;
+  public int b31421;
+  public int b31422;
+  public int b31423;
+  public int b31424;
+  public int b31425;
+  public int b31426;
+  public int b31427;
+  public int b31428;
+  public int b31429;
+  public int b31430;
+  public int b31431;
+  public int b31432;
+  public int b31433;
+  public int b31434;
+  public int b31435;
+  public int b31436;
+  public int b31437;
+  public int b31438;
+  public int b31439;
+  public int b31440;
+  public int b31441;
+  public int b31442;
+  public int b31443;
+  public int b31444;
+  public int b31445;
+  public int b31446;
+  public int b31447;
+  public int b31448;
+  public int b31449;
+  public int b31450;
+  public int b31451;
+  public int b31452;
+  public int b31453;
+  public int b31454;
+  public int b31455;
+  public int b31456;
+  public int b31457;
+  public int b31458;
+  public int b31459;
+  public int b31460;
+  public int b31461;
+  public int b31462;
+  public int b31463;
+  public int b31464;
+  public int b31465;
+  public int b31466;
+  public int b31467;
+  public int b31468;
+  public int b31469;
+  public int b31470;
+  public int b31471;
+  public int b31472;
+  public int b31473;
+  public int b31474;
+  public int b31475;
+  public int b31476;
+  public int b31477;
+  public int b31478;
+  public int b31479;
+  public int b31480;
+  public int b31481;
+  public int b31482;
+  public int b31483;
+  public int b31484;
+  public int b31485;
+  public int b31486;
+  public int b31487;
+  public int b31488;
+  public int b31489;
+  public int b31490;
+  public int b31491;
+  public int b31492;
+  public int b31493;
+  public int b31494;
+  public int b31495;
+  public int b31496;
+  public int b31497;
+  public int b31498;
+  public int b31499;
+  public int b31500;
+  public int b31501;
+  public int b31502;
+  public int b31503;
+  public int b31504;
+  public int b31505;
+  public int b31506;
+  public int b31507;
+  public int b31508;
+  public int b31509;
+  public int b31510;
+  public int b31511;
+  public int b31512;
+  public int b31513;
+  public int b31514;
+  public int b31515;
+  public int b31516;
+  public int b31517;
+  public int b31518;
+  public int b31519;
+  public int b31520;
+  public int b31521;
+  public int b31522;
+  public int b31523;
+  public int b31524;
+  public int b31525;
+  public int b31526;
+  public int b31527;
+  public int b31528;
+  public int b31529;
+  public int b31530;
+  public int b31531;
+  public int b31532;
+  public int b31533;
+  public int b31534;
+  public int b31535;
+  public int b31536;
+  public int b31537;
+  public int b31538;
+  public int b31539;
+  public int b31540;
+  public int b31541;
+  public int b31542;
+  public int b31543;
+  public int b31544;
+  public int b31545;
+  public int b31546;
+  public int b31547;
+  public int b31548;
+  public int b31549;
+  public int b31550;
+  public int b31551;
+  public int b31552;
+  public int b31553;
+  public int b31554;
+  public int b31555;
+  public int b31556;
+  public int b31557;
+  public int b31558;
+  public int b31559;
+  public int b31560;
+  public int b31561;
+  public int b31562;
+  public int b31563;
+  public int b31564;
+  public int b31565;
+  public int b31566;
+  public int b31567;
+  public int b31568;
+  public int b31569;
+  public int b31570;
+  public int b31571;
+  public int b31572;
+  public int b31573;
+  public int b31574;
+  public int b31575;
+  public int b31576;
+  public int b31577;
+  public int b31578;
+  public int b31579;
+  public int b31580;
+  public int b31581;
+  public int b31582;
+  public int b31583;
+  public int b31584;
+  public int b31585;
+  public int b31586;
+  public int b31587;
+  public int b31588;
+  public int b31589;
+  public int b31590;
+  public int b31591;
+  public int b31592;
+  public int b31593;
+  public int b31594;
+  public int b31595;
+  public int b31596;
+  public int b31597;
+  public int b31598;
+  public int b31599;
+  public int b31600;
+  public int b31601;
+  public int b31602;
+  public int b31603;
+  public int b31604;
+  public int b31605;
+  public int b31606;
+  public int b31607;
+  public int b31608;
+  public int b31609;
+  public int b31610;
+  public int b31611;
+  public int b31612;
+  public int b31613;
+  public int b31614;
+  public int b31615;
+  public int b31616;
+  public int b31617;
+  public int b31618;
+  public int b31619;
+  public int b31620;
+  public int b31621;
+  public int b31622;
+  public int b31623;
+  public int b31624;
+  public int b31625;
+  public int b31626;
+  public int b31627;
+  public int b31628;
+  public int b31629;
+  public int b31630;
+  public int b31631;
+  public int b31632;
+  public int b31633;
+  public int b31634;
+  public int b31635;
+  public int b31636;
+  public int b31637;
+  public int b31638;
+  public int b31639;
+  public int b31640;
+  public int b31641;
+  public int b31642;
+  public int b31643;
+  public int b31644;
+  public int b31645;
+  public int b31646;
+  public int b31647;
+  public int b31648;
+  public int b31649;
+  public int b31650;
+  public int b31651;
+  public int b31652;
+  public int b31653;
+  public int b31654;
+  public int b31655;
+  public int b31656;
+  public int b31657;
+  public int b31658;
+  public int b31659;
+  public int b31660;
+  public int b31661;
+  public int b31662;
+  public int b31663;
+  public int b31664;
+  public int b31665;
+  public int b31666;
+  public int b31667;
+  public int b31668;
+  public int b31669;
+  public int b31670;
+  public int b31671;
+  public int b31672;
+  public int b31673;
+  public int b31674;
+  public int b31675;
+  public int b31676;
+  public int b31677;
+  public int b31678;
+  public int b31679;
+  public int b31680;
+  public int b31681;
+  public int b31682;
+  public int b31683;
+  public int b31684;
+  public int b31685;
+  public int b31686;
+  public int b31687;
+  public int b31688;
+  public int b31689;
+  public int b31690;
+  public int b31691;
+  public int b31692;
+  public int b31693;
+  public int b31694;
+  public int b31695;
+  public int b31696;
+  public int b31697;
+  public int b31698;
+  public int b31699;
+  public int b31700;
+  public int b31701;
+  public int b31702;
+  public int b31703;
+  public int b31704;
+  public int b31705;
+  public int b31706;
+  public int b31707;
+  public int b31708;
+  public int b31709;
+  public int b31710;
+  public int b31711;
+  public int b31712;
+  public int b31713;
+  public int b31714;
+  public int b31715;
+  public int b31716;
+  public int b31717;
+  public int b31718;
+  public int b31719;
+  public int b31720;
+  public int b31721;
+  public int b31722;
+  public int b31723;
+  public int b31724;
+  public int b31725;
+  public int b31726;
+  public int b31727;
+  public int b31728;
+  public int b31729;
+  public int b31730;
+  public int b31731;
+  public int b31732;
+  public int b31733;
+  public int b31734;
+  public int b31735;
+  public int b31736;
+  public int b31737;
+  public int b31738;
+  public int b31739;
+  public int b31740;
+  public int b31741;
+  public int b31742;
+  public int b31743;
+  public int b31744;
+  public int b31745;
+  public int b31746;
+  public int b31747;
+  public int b31748;
+  public int b31749;
+  public int b31750;
+  public int b31751;
+  public int b31752;
+  public int b31753;
+  public int b31754;
+  public int b31755;
+  public int b31756;
+  public int b31757;
+  public int b31758;
+  public int b31759;
+  public int b31760;
+  public int b31761;
+  public int b31762;
+  public int b31763;
+  public int b31764;
+  public int b31765;
+  public int b31766;
+  public int b31767;
+  public int b31768;
+  public int b31769;
+  public int b31770;
+  public int b31771;
+  public int b31772;
+  public int b31773;
+  public int b31774;
+  public int b31775;
+  public int b31776;
+  public int b31777;
+  public int b31778;
+  public int b31779;
+  public int b31780;
+  public int b31781;
+  public int b31782;
+  public int b31783;
+  public int b31784;
+  public int b31785;
+  public int b31786;
+  public int b31787;
+  public int b31788;
+  public int b31789;
+  public int b31790;
+  public int b31791;
+  public int b31792;
+  public int b31793;
+  public int b31794;
+  public int b31795;
+  public int b31796;
+  public int b31797;
+  public int b31798;
+  public int b31799;
+  public int b31800;
+  public int b31801;
+  public int b31802;
+  public int b31803;
+  public int b31804;
+  public int b31805;
+  public int b31806;
+  public int b31807;
+  public int b31808;
+  public int b31809;
+  public int b31810;
+  public int b31811;
+  public int b31812;
+  public int b31813;
+  public int b31814;
+  public int b31815;
+  public int b31816;
+  public int b31817;
+  public int b31818;
+  public int b31819;
+  public int b31820;
+  public int b31821;
+  public int b31822;
+  public int b31823;
+  public int b31824;
+  public int b31825;
+  public int b31826;
+  public int b31827;
+  public int b31828;
+  public int b31829;
+  public int b31830;
+  public int b31831;
+  public int b31832;
+  public int b31833;
+  public int b31834;
+  public int b31835;
+  public int b31836;
+  public int b31837;
+  public int b31838;
+  public int b31839;
+  public int b31840;
+  public int b31841;
+  public int b31842;
+  public int b31843;
+  public int b31844;
+  public int b31845;
+  public int b31846;
+  public int b31847;
+  public int b31848;
+  public int b31849;
+  public int b31850;
+  public int b31851;
+  public int b31852;
+  public int b31853;
+  public int b31854;
+  public int b31855;
+  public int b31856;
+  public int b31857;
+  public int b31858;
+  public int b31859;
+  public int b31860;
+  public int b31861;
+  public int b31862;
+  public int b31863;
+  public int b31864;
+  public int b31865;
+  public int b31866;
+  public int b31867;
+  public int b31868;
+  public int b31869;
+  public int b31870;
+  public int b31871;
+  public int b31872;
+  public int b31873;
+  public int b31874;
+  public int b31875;
+  public int b31876;
+  public int b31877;
+  public int b31878;
+  public int b31879;
+  public int b31880;
+  public int b31881;
+  public int b31882;
+  public int b31883;
+  public int b31884;
+  public int b31885;
+  public int b31886;
+  public int b31887;
+  public int b31888;
+  public int b31889;
+  public int b31890;
+  public int b31891;
+  public int b31892;
+  public int b31893;
+  public int b31894;
+  public int b31895;
+  public int b31896;
+  public int b31897;
+  public int b31898;
+  public int b31899;
+  public int b31900;
+  public int b31901;
+  public int b31902;
+  public int b31903;
+  public int b31904;
+  public int b31905;
+  public int b31906;
+  public int b31907;
+  public int b31908;
+  public int b31909;
+  public int b31910;
+  public int b31911;
+  public int b31912;
+  public int b31913;
+  public int b31914;
+  public int b31915;
+  public int b31916;
+  public int b31917;
+  public int b31918;
+  public int b31919;
+  public int b31920;
+  public int b31921;
+  public int b31922;
+  public int b31923;
+  public int b31924;
+  public int b31925;
+  public int b31926;
+  public int b31927;
+  public int b31928;
+  public int b31929;
+  public int b31930;
+  public int b31931;
+  public int b31932;
+  public int b31933;
+  public int b31934;
+  public int b31935;
+  public int b31936;
+  public int b31937;
+  public int b31938;
+  public int b31939;
+  public int b31940;
+  public int b31941;
+  public int b31942;
+  public int b31943;
+  public int b31944;
+  public int b31945;
+  public int b31946;
+  public int b31947;
+  public int b31948;
+  public int b31949;
+  public int b31950;
+  public int b31951;
+  public int b31952;
+  public int b31953;
+  public int b31954;
+  public int b31955;
+  public int b31956;
+  public int b31957;
+  public int b31958;
+  public int b31959;
+  public int b31960;
+  public int b31961;
+  public int b31962;
+  public int b31963;
+  public int b31964;
+  public int b31965;
+  public int b31966;
+  public int b31967;
+  public int b31968;
+  public int b31969;
+  public int b31970;
+  public int b31971;
+  public int b31972;
+  public int b31973;
+  public int b31974;
+  public int b31975;
+  public int b31976;
+  public int b31977;
+  public int b31978;
+  public int b31979;
+  public int b31980;
+  public int b31981;
+  public int b31982;
+  public int b31983;
+  public int b31984;
+  public int b31985;
+  public int b31986;
+  public int b31987;
+  public int b31988;
+  public int b31989;
+  public int b31990;
+  public int b31991;
+  public int b31992;
+  public int b31993;
+  public int b31994;
+  public int b31995;
+  public int b31996;
+  public int b31997;
+  public int b31998;
+  public int b31999;
+  public int b32000;
+  public int b32001;
+  public int b32002;
+  public int b32003;
+  public int b32004;
+  public int b32005;
+  public int b32006;
+  public int b32007;
+  public int b32008;
+  public int b32009;
+  public int b32010;
+  public int b32011;
+  public int b32012;
+  public int b32013;
+  public int b32014;
+  public int b32015;
+  public int b32016;
+  public int b32017;
+  public int b32018;
+  public int b32019;
+  public int b32020;
+  public int b32021;
+  public int b32022;
+  public int b32023;
+  public int b32024;
+  public int b32025;
+  public int b32026;
+  public int b32027;
+  public int b32028;
+  public int b32029;
+  public int b32030;
+  public int b32031;
+  public int b32032;
+  public int b32033;
+  public int b32034;
+  public int b32035;
+  public int b32036;
+  public int b32037;
+  public int b32038;
+  public int b32039;
+  public int b32040;
+  public int b32041;
+  public int b32042;
+  public int b32043;
+  public int b32044;
+  public int b32045;
+  public int b32046;
+  public int b32047;
+  public int b32048;
+  public int b32049;
+  public int b32050;
+  public int b32051;
+  public int b32052;
+  public int b32053;
+  public int b32054;
+  public int b32055;
+  public int b32056;
+  public int b32057;
+  public int b32058;
+  public int b32059;
+  public int b32060;
+  public int b32061;
+  public int b32062;
+  public int b32063;
+  public int b32064;
+  public int b32065;
+  public int b32066;
+  public int b32067;
+  public int b32068;
+  public int b32069;
+  public int b32070;
+  public int b32071;
+  public int b32072;
+  public int b32073;
+  public int b32074;
+  public int b32075;
+  public int b32076;
+  public int b32077;
+  public int b32078;
+  public int b32079;
+  public int b32080;
+  public int b32081;
+  public int b32082;
+  public int b32083;
+  public int b32084;
+  public int b32085;
+  public int b32086;
+  public int b32087;
+  public int b32088;
+  public int b32089;
+  public int b32090;
+  public int b32091;
+  public int b32092;
+  public int b32093;
+  public int b32094;
+  public int b32095;
+  public int b32096;
+  public int b32097;
+  public int b32098;
+  public int b32099;
+  public int b32100;
+  public int b32101;
+  public int b32102;
+  public int b32103;
+  public int b32104;
+  public int b32105;
+  public int b32106;
+  public int b32107;
+  public int b32108;
+  public int b32109;
+  public int b32110;
+  public int b32111;
+  public int b32112;
+  public int b32113;
+  public int b32114;
+  public int b32115;
+  public int b32116;
+  public int b32117;
+  public int b32118;
+  public int b32119;
+  public int b32120;
+  public int b32121;
+  public int b32122;
+  public int b32123;
+  public int b32124;
+  public int b32125;
+  public int b32126;
+  public int b32127;
+  public int b32128;
+  public int b32129;
+  public int b32130;
+  public int b32131;
+  public int b32132;
+  public int b32133;
+  public int b32134;
+  public int b32135;
+  public int b32136;
+  public int b32137;
+  public int b32138;
+  public int b32139;
+  public int b32140;
+  public int b32141;
+  public int b32142;
+  public int b32143;
+  public int b32144;
+  public int b32145;
+  public int b32146;
+  public int b32147;
+  public int b32148;
+  public int b32149;
+  public int b32150;
+  public int b32151;
+  public int b32152;
+  public int b32153;
+  public int b32154;
+  public int b32155;
+  public int b32156;
+  public int b32157;
+  public int b32158;
+  public int b32159;
+  public int b32160;
+  public int b32161;
+  public int b32162;
+  public int b32163;
+  public int b32164;
+  public int b32165;
+  public int b32166;
+  public int b32167;
+  public int b32168;
+  public int b32169;
+  public int b32170;
+  public int b32171;
+  public int b32172;
+  public int b32173;
+  public int b32174;
+  public int b32175;
+  public int b32176;
+  public int b32177;
+  public int b32178;
+  public int b32179;
+  public int b32180;
+  public int b32181;
+  public int b32182;
+  public int b32183;
+  public int b32184;
+  public int b32185;
+  public int b32186;
+  public int b32187;
+  public int b32188;
+  public int b32189;
+  public int b32190;
+  public int b32191;
+  public int b32192;
+  public int b32193;
+  public int b32194;
+  public int b32195;
+  public int b32196;
+  public int b32197;
+  public int b32198;
+  public int b32199;
+  public int b32200;
+  public int b32201;
+  public int b32202;
+  public int b32203;
+  public int b32204;
+  public int b32205;
+  public int b32206;
+  public int b32207;
+  public int b32208;
+  public int b32209;
+  public int b32210;
+  public int b32211;
+  public int b32212;
+  public int b32213;
+  public int b32214;
+  public int b32215;
+  public int b32216;
+  public int b32217;
+  public int b32218;
+  public int b32219;
+  public int b32220;
+  public int b32221;
+  public int b32222;
+  public int b32223;
+  public int b32224;
+  public int b32225;
+  public int b32226;
+  public int b32227;
+  public int b32228;
+  public int b32229;
+  public int b32230;
+  public int b32231;
+  public int b32232;
+  public int b32233;
+  public int b32234;
+  public int b32235;
+  public int b32236;
+  public int b32237;
+  public int b32238;
+  public int b32239;
+  public int b32240;
+  public int b32241;
+  public int b32242;
+  public int b32243;
+  public int b32244;
+  public int b32245;
+  public int b32246;
+  public int b32247;
+  public int b32248;
+  public int b32249;
+  public int b32250;
+  public int b32251;
+  public int b32252;
+  public int b32253;
+  public int b32254;
+  public int b32255;
+  public int b32256;
+  public int b32257;
+  public int b32258;
+  public int b32259;
+  public int b32260;
+  public int b32261;
+  public int b32262;
+  public int b32263;
+  public int b32264;
+  public int b32265;
+  public int b32266;
+  public int b32267;
+  public int b32268;
+  public int b32269;
+  public int b32270;
+  public int b32271;
+  public int b32272;
+  public int b32273;
+  public int b32274;
+  public int b32275;
+  public int b32276;
+  public int b32277;
+  public int b32278;
+  public int b32279;
+  public int b32280;
+  public int b32281;
+  public int b32282;
+  public int b32283;
+  public int b32284;
+  public int b32285;
+  public int b32286;
+  public int b32287;
+  public int b32288;
+  public int b32289;
+  public int b32290;
+  public int b32291;
+  public int b32292;
+  public int b32293;
+  public int b32294;
+  public int b32295;
+  public int b32296;
+  public int b32297;
+  public int b32298;
+  public int b32299;
+  public int b32300;
+  public int b32301;
+  public int b32302;
+  public int b32303;
+  public int b32304;
+  public int b32305;
+  public int b32306;
+  public int b32307;
+  public int b32308;
+  public int b32309;
+  public int b32310;
+  public int b32311;
+  public int b32312;
+  public int b32313;
+  public int b32314;
+  public int b32315;
+  public int b32316;
+  public int b32317;
+  public int b32318;
+  public int b32319;
+  public int b32320;
+  public int b32321;
+  public int b32322;
+  public int b32323;
+  public int b32324;
+  public int b32325;
+  public int b32326;
+  public int b32327;
+  public int b32328;
+  public int b32329;
+  public int b32330;
+  public int b32331;
+  public int b32332;
+  public int b32333;
+  public int b32334;
+  public int b32335;
+  public int b32336;
+  public int b32337;
+  public int b32338;
+  public int b32339;
+  public int b32340;
+  public int b32341;
+  public int b32342;
+  public int b32343;
+  public int b32344;
+  public int b32345;
+  public int b32346;
+  public int b32347;
+  public int b32348;
+  public int b32349;
+  public int b32350;
+  public int b32351;
+  public int b32352;
+  public int b32353;
+  public int b32354;
+  public int b32355;
+  public int b32356;
+  public int b32357;
+  public int b32358;
+  public int b32359;
+  public int b32360;
+  public int b32361;
+  public int b32362;
+  public int b32363;
+  public int b32364;
+  public int b32365;
+  public int b32366;
+  public int b32367;
+  public int b32368;
+  public int b32369;
+  public int b32370;
+  public int b32371;
+  public int b32372;
+  public int b32373;
+  public int b32374;
+  public int b32375;
+  public int b32376;
+  public int b32377;
+  public int b32378;
+  public int b32379;
+  public int b32380;
+  public int b32381;
+  public int b32382;
+  public int b32383;
+  public int b32384;
+  public int b32385;
+  public int b32386;
+  public int b32387;
+  public int b32388;
+  public int b32389;
+  public int b32390;
+  public int b32391;
+  public int b32392;
+  public int b32393;
+  public int b32394;
+  public int b32395;
+  public int b32396;
+  public int b32397;
+  public int b32398;
+  public int b32399;
+  public int b32400;
+  public int b32401;
+  public int b32402;
+  public int b32403;
+  public int b32404;
+  public int b32405;
+  public int b32406;
+  public int b32407;
+  public int b32408;
+  public int b32409;
+  public int b32410;
+  public int b32411;
+  public int b32412;
+  public int b32413;
+  public int b32414;
+  public int b32415;
+  public int b32416;
+  public int b32417;
+  public int b32418;
+  public int b32419;
+  public int b32420;
+  public int b32421;
+  public int b32422;
+  public int b32423;
+  public int b32424;
+  public int b32425;
+  public int b32426;
+  public int b32427;
+  public int b32428;
+  public int b32429;
+  public int b32430;
+  public int b32431;
+  public int b32432;
+  public int b32433;
+  public int b32434;
+  public int b32435;
+  public int b32436;
+  public int b32437;
+  public int b32438;
+  public int b32439;
+  public int b32440;
+  public int b32441;
+  public int b32442;
+  public int b32443;
+  public int b32444;
+  public int b32445;
+  public int b32446;
+  public int b32447;
+  public int b32448;
+  public int b32449;
+  public int b32450;
+  public int b32451;
+  public int b32452;
+  public int b32453;
+  public int b32454;
+  public int b32455;
+  public int b32456;
+  public int b32457;
+  public int b32458;
+  public int b32459;
+  public int b32460;
+  public int b32461;
+  public int b32462;
+  public int b32463;
+  public int b32464;
+  public int b32465;
+  public int b32466;
+  public int b32467;
+  public int b32468;
+  public int b32469;
+  public int b32470;
+  public int b32471;
+  public int b32472;
+  public int b32473;
+  public int b32474;
+  public int b32475;
+  public int b32476;
+  public int b32477;
+  public int b32478;
+  public int b32479;
+  public int b32480;
+  public int b32481;
+  public int b32482;
+  public int b32483;
+  public int b32484;
+  public int b32485;
+  public int b32486;
+  public int b32487;
+  public int b32488;
+  public int b32489;
+  public int b32490;
+  public int b32491;
+  public int b32492;
+  public int b32493;
+  public int b32494;
+  public int b32495;
+  public int b32496;
+  public int b32497;
+  public int b32498;
+  public int b32499;
+  public int b32500;
+  public int b32501;
+  public int b32502;
+  public int b32503;
+  public int b32504;
+  public int b32505;
+  public int b32506;
+  public int b32507;
+  public int b32508;
+  public int b32509;
+  public int b32510;
+  public int b32511;
+  public int b32512;
+  public int b32513;
+  public int b32514;
+  public int b32515;
+  public int b32516;
+  public int b32517;
+  public int b32518;
+  public int b32519;
+  public int b32520;
+  public int b32521;
+  public int b32522;
+  public int b32523;
+  public int b32524;
+  public int b32525;
+  public int b32526;
+  public int b32527;
+  public int b32528;
+  public int b32529;
+  public int b32530;
+  public int b32531;
+  public int b32532;
+  public int b32533;
+  public int b32534;
+  public int b32535;
+  public int b32536;
+  public int b32537;
+  public int b32538;
+  public int b32539;
+  public int b32540;
+  public int b32541;
+  public int b32542;
+  public int b32543;
+  public int b32544;
+  public int b32545;
+  public int b32546;
+  public int b32547;
+  public int b32548;
+  public int b32549;
+  public int b32550;
+  public int b32551;
+  public int b32552;
+  public int b32553;
+  public int b32554;
+  public int b32555;
+  public int b32556;
+  public int b32557;
+  public int b32558;
+  public int b32559;
+  public int b32560;
+  public int b32561;
+  public int b32562;
+  public int b32563;
+  public int b32564;
+  public int b32565;
+  public int b32566;
+  public int b32567;
+  public int b32568;
+  public int b32569;
+  public int b32570;
+  public int b32571;
+  public int b32572;
+  public int b32573;
+  public int b32574;
+  public int b32575;
+  public int b32576;
+  public int b32577;
+  public int b32578;
+  public int b32579;
+  public int b32580;
+  public int b32581;
+  public int b32582;
+  public int b32583;
+  public int b32584;
+  public int b32585;
+  public int b32586;
+  public int b32587;
+  public int b32588;
+  public int b32589;
+  public int b32590;
+  public int b32591;
+  public int b32592;
+  public int b32593;
+  public int b32594;
+  public int b32595;
+  public int b32596;
+  public int b32597;
+  public int b32598;
+  public int b32599;
+  public int b32600;
+  public int b32601;
+  public int b32602;
+  public int b32603;
+  public int b32604;
+  public int b32605;
+  public int b32606;
+  public int b32607;
+  public int b32608;
+  public int b32609;
+  public int b32610;
+  public int b32611;
+  public int b32612;
+  public int b32613;
+  public int b32614;
+  public int b32615;
+  public int b32616;
+  public int b32617;
+  public int b32618;
+  public int b32619;
+  public int b32620;
+  public int b32621;
+  public int b32622;
+  public int b32623;
+  public int b32624;
+  public int b32625;
+  public int b32626;
+  public int b32627;
+  public int b32628;
+  public int b32629;
+  public int b32630;
+  public int b32631;
+  public int b32632;
+  public int b32633;
+  public int b32634;
+  public int b32635;
+  public int b32636;
+  public int b32637;
+  public int b32638;
+  public int b32639;
+  public int b32640;
+  public int b32641;
+  public int b32642;
+  public int b32643;
+  public int b32644;
+  public int b32645;
+  public int b32646;
+  public int b32647;
+  public int b32648;
+  public int b32649;
+  public int b32650;
+  public int b32651;
+  public int b32652;
+  public int b32653;
+  public int b32654;
+  public int b32655;
+  public int b32656;
+  public int b32657;
+  public int b32658;
+  public int b32659;
+  public int b32660;
+  public int b32661;
+  public int b32662;
+  public int b32663;
+  public int b32664;
+  public int b32665;
+  public int b32666;
+  public int b32667;
+  public int b32668;
+  public int b32669;
+  public int b32670;
+  public int b32671;
+  public int b32672;
+  public int b32673;
+  public int b32674;
+  public int b32675;
+  public int b32676;
+  public int b32677;
+  public int b32678;
+  public int b32679;
+  public int b32680;
+  public int b32681;
+  public int b32682;
+  public int b32683;
+  public int b32684;
+  public int b32685;
+  public int b32686;
+  public int b32687;
+  public int b32688;
+  public int b32689;
+  public int b32690;
+  public int b32691;
+  public int b32692;
+  public int b32693;
+  public int b32694;
+  public int b32695;
+  public int b32696;
+  public int b32697;
+  public int b32698;
+  public int b32699;
+  public int b32700;
+  public int b32701;
+  public int b32702;
+  public int b32703;
+  public int b32704;
+  public int b32705;
+  public int b32706;
+  public int b32707;
+  public int b32708;
+  public int b32709;
+  public int b32710;
+  public int b32711;
+  public int b32712;
+  public int b32713;
+  public int b32714;
+  public int b32715;
+  public int b32716;
+  public int b32717;
+  public int b32718;
+  public int b32719;
+  public int b32720;
+  public int b32721;
+  public int b32722;
+  public int b32723;
+  public int b32724;
+  public int b32725;
+  public int b32726;
+  public int b32727;
+  public int b32728;
+  public int b32729;
+  public int b32730;
+  public int b32731;
+  public int b32732;
+  public int b32733;
+  public int b32734;
+  public int b32735;
+  public int b32736;
+  public int b32737;
+  public int b32738;
+  public int b32739;
+  public int b32740;
+  public int b32741;
+  public int b32742;
+  public int b32743;
+  public int b32744;
+  public int b32745;
+  public int b32746;
+  public int b32747;
+  public int b32748;
+  public int b32749;
+  public int b32750;
+  public int b32751;
+  public int b32752;
+  public int b32753;
+  public int b32754;
+  public int b32755;
+  public int b32756;
+  public int b32757;
+  public int b32758;
+  public int b32759;
+  public int b32760;
+  public int b32761;
+  public int b32762;
+  public int b32763;
+  public int b32764;
+  public int b32765;
+  public int b32766;
+  public int b32767;
+}
diff --git a/jack-tests/tests/com/android/jack/inner/InnerTests.java b/jack-tests/tests/com/android/jack/inner/InnerTests.java
index 995fbf4..2a9eae1 100644
--- a/jack-tests/tests/com/android/jack/inner/InnerTests.java
+++ b/jack-tests/tests/com/android/jack/inner/InnerTests.java
@@ -17,6 +17,7 @@
 package com.android.jack.inner;
 
 import com.android.jack.TestTools;
+import com.android.jack.backend.dex.rop.CodeItemBuilder;
 import com.android.jack.test.category.RedundantTests;
 import com.android.jack.test.category.RuntimeRegressionTest;
 import com.android.jack.test.comparator.ComparatorDex;
@@ -371,7 +372,7 @@
   @Runtime
   public void test026() throws Exception {
     new RuntimeTestHelper(TEST026).addIgnoredCandidateToolchain(JillBasedToolchain.class)
-        .compileAndRunTest();
+        .addProperty(CodeItemBuilder.DEX_OPTIMIZE.getName(), "true").compileAndRunTest();
   }
 
   @Test
diff --git a/jack-tests/tests/com/android/jack/jarjar/JarjarTests.java b/jack-tests/tests/com/android/jack/jarjar/JarjarTests.java
index 0404168..7fed66c 100644
--- a/jack-tests/tests/com/android/jack/jarjar/JarjarTests.java
+++ b/jack-tests/tests/com/android/jack/jarjar/JarjarTests.java
@@ -31,8 +31,6 @@
 import com.android.jack.test.toolchain.JillBasedToolchain;
 import com.android.sched.util.RunnableHooks;
 import com.android.sched.util.config.ThreadConfig;
-import com.android.sched.util.file.FileOrDirectory.ChangePermission;
-import com.android.sched.util.file.FileOrDirectory.Existence;
 import com.android.sched.util.file.InputZipFile;
 import com.android.sched.vfs.InputVFile;
 import com.android.sched.vfs.ReadZipFS;
@@ -177,7 +175,7 @@
         /* zipFiles = */ true,
         new File(JARJAR004.directory, "lib"));
 
-    List<RuntimeRunner> runnerList = AbstractTestTools.listRuntimeTestRunners(null);
+    List<RuntimeRunner> runnerList = AbstractTestTools.listRuntimeTestRunners();
     String[] names = {"com.android.jack.jarjar.test004.dontcompile.TestWithRelocatedReference"};
     for (RuntimeRunner runner : runnerList) {
       Assert.assertEquals(
diff --git a/jack-tests/tests/com/android/jack/java7/EcjMethodHandleTest.java b/jack-tests/tests/com/android/jack/java7/EcjMethodHandleTest.java
index 6407303..029ab2e 100644
--- a/jack-tests/tests/com/android/jack/java7/EcjMethodHandleTest.java
+++ b/jack-tests/tests/com/android/jack/java7/EcjMethodHandleTest.java
@@ -106,7 +106,7 @@
 
       File dexFile = new File(dexOutDir, "classes.dex");
 
-      List<RuntimeRunner> runnerList = AbstractTestTools.listRuntimeTestRunners(null);
+      List<RuntimeRunner> runnerList = AbstractTestTools.listRuntimeTestRunners();
       for (RuntimeRunner runner : runnerList) {
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         ((AbstractRuntimeRunner) runner).setOutputStream(out);
diff --git a/jack-tests/tests/com/android/jack/java7/EcjPolymorphicSignatureTest.java b/jack-tests/tests/com/android/jack/java7/EcjPolymorphicSignatureTest.java
index 58348fc..aee81d0 100644
--- a/jack-tests/tests/com/android/jack/java7/EcjPolymorphicSignatureTest.java
+++ b/jack-tests/tests/com/android/jack/java7/EcjPolymorphicSignatureTest.java
@@ -99,7 +99,7 @@
 
       File dexFile = new File(dexOutDir, "classes.dex");
 
-      List<RuntimeRunner> runnerList = AbstractTestTools.listRuntimeTestRunners(null);
+      List<RuntimeRunner> runnerList = AbstractTestTools.listRuntimeTestRunners();
       for (RuntimeRunner runner : runnerList) {
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         ((AbstractRuntimeRunner) runner).setOutputStream(out);
diff --git a/jack-tests/tests/com/android/jack/java7/InvokePolymorphicTests.java b/jack-tests/tests/com/android/jack/java7/InvokePolymorphicTests.java
index 349cddf..a4b3f9b 100644
--- a/jack-tests/tests/com/android/jack/java7/InvokePolymorphicTests.java
+++ b/jack-tests/tests/com/android/jack/java7/InvokePolymorphicTests.java
@@ -30,6 +30,7 @@
 import com.android.jack.test.helper.RuntimeTestHelper;
 import com.android.jack.test.junit.KnownIssue;
 import com.android.jack.test.junit.Runtime;
+import com.android.jack.test.junit.RuntimeVersion;
 import com.android.jack.test.runtime.RuntimeTestInfo;
 import com.android.jack.test.toolchain.AbstractTestTools;
 import com.android.jack.test.toolchain.JackApiToolchainBase;
@@ -107,42 +108,42 @@
           });
 
   @Test
-  @Runtime
+  @Runtime(from=RuntimeVersion.O)
   @KnownIssue
   public void testInvokePolymorphic001() throws Exception {
     run(INVOKE_POLYMORPHIC_001);
   }
 
   @Test
-  @Runtime
+  @Runtime(from=RuntimeVersion.O)
   @KnownIssue
   public void testInvokePolymorphic002() throws Exception {
     run(INVOKE_POLYMORPHIC_002);
   }
 
   @Test
-  @Runtime
+  @Runtime(from=RuntimeVersion.O)
   @KnownIssue
   public void testInvokePolymorphic003() throws Exception {
     run(INVOKE_POLYMORPHIC_003);
   }
 
   @Test
-  @Runtime
+  @Runtime(from=RuntimeVersion.O)
   @KnownIssue
   public void testInvokePolymorphic004() throws Exception {
     run(INVOKE_POLYMORPHIC_004);
   }
 
   @Test
-  @Runtime
+  @Runtime(from=RuntimeVersion.O)
   @KnownIssue
   public void testInvokePolymorphic005() throws Exception {
     run(INVOKE_POLYMORPHIC_005);
   }
 
   @Test
-  @Runtime
+  @Runtime(from=RuntimeVersion.O)
   @KnownIssue
   public void testInvokePolymorphic006() throws Exception {
     run(INVOKE_POLYMORPHIC_006);
@@ -198,7 +199,7 @@
   }
 
   @Test
-  @Runtime
+  @Runtime(from=RuntimeVersion.O)
   @KnownIssue
   public void testInvokePolymorphic007() throws Exception {
     run(INVOKE_POLYMORPHIC_007);
diff --git a/jack-tests/tests/com/android/jack/java7/invokepolymorphic/test001/test.properties b/jack-tests/tests/com/android/jack/java7/invokepolymorphic/test001/test.properties
deleted file mode 100644
index f2a3478..0000000
--- a/jack-tests/tests/com/android/jack/java7/invokepolymorphic/test001/test.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-rt.args.ArtRunnerHost=-Xexperimental:method-handles
-rt.args.ArtRunnerDevice=-Xexperimental:method-handles
diff --git a/jack-tests/tests/com/android/jack/java7/invokepolymorphic/test002/test.properties b/jack-tests/tests/com/android/jack/java7/invokepolymorphic/test002/test.properties
deleted file mode 100644
index f2a3478..0000000
--- a/jack-tests/tests/com/android/jack/java7/invokepolymorphic/test002/test.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-rt.args.ArtRunnerHost=-Xexperimental:method-handles
-rt.args.ArtRunnerDevice=-Xexperimental:method-handles
diff --git a/jack-tests/tests/com/android/jack/java7/invokepolymorphic/test003/test.properties b/jack-tests/tests/com/android/jack/java7/invokepolymorphic/test003/test.properties
deleted file mode 100644
index f2a3478..0000000
--- a/jack-tests/tests/com/android/jack/java7/invokepolymorphic/test003/test.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-rt.args.ArtRunnerHost=-Xexperimental:method-handles
-rt.args.ArtRunnerDevice=-Xexperimental:method-handles
diff --git a/jack-tests/tests/com/android/jack/java7/invokepolymorphic/test004/test.properties b/jack-tests/tests/com/android/jack/java7/invokepolymorphic/test004/test.properties
deleted file mode 100644
index f2a3478..0000000
--- a/jack-tests/tests/com/android/jack/java7/invokepolymorphic/test004/test.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-rt.args.ArtRunnerHost=-Xexperimental:method-handles
-rt.args.ArtRunnerDevice=-Xexperimental:method-handles
diff --git a/jack-tests/tests/com/android/jack/java7/invokepolymorphic/test005/test.properties b/jack-tests/tests/com/android/jack/java7/invokepolymorphic/test005/test.properties
deleted file mode 100644
index f2a3478..0000000
--- a/jack-tests/tests/com/android/jack/java7/invokepolymorphic/test005/test.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-rt.args.ArtRunnerHost=-Xexperimental:method-handles
-rt.args.ArtRunnerDevice=-Xexperimental:method-handles
diff --git a/jack-tests/tests/com/android/jack/java7/invokepolymorphic/test006/test.properties b/jack-tests/tests/com/android/jack/java7/invokepolymorphic/test006/test.properties
deleted file mode 100644
index f2a3478..0000000
--- a/jack-tests/tests/com/android/jack/java7/invokepolymorphic/test006/test.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-rt.args.ArtRunnerHost=-Xexperimental:method-handles
-rt.args.ArtRunnerDevice=-Xexperimental:method-handles
diff --git a/jack-tests/tests/com/android/jack/java8/AnnotationTest.java b/jack-tests/tests/com/android/jack/java8/AnnotationTest.java
index ee84d6d..f479aae 100644
--- a/jack-tests/tests/com/android/jack/java8/AnnotationTest.java
+++ b/jack-tests/tests/com/android/jack/java8/AnnotationTest.java
@@ -175,7 +175,7 @@
 
   @Nonnull
   private void run(@Nonnull String mainClass, @Nonnull File[] dexFiles) throws Exception {
-    List<RuntimeRunner> runnerList = AbstractTestTools.listRuntimeTestRunners(null);
+    List<RuntimeRunner> runnerList = AbstractTestTools.listRuntimeTestRunners();
     for (RuntimeRunner runner : runnerList) {
       Assert.assertEquals(0, runner.runJUnit(new String[0], AbstractTestTools.JUNIT_RUNNER_NAME,
           new String[] {mainClass}, dexFiles));
diff --git a/jack-tests/tests/com/android/jack/java8/BridgeTestPostM.java b/jack-tests/tests/com/android/jack/java8/BridgeTestPostM.java
index c12275d..2676061 100644
--- a/jack-tests/tests/com/android/jack/java8/BridgeTestPostM.java
+++ b/jack-tests/tests/com/android/jack/java8/BridgeTestPostM.java
@@ -18,7 +18,6 @@
 
 import com.android.jack.JackAbortException;
 import com.android.jack.Options;
-import com.android.jack.backend.dex.compatibility.AndroidCompatibilityChecker;
 import com.android.jack.test.helper.RuntimeTestHelper;
 import com.android.jack.test.junit.KnownIssue;
 import com.android.jack.test.junit.Runtime;
@@ -57,8 +56,7 @@
   public void testBridge002() throws Exception {
     new RuntimeTestHelper(BRIDGE002)
         .setSourceLevel(SourceLevel.JAVA_8)
-        .addProperty(Options.ANDROID_MIN_API_LEVEL.getName(),
-            String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
+        .setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
         .addIgnoredCandidateToolchain(JackApiV01.class).compileAndRunTest();
   }
 
@@ -94,12 +92,11 @@
                      toolchain instanceof JackApiV03Toolchain);
     File lib23 =
         AbstractTestTools.createTempFile("lib23", toolchain.getLibraryExtension());
-    toolchain.addProperty(
-        Options.ANDROID_MIN_API_LEVEL.getName(),
-        String.valueOf(23))
-    .addProperty(Options.GENERATE_DEX_IN_LIBRARY.getName(), Boolean.toString(enablePredexing))
-    .setSourceLevel(SourceLevel.JAVA_8)
-    .addToClasspath(toolchain.getDefaultBootClasspath());
+    toolchain.setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.M.getLevel()));
+    toolchain
+        .addProperty(Options.GENERATE_DEX_IN_LIBRARY.getName(), Boolean.toString(enablePredexing))
+        .setSourceLevel(SourceLevel.JAVA_8)
+        .addToClasspath(toolchain.getDefaultBootClasspath());
 
     if (!pre04 && enablePredexing) {
       ByteArrayOutputStream errOut = new ByteArrayOutputStream();
@@ -118,9 +115,7 @@
 
       File dex24 = AbstractTestTools.createTempDir();
       toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, excludeClazz);
-      toolchain.addProperty(
-          Options.ANDROID_MIN_API_LEVEL.getName(),
-          String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
+      toolchain.setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
       .libToExe(lib23, dex24, /* zipFiles = */ false);
 
       // Run to check everything went as expected
@@ -144,9 +139,7 @@
         AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, excludeClazz);
     File lib23 =
         AbstractTestTools.createTempFile("lib23", toolchain.getLibraryExtension());
-    toolchain.addProperty(
-        Options.ANDROID_MIN_API_LEVEL.getName(),
-        String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
+    toolchain.setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
     .setSourceLevel(SourceLevel.JAVA_8)
     .addToClasspath(toolchain.getDefaultBootClasspath())
     .srcToLib(lib23,
@@ -154,9 +147,7 @@
 
     File dex24 = AbstractTestTools.createTempDir();
     toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, excludeClazz);
-    toolchain.addProperty(
-        Options.ANDROID_MIN_API_LEVEL.getName(),
-        String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
+    toolchain.setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
     .libToExe(lib23, dex24, /* zipFiles = */ false);
 
     // Run to check everything went as expected
@@ -197,10 +188,9 @@
                      toolchain instanceof JackApiV03Toolchain);
     File lib23 =
         AbstractTestTools.createTempFile("lib23", toolchain.getLibraryExtension());
-    toolchain.addProperty(
-        Options.ANDROID_MIN_API_LEVEL.getName(),
-        String.valueOf(23))
-    .addProperty(Options.GENERATE_DEX_IN_LIBRARY.getName(), Boolean.toString(enablePredexing))
+    toolchain.setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.M.getLevel()));
+    toolchain
+        .addProperty(Options.GENERATE_DEX_IN_LIBRARY.getName(), Boolean.toString(enablePredexing))
     .setSourceLevel(SourceLevel.JAVA_8)
     .addToClasspath(toolchain.getDefaultBootClasspath());
 
@@ -222,9 +212,7 @@
       ByteArrayOutputStream errOut = new ByteArrayOutputStream();
       File dex23 = AbstractTestTools.createTempDir();
       toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class, excludeClazz);
-      toolchain.addProperty(
-          Options.ANDROID_MIN_API_LEVEL.getName(),
-          String.valueOf(23))
+      toolchain.setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.M.getLevel()))
       .setErrorStream(errOut);
       try {
         toolchain.libToExe(lib23, dex23, /* zipFiles = */ false);
@@ -249,9 +237,7 @@
         AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class, excludeClazz);
     File lib24 =
         AbstractTestTools.createTempFile("lib24", toolchain.getLibraryExtension());
-    toolchain.addProperty(
-        Options.ANDROID_MIN_API_LEVEL.getName(),
-        String.valueOf(24))
+    toolchain.setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
     .setSourceLevel(SourceLevel.JAVA_8)
     .addToClasspath(toolchain.getDefaultBootClasspath())
     .srcToLib(lib24,
@@ -260,9 +246,7 @@
     ByteArrayOutputStream errOut = new ByteArrayOutputStream();
     File dex23 = AbstractTestTools.createTempDir();
     toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class, excludeClazz);
-    toolchain.addProperty(
-        Options.ANDROID_MIN_API_LEVEL.getName(),
-        String.valueOf(23))
+    toolchain.setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.M.getLevel()))
     .setErrorStream(errOut);
     try {
       toolchain.libToExe(lib24, dex23, /* zipFiles = */ false);
diff --git a/jack-tests/tests/com/android/jack/java8/DefaultMethodTest.java b/jack-tests/tests/com/android/jack/java8/DefaultMethodTest.java
index c0f1b02..0d87df1 100644
--- a/jack-tests/tests/com/android/jack/java8/DefaultMethodTest.java
+++ b/jack-tests/tests/com/android/jack/java8/DefaultMethodTest.java
@@ -18,7 +18,6 @@
 
 import com.android.jack.JackAbortException;
 import com.android.jack.Options;
-import com.android.jack.backend.dex.compatibility.AndroidCompatibilityChecker;
 import com.android.jack.test.helper.FileChecker;
 import com.android.jack.test.helper.RuntimeTestHelper;
 import com.android.jack.test.junit.KnownIssue;
@@ -33,7 +32,6 @@
 import com.android.jack.test.toolchain.JackApiV02;
 import com.android.jack.test.toolchain.JackApiV03;
 import com.android.jack.test.toolchain.JackBasedToolchain;
-import com.android.jack.test.toolchain.JillBasedToolchain;
 import com.android.jack.test.toolchain.Toolchain.SourceLevel;
 import com.android.jack.util.AndroidApiLevel;
 
@@ -204,9 +202,7 @@
 
     File lib24 =
         AbstractTestTools.createTempFile("lib24", toolchain.getLibraryExtension());
-    toolchain.addProperty(
-        Options.ANDROID_MIN_API_LEVEL.getName(),
-        String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
+    toolchain.setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
     .setSourceLevel(SourceLevel.JAVA_8)
     .addToClasspath(toolchain.getDefaultBootClasspath())
     .srcToLib(lib24,
@@ -215,9 +211,7 @@
     ByteArrayOutputStream errOut = new ByteArrayOutputStream();
     File dex23 = AbstractTestTools.createTempDir();
     toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class, excludeClazz);
-    toolchain.addProperty(
-        Options.ANDROID_MIN_API_LEVEL.getName(),
-        String.valueOf(23))
+    toolchain.setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.M.getLevel()))
     .setErrorStream(errOut);
     try {
       toolchain.libToExe(lib24, dex23, /* zipFiles = */ false);
@@ -260,12 +254,11 @@
                      toolchain instanceof JackApiV03);
     File lib23 =
         AbstractTestTools.createTempFile("lib23", toolchain.getLibraryExtension());
-    toolchain.addProperty(
-        Options.ANDROID_MIN_API_LEVEL.getName(),
-        String.valueOf(23))
-    .addProperty(Options.GENERATE_DEX_IN_LIBRARY.getName(), Boolean.toString(enablePredexing))
-    .setSourceLevel(SourceLevel.JAVA_8)
-    .addToClasspath(toolchain.getDefaultBootClasspath());
+    toolchain.setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.M.getLevel()));
+    toolchain
+        .addProperty(Options.GENERATE_DEX_IN_LIBRARY.getName(), Boolean.toString(enablePredexing))
+        .setSourceLevel(SourceLevel.JAVA_8)
+        .addToClasspath(toolchain.getDefaultBootClasspath());
 
     if (enablePredexing) {
       // When enabling predexing, we should have run the checker and fail due to the presence
@@ -295,9 +288,7 @@
       ByteArrayOutputStream errOut = new ByteArrayOutputStream();
       File dex23 = AbstractTestTools.createTempDir();
       toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class, excludeClazz);
-      toolchain.addProperty(
-          Options.ANDROID_MIN_API_LEVEL.getName(),
-          String.valueOf(23))
+      toolchain.setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.M.getLevel()))
       .setErrorStream(errOut);
       try {
         toolchain.libToExe(lib23, dex23, /* zipFiles = */ false);
@@ -336,12 +327,11 @@
         AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class, excludeClazz);
     File lib23 =
         AbstractTestTools.createTempFile("lib23", toolchain.getLibraryExtension());
-    toolchain.addProperty(
-        Options.ANDROID_MIN_API_LEVEL.getName(),
-        String.valueOf(23))
-    .addProperty(Options.GENERATE_DEX_IN_LIBRARY.getName(), Boolean.toString(enablePredexing))
-    .setSourceLevel(SourceLevel.JAVA_8)
-    .addToClasspath(toolchain.getDefaultBootClasspath());
+    toolchain.setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.M.getLevel()));
+    toolchain
+        .addProperty(Options.GENERATE_DEX_IN_LIBRARY.getName(), Boolean.toString(enablePredexing))
+        .setSourceLevel(SourceLevel.JAVA_8)
+        .addToClasspath(toolchain.getDefaultBootClasspath());
 
     if (enablePredexing) {
       boolean pre04 = (toolchain instanceof JackApiV01 ||
@@ -370,9 +360,7 @@
 
       File dex24 = AbstractTestTools.createTempDir();
       toolchain = AbstractTestTools.getCandidateToolchain(JackApiToolchainBase.class, excludeClazz);
-      toolchain.addProperty(
-          Options.ANDROID_MIN_API_LEVEL.getName(),
-          String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
+      toolchain.setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
       .libToExe(lib23, dex24, /* zipFiles = */ false);
 
       // Run to check everything went as expected
@@ -397,9 +385,7 @@
         AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, excludeClazz);
     File lib24 =
         AbstractTestTools.createTempFile("lib24", toolchain.getLibraryExtension());
-    toolchain.addProperty(
-        Options.ANDROID_MIN_API_LEVEL.getName(),
-        String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
+    toolchain.setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
     .setSourceLevel(SourceLevel.JAVA_8)
     .addToClasspath(toolchain.getDefaultBootClasspath())
     .srcToLib(lib24,
@@ -407,9 +393,7 @@
 
     File dex24 = AbstractTestTools.createTempDir();
     toolchain = AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, excludeClazz);
-    toolchain.addProperty(
-        Options.ANDROID_MIN_API_LEVEL.getName(),
-        String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
+    toolchain.setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
     .libToExe(lib24, dex24, /* zipFiles = */ false);
 
     // Run to check everything went as expected
@@ -518,15 +502,7 @@
   @Test
   @Runtime(from=RuntimeVersion.N)
   public void testDefaultMethod018() throws Exception {
-    new RuntimeTestHelper(DEFAULTMETHOD018)
-    .addProperty(
-        Options.ANDROID_MIN_API_LEVEL.getName(),
-        String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
-    .setSourceLevel(SourceLevel.JAVA_8)
-    .addIgnoredCandidateToolchain(JackApiV01.class)
-    // This test must be exclude from the Jill tool-chain because, there is a different behavior than with Jack
-    .addIgnoredCandidateToolchain(JillBasedToolchain.class)
-    .compileAndRunTest();
+    run(DEFAULTMETHOD018);
   }
 
   @Test
@@ -537,11 +513,9 @@
 
   private void run(@Nonnull RuntimeTestInfo rti) throws Exception {
     new RuntimeTestHelper(rti)
-        .addProperty(
-            Options.ANDROID_MIN_API_LEVEL.getName(),
-            String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
         .setSourceLevel(SourceLevel.JAVA_8)
         .addIgnoredCandidateToolchain(JackApiV01.class)
+        .setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
         .compileAndRunTest();
   }
 }
diff --git a/jack-tests/tests/com/android/jack/java8/EcjInterfaceMethodsTest.java b/jack-tests/tests/com/android/jack/java8/EcjInterfaceMethodsTest.java
index 3494c4c..e788f52 100644
--- a/jack-tests/tests/com/android/jack/java8/EcjInterfaceMethodsTest.java
+++ b/jack-tests/tests/com/android/jack/java8/EcjInterfaceMethodsTest.java
@@ -16,8 +16,6 @@
 
 package com.android.jack.java8;
 
-import com.android.jack.Options;
-import com.android.jack.backend.dex.compatibility.AndroidCompatibilityChecker;
 import com.android.jack.test.eclipse.jdt.core.tests.compiler.regression.InterfaceMethodsTest;
 import com.android.jack.test.runner.AbstractRuntimeRunner;
 import com.android.jack.test.runner.RuntimeRunner;
@@ -157,9 +155,8 @@
       // Build dex file
       jackToolchain.addToClasspath(jackToolchain.getDefaultBootClasspath());
       jackToolchain.setSourceLevel(SourceLevel.JAVA_8);
-      jackToolchain.addProperty(
-          Options.ANDROID_MIN_API_LEVEL.getName(),
-          String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()));
+      jackToolchain
+          .setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()));
       jackToolchain.srcToExe(dexOutDir, /* zipFile = */ false, sourceFolder);
     } catch (Exception e) {
       e.printStackTrace();
@@ -171,27 +168,27 @@
   @Override
   public void runConformTest(String[] srcDescription, String expectedResult) {
 
-      // Build dex file
-      List<Class<? extends IToolchain>> excludeList = new ArrayList<Class<? extends IToolchain>>(1);
-      excludeList.add(JackApiV01.class);
+    // Build dex file
+    List<Class<? extends IToolchain>> excludeList = new ArrayList<Class<? extends IToolchain>>(1);
+    excludeList.add(JackApiV01.class);
 
-      JackBasedToolchain jackToolchain = null;
-      try {
-        jackToolchain =
-            AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, excludeList);
-      } catch (AssumptionViolatedException e) {
-        // Handle JUnit4 feature in JUnit3 tests.
-        return;
-      }
+    JackBasedToolchain jackToolchain = null;
+    try {
+      jackToolchain =
+          AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, excludeList);
+    } catch (AssumptionViolatedException e) {
+      // Handle JUnit4 feature in JUnit3 tests.
+      return;
+    }
 
 
-      jackToolchain.addToClasspath(jackToolchain.getDefaultBootClasspath());
-      jackToolchain.setSourceLevel(SourceLevel.JAVA_8);
-      jackToolchain.addProperty(
-          Options.ANDROID_MIN_API_LEVEL.getName(),
-          String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()));
+    jackToolchain.addToClasspath(jackToolchain.getDefaultBootClasspath());
+    jackToolchain.setSourceLevel(SourceLevel.JAVA_8);
 
     try {
+      jackToolchain
+          .setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()));
+
       File dexOutDir = AbstractTestTools.createTempDir();
       File sourceFolder = buildSourceFolder(srcDescription);
 
@@ -200,7 +197,7 @@
       File dexFile = new File(dexOutDir, "classes.dex");
 
       List<RuntimeRunner> runnerList =
-          AbstractTestTools.listRuntimeTestRunners(/* properties = */ null);
+          AbstractTestTools.listRuntimeTestRunners();
       for (RuntimeRunner runner : runnerList) {
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         ((AbstractRuntimeRunner) runner).setOutputStream(out);
diff --git a/jack-tests/tests/com/android/jack/java8/EcjLambdaTest.java b/jack-tests/tests/com/android/jack/java8/EcjLambdaTest.java
index c9ee4b8..ebf4627 100644
--- a/jack-tests/tests/com/android/jack/java8/EcjLambdaTest.java
+++ b/jack-tests/tests/com/android/jack/java8/EcjLambdaTest.java
@@ -181,7 +181,7 @@
 
       File dexFile = new File(dexOutDir, "classes.dex");
 
-      List<RuntimeRunner> runnerList = AbstractTestTools.listRuntimeTestRunners(null);
+      List<RuntimeRunner> runnerList = AbstractTestTools.listRuntimeTestRunners();
       for (RuntimeRunner runner : runnerList) {
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         ((AbstractRuntimeRunner) runner).setOutputStream(out);
@@ -227,7 +227,7 @@
   }
 
   protected JackBasedToolchain createToolchain(
-      @Nonnull List<Class<? extends IToolchain>> excludeList) throws AssumptionViolatedException {
+      @Nonnull List<Class<? extends IToolchain>> excludeList) throws Exception {
 
     JackBasedToolchain jackToolchain = null;
     jackToolchain =
diff --git a/jack-tests/tests/com/android/jack/java8/EcjLambdaTestPostM.java b/jack-tests/tests/com/android/jack/java8/EcjLambdaTestPostM.java
index cedeaac..315279a 100644
--- a/jack-tests/tests/com/android/jack/java8/EcjLambdaTestPostM.java
+++ b/jack-tests/tests/com/android/jack/java8/EcjLambdaTestPostM.java
@@ -16,8 +16,6 @@
 
 package com.android.jack.java8;
 
-import com.android.jack.Options;
-import com.android.jack.backend.dex.compatibility.AndroidCompatibilityChecker;
 import com.android.jack.test.toolchain.IToolchain;
 import com.android.jack.test.toolchain.JackBasedToolchain;
 import com.android.jack.util.AndroidApiLevel;
@@ -26,7 +24,6 @@
 import junit.framework.JUnit4TestAdapter;
 import junit.framework.Test;
 
-import org.junit.internal.AssumptionViolatedException;
 import org.junit.runner.Description;
 import org.junit.runner.manipulation.Filter;
 import org.junit.runner.manipulation.NoTestsRemainException;
@@ -82,11 +79,9 @@
 
   @Override
   protected JackBasedToolchain createToolchain(
-      @Nonnull List<Class<? extends IToolchain>> excludeList) throws AssumptionViolatedException {
+      @Nonnull List<Class<? extends IToolchain>> excludeList) throws Exception {
     JackBasedToolchain jackToolchain = super.createToolchain(excludeList);
-    jackToolchain.addProperty(
-        Options.ANDROID_MIN_API_LEVEL.getName(),
-        String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()));
+    jackToolchain.setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()));
     return jackToolchain;
   }
 
diff --git a/jack-tests/tests/com/android/jack/java8/ExplicitReceiverTest.java b/jack-tests/tests/com/android/jack/java8/ExplicitReceiverTest.java
new file mode 100644
index 0000000..8f0f162
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/ExplicitReceiverTest.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.java8;
+
+import com.android.jack.test.helper.RuntimeTestHelper;
+import com.android.jack.test.junit.Runtime;
+import com.android.jack.test.runtime.RuntimeTestInfo;
+import com.android.jack.test.toolchain.AbstractTestTools;
+import com.android.jack.test.toolchain.JackApiV01;
+import com.android.jack.test.toolchain.Toolchain.SourceLevel;
+
+import org.junit.Test;
+
+import javax.annotation.Nonnull;
+
+
+/**
+ * JUnit test for compilation of explicit receiver usage.
+ */
+public class ExplicitReceiverTest {
+
+  private final RuntimeTestInfo EXPLICIT_RECEIVER_001 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.java8.explicitreceiver.test001"),
+      "com.android.jack.java8.explicitreceiver.test001.Tests").setSrcDirName("");
+
+  private final RuntimeTestInfo EXPLICIT_RECEIVER_002 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.java8.explicitreceiver.test002"),
+      "com.android.jack.java8.explicitreceiver.test002.Tests").setSrcDirName("");
+
+  @Test
+  @Runtime
+  public void testExplicitReceiver001() throws Exception {
+    run(EXPLICIT_RECEIVER_001);
+  }
+
+  @Test
+  @Runtime
+  public void testExplicitReceiver002() throws Exception {
+    run(EXPLICIT_RECEIVER_002);
+  }
+
+
+  private void run(@Nonnull RuntimeTestInfo rti) throws Exception {
+    new RuntimeTestHelper(rti)
+      .setSourceLevel(SourceLevel.JAVA_8)
+      .addIgnoredCandidateToolchain(JackApiV01.class)
+      .compileAndRunTest();
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/java8/GwtTestPostM.java b/jack-tests/tests/com/android/jack/java8/GwtTestPostM.java
index 80cdaf9..339c05c 100644
--- a/jack-tests/tests/com/android/jack/java8/GwtTestPostM.java
+++ b/jack-tests/tests/com/android/jack/java8/GwtTestPostM.java
@@ -16,8 +16,6 @@
 
 package com.android.jack.java8;
 
-import com.android.jack.Options;
-import com.android.jack.backend.dex.compatibility.AndroidCompatibilityChecker;
 import com.android.jack.test.helper.RuntimeTestHelper;
 import com.android.jack.test.junit.KnownIssue;
 import com.android.jack.test.junit.Runtime;
@@ -231,8 +229,7 @@
 
   private void run(@Nonnull RuntimeTestInfo rti) throws Exception {
     new RuntimeTestHelper(rti).setSourceLevel(SourceLevel.JAVA_8)
-        .addProperty(Options.ANDROID_MIN_API_LEVEL.getName(),
-            String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
+        .setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
         .compileAndRunTest();
   }
 
diff --git a/jack-tests/tests/com/android/jack/java8/Java8AllTest.java b/jack-tests/tests/com/android/jack/java8/Java8AllTest.java
index e31752c..c4756b3 100644
--- a/jack-tests/tests/com/android/jack/java8/Java8AllTest.java
+++ b/jack-tests/tests/com/android/jack/java8/Java8AllTest.java
@@ -41,12 +41,19 @@
     AnnotationTest.class,
     BridgeTestPreN.class,
     EcjLambdaTest.class,
+    ExplicitReceiverTest.class,
     GwtTest.class,
     IntersectionTypeTest.class,
+    LambdaGroupByPackageShrinkTests.class,
+    LambdaGroupByTypeShrinkTests.class,
+    LambdaNoGroupingShrinkTests.class,
     LambdaTest.class,
     MethodRefTest.class,
     TypeInferenceTest.class,
-    VariableTest.class
+    VariableTest.class,
+
+    // O test
+    ParameterNameTest.class
   }
 )
 public class Java8AllTest {}
diff --git a/jack-tests/tests/com/android/jack/java8/LambdaGroupByPackageShrinkTests.java b/jack-tests/tests/com/android/jack/java8/LambdaGroupByPackageShrinkTests.java
new file mode 100644
index 0000000..81ae6af
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/LambdaGroupByPackageShrinkTests.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.java8;
+
+import com.android.jack.Options;
+import com.android.jack.test.toolchain.JackBasedToolchain;
+
+import javax.annotation.Nonnull;
+
+public class LambdaGroupByPackageShrinkTests extends LambdaNoGroupingShrinkTests {
+
+
+  @Override
+  @Nonnull
+  protected JackBasedToolchain getToolchain() {
+    return super.getToolchain().addProperty(Options.LAMBDA_GROUPING_SCOPE.getName(), "package");
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/java8/LambdaGroupByTypeShrinkTests.java b/jack-tests/tests/com/android/jack/java8/LambdaGroupByTypeShrinkTests.java
new file mode 100644
index 0000000..747f049
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/LambdaGroupByTypeShrinkTests.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.java8;
+
+import com.android.jack.Options;
+import com.android.jack.test.toolchain.JackBasedToolchain;
+
+import javax.annotation.Nonnull;
+
+public class LambdaGroupByTypeShrinkTests extends LambdaNoGroupingShrinkTests {
+
+
+  @Override
+  @Nonnull
+  protected JackBasedToolchain getToolchain() {
+    return super.getToolchain().addProperty(Options.LAMBDA_GROUPING_SCOPE.getName(), "type");
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/java8/LambdaNoGroupingShrinkTests.java b/jack-tests/tests/com/android/jack/java8/LambdaNoGroupingShrinkTests.java
new file mode 100644
index 0000000..8ce06b5
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/LambdaNoGroupingShrinkTests.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.java8;
+
+import com.android.jack.Options;
+import com.android.jack.test.helper.RuntimeTestHelper;
+import com.android.jack.test.junit.Runtime;
+import com.android.jack.test.runtime.RuntimeTestInfo;
+import com.android.jack.test.toolchain.AbstractTestTools;
+import com.android.jack.test.toolchain.IToolchain;
+import com.android.jack.test.toolchain.JackBasedToolchain;
+import com.android.jack.test.toolchain.JillBasedToolchain;
+import com.android.jack.test.toolchain.Toolchain.SourceLevel;
+
+import org.junit.Test;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.annotation.Nonnull;
+
+public class LambdaNoGroupingShrinkTests {
+
+  @Nonnull
+  private File PROGUARD_SHRINK_NOTHING = new File(
+      AbstractTestTools.getTestRootDir("com.android.jack.java8.lambda.test044"),
+      "shrink-nothing.flags");
+
+  @Nonnull
+  private RuntimeTestInfo TEST001 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.java8.lambda.test044"),
+      "com.android.jack.java8.lambda.test044.jack.Tests");
+
+  @Test
+  @Runtime
+  public void testLamba044_whole() throws Exception {
+
+    File lib = makeLibrary(new File[]{}, TEST001.directory);
+
+    test(TEST001.jUnit, lib);
+  }
+
+  @Test
+  @Runtime
+  public void testLamba044_ByLib() throws Exception {
+
+    File lib2 = makeLibrary(new File[]{}, new File(TEST001.directory, "lib2"));
+    File lib1 = makeLibrary(new File[]{lib2}, new File(TEST001.directory, "lib1"));
+    File libJack = makeLibrary(new File[]{lib2, lib1}, new File(TEST001.directory, "jack"));
+
+    test(TEST001.jUnit, lib2, lib1, libJack);
+
+  }
+
+  @Test
+  @Runtime
+  public void testLamba044_ByTestClass() throws Exception {
+
+    File libs = makeLibrary(new File[]{},
+            new File(TEST001.directory, "lib1"), new File(TEST001.directory, "lib2"));
+    File b2 = makeLibrary(new File[]{libs}, new File(TEST001.directory, "jack/B2.java"));
+    File b3 = makeLibrary(new File[]{libs}, new File(TEST001.directory, "jack/B3.java"));
+    File test = makeLibrary(new File[]{libs, b2, b3},
+        new File(TEST001.directory, "jack/Tests.java"));
+
+    test(TEST001.jUnit, libs, b2, b3, test);
+
+  }
+
+  @Test
+  @Runtime
+  public void testLamba044_ClassConflict() throws Exception {
+
+    File libs = makeLibrary(new File[]{},
+        new File(TEST001.directory, "lib1"), new File(TEST001.directory, "lib2"));
+    File lib2A3 = makeLibrary(new File[]{libs}, new File(TEST001.directory, "lib2/A3.java"));
+    File b2 = makeLibrary(new File[]{libs}, new File(TEST001.directory, "jack/B2.java"));
+    File b3 = makeLibrary(new File[]{libs}, new File(TEST001.directory, "jack/B3.java"));
+    File test = makeLibrary(new File[]{libs, lib2A3, b2, b3},
+        new File(TEST001.directory, "jack/Tests.java"));
+
+    test(TEST001.jUnit, libs, b2, b3, test);
+
+  }
+
+  @Test
+  @Runtime
+  public void testLamba044_PackageConflict() throws Exception {
+
+    File libs = makeLibrary(new File[]{},
+        new File(TEST001.directory, "lib1"), new File(TEST001.directory, "lib2"));
+    File lib2 = makeLibrary(new File[]{}, new File(TEST001.directory, "lib2/"));
+    File b2 = makeLibrary(new File[]{libs}, new File(TEST001.directory, "jack/B2.java"));
+    File b3 = makeLibrary(new File[]{libs}, new File(TEST001.directory, "jack/B3.java"));
+    File test = makeLibrary(new File[]{libs, lib2, b2, b3},
+        new File(TEST001.directory, "jack/Tests.java"));
+
+    test(TEST001.jUnit, libs, b2, b3, test);
+
+  }
+
+  @Nonnull
+  protected File makeLibrary(@Nonnull File[] classpath, @Nonnull File... src) throws Exception {
+    JackBasedToolchain toolchain = getToolchain();
+
+    File lib = AbstractTestTools.createTempFile("lib", ".jack");
+    toolchain
+        .addToClasspath(toolchain.getDefaultBootClasspath())
+        .addToClasspath(classpath)
+        .setSourceLevel(SourceLevel.JAVA_8)
+        .addProguardFlags(PROGUARD_SHRINK_NOTHING)
+        .srcToLib(lib, /* zipFiles = */ true, src);
+
+    return lib;
+  }
+
+  @Nonnull
+  protected void test(@Nonnull String test, @Nonnull File... libs) throws Exception {
+    JackBasedToolchain toolchain = getToolchain();
+
+    File dex = AbstractTestTools.createTempFile("dex", ".jar");
+    toolchain
+        .setSourceLevel(SourceLevel.JAVA_8)
+        .addProguardFlags(PROGUARD_SHRINK_NOTHING)
+        .libToExe(libs, dex, /* zipFiles = */ true);
+
+    RuntimeTestHelper.runOnRuntimeEnvironments(
+        Collections.singletonList(test),
+        RuntimeTestHelper.getJunitDex(), dex);
+
+  }
+
+  @Nonnull
+  protected JackBasedToolchain getToolchain() {
+    List<Class<? extends IToolchain>> excludedToolchains =
+        new ArrayList<Class<? extends IToolchain>>();
+    excludedToolchains.add(JillBasedToolchain.class);
+    JackBasedToolchain toolchain =
+        AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, excludedToolchains);
+    return toolchain.addProperty(Options.LAMBDA_GROUPING_SCOPE.getName(), "none");
+  }
+
+}
diff --git a/jack-tests/tests/com/android/jack/java8/LambdaTest.java b/jack-tests/tests/com/android/jack/java8/LambdaTest.java
index 77980de..b9a11fb 100644
--- a/jack-tests/tests/com/android/jack/java8/LambdaTest.java
+++ b/jack-tests/tests/com/android/jack/java8/LambdaTest.java
@@ -806,8 +806,67 @@
     run(LAMBDA042);
   }
 
+  /**
+   * Check that lambda classes are not lost when successively importing libraries.
+   */
+  @Test
+  @Runtime
+  public void testLamba043() throws Exception {
+    List<Class<? extends IToolchain>> excludedToolchains =
+        new ArrayList<Class<? extends IToolchain>>();
+    excludedToolchains.add(JackApiV01.class);
+
+    // create a lib2 that contains a lambda
+    JackBasedToolchain toolchain =
+        AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, excludedToolchains);
+    File lib2 = AbstractTestTools.createTempFile("lib2", toolchain.getLibraryExtension());
+    {
+      File sourceDir =
+          AbstractTestTools.getTestRootDir("com.android.jack.java8.lambda.test043.lib2.jack");
+      File[] defaultClasspath = toolchain.getDefaultBootClasspath();
+      toolchain.setSourceLevel(SourceLevel.JAVA_8);
+      toolchain.addToClasspath(defaultClasspath).srcToLib(lib2, /* zipFiles = */ true, sourceDir);
+    }
+
+    // create a lib1 that statically imports lib2
+    toolchain =
+        AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, excludedToolchains);
+    File lib1 = AbstractTestTools.createTempFile("lib1", toolchain.getLibraryExtension());
+    {
+      File sourceDir =
+          AbstractTestTools.getTestRootDir("com.android.jack.java8.lambda.test043.lib1.jack");
+      File[] defaultClasspath = toolchain.getDefaultBootClasspath();
+      toolchain.setSourceLevel(SourceLevel.JAVA_8);
+      toolchain.addStaticLibs(lib2);
+      toolchain.addToClasspath(defaultClasspath).srcToLib(lib1, /* zipFiles = */ true, sourceDir);
+    }
+
+    // create a dex that statically imports lib1
+    File dexDir = AbstractTestTools.createTempDir();
+    {
+      File sourceDir =
+          AbstractTestTools.getTestRootDir("com.android.jack.java8.lambda.test043.jack");
+      toolchain =
+          AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, excludedToolchains);
+      File[] defaultClasspath = toolchain.getDefaultBootClasspath();
+      toolchain.addStaticLibs(lib1);
+      toolchain
+          .addToClasspath(defaultClasspath)
+          .setSourceLevel(SourceLevel.JAVA_8)
+          .srcToExe(dexDir, /* zipFiles = */ false, sourceDir);
+    }
+
+    // call the lambda
+    run(
+        "com.android.jack.java8.lambda.test043.jack.Tests",
+        new File[] {
+          new File(TestsProperties.getJackRootDir(), "jack-tests/prebuilts/junit4-hostdex.jar"),
+          new File(dexDir, DexFileWriter.DEX_FILENAME)
+        });
+  }
+
   private void run(@Nonnull String mainClass, @Nonnull File[] dexFiles) throws Exception {
-    List<RuntimeRunner> runnerList = AbstractTestTools.listRuntimeTestRunners(null);
+    List<RuntimeRunner> runnerList = AbstractTestTools.listRuntimeTestRunners();
     for (RuntimeRunner runner : runnerList) {
       Assert.assertEquals(0, runner.runJUnit(new String[0], AbstractTestTools.JUNIT_RUNNER_NAME,
           new String[] {mainClass}, dexFiles));
diff --git a/jack-tests/tests/com/android/jack/java8/LambdaTestPostM.java b/jack-tests/tests/com/android/jack/java8/LambdaTestPostM.java
index 6d438a6..a58b1da 100644
--- a/jack-tests/tests/com/android/jack/java8/LambdaTestPostM.java
+++ b/jack-tests/tests/com/android/jack/java8/LambdaTestPostM.java
@@ -16,9 +16,7 @@
 
 package com.android.jack.java8;
 
-import com.android.jack.Options;
 import com.android.jack.backend.dex.DexFileWriter;
-import com.android.jack.backend.dex.compatibility.AndroidCompatibilityChecker;
 import com.android.jack.test.TestsProperties;
 import com.android.jack.test.junit.KnownIssue;
 import com.android.jack.test.junit.Runtime;
@@ -77,8 +75,7 @@
     toolchain =
         AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, excludedToolchains);
     File libDexFolder = AbstractTestTools.createTempDir();
-    toolchain.addProperty(Options.ANDROID_MIN_API_LEVEL.getName(),
-        String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()));
+    toolchain.setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()));
     toolchain.addToClasspath(defaultClasspath).setSourceLevel(SourceLevel.JAVA_8).libToExe(lib,
         libDexFolder, /* zipFiles = */ false);
 
@@ -98,7 +95,7 @@
   }
 
   private void run(@Nonnull String mainClass, @Nonnull File[] dexFiles) throws Exception {
-    List<RuntimeRunner> runnerList = AbstractTestTools.listRuntimeTestRunners(null);
+    List<RuntimeRunner> runnerList = AbstractTestTools.listRuntimeTestRunners();
     for (RuntimeRunner runner : runnerList) {
       Assert.assertEquals(0, runner.runJUnit(new String[0], AbstractTestTools.JUNIT_RUNNER_NAME,
           new String[] {mainClass}, dexFiles));
diff --git a/jack-tests/tests/com/android/jack/java8/ParameterNameTest.java b/jack-tests/tests/com/android/jack/java8/ParameterNameTest.java
new file mode 100644
index 0000000..551b3e0
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/ParameterNameTest.java
@@ -0,0 +1,233 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.java8;
+
+import com.android.jack.TestTools;
+import com.android.jack.backend.dex.annotations.ParameterMetadataAnnotationsAdder;
+import com.android.jack.test.helper.FileChecker;
+import com.android.jack.test.helper.RuntimeTestHelper;
+import com.android.jack.test.junit.Runtime;
+import com.android.jack.test.junit.RuntimeVersion;
+import com.android.jack.test.runtime.RuntimeTestInfo;
+import com.android.jack.test.toolchain.AbstractTestTools;
+import com.android.jack.test.toolchain.JackApiV01;
+import com.android.jack.test.toolchain.JillBasedToolchain;
+import com.android.jack.test.toolchain.Toolchain.SourceLevel;
+
+import junit.framework.Assert;
+
+import org.jf.dexlib.DexFile;
+import org.jf.dexlib.StringIdItem;
+import org.jf.dexlib.ClassDataItem.EncodedMethod;
+import org.junit.Test;
+
+import java.io.File;
+
+import javax.annotation.Nonnull;
+
+
+/**
+ * JUnit test for parameter metadata.
+ */
+public class ParameterNameTest {
+
+  private File extraJavaFile =
+      new File(AbstractTestTools.getTestRootDir("com.android.jack.java8.parameter.common"),
+          "ParameterTestModifier.java");
+
+  private RuntimeTestInfo PARAMETER001 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.java8.parameter.test001"),
+      "com.android.jack.java8.parameter.test001.Tests").setSrcDirName("")
+          .addCandidateExtraSources(extraJavaFile);
+
+  private RuntimeTestInfo PARAMETER002 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.java8.parameter.test002"),
+      "com.android.jack.java8.parameter.test002.Tests").setSrcDirName("")
+          .addCandidateExtraSources(extraJavaFile);
+
+  private RuntimeTestInfo PARAMETER003 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.java8.parameter.test003"),
+      "com.android.jack.java8.parameter.test003.Tests").setSrcDirName("")
+          .addCandidateExtraSources(extraJavaFile);
+
+  private RuntimeTestInfo PARAMETER004 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.java8.parameter.test004"),
+      "com.android.jack.java8.parameter.test004.Tests").setSrcDirName("")
+          .addCandidateExtraSources(extraJavaFile);
+
+  private RuntimeTestInfo PARAMETER005 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.java8.parameter.test005"),
+      "com.android.jack.java8.parameter.test005.Tests").setSrcDirName("")
+          .addCandidateExtraSources(extraJavaFile);
+
+  private RuntimeTestInfo PARAMETER006 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.java8.parameter.test006"),
+      "com.android.jack.java8.parameter.test006.Tests").setSrcDirName("")
+          .addCandidateExtraSources(extraJavaFile);
+
+  private RuntimeTestInfo PARAMETER007 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.java8.parameter.test007"),
+      "com.android.jack.java8.parameter.test007.Tests").setSrcDirName("")
+          .addCandidateExtraSources(extraJavaFile);
+
+  private RuntimeTestInfo PARAMETER008 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.java8.parameter.test008"),
+      "com.android.jack.java8.parameter.test008.Tests").setSrcDirName("")
+          .addCandidateExtraSources(extraJavaFile);
+
+  private RuntimeTestInfo PARAMETER009 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.java8.parameter.test009"),
+      "com.android.jack.java8.parameter.test009.Tests").setSrcDirName("")
+          .addCandidateExtraSources(extraJavaFile);
+
+  private RuntimeTestInfo PARAMETER010 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.java8.parameter.test010"),
+      "com.android.jack.java8.parameter.test010.Tests").setSrcDirName("")
+          .addCandidateExtraSources(extraJavaFile);
+
+  @Test
+  @Runtime(from=RuntimeVersion.O)
+  public void testParametere001() throws Exception {
+    run(PARAMETER001);
+  }
+
+  @Test
+  @Runtime(from = RuntimeVersion.O)
+  public void testParametere002() throws Exception {
+    new RuntimeTestHelper(PARAMETER002)
+        .setSourceLevel(SourceLevel.JAVA_8)
+        .addIgnoredCandidateToolchain(JackApiV01.class)
+        .addIgnoredCandidateToolchain(JillBasedToolchain.class)
+        .addProperty(ParameterMetadataAnnotationsAdder.PARAMETER_ANNOTATION.getName(), "true")
+        .setWithDebugInfos(true).compileAndRunTest();
+  }
+
+  @Test
+  @Runtime(from=RuntimeVersion.O)
+  public void testParametere003() throws Exception {
+    run(PARAMETER003);
+  }
+
+  @Test
+  @Runtime(from=RuntimeVersion.O)
+  public void testParametere004() throws Exception {
+    new RuntimeTestHelper(PARAMETER004)
+        .setSourceLevel(SourceLevel.JAVA_8)
+        .addIgnoredCandidateToolchain(JackApiV01.class)
+        .addIgnoredCandidateToolchain(JillBasedToolchain.class)
+        .addProperty(ParameterMetadataAnnotationsAdder.PARAMETER_ANNOTATION.getName(), "true")
+        .setWithDebugInfos(true).compileAndRunTest();
+  }
+
+  @Test
+  @Runtime(from=RuntimeVersion.O)
+  public void testParametere005() throws Exception {
+    new RuntimeTestHelper(PARAMETER005.addFileChecker(new FileChecker() {
+
+      @Override
+      public void check(@Nonnull File file) throws Exception {
+        DexFile dexFile = new DexFile(file);
+        EncodedMethod em = TestTools.getEncodedMethod(dexFile,
+            "Lcom/android/jack/java8/parameter/test005/Tests;", "m1", "(III)I");
+        StringIdItem[] parameterNames = em.codeItem.getDebugInfo().getParameterNames();
+        Assert.assertEquals("p1", parameterNames[0].getStringValue());
+        Assert.assertEquals("p2", parameterNames[1].getStringValue());
+        Assert.assertEquals("p3", parameterNames[2].getStringValue());
+      }
+    })).setSourceLevel(SourceLevel.JAVA_8)
+       .addIgnoredCandidateToolchain(JackApiV01.class)
+       .addProperty(ParameterMetadataAnnotationsAdder.PARAMETER_ANNOTATION.getName(), "true")
+       .setWithDebugInfos(true)
+       .compileAndRunTest();
+  }
+
+  @Test
+  @Runtime(from=RuntimeVersion.O)
+  public void testParametere005_1() throws Exception {
+    new RuntimeTestHelper(PARAMETER005.addFileChecker(new FileChecker() {
+
+      @Override
+      public void check(@Nonnull File file) throws Exception {
+        DexFile dexFile = new DexFile(file);
+        EncodedMethod em = TestTools.getEncodedMethod(dexFile,
+            "Lcom/android/jack/java8/parameter/test005/Tests;", "m1", "(III)I");
+        StringIdItem[] parameterNames = em.codeItem.getDebugInfo().getParameterNames();
+        Assert.assertNull(parameterNames[0]);
+        Assert.assertNull(parameterNames[1]);
+        Assert.assertNull(parameterNames[2]);
+      }
+    })).setSourceLevel(SourceLevel.JAVA_8)
+       .addIgnoredCandidateToolchain(JackApiV01.class)
+       .addProperty(ParameterMetadataAnnotationsAdder.PARAMETER_ANNOTATION.getName(), "true")
+       .setWithDebugInfos(false)
+       .compileAndRunTest();
+  }
+
+  /**
+   * Test behavior with a getter accessor.
+   */
+  @Test
+  @Runtime(from=RuntimeVersion.O)
+  public void testParametere006() throws Exception {
+    run(PARAMETER006);
+  }
+
+  /**
+   * Test behavior with a setter accessor.
+   */
+  @Test
+  @Runtime(from=RuntimeVersion.O)
+  public void testParametere007() throws Exception {
+    run(PARAMETER007);
+  }
+
+  /**
+   * Test behavior with a wrapper.
+   */
+  @Test
+  @Runtime(from=RuntimeVersion.O)
+  public void testParametere008() throws Exception {
+    run(PARAMETER008);
+  }
+
+  /**
+   * Test behavior with a synthetic bridge.
+   */
+  @Test
+  @Runtime(from=RuntimeVersion.O)
+  public void testParametere009() throws Exception {
+    run(PARAMETER009);
+  }
+
+  /**
+   * Test behavior with method mixing 32-bit and 64-bit parameters.
+   */
+  @Test
+  @Runtime(from=RuntimeVersion.O)
+  public void testParametere010() throws Exception {
+    run(PARAMETER010);
+  }
+
+  private void run(@Nonnull RuntimeTestInfo rti) throws Exception {
+    new RuntimeTestHelper(rti)
+        .setSourceLevel(SourceLevel.JAVA_8)
+        .addIgnoredCandidateToolchain(JackApiV01.class)
+        .addProperty(ParameterMetadataAnnotationsAdder.PARAMETER_ANNOTATION.getName(), "true")
+        .setWithDebugInfos(true)
+        .compileAndRunTest();
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/java8/RetroLambdaTests.java b/jack-tests/tests/com/android/jack/java8/RetroLambdaTests.java
index 92c575e..62e41bb 100644
--- a/jack-tests/tests/com/android/jack/java8/RetroLambdaTests.java
+++ b/jack-tests/tests/com/android/jack/java8/RetroLambdaTests.java
@@ -16,8 +16,6 @@
 
 package com.android.jack.java8;
 
-import com.android.jack.Options;
-import com.android.jack.backend.dex.compatibility.AndroidCompatibilityChecker;
 import com.android.jack.test.helper.RuntimeTestHelper;
 import com.android.jack.test.junit.Runtime;
 import com.android.jack.test.junit.RuntimeVersion;
@@ -410,9 +408,7 @@
   private void run(@Nonnull RuntimeTestInfo rti) throws Exception {
     new RuntimeTestHelper(rti)
         .setSourceLevel(SourceLevel.JAVA_8)
-        .addProperty(
-            Options.ANDROID_MIN_API_LEVEL.getName(),
-            String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
+        .setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
         .addIgnoredCandidateToolchain(JackApiV01.class)
         .compileAndRunTest();
   }
diff --git a/jack-tests/tests/com/android/jack/java8/StaticMethodTest.java b/jack-tests/tests/com/android/jack/java8/StaticMethodTest.java
index 3b5b095..d3b98dd 100644
--- a/jack-tests/tests/com/android/jack/java8/StaticMethodTest.java
+++ b/jack-tests/tests/com/android/jack/java8/StaticMethodTest.java
@@ -16,12 +16,6 @@
 
 package com.android.jack.java8;
 
-import org.junit.Test;
-
-import javax.annotation.Nonnull;
-
-import com.android.jack.Options;
-import com.android.jack.backend.dex.compatibility.AndroidCompatibilityChecker;
 import com.android.jack.test.helper.RuntimeTestHelper;
 import com.android.jack.test.junit.Runtime;
 import com.android.jack.test.junit.RuntimeVersion;
@@ -31,6 +25,10 @@
 import com.android.jack.test.toolchain.Toolchain.SourceLevel;
 import com.android.jack.util.AndroidApiLevel;
 
+import org.junit.Test;
+
+import javax.annotation.Nonnull;
+
 
 
 /**
@@ -71,9 +69,7 @@
   private void run(@Nonnull RuntimeTestInfo rti) throws Exception {
     new RuntimeTestHelper(rti)
         .setSourceLevel(SourceLevel.JAVA_8)
-        .addProperty(
-            Options.ANDROID_MIN_API_LEVEL.getName(),
-            String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
+        .setAndroidMinApiLevel(String.valueOf(AndroidApiLevel.ReleasedLevel.N.getLevel()))
         .addIgnoredCandidateToolchain(JackApiV01.class)
         .compileAndRunTest();
   }
diff --git a/jack-tests/tests/com/android/jack/java8/defaultmethod/test018/jack/Tests.java b/jack-tests/tests/com/android/jack/java8/defaultmethod/test018/jack/Tests.java
index 13859cf..5ab5cbe 100644
--- a/jack-tests/tests/com/android/jack/java8/defaultmethod/test018/jack/Tests.java
+++ b/jack-tests/tests/com/android/jack/java8/defaultmethod/test018/jack/Tests.java
@@ -27,6 +27,6 @@
   @Test
   public void test001() throws Exception {
     Lambda l = new Lambda();
-    Assert.assertEquals("default : String", l.testLambdaRedefiningADefault());
+    Assert.assertEquals("lambda : String", l.testLambdaRedefiningADefault());
   }
 }
diff --git a/jack-tests/tests/com/android/jack/clinit/jack/ClInitWithVariableInit.java b/jack-tests/tests/com/android/jack/java8/explicitreceiver/test001/Tests.java
similarity index 61%
copy from jack-tests/tests/com/android/jack/clinit/jack/ClInitWithVariableInit.java
copy to jack-tests/tests/com/android/jack/java8/explicitreceiver/test001/Tests.java
index 8c344dd..b282fce 100644
--- a/jack-tests/tests/com/android/jack/clinit/jack/ClInitWithVariableInit.java
+++ b/jack-tests/tests/com/android/jack/java8/explicitreceiver/test001/Tests.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2017 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,11 +14,21 @@
  * limitations under the License.
  */
 
-package com.android.jack.clinit.jack;
+package com.android.jack.java8.explicitreceiver.test001;
 
-public class ClInitWithVariableInit {
+import junit.framework.Assert;
 
-  static {
-    int lv = 5;
+import org.junit.Test;
+
+public class Tests {
+
+  public int add(Tests this,int i1, int i2) {
+    return i1 + i2;
+  }
+
+  @Test
+  public void test() {
+    Tests t = new Tests();
+    Assert.assertEquals(5, t.add(2, 3));
   }
 }
diff --git a/jack-tests/tests/com/android/jack/java8/explicitreceiver/test002/Tests.java b/jack-tests/tests/com/android/jack/java8/explicitreceiver/test002/Tests.java
new file mode 100644
index 0000000..c76f85e
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/explicitreceiver/test002/Tests.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.java8.explicitreceiver.test002;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+public class Tests {
+
+  class Add {
+    int result;
+
+    Add(Tests Tests.this,int i1, int i2) {
+      result = i1 + i2;
+    }
+  }
+
+  @Test
+  public void test() {
+    Add t = new Add(2, 3);
+    Assert.assertEquals(5, t.result);
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/java8/lambda/test043/jack/Tests.java b/jack-tests/tests/com/android/jack/java8/lambda/test043/jack/Tests.java
new file mode 100644
index 0000000..078e5a5
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/lambda/test043/jack/Tests.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.java8.lambda.test043.jack;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import com.android.jack.java8.lambda.test043.lib1.jack.B;
+
+public class Tests {
+
+  @Test
+  public void test001() {
+    Assert.assertEquals(3, new B().m2().getCst());
+  }
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-tests/tests/com/android/jack/java8/lambda/test043/lib1/jack/B.java
similarity index 71%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-tests/tests/com/android/jack/java8/lambda/test043/lib1/jack/B.java
index 0b9fd92..a514618 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-tests/tests/com/android/jack/java8/lambda/test043/lib1/jack/B.java
@@ -14,7 +14,14 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.java8.lambda.test043.lib1.jack;
 
-public interface Interface {}
+import com.android.jack.java8.lambda.test043.lib2.jack.A;
+import com.android.jack.java8.lambda.test043.lib2.jack.I;
 
+public class B {
+
+  public I m2() {
+    return new A().m();
+  }
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-tests/tests/com/android/jack/java8/lambda/test043/lib2/jack/A.java
similarity index 76%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-tests/tests/com/android/jack/java8/lambda/test043/lib2/jack/A.java
index 0b9fd92..23459e2 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-tests/tests/com/android/jack/java8/lambda/test043/lib2/jack/A.java
@@ -14,7 +14,14 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.java8.lambda.test043.lib2.jack;
 
-public interface Interface {}
+import com.android.jack.java8.lambda.test043.lib2.jack.I;
 
+public class A {
+
+public I m() {
+  I i = () -> 3;
+  return i;
+}
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-tests/tests/com/android/jack/java8/lambda/test043/lib2/jack/I.java
similarity index 85%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-tests/tests/com/android/jack/java8/lambda/test043/lib2/jack/I.java
index 0b9fd92..01a9a33 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-tests/tests/com/android/jack/java8/lambda/test043/lib2/jack/I.java
@@ -14,7 +14,8 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.java8.lambda.test043.lib2.jack;
 
-public interface Interface {}
-
+public interface I {
+  int getCst();
+}
diff --git a/sched/tests/com/android/sched/util/file/AllTests.java b/jack-tests/tests/com/android/jack/java8/lambda/test044/jack/B2.java
similarity index 62%
copy from sched/tests/com/android/sched/util/file/AllTests.java
copy to jack-tests/tests/com/android/jack/java8/lambda/test044/jack/B2.java
index 1f2ce79..4bc004a 100644
--- a/sched/tests/com/android/sched/util/file/AllTests.java
+++ b/jack-tests/tests/com/android/jack/java8/lambda/test044/jack/B2.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2017 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,13 +14,16 @@
  * limitations under the License.
  */
 
-package com.android.sched.util.file;
+package com.android.jack.java8.lambda.test044.jack;
 
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
+import com.android.jack.java8.lambda.test044.lib1.I2;
+import com.android.jack.java8.lambda.test044.lib1.subpkg.A2;
 
-@RunWith(Suite.class)
-@SuiteClasses(value = {FileUtilsTest.class})
-public class AllTests {
+class B2 extends A2 {
+  class C {
+    int test() {
+      I2 i = () -> field;
+      return i.getCst() + field;
+    }
+  }
 }
\ No newline at end of file
diff --git a/jack-tests/tests/com/android/jack/clinit/jack/ClInitWithVariableInit.java b/jack-tests/tests/com/android/jack/java8/lambda/test044/jack/B3.java
similarity index 62%
copy from jack-tests/tests/com/android/jack/clinit/jack/ClInitWithVariableInit.java
copy to jack-tests/tests/com/android/jack/java8/lambda/test044/jack/B3.java
index 8c344dd..664ac01 100644
--- a/jack-tests/tests/com/android/jack/clinit/jack/ClInitWithVariableInit.java
+++ b/jack-tests/tests/com/android/jack/java8/lambda/test044/jack/B3.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2017 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,11 +14,16 @@
  * limitations under the License.
  */
 
-package com.android.jack.clinit.jack;
+package com.android.jack.java8.lambda.test044.jack;
 
-public class ClInitWithVariableInit {
+import com.android.jack.java8.lambda.test044.lib1.I2;
+import com.android.jack.java8.lambda.test044.lib1.subpkg.A2;
 
-  static {
-    int lv = 5;
+class B3 extends A2 {
+  class C {
+    int test() {
+      I2 i = () -> 2 * field;
+      return i.getCst() + field;
+    }
   }
-}
+}
\ No newline at end of file
diff --git a/jack-tests/tests/com/android/jack/java8/lambda/test044/jack/Tests.java b/jack-tests/tests/com/android/jack/java8/lambda/test044/jack/Tests.java
new file mode 100644
index 0000000..4eae343
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/lambda/test044/jack/Tests.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.java8.lambda.test044.jack;
+
+import com.android.jack.java8.lambda.test044.lib1.B1;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+
+public class Tests {
+
+  @Test
+  public void test001() {
+    Assert.assertEquals(1, new B1().m1().getCst());
+  }
+
+  @Test
+  public void test002() {
+    Assert.assertEquals(20, new B2().new C().test());
+  }
+
+  @Test
+  public void test003() {
+    Assert.assertEquals(3, new B1().m3().getCst());
+  }
+
+  @Test
+  public void test004() {
+    Assert.assertEquals(30, new B3().new C().test());
+  }
+
+  @Test
+  public void test005() {
+    Assert.assertEquals(4, new B1().m4().getCst());
+  }
+
+  @Test
+  public void test006() {
+    Assert.assertEquals(5, new B1().m5().getCst());
+  }
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-tests/tests/com/android/jack/java8/lambda/test044/lib1/A4.java
similarity index 82%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-tests/tests/com/android/jack/java8/lambda/test044/lib1/A4.java
index 0b9fd92..02ab933 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-tests/tests/com/android/jack/java8/lambda/test044/lib1/A4.java
@@ -14,7 +14,13 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.java8.lambda.test044.lib1;
 
-public interface Interface {}
 
+public class A4 {
+
+  public I2 m() {
+    I2 i = () -> 4;
+    return i;
+  }
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-tests/tests/com/android/jack/java8/lambda/test044/lib1/A5.java
similarity index 82%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-tests/tests/com/android/jack/java8/lambda/test044/lib1/A5.java
index 0b9fd92..37c6334 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-tests/tests/com/android/jack/java8/lambda/test044/lib1/A5.java
@@ -14,7 +14,13 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.java8.lambda.test044.lib1;
 
-public interface Interface {}
 
+public class A5 {
+
+  public I2 m() {
+    I2 i = () -> 5;
+    return i;
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/java8/lambda/test044/lib1/B1.java b/jack-tests/tests/com/android/jack/java8/lambda/test044/lib1/B1.java
new file mode 100644
index 0000000..ab2c110
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/lambda/test044/lib1/B1.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.java8.lambda.test044.lib1;
+
+import com.android.jack.java8.lambda.test044.lib2.A1;
+import com.android.jack.java8.lambda.test044.lib2.A3;
+import com.android.jack.java8.lambda.test044.lib2.I1;
+
+public class B1 {
+
+  public I1 m1() {
+    return new A1().m();
+  }
+
+  public I1 m3() {
+    return new A3().m();
+  }
+
+  public I2 m4() {
+    return new A4().m();
+  }
+
+  public I2 m5() {
+    return new A5().m();
+  }
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-tests/tests/com/android/jack/java8/lambda/test044/lib1/I2.java
similarity index 86%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-tests/tests/com/android/jack/java8/lambda/test044/lib1/I2.java
index 0b9fd92..ca4ed7b 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-tests/tests/com/android/jack/java8/lambda/test044/lib1/I2.java
@@ -14,7 +14,8 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.java8.lambda.test044.lib1;
 
-public interface Interface {}
-
+public interface I2 {
+  int getCst();
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-tests/tests/com/android/jack/java8/lambda/test044/lib1/subpkg/A2.java
similarity index 84%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-tests/tests/com/android/jack/java8/lambda/test044/lib1/subpkg/A2.java
index 0b9fd92..3a801e3 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-tests/tests/com/android/jack/java8/lambda/test044/lib1/subpkg/A2.java
@@ -14,7 +14,8 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.java8.lambda.test044.lib1.subpkg;
 
-public interface Interface {}
-
+public class A2 {
+  protected int field = 10;
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-tests/tests/com/android/jack/java8/lambda/test044/lib2/A1.java
similarity index 82%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-tests/tests/com/android/jack/java8/lambda/test044/lib2/A1.java
index 0b9fd92..d7ac151 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-tests/tests/com/android/jack/java8/lambda/test044/lib2/A1.java
@@ -14,7 +14,13 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.java8.lambda.test044.lib2;
 
-public interface Interface {}
 
+public class A1 {
+
+  public I1 m() {
+    I1 i = () -> 1;
+    return i;
+  }
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-tests/tests/com/android/jack/java8/lambda/test044/lib2/A3.java
similarity index 82%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-tests/tests/com/android/jack/java8/lambda/test044/lib2/A3.java
index 0b9fd92..2bff856 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-tests/tests/com/android/jack/java8/lambda/test044/lib2/A3.java
@@ -14,7 +14,13 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.java8.lambda.test044.lib2;
 
-public interface Interface {}
 
+public class A3 {
+
+  public I1 m() {
+    I1 i = () -> 3;
+    return i;
+  }
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-tests/tests/com/android/jack/java8/lambda/test044/lib2/I1.java
similarity index 86%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-tests/tests/com/android/jack/java8/lambda/test044/lib2/I1.java
index 0b9fd92..7c82dbc 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-tests/tests/com/android/jack/java8/lambda/test044/lib2/I1.java
@@ -14,7 +14,8 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.java8.lambda.test044.lib2;
 
-public interface Interface {}
-
+public interface I1 {
+  int getCst();
+}
diff --git a/jack-tests/tests/com/android/jack/java8/lambda/test044/shrink-nothing.flags b/jack-tests/tests/com/android/jack/java8/lambda/test044/shrink-nothing.flags
new file mode 100644
index 0000000..40047b9
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/lambda/test044/shrink-nothing.flags
@@ -0,0 +1,4 @@
+-dontobfuscate
+-keep class * {
+  *;
+}
diff --git a/jack-tests/tests/com/android/jack/clinit/jack/ClInitWithVariableInit.java b/jack-tests/tests/com/android/jack/java8/parameter/common/ParameterTestModifier.java
similarity index 62%
copy from jack-tests/tests/com/android/jack/clinit/jack/ClInitWithVariableInit.java
copy to jack-tests/tests/com/android/jack/java8/parameter/common/ParameterTestModifier.java
index 8c344dd..89763b4 100644
--- a/jack-tests/tests/com/android/jack/clinit/jack/ClInitWithVariableInit.java
+++ b/jack-tests/tests/com/android/jack/java8/parameter/common/ParameterTestModifier.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2017 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,11 +14,11 @@
  * limitations under the License.
  */
 
-package com.android.jack.clinit.jack;
+package com.android.jack.java8.parameter.common;
 
-public class ClInitWithVariableInit {
-
-  static {
-    int lv = 5;
-  }
+public class ParameterTestModifier {
+  public static final int MODIFIER_NONE = 0;
+  public static final int MODIFIER_FINAL = 0X10;
+  public static final int MODIFIER_SYNTHETIC = 0X1000;
+  public static final int MODIFIER_IMPLICIT = 0X8000;
 }
diff --git a/jack-tests/tests/com/android/jack/java8/parameter/test001/Tests.java b/jack-tests/tests/com/android/jack/java8/parameter/test001/Tests.java
new file mode 100644
index 0000000..ab5b7ed
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/parameter/test001/Tests.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.java8.parameter.test001;
+
+import com.android.jack.java8.parameter.common.ParameterTestModifier;
+import com.android.jack.java8.parameter.test001.Tests.Context.InnerWithParam;
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.lang.reflect.Parameter;
+
+public class Tests {
+
+  public static void m1(final int p1, int b2, Object... a) {}
+
+  public class InnerClass {
+    public class InnerInnerClass {
+      public InnerInnerClass(float f) {
+      }
+    }
+  }
+
+  @Test
+  public void testStaticMethod() throws NoSuchMethodException, SecurityException {
+    Method method = Tests.class.getDeclaredMethod("m1", int.class, int.class, Object[].class);
+    Assert.assertEquals(3, method.getParameters().length);
+
+    check(method.getParameters()[0], "p1", /* isNamePresent= */ true, /* isImplicit= */ false,
+        /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_FINAL);
+
+    check(method.getParameters()[1], "b2", /* isNamePresent= */ true, /* isImplicit= */ false,
+        /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+
+    check(method.getParameters()[2], "a", /* isNamePresent= */ true, /* isImplicit= */ false,
+        /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+  }
+
+  @Test
+  public void testInnerClass() throws NoSuchMethodException, SecurityException {
+    Constructor<?> constructor = InnerClass.class.getDeclaredConstructor(Tests.class);
+    Assert.assertEquals(1, constructor.getParameters().length);
+
+    check(constructor.getParameters()[0], "this$0", /* isNamePresent= */ true,
+        /* isImplicit= */ true, /* isSynthetic= */ false,
+        ParameterTestModifier.MODIFIER_FINAL | ParameterTestModifier.MODIFIER_IMPLICIT);
+  }
+
+  @Test
+  public void testInnerInnerClass() throws NoSuchMethodException, SecurityException {
+    Constructor<?> constructor =
+        InnerClass.InnerInnerClass.class.getDeclaredConstructor(InnerClass.class, float.class);
+    Assert.assertEquals(2, constructor.getParameters().length);
+
+    check(constructor.getParameters()[0], "this$1", /* isNamePresent= */ true,
+        /* isImplicit= */ true, /* isSynthetic= */ false,
+        ParameterTestModifier.MODIFIER_FINAL | ParameterTestModifier.MODIFIER_IMPLICIT);
+
+    check(constructor.getParameters()[1], "f", /* isNamePresent= */ true, /* isImplicit= */ false,
+        /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+  }
+
+  @Test
+  public void testLocalClass() throws NoSuchMethodException, SecurityException {
+    class Local {
+    }
+    Constructor<?> constructor = Local.class.getDeclaredConstructor(Tests.class);
+    Assert.assertEquals(1, constructor.getParameters().length);
+
+    check(constructor.getParameters()[0], "this$0", /* isNamePresent= */ true,
+        /* isImplicit= */ true, /* isSynthetic= */ false,
+        ParameterTestModifier.MODIFIER_FINAL | ParameterTestModifier.MODIFIER_IMPLICIT);
+  }
+
+  @Test
+  public void testLocalClassWithCapture() throws NoSuchMethodException, SecurityException {
+    final Object o = new Object();
+    @SuppressWarnings("unused")
+    class Local {
+      Local (int i) {
+      }
+      Object getObject() {
+        return o;
+      }
+    }
+    Constructor<?> constructor = Local.class.getDeclaredConstructor(Tests.class, int.class, Object.class);
+    Assert.assertEquals(3, constructor.getParameters().length);
+
+    check(constructor.getParameters()[0], "this$0", /* isNamePresent= */ true,
+        /* isImplicit= */ true, /* isSynthetic= */ false,
+        ParameterTestModifier.MODIFIER_FINAL | ParameterTestModifier.MODIFIER_IMPLICIT);
+
+    check(constructor.getParameters()[1], "i", /* isNamePresent= */ true, /* isImplicit= */ false,
+        /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+
+    check(constructor.getParameters()[2], "val$o", /* isNamePresent= */ true,
+        /* isImplicit= */ false, /* isSynthetic= */ true,
+        ParameterTestModifier.MODIFIER_FINAL | ParameterTestModifier.MODIFIER_SYNTHETIC);
+  }
+
+    abstract static class StaticAnonymous {
+    }
+
+    @Test
+    public void testAnonymousWithStaticSuper() throws NoSuchMethodException, SecurityException {
+      StaticAnonymous a = new StaticAnonymous() {};
+      Constructor<?> constructor = a.getClass().getDeclaredConstructor(Tests.class);
+      Assert.assertEquals(1, constructor.getParameters().length);
+    check(constructor.getParameters()[0], "this$0", /* isNamePresent= */ true,
+        /* isImplicit= */ true, /* isSynthetic= */ false,
+        ParameterTestModifier.MODIFIER_FINAL | ParameterTestModifier.MODIFIER_IMPLICIT);
+    }
+
+
+  class Context{
+    class InnerWithParam {
+      public InnerWithParam(int i1) {
+      }
+    }
+  }
+
+  @Test
+  public void testAnonymousWithContext() throws NoSuchMethodException, SecurityException {
+    InnerWithParam iwp = new Context().new InnerWithParam(10);
+
+    Constructor<?> constructor = iwp.getClass().getDeclaredConstructor(Context.class, int.class);
+    Assert.assertEquals(2, constructor.getParameters().length);
+
+    check(constructor.getParameters()[0], "this$1", /* isNamePresent= */ true,
+        /* isImplicit= */ true, /* isSynthetic= */ false,
+        ParameterTestModifier.MODIFIER_FINAL | ParameterTestModifier.MODIFIER_IMPLICIT);
+
+    check(constructor.getParameters()[1], "i1", /* isNamePresent= */ true,
+        /* isImplicit= */ false, /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+  }
+
+  private void check(Parameter parameter, String name, boolean isNamePresent, boolean isImplicit,
+      boolean isSynthetic, int modifier) {
+    Assert.assertEquals(name, parameter.getName());
+    Assert.assertEquals(isNamePresent, parameter.isNamePresent());
+    Assert.assertEquals(isSynthetic, parameter.isSynthetic());
+    Assert.assertEquals(isImplicit, parameter.isImplicit());
+    Assert.assertEquals(modifier, parameter.getModifiers());
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/java8/parameter/test002/Tests.java b/jack-tests/tests/com/android/jack/java8/parameter/test002/Tests.java
new file mode 100644
index 0000000..7a5f253
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/parameter/test002/Tests.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.java8.parameter.test002;
+
+import com.android.jack.java8.parameter.common.ParameterTestModifier;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.lang.reflect.Parameter;
+
+public class Tests {
+
+  enum Number {
+    ONE, TWO;
+  }
+
+  @Test
+  public void testEnumValueOf() throws NoSuchMethodException, SecurityException {
+    Method method = Number.class.getDeclaredMethod("valueOf", String.class);
+    Assert.assertEquals(1, method.getParameters().length);
+
+    check(method.getParameters()[0], "name", /* isNamePresent= */ true, /* isImplicit= */ true,
+        /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_IMPLICIT);
+  }
+
+  @Test
+  public void testEnumConstructor() throws NoSuchMethodException, SecurityException {
+    Constructor<?> constructor = Number.class.getDeclaredConstructor(String.class, int.class);
+    Assert.assertEquals(2, constructor.getParameters().length);
+
+    check(constructor.getParameters()[0], "enum$name", /* isNamePresent= */ true,
+        /* isImplicit= */ false, /* isSynthetic= */ true, ParameterTestModifier.MODIFIER_SYNTHETIC);
+
+    check(constructor.getParameters()[1], "enum$ordinal", /* isNamePresent= */ true,
+        /* isImplicit= */ false, /* isSynthetic= */ true, ParameterTestModifier.MODIFIER_SYNTHETIC);
+  }
+
+  private void check(Parameter parameter, String name, boolean isNamePresent, boolean isImplicit,
+      boolean isSynthetic, int modifier) {
+    Assert.assertEquals(name, parameter.getName());
+    Assert.assertEquals(isNamePresent, parameter.isNamePresent());
+    Assert.assertEquals(isSynthetic, parameter.isSynthetic());
+    Assert.assertEquals(isImplicit, parameter.isImplicit());
+    Assert.assertEquals(modifier, parameter.getModifiers());
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/java8/parameter/test003/Tests.java b/jack-tests/tests/com/android/jack/java8/parameter/test003/Tests.java
new file mode 100644
index 0000000..57749ed
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/parameter/test003/Tests.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.java8.parameter.test003;
+
+import com.android.jack.java8.parameter.common.ParameterTestModifier;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Parameter;
+
+interface I<T> {
+  T get(T t);
+}
+
+class A implements I<Integer> {
+  @Override
+  public Integer get(Integer t) {
+      return t;
+  }
+}
+public class Tests {
+
+  @Test
+  public void testBridge() throws NoSuchMethodException, SecurityException {
+    Method method = A.class.getDeclaredMethod("get", Object.class);
+
+    check(method.getParameters()[0], "t", /* isNamePresent= */ true, /* isImplicit= */ false,
+        /* isSynthetic= */ true, ParameterTestModifier.MODIFIER_SYNTHETIC);
+  }
+
+  @Test
+  public void testBridge2() throws NoSuchMethodException, SecurityException {
+    Method method = A.class.getDeclaredMethod("get", Integer.class);
+
+    check(method.getParameters()[0], "t", /* isNamePresent= */ true, /* isImplicit= */ false,
+        /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+  }
+
+  private void check(Parameter parameter, String name, boolean isNamePresent, boolean isImplicit,
+      boolean isSynthetic, int modifier) {
+    Assert.assertEquals(name, parameter.getName());
+    Assert.assertEquals(isNamePresent, parameter.isNamePresent());
+    Assert.assertEquals(isSynthetic, parameter.isSynthetic());
+    Assert.assertEquals(isImplicit, parameter.isImplicit());
+    Assert.assertEquals(modifier, parameter.getModifiers());
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/java8/parameter/test004/Tests.java b/jack-tests/tests/com/android/jack/java8/parameter/test004/Tests.java
new file mode 100644
index 0000000..0b528bf
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/parameter/test004/Tests.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.java8.parameter.test004;
+
+import com.android.jack.java8.parameter.common.ParameterTestModifier;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Parameter;
+
+public class Tests {
+
+  abstract class InstanceAnonymous {
+    public InstanceAnonymous(int value) {
+    }
+  }
+
+  @Test
+  public void testAnonymousWithInstanceSuper() throws NoSuchMethodException, SecurityException {
+    InstanceAnonymous ia = new InstanceAnonymous(0) {
+    };
+
+    // Could be a constructor with Test.class, int.class
+    Constructor<?> constructor =
+        ia.getClass().getDeclaredConstructor(Tests.class, Tests.class, int.class);
+    Assert.assertEquals(3, constructor.getParameters().length);
+
+    check(constructor.getParameters()[0], "this$0", /* isNamePresent= */ true,
+        /* isImplicit= */ true, /* isSynthetic= */ false,
+        ParameterTestModifier.MODIFIER_FINAL | ParameterTestModifier.MODIFIER_IMPLICIT);
+
+    // Could be this$1 rather than this$0_1
+    check(constructor.getParameters()[1], "this$0_1", /* isNamePresent= */ true,
+        /* isImplicit= */ true, /* isSynthetic= */ false,
+        ParameterTestModifier.MODIFIER_FINAL | ParameterTestModifier.MODIFIER_IMPLICIT);
+
+    // Could be value rather than $anonymous0
+    check(constructor.getParameters()[2], "$anonymous0", /* isNamePresent= */ true,
+        /* isImplicit= */ false, /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+  }
+
+  @Test
+  public void testAnonymousWithInstanceSuperLocal() throws NoSuchMethodException, SecurityException {
+    abstract class InstanceAnonymous {
+      public InstanceAnonymous(int value) {
+      }
+    }
+
+    InstanceAnonymous ia = new InstanceAnonymous(0) {
+    };
+
+    // Could be a constructor with Test.class, int.class
+    Constructor<?> constructor =
+        ia.getClass().getDeclaredConstructor(Tests.class, Tests.class, int.class);
+    Assert.assertEquals(3, constructor.getParameters().length);
+
+    check(constructor.getParameters()[0], "this$0", /* isNamePresent= */ true,
+        /* isImplicit= */ false, /* isSynthetic= */ true,
+        ParameterTestModifier.MODIFIER_FINAL | ParameterTestModifier.MODIFIER_SYNTHETIC);
+
+    // Could be this$1 rather than this$0_1
+    check(constructor.getParameters()[1], "this$0_1", /* isNamePresent= */ true,
+        /* isImplicit= */ false, /* isSynthetic= */ true,
+        ParameterTestModifier.MODIFIER_FINAL | ParameterTestModifier.MODIFIER_SYNTHETIC);
+
+    // Could be value rather than $anonymous0
+    check(constructor.getParameters()[2], "$anonymous0", /* isNamePresent= */ true,
+        /* isImplicit= */ false, /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+  }
+
+  private void check(Parameter parameter, String name, boolean isNamePresent, boolean isImplicit,
+      boolean isSynthetic, int modifier) {
+    Assert.assertEquals(name, parameter.getName());
+    Assert.assertEquals(isNamePresent, parameter.isNamePresent());
+    Assert.assertEquals(isSynthetic, parameter.isSynthetic());
+    Assert.assertEquals(isImplicit, parameter.isImplicit());
+    Assert.assertEquals(modifier, parameter.getModifiers());
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/java8/parameter/test005/Tests.java b/jack-tests/tests/com/android/jack/java8/parameter/test005/Tests.java
new file mode 100644
index 0000000..48d38d3
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/parameter/test005/Tests.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.java8.parameter.test005;
+
+import com.android.jack.java8.parameter.common.ParameterTestModifier;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.lang.reflect.Parameter;
+
+public class Tests {
+
+  public static int m1(int p1, int p2, int p3) {
+    return p1 + p2 + p3;
+  }
+
+
+  @Test
+  public void testStaticMethod() throws NoSuchMethodException, SecurityException {
+    Method method = Tests.class.getDeclaredMethod("m1", int.class, int.class, int.class);
+    Assert.assertEquals(3, method.getParameters().length);
+
+    check(method.getParameters()[0], "p1", /* isNamePresent= */ true, /* isImplicit= */ false,
+        /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+
+    check(method.getParameters()[1], "p2", /* isNamePresent= */ true, /* isImplicit= */ false,
+        /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+
+    check(method.getParameters()[2], "p3", /* isNamePresent= */ true, /* isImplicit= */ false,
+        /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+  }
+
+  private void check(Parameter parameter, String name, boolean isNamePresent, boolean isImplicit,
+      boolean isSynthetic, int modifier) {
+    Assert.assertEquals(name, parameter.getName());
+    Assert.assertEquals(isNamePresent, parameter.isNamePresent());
+    Assert.assertEquals(isSynthetic, parameter.isSynthetic());
+    Assert.assertEquals(isImplicit, parameter.isImplicit());
+    Assert.assertEquals(modifier, parameter.getModifiers());
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/java8/parameter/test006/Tests.java b/jack-tests/tests/com/android/jack/java8/parameter/test006/Tests.java
new file mode 100644
index 0000000..7e4b5dc
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/parameter/test006/Tests.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.java8.parameter.test006;
+
+import com.android.jack.java8.parameter.common.ParameterTestModifier;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.lang.reflect.Parameter;
+
+public class Tests {
+
+  private int field = 10;
+
+  public class InnerClass {
+      public int getValue() {
+          return field;
+      }
+  }
+
+  @Test
+  public void testStaticMethod() throws NoSuchMethodException, SecurityException {
+    Method[] methods = Tests.class.getDeclaredMethods();
+    for (Method method : methods) {
+        if (method.isSynthetic()) {
+            Parameter[] parameters = method.getParameters();
+            Assert.assertEquals(1, parameters.length);
+            check(parameters[0], "arg0", /* isNamePresent= */ false, /* isImplicit= */ false,
+                    /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+        }
+    }
+  }
+
+  private void check(Parameter parameter, String name, boolean isNamePresent, boolean isImplicit,
+      boolean isSynthetic, int modifier) {
+    Assert.assertEquals(name, parameter.getName());
+    Assert.assertEquals(isNamePresent, parameter.isNamePresent());
+    Assert.assertEquals(isSynthetic, parameter.isSynthetic());
+    Assert.assertEquals(isImplicit, parameter.isImplicit());
+    Assert.assertEquals(modifier, parameter.getModifiers());
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/java8/parameter/test007/Tests.java b/jack-tests/tests/com/android/jack/java8/parameter/test007/Tests.java
new file mode 100644
index 0000000..0f7de69
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/parameter/test007/Tests.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.java8.parameter.test007;
+
+import com.android.jack.java8.parameter.common.ParameterTestModifier;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.lang.reflect.Parameter;
+
+public class Tests {
+
+  private int field = 0;
+
+  public class InnerClass {
+      public void setValue() {
+          field = 10;
+      }
+  }
+
+  @Test
+  public void testStaticMethod() throws NoSuchMethodException, SecurityException {
+    Method[] methods = Tests.class.getDeclaredMethods();
+    for (Method method : methods) {
+      if (method.isSynthetic()) {
+        Parameter[] parameters = method.getParameters();
+        Assert.assertEquals(2, parameters.length);
+        check(parameters[0], "arg0", /* isNamePresent= */ false, /* isImplicit= */ false,
+            /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+        check(parameters[1], "arg1", /* isNamePresent= */ false, /* isImplicit= */ false,
+            /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+      }
+    }
+  }
+
+  private void check(Parameter parameter, String name, boolean isNamePresent, boolean isImplicit,
+      boolean isSynthetic, int modifier) {
+    Assert.assertEquals(name, parameter.getName());
+    Assert.assertEquals(isNamePresent, parameter.isNamePresent());
+    Assert.assertEquals(isSynthetic, parameter.isSynthetic());
+    Assert.assertEquals(isImplicit, parameter.isImplicit());
+    Assert.assertEquals(modifier, parameter.getModifiers());
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/java8/parameter/test008/Tests.java b/jack-tests/tests/com/android/jack/java8/parameter/test008/Tests.java
new file mode 100644
index 0000000..c60d42a
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/parameter/test008/Tests.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.java8.parameter.test008;
+
+import com.android.jack.java8.parameter.common.ParameterTestModifier;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.lang.reflect.Parameter;
+
+public class Tests {
+
+  private int addValue(int i) {
+    return 10 + i;
+  };
+
+  public class InnerClass {
+    public int setValue() {
+      return addValue(10);
+    }
+  }
+
+  @Test
+  public void testStaticMethod() throws NoSuchMethodException, SecurityException {
+    Method[] methods = Tests.class.getDeclaredMethods();
+    for (Method method : methods) {
+      if (method.isSynthetic()) {
+        Parameter[] parameters = method.getParameters();
+        Assert.assertEquals(2, parameters.length);
+        check(parameters[0], "arg0", /* isNamePresent= */ false, /* isImplicit= */ false,
+            /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+        check(parameters[1], "arg1", /* isNamePresent= */ false, /* isImplicit= */ false,
+            /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+      }
+    }
+  }
+
+  private void check(Parameter parameter, String name, boolean isNamePresent, boolean isImplicit,
+      boolean isSynthetic, int modifier) {
+    Assert.assertEquals(name, parameter.getName());
+    Assert.assertEquals(isNamePresent, parameter.isNamePresent());
+    Assert.assertEquals(isSynthetic, parameter.isSynthetic());
+    Assert.assertEquals(isImplicit, parameter.isImplicit());
+    Assert.assertEquals(modifier, parameter.getModifiers());
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/java8/parameter/test009/Tests.java b/jack-tests/tests/com/android/jack/java8/parameter/test009/Tests.java
new file mode 100644
index 0000000..4327c00
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/parameter/test009/Tests.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.java8.parameter.test009;
+
+import com.android.jack.java8.parameter.common.ParameterTestModifier;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.lang.reflect.Parameter;
+
+class MyBaseClass {
+
+  public void foo(String param1) {
+  }
+
+}
+public class Tests extends MyBaseClass {
+
+  @Test
+  public void testStaticMethod() throws NoSuchMethodException, SecurityException {
+    Method[] methods = Tests.class.getDeclaredMethods();
+    for (Method method : methods) {
+      if (method.isSynthetic()) {
+        Parameter[] parameters = method.getParameters();
+        Assert.assertEquals(1, parameters.length);
+        check(parameters[0], "param1", /* isNamePresent= */ true, /* isImplicit= */ false,
+            /* isSynthetic= */ true, ParameterTestModifier.MODIFIER_SYNTHETIC);
+      }
+    }
+  }
+
+  private void check(Parameter parameter, String name, boolean isNamePresent, boolean isImplicit,
+      boolean isSynthetic, int modifier) {
+    Assert.assertEquals(name, parameter.getName());
+    Assert.assertEquals(isNamePresent, parameter.isNamePresent());
+    Assert.assertEquals(isSynthetic, parameter.isSynthetic());
+    Assert.assertEquals(isImplicit, parameter.isImplicit());
+    Assert.assertEquals(modifier, parameter.getModifiers());
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/java8/parameter/test010/Tests.java b/jack-tests/tests/com/android/jack/java8/parameter/test010/Tests.java
new file mode 100644
index 0000000..050e157
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/java8/parameter/test010/Tests.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.java8.parameter.test010;
+
+import com.android.jack.java8.parameter.common.ParameterTestModifier;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Executable;
+import java.lang.reflect.Method;
+import java.lang.reflect.Parameter;
+
+public class Tests {
+
+  public static void m1(int a, double d, final float f, final long l) {
+  }
+
+  public void m2(final int a, double d, final float f, long l) {
+  }
+
+  @Test
+  public void testStaticMethod() throws NoSuchMethodException, SecurityException {
+    Method method =
+        Tests.class.getDeclaredMethod("m1", int.class, double.class, float.class, long.class);
+    Parameter[] parameters = method.getParameters();
+
+    Assert.assertEquals(4, parameters.length);
+
+    check(parameters[0], "a", /* isNamePresent= */ true, /* isImplicit= */ false,
+        /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+
+    check(parameters[1], "d", /* isNamePresent= */ true, /* isImplicit= */ false,
+        /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+
+    check(parameters[2], "f", /* isNamePresent= */ true, /* isImplicit= */ false,
+        /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_FINAL);
+
+    check(parameters[3], "l", /* isNamePresent= */ true, /* isImplicit= */ false,
+        /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_FINAL);
+  }
+
+  @Test
+  public void testIsntanceMethod() throws NoSuchMethodException, SecurityException {
+    Method method =
+        Tests.class.getDeclaredMethod("m2", int.class, double.class, float.class, long.class);
+    Parameter[] parameters = method.getParameters();
+
+    Assert.assertEquals(4, parameters.length);
+
+    check(parameters[0], "a", /* isNamePresent= */ true, /* isImplicit= */ false,
+        /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_FINAL);
+
+    check(parameters[1], "d", /* isNamePresent= */ true, /* isImplicit= */ false,
+        /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+
+    check(parameters[2], "f", /* isNamePresent= */ true, /* isImplicit= */ false,
+        /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_FINAL);
+
+    check(parameters[3], "l", /* isNamePresent= */ true, /* isImplicit= */ false,
+        /* isSynthetic= */ false, ParameterTestModifier.MODIFIER_NONE);
+  }
+
+  private void check(Parameter parameter, String name, boolean isNamePresent, boolean isImplicit,
+      boolean isSynthetic, int modifier) {
+    Assert.assertEquals(name, parameter.getName());
+    Assert.assertEquals(isNamePresent, parameter.isNamePresent());
+    Assert.assertEquals(isSynthetic, parameter.isSynthetic());
+    Assert.assertEquals(isImplicit, parameter.isImplicit());
+    Assert.assertEquals(modifier, parameter.getModifiers());
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/jill/JillTests.java b/jack-tests/tests/com/android/jack/jill/JillTests.java
index edbda2b..4bf05ff 100644
--- a/jack-tests/tests/com/android/jack/jill/JillTests.java
+++ b/jack-tests/tests/com/android/jack/jill/JillTests.java
@@ -17,9 +17,11 @@
 package com.android.jack.jill;
 
 import com.android.jack.test.TestsProperties;
+import com.android.jack.test.junit.KnownIssue;
 import com.android.jack.test.junit.Runtime;
 import com.android.jack.test.runner.RuntimeRunner;
 import com.android.jack.test.toolchain.AbstractTestTools;
+import com.android.jack.test.toolchain.IncrementalToolchain;
 import com.android.jack.test.toolchain.JackBasedToolchain;
 
 import junit.framework.Assert;
@@ -35,28 +37,39 @@
 
   @Test
   @Runtime
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test001() throws Exception {
     runJillTest("001");
   }
 
   @Test
   @Runtime
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test002() throws Exception {
     runJillTest("002");
   }
 
   @Test
   @Runtime
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test003() throws Exception {
     runJillTest("003");
   }
 
   @Test
   @Runtime
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test004() throws Exception {
     runJillTest("004");
   }
 
+  @Test
+  @Runtime
+  @KnownIssue(candidate=IncrementalToolchain.class)
+  public void test005() throws Exception {
+    runJillTest("005");
+  }
+
   private static void runJillTest(@Nonnull String testNumber) throws Exception {
     String jackFolder = getJackFolder(testNumber);
     String jasminFolder = getJasminFolder(testNumber);
@@ -77,7 +90,7 @@
     jackToolchain.addStaticLibs(jarInput);
     jackToolchain.srcToExe(dex, /* zipFile = */ true, testSourceDir);
 
-    List<RuntimeRunner> runnerList = AbstractTestTools.listRuntimeTestRunners(null);
+    List<RuntimeRunner> runnerList = AbstractTestTools.listRuntimeTestRunners();
     String[] names = { testClassName };
     for (RuntimeRunner runner : runnerList) {
       Assert.assertEquals(0,
diff --git a/jack-tests/tests/com/android/jack/jill/test005/jack/Test005.java b/jack-tests/tests/com/android/jack/jill/test005/jack/Test005.java
new file mode 100644
index 0000000..7dcd72a
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/jill/test005/jack/Test005.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.jill.test005.jack;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+public class Test005 {
+
+  @Test
+  public void test001() {
+    Assert.assertEquals(1, new External1().getValueInt1());
+    Assert.assertEquals(2, new External1().getValueInt2());
+    Assert.assertEquals(3, new External1().getValueInt3());
+    Assert.assertEquals(4, new External1().getValueInt4());
+    Assert.assertEquals(5, new External1().getValueInt5());
+    Assert.assertEquals(6, new External1().getValueInt6());
+    Assert.assertEquals(-2, new External1().getValueIntMinus2());
+    Assert.assertEquals(2L, new External1().getValueLong2());
+    Assert.assertEquals(1L, new External1().getValueLong1());
+    Assert.assertEquals(1L, new External1().getValueLong1Bis());
+    Assert.assertEquals(2L, new External1().getValueLong2());
+  }
+}
\ No newline at end of file
diff --git a/jack-tests/tests/com/android/jack/jill/test005/jasmin/External1.j b/jack-tests/tests/com/android/jack/jill/test005/jasmin/External1.j
new file mode 100644
index 0000000..40ffdf1
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/jill/test005/jasmin/External1.j
@@ -0,0 +1,142 @@
+; Copyright (C) 2017 The Android Open Source Project
+;
+; Licensed under the Apache License, Version 2.0 (the "License");
+; you may not use this file except in compliance with the License.
+; You may obtain a copy of the License at
+;
+;      http://www.apache.org/licenses/LICENSE-2.0
+;
+; Unless required by applicable law or agreed to in writing, software
+; distributed under the License is distributed on an "AS IS" BASIS,
+; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; See the License for the specific language governing permissions and
+; limitations under the License.
+
+.class public com/android/jack/jill/test005/jack/External1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public getValueInt1()I
+    .limit locals 1
+    .limit stack 2
+    iconst_1
+    dup
+    pop
+    ireturn
+.end method
+
+.method public getValueInt2()I
+    .limit locals 1
+    .limit stack 2
+    iconst_1
+    dup
+    iadd
+    ireturn
+.end method
+
+.method public getValueInt3()I
+    .limit locals 1
+    .limit stack 2
+    iconst_2
+    iconst_3
+    swap
+    pop
+    ireturn
+.end method
+
+.method public getValueIntMinus2()I
+    .limit locals 1
+    .limit stack 4
+    iconst_1
+    iconst_2
+    dup2
+    isub
+    isub
+    isub
+    ireturn
+.end method
+
+.method public getValueInt4()I
+    .limit locals 1
+    .limit stack 4
+    iconst_1
+    iconst_2
+    iconst_3
+    dup_x1
+    pop2
+    iadd
+    ireturn
+.end method
+
+.method public getValueInt5()I
+    .limit locals 1
+    .limit stack 5
+    iconst_1
+    iconst_2
+    iconst_3
+    dup2_x1
+    pop2
+    pop
+    iadd
+    ireturn
+.end method
+
+.method public getValueInt6()I
+    .limit locals 1
+    .limit stack 5
+    lconst_0
+    iconst_4
+    dup_x2
+    pop
+    pop2
+    iconst_2
+    iadd
+    ireturn
+.end method
+
+.method public getValueLong2()J
+    .limit locals 1
+    .limit stack 4
+    lconst_1
+    dup2
+    ladd
+    lreturn
+.end method
+
+.method public getValueLong1()J
+    .limit locals 1
+    .limit stack 4
+    lconst_1
+    dup2
+    pop2
+    lreturn
+.end method
+
+.method public getValueLong1Bis()J
+    .limit locals 1
+    .limit stack 5
+    iconst_2
+    lconst_1
+    dup2_x1
+    pop2
+    pop
+    lreturn
+.end method
+
+.method public getValueLong2()J
+    .limit locals 1
+    .limit stack 4
+    lconst_0
+    lconst_1
+    dup2_x2
+    pop2
+    pop2
+    lconst_1
+    ladd
+    lreturn
+.end method
\ No newline at end of file
diff --git a/jack-tests/tests/com/android/jack/jill/test005/jasmin/jarInput.jar b/jack-tests/tests/com/android/jack/jill/test005/jasmin/jarInput.jar
new file mode 100644
index 0000000..7916c73
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/jill/test005/jasmin/jarInput.jar
Binary files differ
diff --git a/jack-tests/tests/com/android/jack/library/LibraryTests.java b/jack-tests/tests/com/android/jack/library/LibraryTests.java
index 07b9453..330c051 100644
--- a/jack-tests/tests/com/android/jack/library/LibraryTests.java
+++ b/jack-tests/tests/com/android/jack/library/LibraryTests.java
@@ -21,9 +21,6 @@
 import com.android.jack.test.toolchain.IToolchain;
 import com.android.jack.test.toolchain.JackBasedToolchain;
 import com.android.jack.test.toolchain.JillBasedToolchain;
-import com.android.sched.util.RunnableHooks;
-import com.android.sched.util.file.FileOrDirectory.ChangePermission;
-import com.android.sched.util.file.FileOrDirectory.Existence;
 import com.android.sched.util.file.InputZipFile;
 import com.android.sched.vfs.ReadZipFS;
 import com.android.sched.vfs.VFS;
diff --git a/jack-tests/tests/com/android/jack/multidex/MultiDexTests.java b/jack-tests/tests/com/android/jack/multidex/MultiDexTests.java
index 3b0b548..6c76032 100644
--- a/jack-tests/tests/com/android/jack/multidex/MultiDexTests.java
+++ b/jack-tests/tests/com/android/jack/multidex/MultiDexTests.java
@@ -41,6 +41,8 @@
 import com.android.jack.test.toolchain.JillBasedToolchain;
 import com.android.jack.test.toolchain.Toolchain.SourceLevel;
 import com.android.sched.util.TextUtils;
+import com.android.sched.util.file.CannotCloseException;
+import com.android.sched.util.file.CannotReadException;
 
 import junit.framework.Assert;
 
@@ -72,7 +74,7 @@
     public void compare() throws DifferenceFoundException, ComparatorException {
       try {
         ListingComparator.compare(reference, getListingOfDex(candidate));
-      } catch (IOException e) {
+      } catch (IOException | CannotCloseException | CannotReadException e) {
         throw new ComparatorException(e);
       }
     }
@@ -252,7 +254,8 @@
     toolchain.addProperty(PreProcessor.FILE.getName(), configFile.getAbsolutePath());
   }
 
-  private String getListingOfDex(@Nonnull File dex) throws IOException {
+  private String getListingOfDex(@Nonnull File dex)
+      throws CannotCloseException, CannotReadException {
     assert dex.isFile();
     StringBuilder sb = new StringBuilder();
     for (ClassDef def : new DexBuffer(dex).classDefs()) {
diff --git a/jack-tests/tests/com/android/jack/optimizations/defuse/DefUseTests.java b/jack-tests/tests/com/android/jack/optimizations/defuse/DefUseTests.java
index 8ec6b1f..e28a82c 100644
--- a/jack-tests/tests/com/android/jack/optimizations/defuse/DefUseTests.java
+++ b/jack-tests/tests/com/android/jack/optimizations/defuse/DefUseTests.java
@@ -18,7 +18,6 @@
 
 import com.android.jack.test.category.RuntimeRegressionTest;
 import com.android.jack.test.helper.RuntimeTestHelper;
-import com.android.jack.test.junit.KnownIssue;
 import com.android.jack.test.junit.Runtime;
 import com.android.jack.test.runtime.RuntimeTest;
 import com.android.jack.test.runtime.RuntimeTestInfo;
diff --git a/jack-tests/tests/com/android/jack/optimizations/ifwithconstantsimplifier/IfWithConstantSimplifierTests.java b/jack-tests/tests/com/android/jack/optimizations/ifwithconstantsimplifier/IfWithConstantSimplifierTests.java
index fdb0926..5764b2f 100644
--- a/jack-tests/tests/com/android/jack/optimizations/ifwithconstantsimplifier/IfWithConstantSimplifierTests.java
+++ b/jack-tests/tests/com/android/jack/optimizations/ifwithconstantsimplifier/IfWithConstantSimplifierTests.java
@@ -34,6 +34,9 @@
   @Nonnull
   private final RuntimeTestInfo TEST001 = new IfWithConstantSimplifierTestRuntimeInfo("test001");
 
+  @Nonnull
+  private final RuntimeTestInfo TEST002 = new IfWithConstantSimplifierTestRuntimeInfo("test002");
+
   @Test
   @Runtime
   @Category(RuntimeRegressionTest.class)
@@ -41,9 +44,17 @@
     new RuntimeTestHelper(TEST001).compileAndRunTest();
   }
 
+  @Test
+  @Runtime
+  @Category(RuntimeRegressionTest.class)
+  public void test002() throws Exception {
+    new RuntimeTestHelper(TEST002).compileAndRunTest();
+  }
+
   @Override
   protected void fillRtTestInfos() {
     rtTestInfos.add(TEST001);
+    rtTestInfos.add(TEST002);
   }
 
   /**
diff --git a/jack-tests/tests/com/android/jack/optimizations/ifwithconstantsimplifier/test002/TestFuzz.java b/jack-tests/tests/com/android/jack/optimizations/ifwithconstantsimplifier/test002/TestFuzz.java
new file mode 100644
index 0000000..7c0f261
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/optimizations/ifwithconstantsimplifier/test002/TestFuzz.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.optimizations.ifwithconstantsimplifier.test002;
+
+public class TestFuzz {
+
+  static final int ITERATIONS_COUNT = 10;
+
+  public int mI = 0;
+
+  public void testThenBlockOptimization() {
+    mI = 0;
+    boolean lZ0 = true;
+    for (int i = 0; i < ITERATIONS_COUNT; ++i) {
+      if (false ? false : lZ0) {
+        ++mI;
+      } else {
+        --mI;
+      }
+    }
+  }
+
+  public void testElseBlockOptimization() {
+    mI = 0;
+    boolean lZ0 = false;
+    for (int i = 0; i < ITERATIONS_COUNT; ++i) {
+      if (false ? false : lZ0) {
+        ++mI;
+      } else {
+        --mI;
+      }
+    }
+  }
+
+  public void testThenBlockOptimization2() {
+    mI = 0;
+    for (int i = 0; i < ITERATIONS_COUNT; ++i) {
+      boolean b;
+      if (b = true) {
+        ++mI;
+      } else {
+        --mI;
+      }
+    }
+  }
+
+  public void testElseBlockOptimization2() {
+    mI = 0;
+    for (int i = 0; i < ITERATIONS_COUNT; ++i) {
+      boolean b;
+      if (b = false) {
+        ++mI;
+      } else {
+        --mI;
+      }
+    }
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/optimizations/ifwithconstantsimplifier/test002/Tests.java b/jack-tests/tests/com/android/jack/optimizations/ifwithconstantsimplifier/test002/Tests.java
new file mode 100644
index 0000000..2a0ac25
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/optimizations/ifwithconstantsimplifier/test002/Tests.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.optimizations.ifwithconstantsimplifier.test002;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+public class Tests {
+
+  @Test
+  public void testThen() {
+    TestFuzz t = new TestFuzz();
+    t.testThenBlockOptimization();
+    Assert.assertEquals(TestFuzz.ITERATIONS_COUNT, t.mI);
+  }
+
+  @Test
+  public void testElse() {
+    TestFuzz t = new TestFuzz();
+    t.testElseBlockOptimization();
+    Assert.assertEquals(-TestFuzz.ITERATIONS_COUNT, t.mI);
+  }
+
+  @Test
+  public void testThen2() {
+    TestFuzz t = new TestFuzz();
+    t.testThenBlockOptimization2();
+    Assert.assertEquals(TestFuzz.ITERATIONS_COUNT, t.mI);
+  }
+
+  @Test
+  public void testElse2() {
+    TestFuzz t = new TestFuzz();
+    t.testElseBlockOptimization2();
+    Assert.assertEquals(-TestFuzz.ITERATIONS_COUNT, t.mI);
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/optimizations/lambdas/LambdaTests.java b/jack-tests/tests/com/android/jack/optimizations/lambdas/LambdaTests.java
index 53b0461..19b2ec7 100644
--- a/jack-tests/tests/com/android/jack/optimizations/lambdas/LambdaTests.java
+++ b/jack-tests/tests/com/android/jack/optimizations/lambdas/LambdaTests.java
@@ -34,6 +34,7 @@
 import java.nio.charset.Charset;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.TreeMap;
 import javax.annotation.Nonnegative;
 import javax.annotation.Nonnull;
 
@@ -60,7 +61,7 @@
 
   @Nonnull
   private static String lambda(@Nonnull String pkg, @Nonnull String sha, @Nonnegative int i) {
-    return type(pkg, "-$Lambda$" + i + "$" + sha);
+    return type(pkg, "-$Lambda$" + sha + (i == 0 ? "" : ("$" + i)));
   }
 
   @Nonnull
@@ -71,11 +72,27 @@
     return names;
   }
 
+  @Nonnull
+  private static String orderedByTypeName(@Nonnull Class... classes) {
+    TreeMap<String, String> name2type = new TreeMap<>();
+    for (Class cls : classes) {
+      name2type.put(cls.name, cls.toString());
+    }
+    StringBuilder builder = new StringBuilder();
+    for (String str : name2type.values()) {
+      builder.append(str);
+    }
+    return builder.toString();
+  }
+
   private static class Class {
     @Nonnull
+    public final String name;
+    @Nonnull
     private final StringBuilder builder = new StringBuilder();
 
     Class(@Nonnull String name, @Nonnull String... interfaces) {
+      this.name = name;
       builder.append(name).append("\n");
       printImpl(interfaces, "  - implements:\n", false);
     }
@@ -119,110 +136,109 @@
   private static final String SHA_001 = "IKUiHr1YvEGLPsKj1XVCnvkJpxY";
 
   @Nonnull
-  private static final String TEST001_NONE = "" +
+  private static final String TEST001_NONE = orderedByTypeName(
       new Class(lambda(PKG_001, SHA_001, 0), types(PKG_001, "I0"))
-          .methods("<init>()V", "foo()V", "$m$0()V") +
+          .methods("<init>()V", "foo()V", "$m$0()V"),
       new Class(lambda(PKG_001, SHA_001, 1), types(PKG_001, "I0"))
-          .methods("<init>()V", "foo()V", "$m$0()V") +
+          .methods("<init>()V", "foo()V", "$m$0()V"),
       new Class(lambda(PKG_001, SHA_001, 10), types(PKG_001, "TestB"))
           .fields("-$f0:Ljava/lang/Object;", "-$f1:Ljava/lang/Object;")
           .methods("<init>(Ljava/lang/Object;Ljava/lang/Object;)V",
               "foo(Ljava/lang/String;)Ljava/lang/String;",
-              "$m$0(Ljava/lang/String;)Ljava/lang/String;") +
+              "$m$0(Ljava/lang/String;)Ljava/lang/String;"),
       new Class(lambda(PKG_001, SHA_001, 11), types(PKG_001, "TestB"))
           .fields("-$f0:Ljava/lang/Object;", "-$f1:Ljava/lang/Object;")
           .methods("<init>(Ljava/lang/Object;Ljava/lang/Object;)V",
               "foo(Ljava/lang/String;)Ljava/lang/String;",
-              "$m$0(Ljava/lang/String;)Ljava/lang/String;") +
+              "$m$0(Ljava/lang/String;)Ljava/lang/String;"),
       new Class(lambda(PKG_001, SHA_001, 12), types(PKG_001, "TestB"))
           .fields("-$f0:I", "-$f1:Ljava/lang/Object;")
           .methods("<init>(ILjava/lang/Object;)V",
               "foo(Ljava/lang/String;)Ljava/lang/String;",
-              "$m$0(Ljava/lang/String;)Ljava/lang/String;") +
+              "$m$0(Ljava/lang/String;)Ljava/lang/String;"),
       new Class(lambda(PKG_001, SHA_001, 13), types(PKG_001, "TestB"))
           .fields("-$f0:I", "-$f1:Ljava/lang/Object;")
           .methods("<init>(ILjava/lang/Object;)V",
               "foo(Ljava/lang/String;)Ljava/lang/String;",
-              "$m$0(Ljava/lang/String;)Ljava/lang/String;") +
+              "$m$0(Ljava/lang/String;)Ljava/lang/String;"),
       new Class(lambda(PKG_001, SHA_001, 14), types(PKG_001, "TestB"))
           .fields("-$f0:Z", "-$f1:B", "-$f2:C", "-$f3:D", "-$f4:F", "-$f5:I", "-$f6:J", "-$f7:S",
               "-$f8:Ljava/lang/Object;")
           .methods("<init>(ZBCDFIJSLjava/lang/Object;)V",
               "foo(Ljava/lang/String;)Ljava/lang/String;",
-              "$m$0(Ljava/lang/String;)Ljava/lang/String;") +
+              "$m$0(Ljava/lang/String;)Ljava/lang/String;"),
       new Class(lambda(PKG_001, SHA_001, 15), types(PKG_001, "TestB"))
           .fields("-$f0:Z", "-$f1:B", "-$f2:C", "-$f3:D", "-$f4:F", "-$f5:I", "-$f6:J", "-$f7:S",
               "-$f8:Ljava/lang/Object;")
           .methods("<init>(ZBCDFIJSLjava/lang/Object;)V",
               "foo(Ljava/lang/String;)Ljava/lang/String;",
-              "$m$0(Ljava/lang/String;)Ljava/lang/String;") +
+              "$m$0(Ljava/lang/String;)Ljava/lang/String;"),
       new Class(lambda(PKG_001, SHA_001, 16), types(PKG_001, "TestB"))
           .fields("-$f0:Z", "-$f1:B", "-$f2:C", "-$f3:D", "-$f4:F", "-$f5:I", "-$f6:J", "-$f7:S",
               "-$f8:Ljava/lang/Object;")
           .methods("<init>(ZBCDFIJSLjava/lang/Object;)V",
               "foo(Ljava/lang/String;)Ljava/lang/String;",
-              "$m$0(Ljava/lang/String;)Ljava/lang/String;") +
+              "$m$0(Ljava/lang/String;)Ljava/lang/String;"),
       new Class(lambda(PKG_001, SHA_001, 2), types(PKG_001, "I0"))
-          .methods("<init>()V", "foo()V", "$m$0()V") +
+          .methods("<init>()V", "foo()V", "$m$0()V"),
       new Class(lambda(PKG_001, SHA_001, 3), types(PKG_001, "I1"))
-          .methods("<init>()V", "bar(I)I", "$m$0(I)I") +
+          .methods("<init>()V", "bar(I)I", "$m$0(I)I"),
       new Class(lambda(PKG_001, SHA_001, 4), types(PKG_001, "IA"))
-          .methods("<init>()V", "foo()Ljava/lang/Object;", "$m$0()Ljava/lang/Object;") +
+          .methods("<init>()V", "foo()Ljava/lang/Object;", "$m$0()Ljava/lang/Object;"),
       new Class(lambda(PKG_001, SHA_001, 5), types(PKG_001, "IA"))
-          .methods("<init>()V", "foo()Ljava/lang/Object;", "$m$0()Ljava/lang/Object;") +
+          .methods("<init>()V", "foo()Ljava/lang/Object;", "$m$0()Ljava/lang/Object;"),
       new Class(lambda(PKG_001, SHA_001, 6), types(PKG_001, "IA"))
-          .methods("<init>()V", "foo()Ljava/lang/Object;", "$m$0()Ljava/lang/Object;") +
+          .methods("<init>()V", "foo()Ljava/lang/Object;", "$m$0()Ljava/lang/Object;"),
       new Class(lambda(PKG_001, SHA_001, 7), types(PKG_001, "IB"))
           .methods("<init>()V", "foo()Ljava/lang/Object;", "foo()Ljava/lang/Integer;",
-              "$m$0()Ljava/lang/Integer;", "$m$1()Ljava/lang/Object;") +
+              "$m$0()Ljava/lang/Integer;", "$m$1()Ljava/lang/Object;"),
       new Class(lambda(PKG_001, SHA_001, 8), types(PKG_001, "TestB"))
           .fields("-$f0:Ljava/lang/Object;")
           .methods("<init>(Ljava/lang/Object;)V", "foo(Ljava/lang/String;)Ljava/lang/String;",
-              "$m$0(Ljava/lang/String;)Ljava/lang/String;") +
+              "$m$0(Ljava/lang/String;)Ljava/lang/String;"),
       new Class(lambda(PKG_001, SHA_001, 9), types(PKG_001, "TestB"))
           .fields("-$f0:Ljava/lang/Object;")
           .methods("<init>(Ljava/lang/Object;)V", "foo(Ljava/lang/String;)Ljava/lang/String;",
-              "$m$0(Ljava/lang/String;)Ljava/lang/String;") +
-      "";
+              "$m$0(Ljava/lang/String;)Ljava/lang/String;"));
 
   @Nonnull
-  private static final String TEST001_PACKAGE = "" +
+  private static final String TEST001_PACKAGE = orderedByTypeName(
       new Class(lambda(PKG_001, SHA_001, 0), types(PKG_001, "I0"))
           .fields("$id:B")
-          .methods("<init>(B)V", "$m$0()V", "$m$1()V", "$m$2()V", "foo()V") +
+          .methods("<init>(B)V", "$m$0()V", "$m$1()V", "$m$2()V", "foo()V"),
       new Class(lambda(PKG_001, SHA_001, 1), types(PKG_001, "I1"))
-          .methods("<init>()V", "$m$0(I)I", "bar(I)I") +
+          .methods("<init>()V", "$m$0(I)I", "bar(I)I"),
       new Class(lambda(PKG_001, SHA_001, 2), types(PKG_001, "IA"))
           .fields("$id:B")
           .methods("<init>(B)V",
               "$m$0()Ljava/lang/Object;",
               "$m$1()Ljava/lang/Object;",
               "$m$2()Ljava/lang/Object;",
-              "foo()Ljava/lang/Object;") +
+              "foo()Ljava/lang/Object;"),
       new Class(lambda(PKG_001, SHA_001, 3), types(PKG_001, "IB"))
           .methods("<init>()V",
               "$m$0()Ljava/lang/Integer;",
               "$m$1()Ljava/lang/Object;",
               "foo()Ljava/lang/Integer;",
-              "foo()Ljava/lang/Object;") +
+              "foo()Ljava/lang/Object;"),
       new Class(lambda(PKG_001, SHA_001, 4), types(PKG_001, "TestB"))
           .fields("-$f0:Ljava/lang/Object;", "$id:B")
           .methods("<init>(BLjava/lang/Object;)V",
               "$m$0(Ljava/lang/String;)Ljava/lang/String;",
               "$m$1(Ljava/lang/String;)Ljava/lang/String;",
-              "foo(Ljava/lang/String;)Ljava/lang/String;") +
+              "foo(Ljava/lang/String;)Ljava/lang/String;"),
       new Class(lambda(PKG_001, SHA_001, 5), types(PKG_001, "TestB"))
           .fields("-$f0:Ljava/lang/Object;", "-$f1:Ljava/lang/Object;", "$id:B")
           .methods("<init>(BLjava/lang/Object;Ljava/lang/Object;)V",
               "$m$0(Ljava/lang/String;)Ljava/lang/String;",
               "$m$1(Ljava/lang/String;)Ljava/lang/String;",
-              "foo(Ljava/lang/String;)Ljava/lang/String;") +
+              "foo(Ljava/lang/String;)Ljava/lang/String;"),
       new Class(lambda(PKG_001, SHA_001, 6), types(PKG_001, "TestB"))
           .fields("-$f0:I", "-$f1:Ljava/lang/Object;", "$id:B")
           .methods("<init>(BILjava/lang/Object;)V",
               "$m$0(Ljava/lang/String;)Ljava/lang/String;",
               "$m$1(Ljava/lang/String;)Ljava/lang/String;",
-              "foo(Ljava/lang/String;)Ljava/lang/String;") +
+              "foo(Ljava/lang/String;)Ljava/lang/String;"),
       new Class(lambda(PKG_001, SHA_001, 7), types(PKG_001, "TestB"))
           .fields("-$f0:Z", "-$f1:B", "-$f2:C", "-$f3:D", "-$f4:F",
               "-$f5:I", "-$f6:J", "-$f7:S", "-$f8:Ljava/lang/Object;", "$id:B")
@@ -230,10 +246,10 @@
               "$m$0(Ljava/lang/String;)Ljava/lang/String;",
               "$m$1(Ljava/lang/String;)Ljava/lang/String;",
               "$m$2(Ljava/lang/String;)Ljava/lang/String;",
-              "foo(Ljava/lang/String;)Ljava/lang/String;");
+              "foo(Ljava/lang/String;)Ljava/lang/String;"));
 
   @Nonnull
-  private static final String TEST001_PACKAGE_INTERFACE = "" +
+  private static final String TEST001_PACKAGE_INTERFACE = orderedByTypeName(
       new Class(lambda(PKG_001, SHA_001, 0), types(PKG_001, "I0", "I1", "IA", "IB"))
           .fields("$id:B")
           .methods("<init>(B)V",
@@ -249,25 +265,25 @@
               "bar(I)I",
               "foo()Ljava/lang/Integer;",
               "foo()Ljava/lang/Object;",
-              "foo()V") +
+              "foo()V"),
       new Class(lambda(PKG_001, SHA_001, 1), types(PKG_001, "TestB"))
           .fields("$id:B", "-$f0:Ljava/lang/Object;")
           .methods("<init>(BLjava/lang/Object;)V",
               "$m$0(Ljava/lang/String;)Ljava/lang/String;",
               "$m$1(Ljava/lang/String;)Ljava/lang/String;",
-              "foo(Ljava/lang/String;)Ljava/lang/String;") +
+              "foo(Ljava/lang/String;)Ljava/lang/String;"),
       new Class(lambda(PKG_001, SHA_001, 2), types(PKG_001, "TestB"))
           .fields("$id:B", "-$f0:Ljava/lang/Object;", "-$f1:Ljava/lang/Object;")
           .methods("<init>(BLjava/lang/Object;Ljava/lang/Object;)V",
               "$m$0(Ljava/lang/String;)Ljava/lang/String;",
               "$m$1(Ljava/lang/String;)Ljava/lang/String;",
-              "foo(Ljava/lang/String;)Ljava/lang/String;") +
+              "foo(Ljava/lang/String;)Ljava/lang/String;"),
       new Class(lambda(PKG_001, SHA_001, 3), types(PKG_001, "TestB"))
           .fields("$id:B", "-$f0:I", "-$f1:Ljava/lang/Object;")
           .methods("<init>(BILjava/lang/Object;)V",
               "$m$0(Ljava/lang/String;)Ljava/lang/String;",
               "$m$1(Ljava/lang/String;)Ljava/lang/String;",
-              "foo(Ljava/lang/String;)Ljava/lang/String;") +
+              "foo(Ljava/lang/String;)Ljava/lang/String;"),
       new Class(lambda(PKG_001, SHA_001, 4), types(PKG_001, "TestB"))
           .fields("$id:B", "-$f0:Z", "-$f1:B", "-$f2:C", "-$f3:D",
               "-$f4:F", "-$f5:I", "-$f6:J", "-$f7:S", "-$f8:Ljava/lang/Object;")
@@ -275,7 +291,7 @@
               "$m$0(Ljava/lang/String;)Ljava/lang/String;",
               "$m$1(Ljava/lang/String;)Ljava/lang/String;",
               "$m$2(Ljava/lang/String;)Ljava/lang/String;",
-              "foo(Ljava/lang/String;)Ljava/lang/String;");
+              "foo(Ljava/lang/String;)Ljava/lang/String;"));
 
   @Test
   @Runtime
@@ -301,25 +317,24 @@
   private static final String SHA_002 = "rK0qQUOvfPrsTJWpyc2f5mlYYJ8";
 
   @Nonnull
-  private static final String TEST002_NONE = "" +
+  private static final String TEST002_NONE = orderedByTypeName(
       new Class(lambda(PKG_002, SHA_002, 0), types(PKG_002, "I0"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;") +
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;"),
       new Class(lambda(PKG_002, SHA_002, 1), types(PKG_002, "I1"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;") +
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;"),
       new Class(lambda(PKG_002, SHA_002, 2), types(PKG_002, "I2"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;") +
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;"),
       new Class(lambda(PKG_002, SHA_002, 3), types(PKG_002, "I3"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;") +
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;"),
       new Class(lambda(PKG_002, SHA_002, 4), types(PKG_002, "I4"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;") +
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;"),
       new Class(lambda(PKG_002, SHA_002, 5), types(PKG_002, "I5"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;") +
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;"),
       new Class(lambda(PKG_002, SHA_002, 6), types(PKG_002, "I6"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;") +
-      "";
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;"));
 
   @Nonnull
-  private static final String TEST002_PACKAGE_INTERFACE = "" +
+  private static final String TEST002_PACKAGE_INTERFACE = orderedByTypeName(
       new Class(lambda(PKG_002, SHA_002, 0),
           types(PKG_002, "I0", "I1", "I2", "I3", "I4", "I5", "I6"))
           .fields("$id:B")
@@ -331,7 +346,7 @@
               "$m$4()Ljava/lang/String;",
               "$m$5()Ljava/lang/String;",
               "$m$6()Ljava/lang/String;",
-              "foo()Ljava/lang/String;");
+              "foo()Ljava/lang/String;"));
 
   @Test
   @Runtime
@@ -363,24 +378,23 @@
   private static final String SHA_003 = "ONjwHPCPJTN6WB4tZ9kgaFMFflk";
 
   @Nonnull
-  private static final String TEST003_NONE = "" +
+  private static final String TEST003_NONE = orderedByTypeName(
       new Class(lambda(PKG_003, SHA_003, 0), types(PKG_003, "I0"))
-          .methods("<init>()V", "$m$0()Ljava/lang/Object;", "foo()Ljava/lang/Object;") +
+          .methods("<init>()V", "$m$0()Ljava/lang/Object;", "foo()Ljava/lang/Object;"),
       new Class(lambda(PKG_003, SHA_003, 1), types(PKG_003, "I1"))
-          .methods("<init>()V", "$m$0()Ljava/lang/Object;", "foo()Ljava/lang/Object;") +
+          .methods("<init>()V", "$m$0()Ljava/lang/Object;", "foo()Ljava/lang/Object;"),
       new Class(lambda(PKG_003, SHA_003, 2), types(PKG_003, "I3"))
-          .methods("<init>()V", "$m$0()Ljava/lang/Object;", "foo()Ljava/lang/Object;") +
-      "";
+          .methods("<init>()V", "$m$0()Ljava/lang/Object;", "foo()Ljava/lang/Object;"));
 
   @Nonnull
   private static final String TEST003_PACKAGE = TEST003_NONE;
 
   @Nonnull
-  private static final String TEST003_PACKAGE_INTERFACE = "" +
+  private static final String TEST003_PACKAGE_INTERFACE = orderedByTypeName(
       new Class(lambda(PKG_003, SHA_003, 0), types(PKG_003, "I0", "I1", "I3"))
           .fields("$id:B")
           .methods("<init>(B)V", "$m$0()Ljava/lang/Object;",
-              "$m$1()Ljava/lang/Object;", "$m$2()Ljava/lang/Object;", "foo()Ljava/lang/Object;");
+              "$m$1()Ljava/lang/Object;", "$m$2()Ljava/lang/Object;", "foo()Ljava/lang/Object;"));
 
   @Test
   @Runtime
@@ -406,20 +420,20 @@
   private static final String SHA_004 = "kE8tIAUzNtiGWJ6ulIU0a1IEtL4";
 
   @Nonnull
-  private static final String TEST004_PACKAGE = "" +
+  private static final String TEST004_PACKAGE = orderedByTypeName(
       new Class(lambda(PKG_004, SHA_004, 0), types(PKG_004, "I0"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;") +
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;"),
       new Class(lambda(PKG_004, SHA_004, 1), types(PKG_004, "I0", "MarkerA"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;") +
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;"),
       new Class(lambda(PKG_004, SHA_004, 2), types(PKG_004, "I0", "MarkerA", "MarkerB"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;") +
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;"),
       new Class(lambda(PKG_004, SHA_004, 3), types(PKG_004, "I0", "MarkerB"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;") +
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;"),
       new Class(lambda(PKG_004, SHA_004, 4), types(PKG_004, "I1", "MarkerA", "MarkerB"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;");
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "foo()Ljava/lang/String;"));
 
   @Nonnull
-  private static final String TEST004_LAMBDA_MERGE = "" +
+  private static final String TEST004_LAMBDA_MERGE = orderedByTypeName(
       new Class(lambda(PKG_004, SHA_004, 0), types(PKG_004, "I0", "I1", "MarkerA", "MarkerB"))
           .fields("$id:B")
           .methods("<init>(B)V",
@@ -428,10 +442,10 @@
               "$m$2()Ljava/lang/String;",
               "$m$3()Ljava/lang/String;",
               "$m$4()Ljava/lang/String;",
-              "foo()Ljava/lang/String;");
+              "foo()Ljava/lang/String;"));
 
   @Nonnull
-  private static final String TEST004_PACKAGE_INTERFACE_STATELESS = "" +
+  private static final String TEST004_PACKAGE_INTERFACE_STATELESS = orderedByTypeName(
       new Class(lambda(PKG_004, SHA_004, 0), types(PKG_004, "I0", "I1", "MarkerA", "MarkerB"))
           .fields("$id:B",
               "$INST$0:" + lambda(PKG_004, SHA_004, 0),
@@ -445,35 +459,35 @@
               "$m$2()Ljava/lang/String;",
               "$m$3()Ljava/lang/String;",
               "$m$4()Ljava/lang/String;",
-              "foo()Ljava/lang/String;");
+              "foo()Ljava/lang/String;"));
 
   @Nonnull
-  private static final String TEST004_PACKAGE_STATELESS = "" +
+  private static final String TEST004_PACKAGE_STATELESS = orderedByTypeName(
       new Class(lambda(PKG_004, SHA_004, 0), types(PKG_004, "I0"))
           .fields("$INST$0:" + lambda(PKG_004, SHA_004, 0))
           .methods("<clinit>()V", "<init>()V",
               "$m$0()Ljava/lang/String;",
-              "foo()Ljava/lang/String;") +
+              "foo()Ljava/lang/String;"),
       new Class(lambda(PKG_004, SHA_004, 1), types(PKG_004, "I0", "MarkerA"))
           .fields("$INST$0:" + lambda(PKG_004, SHA_004, 1))
           .methods("<clinit>()V", "<init>()V",
               "$m$0()Ljava/lang/String;",
-              "foo()Ljava/lang/String;") +
+              "foo()Ljava/lang/String;"),
       new Class(lambda(PKG_004, SHA_004, 2), types(PKG_004, "I0", "MarkerA", "MarkerB"))
           .fields("$INST$0:" + lambda(PKG_004, SHA_004, 2))
           .methods("<clinit>()V", "<init>()V",
               "$m$0()Ljava/lang/String;",
-              "foo()Ljava/lang/String;") +
+              "foo()Ljava/lang/String;"),
       new Class(lambda(PKG_004, SHA_004, 3), types(PKG_004, "I0", "MarkerB"))
           .fields("$INST$0:" + lambda(PKG_004, SHA_004, 3))
           .methods("<clinit>()V", "<init>()V",
               "$m$0()Ljava/lang/String;",
-              "foo()Ljava/lang/String;") +
+              "foo()Ljava/lang/String;"),
       new Class(lambda(PKG_004, SHA_004, 4), types(PKG_004, "I1", "MarkerA", "MarkerB"))
           .fields("$INST$0:" + lambda(PKG_004, SHA_004, 4))
           .methods("<clinit>()V", "<init>()V",
               "$m$0()Ljava/lang/String;",
-              "foo()Ljava/lang/String;");
+              "foo()Ljava/lang/String;"));
 
   @Test
   @Runtime
@@ -503,17 +517,17 @@
   private static final String SHA_005 = "mEUip-rZCi8VUKLKTaQF6NNk0aM";
 
   @Nonnull
-  private static final String TEST005_PACKAGE = "" +
+  private static final String TEST005_PACKAGE = orderedByTypeName(
       new Class(lambda(PKG_005, SHA_005, 0), types(PKG_005, "I0"))
           .fields("$id:B")
           .methods("<init>(B)V",
               "$m$0()Ljava/lang/String;",
               "$m$1()Ljava/lang/String;",
-              "foo()Ljava/lang/String;") +
+              "foo()Ljava/lang/String;"),
       new Class(lambda(PKG_005, SHA_005, 1), types(PKG_005, "I1"))
           .methods("<init>()V",
               "$m$0()Ljava/lang/String;",
-              "bar()Ljava/lang/String;") +
+              "bar()Ljava/lang/String;"),
       new Class(lambda(PKG_005, SHA_005, 2), types(PKG_005, "I0"))
           .fields("$id:B", "-$f0:Ljava/lang/Object;")
           .methods("<init>(BLjava/lang/Object;)V",
@@ -522,16 +536,16 @@
               "$m$2()Ljava/lang/String;",
               "$m$3()Ljava/lang/String;",
               "$m$4()Ljava/lang/String;",
-              "foo()Ljava/lang/String;") +
+              "foo()Ljava/lang/String;"),
       new Class(lambda(PKG_005, SHA_005, 3), types(PKG_005, "I1"))
           .fields("$id:B", "-$f0:Ljava/lang/Object;")
           .methods("<init>(BLjava/lang/Object;)V",
               "$m$0()Ljava/lang/String;",
               "$m$1()Ljava/lang/String;",
-              "bar()Ljava/lang/String;");
+              "bar()Ljava/lang/String;"));
 
   @Nonnull
-  private static final String TEST005_PACKAGE_INTERFACE = "" +
+  private static final String TEST005_PACKAGE_INTERFACE = orderedByTypeName(
       new Class(lambda(PKG_005, SHA_005, 0), types(PKG_005, "I0", "I1"))
           .fields("$id:B")
           .methods("<init>(B)V",
@@ -539,7 +553,7 @@
               "$m$1()Ljava/lang/String;",
               "$m$2()Ljava/lang/String;",
               "bar()Ljava/lang/String;",
-              "foo()Ljava/lang/String;") +
+              "foo()Ljava/lang/String;"),
       new Class(lambda(PKG_005, SHA_005, 1), types(PKG_005, "I0", "I1"))
           .fields("$id:B", "-$f0:Ljava/lang/Object;")
           .methods("<init>(BLjava/lang/Object;)V",
@@ -551,10 +565,10 @@
               "$m$5()Ljava/lang/String;",
               "$m$6()Ljava/lang/String;",
               "bar()Ljava/lang/String;",
-              "foo()Ljava/lang/String;");
+              "foo()Ljava/lang/String;"));
 
   @Nonnull
-  private static final String TEST005_PACKAGE_INTERFACE_STATELESS = "" +
+  private static final String TEST005_PACKAGE_INTERFACE_STATELESS = orderedByTypeName(
       new Class(lambda(PKG_005, SHA_005, 0), types(PKG_005, "I0", "I1"))
           .fields("$id:B",
               "$INST$0:" + lambda(PKG_005, SHA_005, 0),
@@ -565,7 +579,7 @@
               "$m$1()Ljava/lang/String;",
               "$m$2()Ljava/lang/String;",
               "bar()Ljava/lang/String;",
-              "foo()Ljava/lang/String;") +
+              "foo()Ljava/lang/String;"),
       new Class(lambda(PKG_005, SHA_005, 1), types(PKG_005, "I0", "I1"))
           .fields("$id:B", "-$f0:Ljava/lang/Object;")
           .methods("<init>(BLjava/lang/Object;)V",
@@ -577,7 +591,7 @@
               "$m$5()Ljava/lang/String;",
               "$m$6()Ljava/lang/String;",
               "bar()Ljava/lang/String;",
-              "foo()Ljava/lang/String;");
+              "foo()Ljava/lang/String;"));
 
   @Test
   @Runtime
@@ -605,47 +619,44 @@
   private static final String SHA_006_B = "N-kUn0qIgGhcb5JJeaFqgDggm3E";
 
   @Nonnull
-  private static final String TEST006_NONE = "" +
+  private static final String TEST006_NONE = orderedByTypeName(
       new Class(lambda(PKG_006, SHA_006_A, 0), types(PKG_006, "Producer"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "run()Ljava/lang/String;") +
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "run()Ljava/lang/String;"),
       new Class(lambda(PKG_006, SHA_006_A, 1), types(PKG_006, "Producer"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "run()Ljava/lang/String;") +
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "run()Ljava/lang/String;"),
       new Class(lambda(PKG_006, SHA_006_A, 2), types(PKG_006, "Producer"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "run()Ljava/lang/String;") +
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "run()Ljava/lang/String;"),
       new Class(lambda(PKG_006, SHA_006_A, 3), types(PKG_006, "Producer"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "run()Ljava/lang/String;") +
-      new Class(lambda(PKG_006, SHA_006_B, 4), types(PKG_006, "Producer"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "run()Ljava/lang/String;") +
-      new Class(lambda(PKG_006, SHA_006_B, 5), types(PKG_006, "Producer"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "run()Ljava/lang/String;") +
-      new Class(lambda(PKG_006, SHA_006_B, 6), types(PKG_006, "Producer"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "run()Ljava/lang/String;") +
-      "";
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "run()Ljava/lang/String;"),
+      new Class(lambda(PKG_006, SHA_006_B, 0), types(PKG_006, "Producer"))
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "run()Ljava/lang/String;"),
+      new Class(lambda(PKG_006, SHA_006_B, 1), types(PKG_006, "Producer"))
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "run()Ljava/lang/String;"),
+      new Class(lambda(PKG_006, SHA_006_B, 2), types(PKG_006, "Producer"))
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "run()Ljava/lang/String;"));
 
   @Nonnull
-  private static final String TEST006_TYPE = "" +
+  private static final String TEST006_TYPE = orderedByTypeName(
       new Class(lambda(PKG_006, SHA_006_A, 0), types(PKG_006, "Producer"))
           .fields("$id:B")
           .methods("<init>(B)V", "$m$0()Ljava/lang/String;", "$m$1()Ljava/lang/String;",
-              "$m$2()Ljava/lang/String;", "$m$3()Ljava/lang/String;", "run()Ljava/lang/String;") +
-      new Class(lambda(PKG_006, SHA_006_B, 1), types(PKG_006, "Producer"))
+              "$m$2()Ljava/lang/String;", "$m$3()Ljava/lang/String;", "run()Ljava/lang/String;"),
+      new Class(lambda(PKG_006, SHA_006_B, 0), types(PKG_006, "Producer"))
           .fields("$id:B")
           .methods("<init>(B)V", "$m$0()Ljava/lang/String;", "$m$1()Ljava/lang/String;",
-              "$m$2()Ljava/lang/String;", "run()Ljava/lang/String;") +
-      "";
+              "$m$2()Ljava/lang/String;", "run()Ljava/lang/String;"));
 
   @Nonnull
   private static final String SHA_006_ALL = "aRztprv3kbtT1k5EHkFo2yXbFfg";
 
   @Nonnull
-  private static final String TEST006_PACKAGE = "" +
+  private static final String TEST006_PACKAGE = orderedByTypeName(
       new Class(lambda(PKG_006, SHA_006_ALL, 0), types(PKG_006, "Producer"))
           .fields("$id:B")
           .methods("<init>(B)V", "$m$0()Ljava/lang/String;", "$m$1()Ljava/lang/String;",
               "$m$2()Ljava/lang/String;", "$m$3()Ljava/lang/String;",
               "$m$4()Ljava/lang/String;", "$m$5()Ljava/lang/String;",
-              "$m$6()Ljava/lang/String;", "run()Ljava/lang/String;") +
-      "";
+              "$m$6()Ljava/lang/String;", "run()Ljava/lang/String;"));
 
   @Test
   @Runtime
@@ -671,25 +682,23 @@
   private static final String SHA_007 = "VIf7bh4a9R2eWK07TARcQzoADH4";
 
   @Nonnull
-  private static final String TEST007_DEFAULT = "" +
+  private static final String TEST007_DEFAULT = orderedByTypeName(
       new Class(lambda(PKG_007, SHA_007, 0), types(PKG_007, "Ic", "Ia", "Ib"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "m()Ljava/lang/String;") +
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "m()Ljava/lang/String;"),
       new Class(lambda(PKG_007, SHA_007, 1), types(PKG_007, "Ic", "Iaa"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "m()Ljava/lang/String;") +
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "m()Ljava/lang/String;"),
       new Class(lambda(PKG_007, SHA_007, 2), types(PKG_007, "Ic", "Ib"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "m()Ljava/lang/String;") +
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "m()Ljava/lang/String;"),
       new Class(lambda(PKG_007, SHA_007, 3), types(PKG_007, "Ic", "Ib", "Ia"))
-          .methods("<init>()V", "$m$0()Ljava/lang/String;", "m()Ljava/lang/String;") +
-      "";
+          .methods("<init>()V", "$m$0()Ljava/lang/String;", "m()Ljava/lang/String;"));
 
   @Nonnull
-  private static final String TEST007_MERGE_INTERFACES = "" +
+  private static final String TEST007_MERGE_INTERFACES = orderedByTypeName(
       new Class(lambda(PKG_007, SHA_007, 0), types(PKG_007, "Ia", "Iaa", "Ib", "Ic"))
           .fields("$id:B")
           .methods("<init>(B)V", "m()Ljava/lang/String;",
               "$m$0()Ljava/lang/String;", "$m$1()Ljava/lang/String;",
-              "$m$2()Ljava/lang/String;", "$m$3()Ljava/lang/String;") +
-      "";
+              "$m$2()Ljava/lang/String;", "$m$3()Ljava/lang/String;"));
 
 
   @Test
diff --git a/jack-tests/tests/com/android/jack/optimizations/modifiers/ModifiersTighteningTests.java b/jack-tests/tests/com/android/jack/optimizations/modifiers/ModifiersTighteningTests.java
index 0281d32..bbe4531 100644
--- a/jack-tests/tests/com/android/jack/optimizations/modifiers/ModifiersTighteningTests.java
+++ b/jack-tests/tests/com/android/jack/optimizations/modifiers/ModifiersTighteningTests.java
@@ -26,6 +26,7 @@
 import com.android.jack.test.dex.DexTypeMethodsValidator;
 import com.android.jack.test.junit.KnownIssue;
 import com.android.jack.test.junit.Runtime;
+import com.android.jack.test.toolchain.IncrementalToolchain;
 import com.android.jack.test.toolchain.JillBasedToolchain;
 
 import org.junit.Test;
@@ -140,13 +141,7 @@
     mBase.update("g(Ljava/lang/String;)Ljava/util/AbstractList;", isFinal);
     mBase.update("g(Ljava/lang/String;)Ljava/util/ArrayList;", isFinal);
 
-    // NOTE: the legacy compiler create this method in 'D2' as well,
-    //       thus this one is not marked as final in 'D1'.
-    if (!usingLegacyCompiler()) {
-      mD1.update("foo()Ljava/lang/Object;", isFinal);
-    } else {
-      mD2.insert("foo()Ljava/lang/Object;", isFinal);
-    }
+    mD2.insert("foo()Ljava/lang/Object;", isFinal);
 
     mD2.update("bar()Ljava/lang/Object;", isFinal);
     mD2.update("foo()Lcom/android/jack/optimizations/modifiers/test002/jack/Base;", isFinal);
@@ -159,7 +154,7 @@
 
   @Test
   @Runtime
-  @KnownIssue(candidate = JillBasedToolchain.class)
+  @KnownIssue(candidate = {JillBasedToolchain.class, IncrementalToolchain.class})
   public void test003() throws Exception {
     String testPackage = "com.android.jack.optimizations.modifiers.test003";
 
diff --git a/jack-tests/tests/com/android/jack/optimizations/usedef/UseDefTests.java b/jack-tests/tests/com/android/jack/optimizations/usedef/UseDefTests.java
index ac73bc9..d3da55f 100644
--- a/jack-tests/tests/com/android/jack/optimizations/usedef/UseDefTests.java
+++ b/jack-tests/tests/com/android/jack/optimizations/usedef/UseDefTests.java
@@ -16,30 +16,92 @@
 
 package com.android.jack.optimizations.usedef;
 
+import org.jf.dexlib.CodeItem;
+import org.jf.dexlib.DexFile;
+import org.jf.dexlib.Code.Instruction;
+import org.jf.dexlib.Code.Opcode;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
+import java.io.File;
+
+import javax.annotation.Nonnull;
+
+import com.android.jack.TestTools;
 import com.android.jack.test.category.RuntimeRegressionTest;
+import com.android.jack.test.helper.FileChecker;
 import com.android.jack.test.helper.RuntimeTestHelper;
 import com.android.jack.test.junit.Runtime;
 import com.android.jack.test.runtime.RuntimeTest;
 import com.android.jack.test.runtime.RuntimeTestInfo;
 import com.android.jack.test.toolchain.AbstractTestTools;
 
+import junit.framework.Assert;
+
 public class UseDefTests extends RuntimeTest {
   private RuntimeTestInfo TEST001 = new RuntimeTestInfo(
       AbstractTestTools.getTestRootDir("com.android.jack.optimizations.usedef.test001"),
       "com.android.jack.optimizations.usedef.test001.dx.Tests");
 
+  private RuntimeTestInfo TEST002 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.optimizations.usedef.test002"),
+      "com.android.jack.optimizations.usedef.test002.Tests").setSrcDirName("");
+
+  private RuntimeTestInfo TEST003 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.optimizations.usedef.test003"),
+      "com.android.jack.optimizations.usedef.test003.Tests").setSrcDirName("")
+          .addFileChecker(new FileChecker() {
+
+            @Override
+            public void check(@Nonnull File file) throws Exception {
+              DexFile dexFile = new DexFile(file);
+              CodeItem ci = TestTools.getEncodedMethod(dexFile,
+                  "Lcom/android/jack/optimizations/usedef/test003/TestClass;",
+                  "callAndReturnConstLong", "()J").codeItem;
+              // Checks that we find the following instructions in the exact order.
+              Opcode[] expectedOpcodes =
+                  new Opcode[] {Opcode.INVOKE_STATIC, Opcode.CONST_WIDE_16, Opcode.RETURN_WIDE};
+              Instruction[] instructions = ci.getInstructions();
+              Assert.assertEquals(expectedOpcodes.length, instructions.length);
+              for (int i = 0; i < expectedOpcodes.length; ++i) {
+                Assert.assertEquals("Unexpected instruction at index " + i, expectedOpcodes[i],
+                    instructions[i].opcode);
+              }
+            }
+          });
+
     @Test
     @Runtime
     @Category(RuntimeRegressionTest.class)
     public void test001() throws Exception {
-      new RuntimeTestHelper(TEST001).compileAndRunTest();
+      runUseDefTest(TEST001);
+    }
+
+    @Test
+    @Runtime
+    @Category(RuntimeRegressionTest.class)
+    public void test002() throws Exception {
+      runUseDefTest(TEST002);
+    }
+
+    @Test
+    @Runtime
+    @Category(RuntimeRegressionTest.class)
+    public void test003() throws Exception {
+      runUseDefTest(TEST003);
+    }
+
+    private static void runUseDefTest(@Nonnull RuntimeTestInfo testInfo) throws Exception {
+      new RuntimeTestHelper(testInfo)
+        .addProperty("jack.optimization.use-def-simplifier", Boolean.toString(true))
+        .addProperty("jack.optimization.use-def-cst-simplifier", Boolean.toString(true))
+        .compileAndRunTest();
     }
 
     @Override
     protected void fillRtTestInfos() {
       rtTestInfos.add(TEST001);
+      rtTestInfos.add(TEST002);
+      rtTestInfos.add(TEST003);
     }
 }
diff --git a/jack-tests/tests/com/android/jack/clinit/jack/ClInitWithVariableInit.java b/jack-tests/tests/com/android/jack/optimizations/usedef/test002/TestClass.java
similarity index 76%
copy from jack-tests/tests/com/android/jack/clinit/jack/ClInitWithVariableInit.java
copy to jack-tests/tests/com/android/jack/optimizations/usedef/test002/TestClass.java
index 8c344dd..182e392 100644
--- a/jack-tests/tests/com/android/jack/clinit/jack/ClInitWithVariableInit.java
+++ b/jack-tests/tests/com/android/jack/optimizations/usedef/test002/TestClass.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2017 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,11 +14,11 @@
  * limitations under the License.
  */
 
-package com.android.jack.clinit.jack;
+package com.android.jack.optimizations.usedef.test002;
 
-public class ClInitWithVariableInit {
+public class TestClass {
+  int field;
 
-  static {
-    int lv = 5;
+  public void method() {
   }
 }
diff --git a/jack-tests/tests/com/android/jack/optimizations/usedef/test002/Tests.java b/jack-tests/tests/com/android/jack/optimizations/usedef/test002/Tests.java
new file mode 100644
index 0000000..cf6baba
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/optimizations/usedef/test002/Tests.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.optimizations.usedef.test002;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+public class Tests {
+
+  @Test
+  public void testNullFieldRead() {
+    try {
+      TestClass o = null;
+      int i = o.field;
+      Assert.fail(Integer.toString(i));
+    } catch (NullPointerException expected) {
+      // expected exception
+    }
+  }
+
+  @Test
+  public void testNullFieldWrite() {
+    try {
+      TestClass o = null;
+      o.field = 1;
+      Assert.fail();
+    } catch (NullPointerException expected) {
+      // expected exception
+    }
+  }
+
+  @Test
+  public void testNullArrayRead() {
+    try {
+      int[] arr = null;
+      int i = arr[0];
+      Assert.fail(Integer.toString(i));
+    } catch (NullPointerException expected) {
+      // expected exception
+    }
+  }
+
+  @Test
+  public void testNullArrayWrite() {
+    try {
+      int[] arr = null;
+      arr[0] = 1;
+      Assert.fail();
+    } catch (NullPointerException expected) {
+      // expected exception
+    }
+  }
+
+  @Test
+  public void testNullMethodCall() {
+    try {
+      TestClass o = null;
+      o.method();
+      Assert.fail();
+    } catch (NullPointerException expected) {
+      // expected exception
+    }
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/optimizations/usedef/test003/TestClass.java b/jack-tests/tests/com/android/jack/optimizations/usedef/test003/TestClass.java
new file mode 100644
index 0000000..1271b9f
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/optimizations/usedef/test003/TestClass.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.optimizations.usedef.test003;
+
+public class TestClass {
+  public static long callAndReturnConstLong() {
+    emptyMethod();
+    // Do NOT put '0L' below, otherwise we do not test the pattern exposing the bug that this
+    // regression test has been written for.
+    // Indeed, using int '0' forces Jack to generate an explicit cast (int to long) in the IR.
+    // The result of this cast will be stored in an intermediate synthetic variable when moving to
+    // three-address-code form. This variable will eventually be optimized away by our use/def
+    // optimizations.
+    return 0;
+  }
+
+  private static void emptyMethod() {
+  }
+}
diff --git a/sched/tests/com/android/sched/util/file/AllTests.java b/jack-tests/tests/com/android/jack/optimizations/usedef/test003/Tests.java
similarity index 65%
copy from sched/tests/com/android/sched/util/file/AllTests.java
copy to jack-tests/tests/com/android/jack/optimizations/usedef/test003/Tests.java
index 1f2ce79..45ce108 100644
--- a/sched/tests/com/android/sched/util/file/AllTests.java
+++ b/jack-tests/tests/com/android/jack/optimizations/usedef/test003/Tests.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2017 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,13 +14,16 @@
  * limitations under the License.
  */
 
-package com.android.sched.util.file;
+package com.android.jack.optimizations.usedef.test003;
 
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
+import junit.framework.Assert;
 
-@RunWith(Suite.class)
-@SuiteClasses(value = {FileUtilsTest.class})
-public class AllTests {
-}
\ No newline at end of file
+import org.junit.Test;
+
+public class Tests {
+
+  @Test
+  public void testConstants() {
+    Assert.assertEquals(0L, TestClass.callAndReturnConstLong());
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/optimizations/valuepropagation/ValuePropagationTests.java b/jack-tests/tests/com/android/jack/optimizations/valuepropagation/ValuePropagationTests.java
index 847c139..2ea4490 100644
--- a/jack-tests/tests/com/android/jack/optimizations/valuepropagation/ValuePropagationTests.java
+++ b/jack-tests/tests/com/android/jack/optimizations/valuepropagation/ValuePropagationTests.java
@@ -22,7 +22,9 @@
 import com.android.jack.test.dex.DexOutputBasedTest;
 import com.android.jack.test.dex.DexTypeMethodsValidator;
 import com.android.jack.test.dex.DexTypeMissingMethodValidator;
+import com.android.jack.test.junit.KnownIssue;
 import com.android.jack.test.junit.Runtime;
+import com.android.jack.test.toolchain.IncrementalToolchain;
 
 import org.junit.Test;
 
@@ -59,6 +61,7 @@
 
   @Test
   @Runtime
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test001() throws Exception {
     String test = "com.android.jack.optimizations.valuepropagation.test001";
     String aType = "Lcom/android/jack/optimizations/valuepropagation/test001/jack/A;";
@@ -80,6 +83,7 @@
 
   @Test
   @Runtime
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test002() throws Exception {
     String test = "com.android.jack.optimizations.valuepropagation.test002";
     String aType = "Lcom/android/jack/optimizations/valuepropagation/test002/jack/A;";
@@ -108,6 +112,7 @@
 
   @Test
   @Runtime
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test003() throws Exception {
     String test = "com.android.jack.optimizations.valuepropagation.test003";
     String aType = "Lcom/android/jack/optimizations/valuepropagation/test003/jack/A;";
@@ -146,6 +151,7 @@
 
   @Test
   @Runtime
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test004() throws Exception {
     String test = "com.android.jack.optimizations.valuepropagation.test004";
     String aType = "Lcom/android/jack/optimizations/valuepropagation/test004/jack/A;";
@@ -171,6 +177,7 @@
 
   @Test
   @Runtime
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test005() throws Exception {
     String test = "com.android.jack.optimizations.valuepropagation.test005";
     String aType = "Lcom/android/jack/optimizations/valuepropagation/test005/jack/A;";
@@ -192,6 +199,7 @@
 
   @Test
   @Runtime
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test101() throws Exception {
     String test = "com.android.jack.optimizations.valuepropagation.test101";
     String aType = "Lcom/android/jack/optimizations/valuepropagation/test101/jack/A;";
@@ -216,6 +224,7 @@
 
   @Test
   @Runtime
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test102() throws Exception {
     String test = "com.android.jack.optimizations.valuepropagation.test102";
     String aType = "Lcom/android/jack/optimizations/valuepropagation/test102/jack/A;";
@@ -263,6 +272,7 @@
 
   @Test
   @Runtime
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test103() throws Exception {
     String test = "com.android.jack.optimizations.valuepropagation.test103";
     String aType = "Lcom/android/jack/optimizations/valuepropagation/test103/jack/A;";
@@ -290,6 +300,7 @@
 
   @Test
   @Runtime
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test104() throws Exception {
     String test = "com.android.jack.optimizations.valuepropagation.test104";
     String aType = "Lcom/android/jack/optimizations/valuepropagation/test104/jack/A;";
@@ -320,6 +331,7 @@
 
   @Test
   @Runtime
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test105() throws Exception {
     String test = "com.android.jack.optimizations.valuepropagation.test105";
     String aType = "Lcom/android/jack/optimizations/valuepropagation/test105/jack/A;";
@@ -361,6 +373,7 @@
 
   @Test
   @Runtime
+  @KnownIssue(candidate=IncrementalToolchain.class)
   public void test106() throws Exception {
     String test = "com.android.jack.optimizations.valuepropagation.test106";
     String aType = "Lcom/android/jack/optimizations/valuepropagation/test106/jack/A;";
diff --git a/jack-tests/tests/com/android/jack/resource/ResourceTests.java b/jack-tests/tests/com/android/jack/resource/ResourceTests.java
index e61ab6e..e740159 100644
--- a/jack-tests/tests/com/android/jack/resource/ResourceTests.java
+++ b/jack-tests/tests/com/android/jack/resource/ResourceTests.java
@@ -20,10 +20,8 @@
 import com.android.jack.library.FileTypeDoesNotExistException;
 import com.android.jack.library.InputJackLibrary;
 import com.android.jack.shrob.obfuscation.NameProviderFactory;
-import com.android.jack.test.junit.KnownIssue;
 import com.android.jack.test.toolchain.AbstractTestTools;
 import com.android.jack.test.toolchain.IToolchain;
-import com.android.jack.test.toolchain.IncrementalToolchain;
 import com.android.jack.test.toolchain.JackApiToolchainBase;
 import com.android.jack.test.toolchain.JackBasedToolchain;
 import com.android.jack.test.toolchain.JillApiToolchainBase;
@@ -206,7 +204,6 @@
   }
 
   @Test
-  @KnownIssue(candidate=IncrementalToolchain.class)
   public void testJackArchiveToJackDir() throws Exception {
     // compile source file to a Jack archive and add resources
     File jackAr = createJackArchiveWithResources();
@@ -234,7 +231,6 @@
   }
 
   @Test
-  @KnownIssue(candidate=IncrementalToolchain.class)
   public void testJackDirToJackDir() throws Exception {
     // compile source file to a Jack dir
     File jackFolder = AbstractTestTools.createTempDir();
diff --git a/jack-tests/tests/com/android/jack/shrob/ObfuscationWithoutMappingTests.java b/jack-tests/tests/com/android/jack/shrob/ObfuscationWithoutMappingTests.java
index a5dab7b..7f6d639 100644
--- a/jack-tests/tests/com/android/jack/shrob/ObfuscationWithoutMappingTests.java
+++ b/jack-tests/tests/com/android/jack/shrob/ObfuscationWithoutMappingTests.java
@@ -130,6 +130,38 @@
     super.test15_001();
   }
 
+  @Test
+  @Runtime
+  public void test49_001() throws Exception {
+    runTest("049", "001", "");
+  }
+
+  @Test
+  @Runtime
+  public void test51() throws Exception {
+    String testPackageName = "com.android.jack.shrob.test051";
+    File testFolder = AbstractTestTools.getTestRootDir(testPackageName);
+    File proguardFlagsFile = new File(testFolder, "proguard.flags001");
+    ByteArrayOutputStream errOut = new ByteArrayOutputStream();
+
+    try {
+      List<Class<? extends IToolchain>> excludeList = new ArrayList<Class<? extends IToolchain>>(1);
+      excludeList.add(JackCliToolchain.class);
+      IToolchain toolchain =
+          AbstractTestTools.getCandidateToolchain(JackBasedToolchain.class, excludeList);
+      toolchain.setErrorStream(errOut);
+      toolchain.addToClasspath(toolchain.getDefaultBootClasspath())
+          .addProguardFlags(proguardFlagsFile).srcToExe(AbstractTestTools.createTempDir(),
+              /* zipFile = */false, AbstractTestTools.getTestRootDir(testPackageName + ".jack"));
+      Assert.fail();
+    } catch (JackAbortException jae) {
+      Assert.assertTrue(jae.getCause() instanceof MappingContextException);
+      String errString = errOut.toString();
+      Assert.assertTrue(errString.contains("could not be renamed to " +
+      "'com.android.jack.shrob.test051.jack.C' since the name was already used"));
+    }
+  }
+
   /**
    * Test Obfuscation when a whole package is missing from the classpath.
    */
@@ -235,6 +267,11 @@
     runTest("056", "001", "");
   }
 
+  @Test
+  public void test58_001() throws Exception {
+    runTest("058", "001", "");
+  }
+
   @Nonnull
   private static File shrobTestsDir =
       AbstractTestTools.getTestRootDir("com.android.jack.shrob");
diff --git a/jack-tests/tests/com/android/jack/shrob/ShrinkMultiDexTests.java b/jack-tests/tests/com/android/jack/shrob/ShrinkMultiDexTests.java
index 6936e92..8ea98c4 100644
--- a/jack-tests/tests/com/android/jack/shrob/ShrinkMultiDexTests.java
+++ b/jack-tests/tests/com/android/jack/shrob/ShrinkMultiDexTests.java
@@ -25,9 +25,11 @@
 import com.android.jack.test.category.SlowTests;
 import com.android.jack.test.comparator.ComparatorMapping;
 import com.android.jack.test.helper.SourceToDexComparisonTestHelper;
+import com.android.jack.test.junit.KnownIssue;
 import com.android.jack.test.toolchain.AbstractTestTools;
 import com.android.jack.test.toolchain.DummyToolchain;
 import com.android.jack.test.toolchain.IToolchain;
+import com.android.jack.test.toolchain.IncrementalToolchain;
 import com.android.jack.test.toolchain.JackBasedToolchain;
 import com.android.jack.test.toolchain.TwoStepsToolchain;
 
@@ -151,6 +153,12 @@
     super.test1_016();
   }
 
+  @Override
+  @KnownIssue(candidate=IncrementalToolchain.class)
+  public void test5_005() throws Exception {
+    super.test5_005();
+  }
+
   @Test
   @Override
   public void test8_001() throws Exception {
@@ -166,6 +174,12 @@
     super.test11_002();
   }
 
+  @Override
+  @KnownIssue(candidate=IncrementalToolchain.class)
+  public void test16_001() throws Exception {
+    super.test16_001();
+  }
+
   @Test
   @Override
   public void test17_001() throws Exception {
diff --git a/jack-tests/tests/com/android/jack/shrob/ShrobRuntimeTests.java b/jack-tests/tests/com/android/jack/shrob/ShrobRuntimeTests.java
index 874ca17..b576294 100644
--- a/jack-tests/tests/com/android/jack/shrob/ShrobRuntimeTests.java
+++ b/jack-tests/tests/com/android/jack/shrob/ShrobRuntimeTests.java
@@ -16,6 +16,7 @@
 
 package com.android.jack.shrob;
 
+import com.android.jack.shrob.shrink.MappingCollisionException;
 import com.android.jack.test.helper.RuntimeTestHelper;
 import com.android.jack.test.junit.KnownIssue;
 import com.android.jack.test.junit.Runtime;
@@ -24,6 +25,8 @@
 import com.android.jack.test.toolchain.AbstractTestTools;
 import com.android.jack.test.toolchain.JillBasedToolchain;
 
+import junit.framework.Assert;
+
 import org.junit.Test;
 
 public class ShrobRuntimeTests extends RuntimeTest {
@@ -42,6 +45,16 @@
       "com.android.jack.shrob.test016.dx.Tests").addProguardFlagsFileName("proguard.flags001")
       .addProguardFlagsFileName("applyMapping.flags");
 
+  private RuntimeTestInfo TEST016_003 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.shrob.test016"),
+      "com.android.jack.shrob.test016.dx.Tests").addProguardFlagsFileName("proguard.flags003")
+      .addProguardFlagsFileName("applyMapping.flags");
+
+  private RuntimeTestInfo TEST016_004 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.shrob.test016"),
+      "com.android.jack.shrob.test016.dx.Tests2").addProguardFlagsFileName("proguard.flags004")
+      .addProguardFlagsFileName("applyMapping.flags");
+
   private RuntimeTestInfo TEST025 = new RuntimeTestInfo(
       AbstractTestTools.getTestRootDir("com.android.jack.shrob.test025"),
       "com.android.jack.shrob.test025.dx.Tests").addProguardFlagsFileName("proguard.flags001");
@@ -92,6 +105,20 @@
 
   @Test
   @Runtime
+  public void test016_003() throws Exception {
+    new RuntimeTestHelper(TEST016_003)
+    .compileAndRunTest();
+  }
+
+  @Test
+  @Runtime
+  public void test016_004() throws Exception {
+    new RuntimeTestHelper(TEST016_004)
+    .compileAndRunTest();
+  }
+
+  @Test
+  @Runtime
   public void test025() throws Exception {
     new RuntimeTestHelper(TEST025)
     .compileAndRunTest();
diff --git a/jack-tests/tests/com/android/jack/shrob/test009/proguard.flags003 b/jack-tests/tests/com/android/jack/shrob/test009/proguard.flags003
index fc2359a..e6ff9df 100644
--- a/jack-tests/tests/com/android/jack/shrob/test009/proguard.flags003
+++ b/jack-tests/tests/com/android/jack/shrob/test009/proguard.flags003
@@ -1,3 +1,3 @@
 -keep class ** {
-  void m(int,...,long,...);
+  void m(int,...,long);
 }
\ No newline at end of file
diff --git a/jack-tests/tests/com/android/jack/shrob/test011/jack/A.java b/jack-tests/tests/com/android/jack/shrob/test011/jack/A.java
index c424112..f4d2521 100644
--- a/jack-tests/tests/com/android/jack/shrob/test011/jack/A.java
+++ b/jack-tests/tests/com/android/jack/shrob/test011/jack/A.java
@@ -26,7 +26,7 @@
     Object o = bClass.newInstance();
 
     try {
-      String cName = "com.android.jack.shrob.test011.jack.C";
+      final String cName = "com.android.jack.shrob.test011.jack.C";
       Class<?> cClass = Class.forName(cName);
       throw new RuntimeException();
     } catch (ClassNotFoundException e) {
diff --git a/jack-tests/tests/com/android/jack/shrob/test016/dx/Tests2.java b/jack-tests/tests/com/android/jack/shrob/test016/dx/Tests2.java
new file mode 100644
index 0000000..a705327
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/shrob/test016/dx/Tests2.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.shrob.test016.dx;
+
+import com.android.jack.shrob.test016.jack.KeepClass;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+public class Tests2 {
+
+  @Test
+  public void test() {
+    Assert.assertEquals("com.android.jack.shrob.test016.jack.A", KeepClass.value());
+    Assert.assertEquals("Lcom.android.jack.shrob.test016.jack.A;", KeepClass.value2());
+    Assert.assertEquals("com/android/jack/shrob/test016/jack/A", KeepClass.value3());
+    Assert.assertEquals("Lcom/android/jack/shrob/test016/jack/A;", KeepClass.value4());
+    Assert.assertEquals("A", KeepClass.value5());
+    Assert.assertEquals("[com.android.jack.shrob.test016.jack.A", KeepClass.value6());
+    Assert.assertEquals("com.android.jack.shrob.test016.jack.A[]", KeepClass.value7());
+    Assert.assertEquals("dfgdgcom.android.jack.shrob.test016.jack.A", KeepClass.value8());
+    Assert.assertEquals("com.android.jack.shrob.test016.jack.Afgdg", KeepClass.value9());
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/shrob/test016/proguard.flags003 b/jack-tests/tests/com/android/jack/shrob/test016/proguard.flags003
new file mode 100644
index 0000000..c5b4503
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/shrob/test016/proguard.flags003
@@ -0,0 +1,8 @@
+-dontshrink
+-keepclassmembernames class ** {
+  <methods>;
+}
+-adaptclassstrings com.android.jack.shrob.test016.jack.KeepClass
+-keepattributes RuntimeVisibleAnnotations
+
+-keepnames class com.android.jack.shrob.test016.jack.KeepClass,**.KeepClass2,**.KeepClass3
diff --git a/jack-tests/tests/com/android/jack/shrob/test016/proguard.flags004 b/jack-tests/tests/com/android/jack/shrob/test016/proguard.flags004
new file mode 100644
index 0000000..e27433b
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/shrob/test016/proguard.flags004
@@ -0,0 +1,8 @@
+-dontshrink
+-keepclassmembernames class ** {
+  <methods>;
+}
+-adaptclassstrings !**.KeepClass
+-keepattributes RuntimeVisibleAnnotations
+
+-keepnames class com.android.jack.shrob.test016.jack.KeepClass,**.KeepClass2,**.KeepClass3
diff --git a/jack-tests/tests/com/android/jack/shrob/test048/proguard.flags001 b/jack-tests/tests/com/android/jack/shrob/test048/proguard.flags001
index 24f0192..507dc64 100644
--- a/jack-tests/tests/com/android/jack/shrob/test048/proguard.flags001
+++ b/jack-tests/tests/com/android/jack/shrob/test048/proguard.flags001
@@ -1,5 +1,6 @@
 -dontshrink
 -applymapping mapping.txt
+-adaptclassstrings
 
 -keepclasseswithmembers public class * {
     public static java.lang.String testMethod();
diff --git a/jack-tests/tests/com/android/jack/shrob/test049/info.txt b/jack-tests/tests/com/android/jack/shrob/test049/info.txt
new file mode 100644
index 0000000..3591acd
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/shrob/test049/info.txt
@@ -0,0 +1,2 @@
+This test contains a class which contains an inner class and members using this
+inner class.
\ No newline at end of file
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-tests/tests/com/android/jack/shrob/test049/jack/MyClass.java
similarity index 78%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-tests/tests/com/android/jack/shrob/test049/jack/MyClass.java
index 0b9fd92..69a3cff 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-tests/tests/com/android/jack/shrob/test049/jack/MyClass.java
@@ -14,7 +14,12 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.shrob.test049.jack;
 
-public interface Interface {}
+public class MyClass implements MyInterface {
+  public static Inner<Object> field;
 
+  public static class Inner <T> {
+
+  }
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-tests/tests/com/android/jack/shrob/test049/jack/MyInterface.java
similarity index 88%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-tests/tests/com/android/jack/shrob/test049/jack/MyInterface.java
index 0b9fd92..98bd095 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-tests/tests/com/android/jack/shrob/test049/jack/MyInterface.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.shrob.test049.jack;
 
-public interface Interface {}
-
+public interface MyInterface {
+}
diff --git a/jack-tests/tests/com/android/jack/shrob/test049/proguard.flags001 b/jack-tests/tests/com/android/jack/shrob/test049/proguard.flags001
new file mode 100644
index 0000000..8d0683b
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/shrob/test049/proguard.flags001
@@ -0,0 +1,4 @@
+-dontshrink
+-keepclassmembernames class * implements **.MyInterface {
+  public static com.android.jack.shrob.test049.jack.MyClass$Inner field;
+}
diff --git a/jack-tests/tests/com/android/jack/shrob/test049/refsObfuscationWithoutMapping/expected-001.txt b/jack-tests/tests/com/android/jack/shrob/test049/refsObfuscationWithoutMapping/expected-001.txt
new file mode 100644
index 0000000..4e4ee9e
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/shrob/test049/refsObfuscationWithoutMapping/expected-001.txt
@@ -0,0 +1,6 @@
+com.android.jack.shrob.test049.jack.MyInterface -> pbz.naqebvq.wnpx.fuebo.grfg049.wnpx.ZlVagresnpr:
+com.android.jack.shrob.test049.jack.MyClass -> pbz.naqebvq.wnpx.fuebo.grfg049.wnpx.ZlPynff:
+    com.android.jack.shrob.test049.jack.MyClass$Inner field -> field
+    void <init>() -> <init>
+com.android.jack.shrob.test049.jack.MyClass$Inner -> pbz.naqebvq.wnpx.fuebo.grfg049.wnpx.ZlPynff$Vaare:
+    void <init>() -> <init>
\ No newline at end of file
diff --git a/jack-tests/tests/com/android/jack/shrob/test051/info.txt b/jack-tests/tests/com/android/jack/shrob/test051/info.txt
new file mode 100644
index 0000000..1069f85
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/shrob/test051/info.txt
@@ -0,0 +1 @@
+This test contains two classes obfuscated with the same name
\ No newline at end of file
diff --git a/jack-tests/tests/com/android/jack/clinit/jack/ClInit.java b/jack-tests/tests/com/android/jack/shrob/test051/jack/A.java
similarity index 82%
copy from jack-tests/tests/com/android/jack/clinit/jack/ClInit.java
copy to jack-tests/tests/com/android/jack/shrob/test051/jack/A.java
index 680f9cf..e059035 100644
--- a/jack-tests/tests/com/android/jack/clinit/jack/ClInit.java
+++ b/jack-tests/tests/com/android/jack/shrob/test051/jack/A.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2015 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,8 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.jack.clinit.jack;
+package com.android.jack.shrob.test051.jack;
 
-public class ClInit {
-
+public class A {
 }
diff --git a/jack-tests/tests/com/android/jack/clinit/jack/ClInit.java b/jack-tests/tests/com/android/jack/shrob/test051/jack/B.java
similarity index 82%
copy from jack-tests/tests/com/android/jack/clinit/jack/ClInit.java
copy to jack-tests/tests/com/android/jack/shrob/test051/jack/B.java
index 680f9cf..a9c3f3b 100644
--- a/jack-tests/tests/com/android/jack/clinit/jack/ClInit.java
+++ b/jack-tests/tests/com/android/jack/shrob/test051/jack/B.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2015 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,8 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.jack.clinit.jack;
+package com.android.jack.shrob.test051.jack;
 
-public class ClInit {
-
+public class B {
 }
diff --git a/jack-tests/tests/com/android/jack/shrob/test051/mapping.flags b/jack-tests/tests/com/android/jack/shrob/test051/mapping.flags
new file mode 100644
index 0000000..9c6ffe6
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/shrob/test051/mapping.flags
@@ -0,0 +1,2 @@
+com.android.jack.shrob.test051.jack.A -> com.android.jack.shrob.test051.jack.C:
+com.android.jack.shrob.test051.jack.B -> com.android.jack.shrob.test051.jack.C:
\ No newline at end of file
diff --git a/jack-tests/tests/com/android/jack/shrob/test051/proguard.flags001 b/jack-tests/tests/com/android/jack/shrob/test051/proguard.flags001
new file mode 100644
index 0000000..3ffecb5
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/shrob/test051/proguard.flags001
@@ -0,0 +1,2 @@
+-dontshrink
+-applymapping mapping.flags
\ No newline at end of file
diff --git a/jack-tests/tests/com/android/jack/shrob/test058/info.txt b/jack-tests/tests/com/android/jack/shrob/test058/info.txt
new file mode 100644
index 0000000..3591acd
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/shrob/test058/info.txt
@@ -0,0 +1,2 @@
+This test contains a class which contains an inner class and members using this
+inner class.
\ No newline at end of file
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-tests/tests/com/android/jack/shrob/test058/jack/MyClass.java
similarity index 72%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-tests/tests/com/android/jack/shrob/test058/jack/MyClass.java
index 0b9fd92..d6d7ddc 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-tests/tests/com/android/jack/shrob/test058/jack/MyClass.java
@@ -14,7 +14,16 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.shrob.test058.jack;
 
-public interface Interface {}
+public class MyClass implements MyInterface {
+  public static final Inner<Object> field = null;
 
+  public Inner m(Inner t) {
+    return null;
+  }
+
+  public static class Inner <T> {
+
+  }
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack-tests/tests/com/android/jack/shrob/test058/jack/MyInterface.java
similarity index 88%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack-tests/tests/com/android/jack/shrob/test058/jack/MyInterface.java
index 0b9fd92..38bc8d9 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack-tests/tests/com/android/jack/shrob/test058/jack/MyInterface.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.shrob.test058.jack;
 
-public interface Interface {}
-
+public interface MyInterface {
+}
diff --git a/jack-tests/tests/com/android/jack/shrob/test058/proguard.flags001 b/jack-tests/tests/com/android/jack/shrob/test058/proguard.flags001
new file mode 100644
index 0000000..d3092c4
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/shrob/test058/proguard.flags001
@@ -0,0 +1,6 @@
+-keep, allowobfuscation class **.MyClass
+-keepclassmembers class * implements **.MyInterface {
+  public static final *.* field;
+  public *.* m(...);
+  public *** m(*.*);
+}
\ No newline at end of file
diff --git a/jack-tests/tests/com/android/jack/shrob/test058/refsObfuscationWithoutMapping/expected-001.txt b/jack-tests/tests/com/android/jack/shrob/test058/refsObfuscationWithoutMapping/expected-001.txt
new file mode 100644
index 0000000..8b4b00c
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/shrob/test058/refsObfuscationWithoutMapping/expected-001.txt
@@ -0,0 +1,2 @@
+com.android.jack.shrob.test058.jack.MyClass -> pbz.naqebvq.wnpx.fuebo.grfg058.wnpx.ZlPynff:
+    void <init>() -> <init>
\ No newline at end of file
diff --git a/jack-tests/tests/com/android/jack/string/StringTests.java b/jack-tests/tests/com/android/jack/string/StringTests.java
index 93ce8ed..b459542 100644
--- a/jack-tests/tests/com/android/jack/string/StringTests.java
+++ b/jack-tests/tests/com/android/jack/string/StringTests.java
@@ -41,7 +41,9 @@
     AbstractTestTools.getTestRootDir("com.android.jack.string.concat003"),
     "com.android.jack.string.concat003.dx.Tests");
 
-
+  private RuntimeTestInfo CONCAT004 = new RuntimeTestInfo(
+      AbstractTestTools.getTestRootDir("com.android.jack.string.concat004"),
+      "com.android.jack.string.concat004.jack.Tests").setSrcDirName("");
 
   @Test
   public void testCompileNewString() throws Exception {
@@ -74,10 +76,18 @@
     new RuntimeTestHelper(CONCAT003).compileAndRunTest();
   }
 
+  @Test
+  @Runtime
+  @Category(RuntimeRegressionTest.class)
+  public void concat004() throws Exception {
+    new RuntimeTestHelper(CONCAT004).compileAndRunTest();
+  }
+
   @Override
   protected void fillRtTestInfos() {
     rtTestInfos.add(CONCAT001);
     rtTestInfos.add(CONCAT002);
     rtTestInfos.add(CONCAT003);
+    rtTestInfos.add(CONCAT004);
   }
 }
diff --git a/jack-tests/tests/com/android/jack/string/concat004/jack/Tests.java b/jack-tests/tests/com/android/jack/string/concat004/jack/Tests.java
new file mode 100644
index 0000000..08d0113
--- /dev/null
+++ b/jack-tests/tests/com/android/jack/string/concat004/jack/Tests.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.string.concat004.jack;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+public class Tests {
+
+  public String field = "a" + "b";
+
+  @Test
+  public void test1() {
+    String str = "a" + "b";
+    Assert.assertTrue(str == "ab");
+  }
+
+  @Test
+  public void test2() {
+    String str = "ab";
+    Assert.assertTrue(str == field);
+  }
+
+
+  @Test
+  public void test3() {
+    String str = "a" + null;
+    Assert.assertFalse(str == "anull");
+  }
+
+  @Test
+  public void test4() {
+    String str = (String) null + null;
+    Assert.assertFalse(str == "nullnull");
+  }
+}
diff --git a/jack-tests/tests/com/android/jack/switchstatement/SwitchstatementTests.java b/jack-tests/tests/com/android/jack/switchstatement/SwitchstatementTests.java
index e0cb5ce..caf9159 100644
--- a/jack-tests/tests/com/android/jack/switchstatement/SwitchstatementTests.java
+++ b/jack-tests/tests/com/android/jack/switchstatement/SwitchstatementTests.java
@@ -20,6 +20,7 @@
 
 import com.android.jack.TestTools;
 import com.android.jack.backend.dex.DexFileWriter;
+import com.android.jack.backend.dex.rop.CodeItemBuilder;
 import com.android.jack.test.category.RuntimeRegressionTest;
 import com.android.jack.test.helper.FileChecker;
 import com.android.jack.test.helper.RuntimeTestHelper;
@@ -1052,7 +1053,8 @@
   @Test
   @Runtime
   public void testRun028() throws Exception {
-    runTestCase(TEST028);
+    new RuntimeTestHelper(TEST028).addProperty(CodeItemBuilder.DEX_OPTIMIZE.getName(), "true")
+        .compileAndRunTest();
   }
 
   private void compileCode(
diff --git a/jack-tests/tests/com/android/jack/unary/UnaryTests.java b/jack-tests/tests/com/android/jack/unary/UnaryTests.java
index 9a8ca6d..5202994 100644
--- a/jack-tests/tests/com/android/jack/unary/UnaryTests.java
+++ b/jack-tests/tests/com/android/jack/unary/UnaryTests.java
@@ -17,6 +17,7 @@
 package com.android.jack.unary;
 
 import com.android.jack.TestTools;
+import com.android.jack.backend.dex.rop.CodeItemBuilder;
 import com.android.jack.test.category.RuntimeRegressionTest;
 import com.android.jack.test.helper.FileChecker;
 import com.android.jack.test.helper.RuntimeTestHelper;
@@ -144,6 +145,7 @@
   public void test005() throws Exception {
     new RuntimeTestHelper(TEST005)
         .addIgnoredCandidateToolchain(JillBasedToolchain.class)
+        .addProperty(CodeItemBuilder.DEX_OPTIMIZE.getName(), "true")
         .compileAndRunTest();
   }
 
diff --git a/jack-tests/tests/com/android/jack/unary/test001/dx/Tests.java b/jack-tests/tests/com/android/jack/unary/test001/dx/Tests.java
index 64d102f..6984884 100644
--- a/jack-tests/tests/com/android/jack/unary/test001/dx/Tests.java
+++ b/jack-tests/tests/com/android/jack/unary/test001/dx/Tests.java
@@ -52,6 +52,17 @@
   }
 
   @Test
+  public void floatPosNeg() {
+    // Note that we can't just use assertEquals directly on the floats since -0.0f == 0.0f is true.
+    Assert.assertEquals("-0.0",  "" + Unary.posNegZero());
+    Assert.assertEquals("-0.0",  "" + Unary.negPosZero());
+    Assert.assertEquals("0.0",  "" + Unary.negPosNegZero());
+    Assert.assertEquals("-0.0",  "" + Unary.posNegPosZero());
+    Assert.assertEquals("-100.0",  "" + Unary.posNegUnknown(100.0f));
+    Assert.assertEquals("100.0",  "" + Unary.posNegUnknown(-100.0f));
+  }
+
+  @Test
   public void doubleNeg() {
     Assert.assertEquals(-1.23e2,  Unary.neg(1.23e2), 0);
   }
diff --git a/jack-tests/tests/com/android/jack/unary/test001/jack/Unary.java b/jack-tests/tests/com/android/jack/unary/test001/jack/Unary.java
index b8ee050..add762d 100644
--- a/jack-tests/tests/com/android/jack/unary/test001/jack/Unary.java
+++ b/jack-tests/tests/com/android/jack/unary/test001/jack/Unary.java
@@ -44,4 +44,24 @@
   public static double neg(double a) {
     return -a;
   }
+
+  public static float posNegZero() {
+    return (+(-0.0f));
+  }
+
+  public static float negPosZero() {
+    return (-(+0.0f));
+  }
+
+  public static float negPosNegZero() {
+    return (-(+(-0.0f)));
+  }
+
+  public static float posNegPosZero() {
+    return (+(-(+0.0f)));
+  }
+
+  public static float posNegUnknown(float x) {
+    return (+(-(x)));
+  }
 }
diff --git a/jack/.classpath b/jack/.classpath
index e019a87..e0d1ee8 100644
--- a/jack/.classpath
+++ b/jack/.classpath
@@ -12,12 +12,11 @@
 	<classpathentry kind="lib" path="libs/antlr-runtime-lib.jar"/>
 	<classpathentry kind="lib" path="libs/args4j-lib.jar"/>
 	<classpathentry kind="lib" path="libs/dex-lib.jar"/>
-	<classpathentry kind="lib" path="libs/dx-ref.jar" sourcepath="/Scheduler/src"/>
 	<classpathentry kind="lib" path="libs/ecj.jar"/>
 	<classpathentry kind="lib" path="libs/guava-lib.jar"/>
 	<classpathentry kind="lib" path="libs/jsr305-lib.jar"/>
 	<classpathentry kind="lib" path="libs/junit4.jar"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry combineaccessrules="false" kind="src" path="/jack-api"/>
 	<classpathentry combineaccessrules="false" kind="src" path="/jill"/>
 	<classpathentry kind="output" path="bin"/>
diff --git a/jack/.settings/org.eclipse.jdt.core.prefs b/jack/.settings/org.eclipse.jdt.core.prefs
index 5ea7f7d..253bb09 100644
--- a/jack/.settings/org.eclipse.jdt.core.prefs
+++ b/jack/.settings/org.eclipse.jdt.core.prefs
@@ -7,9 +7,9 @@
 org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.compliance=1.8
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -100,7 +100,7 @@
 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
 org.eclipse.jdt.core.compiler.processAnnotations=enabled
-org.eclipse.jdt.core.compiler.source=1.7
+org.eclipse.jdt.core.compiler.source=1.8
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
 org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=1585
 org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field.count_dependent=1585|-1|1585
diff --git a/jack/build.gradle b/jack/build.gradle
new file mode 100644
index 0000000..0751ff9
--- /dev/null
+++ b/jack/build.gradle
@@ -0,0 +1,295 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+apply plugin: 'java'
+apply plugin: "org.inferred.processors"
+
+apply from: "$rootDir/gradle-script/checkstyle.gradle"
+apply from: "$rootDir/gradle-script/findbugs.gradle"
+
+findbugs {
+    excludeFilter = file("config/findbugs/findbugs-exclude.xml")
+}
+
+sourceCompatibility = 1.8
+targetCompatibility = 1.8
+
+sourceSets {
+    main {
+        java {
+            srcDirs = ['src']
+        }
+        resources {
+            srcDirs = ['rsc']
+            exclude "jack-version.properties"
+        }
+    }
+}
+
+configurations {
+    antlrComplete
+    schedBuildDep
+    jackFullArtifact
+    jackFullNoJarjarArtifact
+    jarjar
+}
+
+dependencies {
+  compile libs.antlr_runtime
+  compile project(':args4j')
+  compile project(':ecj').configurations.archives.artifacts.files
+  compile libs.guava
+  compile project(':jack-api')
+  compile project(':jill')
+  runtime project(':jill-api')
+  compileOnly libs.jsr305
+  compile project(':sched')
+
+  processor project(':sched:sched-ap')
+
+  // tools
+  schedBuildDep project(':sched:sched-ap')
+  antlrComplete(group: 'org.antlr', name: 'antlr-complete', version: '3.5.2', ext: 'jar', classifier: '')
+  jarjar project(':jarjar').configurations.archives.artifacts.files
+
+  testCompile libs.junit
+  testCompile project(':dexlib')
+  testCompile project(':dexcomparator')
+
+}
+
+jar {
+    classifier = 'lib'
+    manifest {
+        from 'etc/manifest.txt'
+    }
+    from ("${project.buildDir}") {
+      include "jack-version.properties"
+    }
+    into "/"
+}
+
+task preprocessorParserTask (type: Exec) {
+    String preProcessorDir = project.projectDir.toString() + "/src/com/android/jack/preprocessor"
+    commandLine 'java', '-jar', configurations.antlrComplete.singleFile, '-fo', preProcessorDir, preProcessorDir + '/PreProcessor.g'
+
+    inputs.file("${preProcessorDir}/PreProcessor.g")
+    outputs.files(fileTree(dir: preProcessorDir))
+}
+
+task proguardParserTask (type: Exec) {
+    String proguardDir = project.projectDir.toString() + "/src/com/android/jack/shrob/proguard"
+    commandLine 'java', '-jar', configurations.antlrComplete.singleFile, '-fo', proguardDir, proguardDir + '/Proguard.g'
+
+    inputs.file("${proguardDir}/Proguard.g")
+    outputs.files(fileTree(dir: proguardDir))
+}
+
+task schedBuildJackIntermediate (type: Exec, dependsOn: jar) {
+
+  List<String> inputJars = new ArrayList<String>()
+  inputJars.add(configurations.schedBuildDep.singleFile.getAbsolutePath())
+  inputJars.add(jar.archivePath)
+  configurations.runtime.files.each {
+        File file ->
+            inputJars.add(file.getAbsolutePath())
+  }
+
+  def cmdLine = ['java', '-jar', configurations.schedBuildDep.singleFile, jar.archivePath]
+  configurations.runtime.files.each {
+        File file ->
+            cmdLine << file.getAbsolutePath()
+  }
+  cmdLine << new File(project.buildDir, "jack-intermediate.jar").toString()
+  commandLine cmdLine
+
+  inputs.files(inputJars)
+  outputs.files(file("${project.buildDir}/jack-intermediate.jar"))
+}
+
+task defaultLibTask (type:Exec, dependsOn: schedBuildJackIntermediate) {
+    List<String> inputJars = new ArrayList<String>()
+    inputJars.add(new File(project.buildDir, "jack-intermediate.jar").getAbsolutePath())
+
+    def cmdLine = ['java', '-jar', new File(project.buildDir, "jack-intermediate.jar").toString(), '--verbose', 'error', '-D', 'jack.classpath.default-libraries=false', '--classpath', 'prebuilts/core-stubs-mini.jack', '--output-jack', new File(project.buildDir, "default-lib.jack").toString()]
+    fileTree(dir: 'src').matching{ include 'com/android/jack/annotations/**/*.java' }.visit {
+    FileVisitDetails details ->
+        if (!details.file.isDirectory()) {
+            cmdLine << details.file.absolutePath
+            inputJars.add(details.file.absolutePath)
+        }
+    }
+    commandLine cmdLine
+
+    inputs.files(inputJars)
+    outputs.files(new File(project.buildDir, "default-lib.jack"))
+}
+
+apply from: "$rootDir/gradle-script/versionfile.gradle"
+
+def addDefaultLib = copySpec {
+  from zipTree(new File(project.buildDir, "default-lib.jack").toString())
+  into '/jack-default-lib'
+}
+
+task fullJackJar(type: Jar, dependsOn: defaultLibTask) {
+  classifier = 'full'
+  from zipTree("${project.buildDir}/jack-intermediate.jar")
+  with addDefaultLib
+  manifest {
+      from 'etc/manifest.txt'
+  }
+}
+
+task jarjar(type:Exec, dependsOn: [':jarjar:jar', fullJackJar]) {
+  inputs.files 'jarjar-rules.txt', 'fullJackJar.archivePath'
+  outputs.file "${buildDir}/libs/jack.jar"
+  commandLine 'java', '-jar', configurations.jarjar.singleFile, 'process', "jarjar-rules.txt", fullJackJar.archivePath, file("${buildDir}/libs/jack.jar")
+}
+
+task jackDevJar (type: Jar, dependsOn: jarjar){
+  baseName 'jack'
+  classifier 'dev'
+  from (zipTree("${buildDir}/libs/jack.jar")) {
+    // Manage exclusion of packages to be hidden from plugin developers
+  }
+}
+
+compileJava.dependsOn preprocessorParserTask
+compileJava.dependsOn proguardParserTask
+jar.dependsOn createJackVersionFile
+assemble.dependsOn jarjar, jackDevJar
+
+task dist (type: Copy, dependsOn: assemble) {
+  from file("${buildDir}/libs/jack.jar")
+  from jackDevJar.archivePath
+  into file("${rootDir}/gradle-dist/")
+}
+
+artifacts {
+  jackFullArtifact file("${buildDir}/libs/jack.jar")
+  jackFullNoJarjarArtifact file("${buildDir}/libs/jack-full.jar")
+}
+
+task createJackDistDocDirectory {
+  doLast {
+    file("${rootDir}/gradle-dist/doc/jack").mkdirs()
+  }
+}
+
+task dumpCliUsage(type: Exec, dependsOn: ['createJackDistDocDirectory', 'fullJackJar']) {
+  commandLine 'java', '-jar', fullJackJar.archivePath, '--help'
+  doFirst {
+    standardOutput = new FileOutputStream("${rootDir}/gradle-dist/doc/jack/cli-usage.txt")
+  }
+}
+
+task dumpProperties(type: Exec, dependsOn: ['createJackDistDocDirectory', 'fullJackJar']) {
+  commandLine 'java', '-jar', fullJackJar.archivePath, '--help-properties', '--sanity-checks', 'off'
+  doFirst {
+    standardOutput = new FileOutputStream("${rootDir}/gradle-dist/doc/jack/properties.txt")
+  }
+}
+
+task dumpPropertiesDev(type: Exec, dependsOn: ['createJackDistDocDirectory', 'fullJackJar']) {
+  commandLine 'java', '-jar', fullJackJar.archivePath, '--help-properties', '--sanity-checks', 'on'
+  doFirst {
+    standardOutput = new FileOutputStream("${rootDir}/gradle-dist/doc/jack/properties-dev.txt")
+  }
+}
+
+javadoc {
+  dependsOn 'dumpCliUsage', 'dumpProperties', 'dumpPropertiesDev'
+  failOnError false
+  destinationDir = file("${rootDir}/gradle-dist/doc/jack/jack-internal/jack")
+}
+
+project(':jack:jackunittests') {
+  apply plugin: 'java'
+  apply plugin: "org.inferred.processors"
+  apply plugin: 'com.github.johnrengelman.shadow'
+
+  sourceSets {
+      main {
+          java {
+              srcDirs = [project(':jack').file('tests')]
+          }
+      }
+  }
+
+  dependencies {
+
+    compile project(':jack')
+    compile libs.junit
+    compile project(':dexlib')
+    compile project(':dexcomparator')
+    compileOnly libs.jsr305
+    processor project(':sched:sched-ap')
+
+  }
+
+  assemble.dependsOn shadowJar
+
+}
+
+project(':jack:jack-annotations') {
+  apply plugin: 'java'
+  apply plugin: 'com.github.johnrengelman.shadow'
+
+  sourceCompatibility = 1.8
+  targetCompatibility = 1.8
+
+  compileJava.options.encoding = 'UTF-8'
+
+  sourceSets {
+    main {
+      java {
+        srcDirs = [project(':jack').file('src')]
+        include 'com/android/jack/annotations/**/*.java'
+      }
+    }
+  }
+
+  apply from: "$rootDir/gradle-script/versionfile.gradle"
+
+  jar {
+    classifier 'lib'
+    dependsOn createJackVersionFile
+    from ("${project.buildDir}") {
+      include "jack-annotations-version.properties"
+    }
+  }
+  shadowJar {
+    classifier ''
+    dependsOn createJackVersionFile
+    from ("${project.buildDir}") {
+      include "jack-annotations-version.properties"
+    }
+  }
+
+  javadoc {
+    failOnError false
+    destinationDir = file("${rootDir}/gradle-dist/doc/jack/jack-external/jack-annotations")
+  }
+
+  task dist (type: Copy) {
+    from shadowJar.archivePath
+    into file("${rootDir}/gradle-dist/")
+  }
+
+  dist.dependsOn shadowJar
+
+}
diff --git a/jack/config/findbugs/findbugs-exclude.xml b/jack/config/findbugs/findbugs-exclude.xml
new file mode 100644
index 0000000..1e3e231
--- /dev/null
+++ b/jack/config/findbugs/findbugs-exclude.xml
@@ -0,0 +1,18 @@
+<FindBugsFilter>
+<!-- Ignore Antlr generated files -->
+<Match>
+    <Class name="~com\.android\.jack\.shrob\.proguard\.ProguardLexer.*"/>
+</Match>
+<Match>
+    <Class name="~com\.android\.jack\.shrob\.proguard\.ProguardParser.*"/>
+</Match>
+<Match>
+    <Class name="~com\.android\.jack\.preprocessor\.PreProcessorLexer.*"/>
+</Match>
+<Match>
+    <Class name="~com\.android\.jack\.preprocessor\.PreProcessorParser.*"/>
+</Match>
+<Match>
+    <Class name="~com\.android\.jack\.preprocessor\.PreProcessor_Java.*"/>
+</Match>
+</FindBugsFilter>
\ No newline at end of file
diff --git a/jack/jarjar-rules.txt b/jack/jarjar-rules.txt
new file mode 100644
index 0000000..0ae7eb3
--- /dev/null
+++ b/jack/jarjar-rules.txt
@@ -0,0 +1,9 @@
+rule com.google.common.** com.android.jack.google.common.@1
+rule com.google.thirdparty.** com.android.jack.google.thirdparty.@1
+rule com.tonicsystems.** com.android.jack.tonicsystems.@1
+rule freemarker.** com.android.jack.freemarker.@1
+rule org.antlr.** com.android.jack.antlr.@1
+rule org.kohsuke.** com.android.jack.kohsuke.@1
+rule org.objectweb.** com.android.jack.objectweb.@1
+rule org.uncommons.** com.android.jack.uncommons.@1
+rule org.eclipse.** com.android.jack.eclipse.@1
diff --git a/jack/prebuilts/core-stubs-mini.jack b/jack/prebuilts/core-stubs-mini.jack
index 2f5db0e..698808e 100644
--- a/jack/prebuilts/core-stubs-mini.jack
+++ b/jack/prebuilts/core-stubs-mini.jack
Binary files differ
diff --git a/jack/prebuilts/core-stubs-mini.jar b/jack/prebuilts/core-stubs-mini.jar
index a8638dc..3772849 100644
--- a/jack/prebuilts/core-stubs-mini.jar
+++ b/jack/prebuilts/core-stubs-mini.jar
Binary files differ
diff --git a/jack/src/com/android/jack/Jack.java b/jack/src/com/android/jack/Jack.java
index 2b040d5..ba06388 100644
--- a/jack/src/com/android/jack/Jack.java
+++ b/jack/src/com/android/jack/Jack.java
@@ -22,7 +22,6 @@
 import com.google.common.eventbus.EventBus;
 
 import com.android.jack.Options.AssertionPolicy;
-import com.android.jack.Options.SwitchEnumOptStrategy;
 import com.android.jack.abort.Aborter;
 import com.android.jack.analysis.DefinitionMarkerAdder;
 import com.android.jack.analysis.DefinitionMarkerRemover;
@@ -68,8 +67,11 @@
 import com.android.jack.backend.dex.MultiDexAnnotationsFinder;
 import com.android.jack.backend.dex.MultiDexLegacy;
 import com.android.jack.backend.dex.MultiDexWritingTool;
+import com.android.jack.backend.dex.OrphanDexFileWriter;
 import com.android.jack.backend.dex.annotations.DefaultValueAnnotationAdder;
+import com.android.jack.backend.dex.annotations.ParameterMetadataAnnotationsAdder;
 import com.android.jack.backend.dex.annotations.ReflectAnnotationsAdder;
+import com.android.jack.backend.dex.annotations.tag.ParameterMetadataFeature;
 import com.android.jack.backend.dex.compatibility.AndroidCompatibilityChecker;
 import com.android.jack.backend.dex.compatibility.CheckAndroidCompatibility;
 import com.android.jack.backend.dex.multidex.legacy.AnnotatedFinder;
@@ -180,27 +182,29 @@
 import com.android.jack.shrob.obfuscation.annotation.AnnotationDefaultValueRemover;
 import com.android.jack.shrob.obfuscation.annotation.FieldAnnotationRemover;
 import com.android.jack.shrob.obfuscation.annotation.FieldGenericSignatureRemover;
-import com.android.jack.shrob.obfuscation.annotation.LineNumberRemover;
+import com.android.jack.shrob.obfuscation.annotation.LocalVariableAndThisLineNumberRemover;
 import com.android.jack.shrob.obfuscation.annotation.LocalVariableAndThisNameRemover;
-import com.android.jack.shrob.obfuscation.annotation.LocalVariableGenericSignatureRemover;
 import com.android.jack.shrob.obfuscation.annotation.MethodAnnotationRemover;
 import com.android.jack.shrob.obfuscation.annotation.MethodGenericSignatureRemover;
 import com.android.jack.shrob.obfuscation.annotation.ParameterAnnotationRemover;
+import com.android.jack.shrob.obfuscation.annotation.ParameterLineNumberRemover;
 import com.android.jack.shrob.obfuscation.annotation.ParameterNameRemover;
 import com.android.jack.shrob.obfuscation.annotation.RemoveAnnotationDefaultValue;
 import com.android.jack.shrob.obfuscation.annotation.RemoveEnclosingMethodFeature;
 import com.android.jack.shrob.obfuscation.annotation.RemoveEnclosingType;
 import com.android.jack.shrob.obfuscation.annotation.RemoveGenericSignature;
-import com.android.jack.shrob.obfuscation.annotation.RemoveLineNumber;
-import com.android.jack.shrob.obfuscation.annotation.RemoveLocalVariableGenericSignature;
+import com.android.jack.shrob.obfuscation.annotation.RemoveLocalLineNumber;
 import com.android.jack.shrob.obfuscation.annotation.RemoveLocalVariableName;
+import com.android.jack.shrob.obfuscation.annotation.RemoveParameterLineNumber;
 import com.android.jack.shrob.obfuscation.annotation.RemoveParameterName;
 import com.android.jack.shrob.obfuscation.annotation.RemoveThrownException;
+import com.android.jack.shrob.obfuscation.annotation.RemoveVariableGenericSignature;
 import com.android.jack.shrob.obfuscation.annotation.ThrownExceptionRemover;
 import com.android.jack.shrob.obfuscation.annotation.TypeAnnotationRemover;
 import com.android.jack.shrob.obfuscation.annotation.TypeEnclosingMethodRemover;
 import com.android.jack.shrob.obfuscation.annotation.TypeEnclosingTypeRemover;
 import com.android.jack.shrob.obfuscation.annotation.TypeGenericSignatureRemover;
+import com.android.jack.shrob.obfuscation.annotation.VariableGenericSignatureRemover;
 import com.android.jack.shrob.obfuscation.resource.AdaptResourceFileContent;
 import com.android.jack.shrob.obfuscation.resource.ResourceContentRefiner;
 import com.android.jack.shrob.obfuscation.resource.ResourceRefiner;
@@ -226,8 +230,6 @@
 import com.android.jack.transformations.EmptyClinitRemover;
 import com.android.jack.transformations.FieldInitializer;
 import com.android.jack.transformations.Jarjar;
-import com.android.jack.transformations.OptimizedSwitchEnumFeedbackFeature;
-import com.android.jack.transformations.OptimizedSwitchEnumNonFeedbackFeature;
 import com.android.jack.transformations.SanityChecks;
 import com.android.jack.transformations.UnusedLocalRemover;
 import com.android.jack.transformations.VisibilityBridgeAdder;
@@ -286,7 +288,10 @@
 import com.android.jack.transformations.enums.SwitchEnumSupport;
 import com.android.jack.transformations.enums.UsedEnumFieldCollector;
 import com.android.jack.transformations.enums.UsedEnumFieldMarkerRemover;
+import com.android.jack.transformations.enums.opt.OptimizedSwitchEnumFeedbackFeature;
+import com.android.jack.transformations.enums.opt.OptimizedSwitchEnumNonFeedbackFeature;
 import com.android.jack.transformations.enums.opt.OptimizedSwitchEnumSupport;
+import com.android.jack.transformations.enums.opt.SwitchEnumOptStrategy;
 import com.android.jack.transformations.enums.opt.SwitchEnumUsageCollector;
 import com.android.jack.transformations.exceptions.ExceptionRuntimeValueAdder;
 import com.android.jack.transformations.exceptions.TryCatchRemover;
@@ -605,7 +610,7 @@
                 request.addFeature(RemoveAnnotationDefaultValue.class);
               }
               if (!options.flags.keepAttribute("LocalVariableTypeTable")) {
-                request.addFeature(RemoveLocalVariableGenericSignature.class);
+                request.addFeature(RemoveVariableGenericSignature.class);
               }
               if (!options.flags.keepAttribute("Exceptions")) {
                 request.addFeature(RemoveThrownException.class);
@@ -613,14 +618,18 @@
               if (!options.flags.keepAttribute("SourceFile")) {
                 request.addFeature(RemoveSourceFile.class);
               }
-              if (!options.flags.keepAttribute("LineNumberTable")) {
-                request.addFeature(RemoveLineNumber.class);
+              if (!config.get(RemoveLocalLineNumber.KEEP_LOCAL_LINE_NUMBER).booleanValue()) {
+                request.addFeature(RemoveLocalLineNumber.class);
               }
-              if (!options.flags.keepAttribute("LocalVariableTable")) {
+              if (!config.get(RemoveParameterLineNumber.KEEP_PARAMETER_LINE_NUMBER)
+                  .booleanValue()) {
+                request.addFeature(RemoveParameterLineNumber.class);
+              }
+              if (!config.get(RemoveLocalVariableName.KEEP_LOCAL_NAME).booleanValue()) {
                 request.addFeature(RemoveLocalVariableName.class);
-                if (!options.flags.getKeepParameterNames()) {
-                  request.addFeature(RemoveParameterName.class);
-                }
+              }
+              if (!config.get(RemoveParameterName.KEEP_PARAMETER_NAME).booleanValue()) {
+                request.addFeature(RemoveParameterName.class);
               }
             }
             if (options.flags.printSeeds()) {
@@ -688,9 +697,11 @@
             request.addFeature(CheckAndroidCompatibility.class);
           }
 
-          if (config.get(Options.OPTIMIZED_ENUM_SWITCH) == SwitchEnumOptStrategy.FEEDBACK) {
+          if (config.get(OptimizedSwitchEnumSupport.OPTIMIZED_ENUM_SWITCH)
+              == SwitchEnumOptStrategy.FEEDBACK) {
             request.addFeature(OptimizedSwitchEnumFeedbackFeature.class);
-          } else if (config.get(Options.OPTIMIZED_ENUM_SWITCH) == SwitchEnumOptStrategy.ALWAYS) {
+          } else if (config.get(OptimizedSwitchEnumSupport.OPTIMIZED_ENUM_SWITCH)
+              == SwitchEnumOptStrategy.ALWAYS) {
             request.addFeature(OptimizedSwitchEnumNonFeedbackFeature.class);
           }
 
@@ -753,6 +764,10 @@
             request.addFeature(TypeDefRemover.RemoveTypeDef.class);
           }
 
+          if (config.get(ParameterMetadataAnnotationsAdder.PARAMETER_ANNOTATION).booleanValue()) {
+            request.addFeature(ParameterMetadataFeature.class);
+          }
+
           List<InputLibrary> importedLibraries = session.getImportedLibraries();
           for (InputLibrary il : importedLibraries) {
             if (!il.containsFileType(FileType.PREBUILT)) {
@@ -805,7 +820,14 @@
           if (targetProduction.contains(JayceInLibraryProduct.class)) {
             planBuilder.append(LibraryMetaWriter.class);
           }
-
+          if (targetProduction.contains(JayceInLibraryProduct.class)
+              && targetProduction.contains(DexInLibraryProduct.class)) {
+            // Orphan dex files must only be copied into a Jack library when prebuilts are requested
+            // (DexInLibraryProduct). Jack must also check JayceInLibraryProduct to be sure that a
+            // Jack library is requested since DexInLibraryProduct is also used to generate an
+            // internal intermediate library that must not be take into account.
+            planBuilder.append(OrphanDexFileWriter.class);
+          }
           Plan<JSession> plan = null;
           try {
             try {
@@ -818,7 +840,8 @@
             }
           } catch (UnsupportedOperationException e) {
             // ... but use a manual one if not supported
-            if (pluginManager.hasPlugins()) {
+            if (pluginManager.hasPlugins() ||
+                config.get(Options.FORCE_PLAN_AMENDER).booleanValue()) {
               // If there are some plugins, amend the handcrafted plan
 
               // Add features and productions according to plugins
@@ -1431,153 +1454,147 @@
       }
     }
 
-    if (features.contains(LambdaToAnonymousConverter.class)) {
-      // Collect and group lambdas
-      planBuilder
-          .appendSubPlan(JDefinedClassOrInterfaceAdapter.class)
-          .appendSubPlan(JMethodAdapter.class)
-          .append(LambdaCollector.class);
+    if (productions.contains(DexInLibraryProduct.class)
+        || productions.contains(DexFileProduct.class)) {
+      if (features.contains(LambdaToAnonymousConverter.class)) {
+        // Collect and group lambdas
+        planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class)
+            .appendSubPlan(JMethodAdapter.class).append(LambdaCollector.class);
 
-      // NOTE: wait until all lambdas are collected
+        // NOTE: wait until all lambdas are collected
 
-      // Create classes and fill in their content
-      planBuilder.append(LambdaGroupClassCreator.class);
-      planBuilder
-          .appendSubPlan(JDefinedClassOrInterfaceAdapter.class)
-          .append(LambdaGroupClassFinalizer.class);
+        // Create classes and fill in their content
+        planBuilder.append(LambdaGroupClassCreator.class);
+        planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class)
+            .append(LambdaGroupClassFinalizer.class);
 
-      // NOTE: wait until all lambdas classes are created
+        // NOTE: wait until all lambdas classes are created
 
-      // Replace all references to lambdas
-      planBuilder
-          .appendSubPlan(JDefinedClassOrInterfaceAdapter.class)
-          .appendSubPlan(JMethodAdapter.class)
-          .append(LambdaConverter.class);
+        // Replace all references to lambdas
+        planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class)
+            .appendSubPlan(JMethodAdapter.class).append(LambdaConverter.class);
+      }
     }
 
     boolean enableInlineAnnotatedMethods =
         features.contains(Optimizations.InlineAnnotatedMethods.class);
 
-    {
+
+    if (productions.contains(DependencyInLibraryProduct.class)) {
       SubPlanBuilder<JDefinedClassOrInterface> typePlan =
           planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
-      if (productions.contains(DependencyInLibraryProduct.class)) {
-        typePlan.append(TypeDependenciesCollector.class);
-        typePlan.append(FileDependenciesCollector.class);
-      }
+      typePlan.append(TypeDependenciesCollector.class);
+      typePlan.append(FileDependenciesCollector.class);
     }
 
-    if (features.contains(SourceFileRenaming.class)) {
-      planBuilder.append(SourceFileRenamer.class);
-    }
-
-    {
-      SubPlanBuilder<JDefinedClassOrInterface> typePlan =
-          planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
-      SubPlanBuilder<JMethod> methodPlan = typePlan.appendSubPlan(JMethodAdapter.class);
-      if (features.contains(DynamicAssertionFeature.class)) {
-        methodPlan.append(DynamicAssertionTransformer.class);
-      } else if (features.contains(EnabledAssertionFeature.class)) {
-        methodPlan.append(EnabledAssertionTransformer.class);
-      } else if (features.contains(DisabledAssertionFeature.class)) {
-        methodPlan.append(AssertionRemover.class);
-      }
-      if (features.contains(Optimizations.NotSimplifier.class)) {
-        methodPlan.append(NotSimplifier.class);
-      }
-    }
-
-    boolean enableClassFinalizer = features.contains(Optimizations.ClassFinalizer.class);
-    boolean enableMethodFinalizer = features.contains(Optimizations.MethodFinalizer.class);
-
-    if (enableClassFinalizer || enableMethodFinalizer) {
-      // Dependencies
-      planBuilder
-          .appendSubPlan(JDefinedClassOrInterfaceAdapter.class)
-          .append(DirectlyDerivedClassesProvider.class);
-
-      SubPlanBuilder<JDefinedClassOrInterface> typePlan =
-          planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
-      if (enableClassFinalizer) {
-        typePlan.append(ClassFinalizer.class);
-      }
-      if (enableMethodFinalizer) {
-        typePlan.append(MethodFinalizer.class);
-      }
-    }
-
-    {
-      // After this point {@link JDcoiExcludeJackFileAdapter} must not be used since
-      // schedulables are not executed into the Java to Jayce plan.
-      SubPlanBuilder<JDefinedClassOrInterface> typePlan4 =
-          planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
-      if (features.contains(DynamicAssertionFeature.class)) {
-        SubPlanBuilder<JField> fieldPlan =
-            typePlan4.appendSubPlan(JFieldAdapter.class);
-        fieldPlan.append(FieldInitializer.class);
-      }
+    if (productions.contains(DexInLibraryProduct.class)
+        || productions.contains(DexFileProduct.class)) {
       {
-        SubPlanBuilder<JMethod> methodPlan = typePlan4.appendSubPlan(JMethodAdapter.class);
-        methodPlan.append(ConditionalAndOrRemover.class);
-        if (hasSanityChecks) {
-          methodPlan.append(ConditionalAndOrRemoverChecker.class);
+        SubPlanBuilder<JDefinedClassOrInterface> typePlan =
+            planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
+        SubPlanBuilder<JMethod> methodPlan = typePlan.appendSubPlan(JMethodAdapter.class);
+        if (features.contains(DynamicAssertionFeature.class)) {
+          methodPlan.append(DynamicAssertionTransformer.class);
+        } else if (features.contains(EnabledAssertionFeature.class)) {
+          methodPlan.append(EnabledAssertionTransformer.class);
+        } else if (features.contains(DisabledAssertionFeature.class)) {
+          methodPlan.append(AssertionRemover.class);
         }
-        methodPlan.append(BooleanTestTransformer.class);
-        methodPlan.append(SplitNewInstance.class);
-        if (hasSanityChecks) {
-          methodPlan.append(SplitNewInstanceChecker.class);
+        if (features.contains(Optimizations.NotSimplifier.class)) {
+          methodPlan.append(NotSimplifier.class);
         }
-        methodPlan.append(MultiDimensionNewArrayRemover.class);
-        methodPlan.append(InitInNewArrayRemover.class);
-        methodPlan.append(PrimitiveClassTransformer.class);
-        methodPlan.append(SynchronizeTransformer.class);
-        if (features.contains(BoostLockedRegionPriorityFeature.class)) {
-          methodPlan.append(BoostLockedRegionPriority.class);
-        }
-        methodPlan.append(NestedAssignRemover.class);
-        methodPlan.append(IntersectionTypeRemover.class);
-        methodPlan.append(UselessCaseRemover.class);
-        if (hasSanityChecks) {
-          methodPlan.append(UselessCaseChecker.class);
-        }
-        methodPlan.append(UselessSwitchesRemover.class);
-        methodPlan.append(TypeLegalizer.class);
-        methodPlan.append(RopCastLegalizer.class);
-        if (features.contains(CodeStats.class)) {
-          methodPlan.append(BinaryOperationWithCst.class);
-        }
-        methodPlan.append(FinallyRemover.class);
-        methodPlan.append(ExceptionRuntimeValueAdder.class);
-        methodPlan.append(DefinitionMarkerAdder.class);
-        methodPlan.append(ThreeAddressCodeBuilder.class);
-        methodPlan.append(UselessCastRemover.class);
-        methodPlan.append(DefinitionMarkerRemover.class);
-        methodPlan.append(TryCatchRemover.class);
-        methodPlan.append(ExpressionStatementLegalizer.class);
-        if (hasSanityChecks) {
-          methodPlan.append(NumericConversionChecker.class);
-        }
-        methodPlan.append(EmptyClinitRemover.class);
       }
-    }
 
-    if (enableInlineAnnotatedMethods) {
+      boolean enableClassFinalizer = features.contains(Optimizations.ClassFinalizer.class);
+      boolean enableMethodFinalizer = features.contains(Optimizations.MethodFinalizer.class);
 
-      SubPlanBuilder<JMethod> methodPlan = planBuilder
-          .appendSubPlan(JDefinedClassOrInterfaceAdapter.class)
-          .appendSubPlan(JMethodAdapter.class);
-      if (hasSanityChecks) {
-        methodPlan.append(InlineAnnotationSanityCheck.class);
+      if (enableClassFinalizer || enableMethodFinalizer) {
+        // Dependencies
+        planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class)
+            .append(DirectlyDerivedClassesProvider.class);
+
+        SubPlanBuilder<JDefinedClassOrInterface> typePlan =
+            planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
+        if (enableClassFinalizer) {
+          typePlan.append(ClassFinalizer.class);
+        }
+        if (enableMethodFinalizer) {
+          typePlan.append(MethodFinalizer.class);
+        }
       }
-      methodPlan.append(InlineAnnotatedMethods.class);
-      methodPlan.append(JMethodInliner.class);
-    }
 
-    if (features.contains(DalvikProtectedInnerCheck.class)) {
-      SubPlanBuilder<JDefinedClassOrInterface> typePlan =
-          planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
-      SubPlanBuilder<JMethod> methodPlan = typePlan.appendSubPlan(JMethodAdapter.class);
-      methodPlan.append(DalvikProtectedInnerChecker.class);
+      {
+        // After this point {@link JDcoiExcludeJackFileAdapter} must not be used since
+        // schedulables are not executed into the Java to Jayce plan.
+        SubPlanBuilder<JDefinedClassOrInterface> typePlan4 =
+            planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
+        if (features.contains(DynamicAssertionFeature.class)) {
+          SubPlanBuilder<JField> fieldPlan = typePlan4.appendSubPlan(JFieldAdapter.class);
+          fieldPlan.append(FieldInitializer.class);
+        }
+        {
+          SubPlanBuilder<JMethod> methodPlan = typePlan4.appendSubPlan(JMethodAdapter.class);
+          methodPlan.append(ConditionalAndOrRemover.class);
+          if (hasSanityChecks) {
+            methodPlan.append(ConditionalAndOrRemoverChecker.class);
+          }
+          methodPlan.append(BooleanTestTransformer.class);
+          methodPlan.append(SplitNewInstance.class);
+          if (hasSanityChecks) {
+            methodPlan.append(SplitNewInstanceChecker.class);
+          }
+          methodPlan.append(MultiDimensionNewArrayRemover.class);
+          methodPlan.append(InitInNewArrayRemover.class);
+          methodPlan.append(PrimitiveClassTransformer.class);
+          methodPlan.append(SynchronizeTransformer.class);
+          if (features.contains(BoostLockedRegionPriorityFeature.class)) {
+            methodPlan.append(BoostLockedRegionPriority.class);
+          }
+          methodPlan.append(NestedAssignRemover.class);
+          methodPlan.append(IntersectionTypeRemover.class);
+          methodPlan.append(UselessCaseRemover.class);
+          if (hasSanityChecks) {
+            methodPlan.append(UselessCaseChecker.class);
+          }
+          methodPlan.append(UselessSwitchesRemover.class);
+          methodPlan.append(TypeLegalizer.class);
+          methodPlan.append(RopCastLegalizer.class);
+          if (features.contains(CodeStats.class)) {
+            methodPlan.append(BinaryOperationWithCst.class);
+          }
+          methodPlan.append(FinallyRemover.class);
+          methodPlan.append(ExceptionRuntimeValueAdder.class);
+          methodPlan.append(DefinitionMarkerAdder.class);
+          methodPlan.append(ThreeAddressCodeBuilder.class);
+          methodPlan.append(UselessCastRemover.class);
+          methodPlan.append(DefinitionMarkerRemover.class);
+          methodPlan.append(TryCatchRemover.class);
+          methodPlan.append(ExpressionStatementLegalizer.class);
+          if (hasSanityChecks) {
+            methodPlan.append(NumericConversionChecker.class);
+          }
+          methodPlan.append(EmptyClinitRemover.class);
+        }
+      }
+
+      if (enableInlineAnnotatedMethods) {
+
+        SubPlanBuilder<JMethod> methodPlan =
+            planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class)
+                .appendSubPlan(JMethodAdapter.class);
+        if (hasSanityChecks) {
+          methodPlan.append(InlineAnnotationSanityCheck.class);
+        }
+        methodPlan.append(InlineAnnotatedMethods.class);
+        methodPlan.append(JMethodInliner.class);
+      }
+
+      if (features.contains(DalvikProtectedInnerCheck.class)) {
+        SubPlanBuilder<JDefinedClassOrInterface> typePlan =
+            planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
+        SubPlanBuilder<JMethod> methodPlan = typePlan.appendSubPlan(JMethodAdapter.class);
+        methodPlan.append(DalvikProtectedInnerChecker.class);
+      }
     }
 
     if (productions.contains(DependencyInLibraryProduct.class)) {
@@ -1596,175 +1613,176 @@
       planBuilder.append(ShrinkStructurePrinter.class);
     }
 
-    boolean enableArgumentValuePropagation =
-        features.contains(Optimizations.ArgumentValuePropagation.class);
+    if (productions.contains(DexInLibraryProduct.class)
+        || productions.contains(DexFileProduct.class)) {
+      boolean enableArgumentValuePropagation =
+          features.contains(Optimizations.ArgumentValuePropagation.class);
 
-    {
-      SubPlanBuilder<JDefinedClassOrInterface> typePlan =
-          planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
-      typePlan.append(ReflectAnnotationsAdder.class);
-      if (enableArgumentValuePropagation) {
-        typePlan.append(AvpCalculateTaintedMethods.class);
+      {
+        SubPlanBuilder<JDefinedClassOrInterface> typePlan =
+            planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
+        typePlan.append(ReflectAnnotationsAdder.class);
+        if (enableArgumentValuePropagation) {
+          typePlan.append(AvpCalculateTaintedMethods.class);
+        }
+
+        {
+          SubPlanBuilder<JMethod> methodPlan = typePlan.appendSubPlan(JMethodAdapter.class);
+          methodPlan.append(DefaultValueAnnotationAdder.class);
+        }
       }
 
       {
-        SubPlanBuilder<JMethod> methodPlan = typePlan.appendSubPlan(JMethodAdapter.class);
-        methodPlan.append(DefaultValueAnnotationAdder.class);
+        SubPlanBuilder<JDefinedClassOrInterface> typePlan =
+            planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
+        typePlan.append(ClassDefItemBuilder.class);
+        typePlan.append(ContainerAnnotationAdder.TypeContainerAnnotationAdder.class);
+        typePlan.append(ClassAnnotationBuilder.class);
       }
-    }
 
-    {
-      SubPlanBuilder<JDefinedClassOrInterface> typePlan =
-          planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
-      typePlan.append(ClassDefItemBuilder.class);
-      typePlan.append(ContainerAnnotationAdder.TypeContainerAnnotationAdder.class);
-      typePlan.append(ClassAnnotationBuilder.class);
-    }
-
-    if (features.contains(Optimizations.FieldFinalizer.class)) {
-      // Phase 1: field assignment information collection
-      planBuilder
+      if (features.contains(Optimizations.FieldFinalizer.class)) {
+        // Phase 1: field assignment information collection
+        planBuilder
           .appendSubPlan(JDefinedClassOrInterfaceAdapter.class)
           .appendSubPlan(JMethodAdapter.class)
           .append(FieldFinalizer.CollectionPhase.class);
 
-      // Phase 2: constructors analysis
-      SubPlanBuilder<JDefinedClassOrInterface> phase3 =
-          planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
+        // Phase 2: constructors analysis
+        SubPlanBuilder<JDefinedClassOrInterface> phase3 =
+            planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
 
-      SubPlanBuilder<JMethod> phase3method =
-          phase3.appendSubPlan(JMethodAdapter.class);
-      phase3method.append(RefAsStatementRemover.class);
-      phase3method.append(CfgBuilder.class);
-      phase3method.append(FieldFinalizer.ConstructorsAnalysisPhase.class);
-      phase3method.append(CfgMarkerRemover.class);
+        SubPlanBuilder<JMethod> phase3method = phase3.appendSubPlan(JMethodAdapter.class);
+        phase3method.append(RefAsStatementRemover.class);
+        phase3method.append(CfgBuilder.class);
+        phase3method.append(FieldFinalizer.ConstructorsAnalysisPhase.class);
+        phase3method.append(CfgMarkerRemover.class);
 
-      // Phase 3: field finalization
-      phase3
+        // Phase 3: field finalization
+        phase3
           .appendSubPlan(JFieldAdapter.class)
           .append(FieldFinalizer.FinalizingPhase.class);
-    }
+      }
 
-    boolean enableFieldValuePropagation =
-        features.contains(Optimizations.FieldValuePropagation.class);
-    boolean enableWriteOnlyFieldRemoval =
-        features.contains(Optimizations.WriteOnlyFieldRemoval.class);
+      boolean enableFieldValuePropagation =
+          features.contains(Optimizations.FieldValuePropagation.class);
+      boolean enableWriteOnlyFieldRemoval =
+          features.contains(Optimizations.WriteOnlyFieldRemoval.class);
 
-    {
-      SubPlanBuilder<JDefinedClassOrInterface> typePlan5 =
-          planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
       {
+        SubPlanBuilder<JDefinedClassOrInterface> typePlan5 =
+            planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
         {
-          SubPlanBuilder<JMethod> methodPlan4 =
-              typePlan5.appendSubPlan(JMethodAdapter.class);
-          methodPlan4.append(RefAsStatementRemover.class);
-          methodPlan4.append(CfgBuilder.class);
-          methodPlan4.append(DefinitionMarkerAdder.class);
-          methodPlan4.append(ReachingDefinitions.class);
-          methodPlan4.append(UsedVariableAdder.class);
-          methodPlan4.append(DefUsesAndUseDefsChainComputation.class);
-          if (hasSanityChecks) {
-            methodPlan4.append(UseDefsChecker.class);
+          {
+            SubPlanBuilder<JMethod> methodPlan4 = typePlan5.appendSubPlan(JMethodAdapter.class);
+            methodPlan4.append(RefAsStatementRemover.class);
+            methodPlan4.append(CfgBuilder.class);
+            methodPlan4.append(DefinitionMarkerAdder.class);
+            methodPlan4.append(ReachingDefinitions.class);
+            methodPlan4.append(UsedVariableAdder.class);
+            methodPlan4.append(DefUsesAndUseDefsChainComputation.class);
+            if (hasSanityChecks) {
+              methodPlan4.append(UseDefsChecker.class);
+            }
+            methodPlan4.append(ConstantRefiner.class);
+            if (features.contains(Optimizations.UseDefSimplifier.class)) {
+              methodPlan4.append(UseDefsChainsSimplifier.class);
+            }
+            if (features.contains(Optimizations.DefUseSimplifier.class)) {
+              methodPlan4.append(DefUsesChainsSimplifier.class);
+            }
+            methodPlan4.append(UnusedDefinitionRemover.class);
+            methodPlan4.append(RefAsStatementRemover.class);
+            methodPlan4.append(CfgMarkerRemover.class);
+            methodPlan4.append(CfgBuilder.class);
+            if (features.contains(Optimizations.IfSimplifier.class)) {
+              methodPlan4.append(IfWithConstantSimplifier.class);
+            }
+            methodPlan4.append(UnusedLocalRemover.class);
+            if (enableFieldValuePropagation) {
+              methodPlan4.append(FvpCollectFieldAssignments.class);
+            }
+            if (enableArgumentValuePropagation) {
+              methodPlan4.append(AvpCollectMethodCallArguments.class);
+            }
+            if (enableWriteOnlyFieldRemoval) {
+              methodPlan4.append(WofrCollectFieldAccesses.class);
+            }
+            methodPlan4.append(DefUsesAndUseDefsChainRemover.class);
+            methodPlan4.append(DefinitionMarkerRemover.class);
+            methodPlan4.append(UsedVariableRemover.class);
+            if (features.contains(Optimizations.ExpressionSimplifier.class)) {
+              methodPlan4.append(ExpressionSimplifier.class);
+            }
+            methodPlan4.append(UselessIfRemover.class);
+            methodPlan4.append(CfgMarkerRemover.class);
+            methodPlan4.append(ContainerAnnotationAdder.MethodContainerAnnotationAdder.class);
           }
-          methodPlan4.append(ConstantRefiner.class);
-          if (features.contains(Optimizations.UseDefSimplifier.class)) {
-            methodPlan4.append(UseDefsChainsSimplifier.class);
-          }
-          if (features.contains(Optimizations.DefUseSimplifier.class)) {
-            methodPlan4.append(DefUsesChainsSimplifier.class);
-          }
-          methodPlan4.append(UnusedDefinitionRemover.class);
-          methodPlan4.append(RefAsStatementRemover.class);
-          methodPlan4.append(CfgMarkerRemover.class);
-          methodPlan4.append(CfgBuilder.class);
-          if (features.contains(Optimizations.IfSimplifier.class)) {
-            methodPlan4.append(IfWithConstantSimplifier.class);
-          }
-          methodPlan4.append(UnusedLocalRemover.class);
-          if (enableFieldValuePropagation) {
-            methodPlan4.append(FvpCollectFieldAssignments.class);
-          }
-          if (enableArgumentValuePropagation) {
-            methodPlan4.append(AvpCollectMethodCallArguments.class);
-          }
-          if (enableWriteOnlyFieldRemoval) {
-            methodPlan4.append(WofrCollectFieldAccesses.class);
-          }
-          methodPlan4.append(DefUsesAndUseDefsChainRemover.class);
-          methodPlan4.append(DefinitionMarkerRemover.class);
-          methodPlan4.append(UsedVariableRemover.class);
-          if (features.contains(Optimizations.ExpressionSimplifier.class)) {
-            methodPlan4.append(ExpressionSimplifier.class);
-          }
-          methodPlan4.append(UselessIfRemover.class);
-          methodPlan4.append(CfgMarkerRemover.class);
-          methodPlan4.append(CfgBuilder.class);
-          methodPlan4.append(ContainerAnnotationAdder.MethodContainerAnnotationAdder.class);
         }
       }
-    }
 
-    if (enableArgumentValuePropagation) {
-      planBuilder.append(AvpComputeMethodArgumentsValues.class);
-    }
-
-    SubPlanBuilder<JDefinedClassOrInterface> typePlan =
-        planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
-
-    if (enableFieldValuePropagation || enableArgumentValuePropagation
-        || enableWriteOnlyFieldRemoval) {
-      SubPlanBuilder<JMethod> methodPlan = typePlan.appendSubPlan(JMethodAdapter.class);
-      if (enableFieldValuePropagation) {
-        methodPlan.append(FvpPropagateFieldValues.class);
-      }
       if (enableArgumentValuePropagation) {
-        methodPlan.append(AvpPropagateArgumentValues.class);
+        planBuilder.append(AvpComputeMethodArgumentsValues.class);
       }
-      if (enableWriteOnlyFieldRemoval) {
-        methodPlan.append(WofrRemoveFieldWrites.class);
+
+      if (enableFieldValuePropagation || enableArgumentValuePropagation
+          || enableWriteOnlyFieldRemoval) {
+        SubPlanBuilder<JDefinedClassOrInterface> typePlan =
+            planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
+        SubPlanBuilder<JMethod> methodPlan = typePlan.appendSubPlan(JMethodAdapter.class);
+        methodPlan.append(CfgBuilder.class);
+        if (enableFieldValuePropagation) {
+          methodPlan.append(FvpPropagateFieldValues.class);
+        }
+        if (enableArgumentValuePropagation) {
+          methodPlan.append(AvpPropagateArgumentValues.class);
+        }
+        if (enableWriteOnlyFieldRemoval) {
+          methodPlan.append(WofrRemoveFieldWrites.class);
+        }
+        methodPlan.append(CfgMarkerRemover.class);
       }
-      methodPlan.append(CfgMarkerRemover.class);
-      methodPlan.append(CfgBuilder.class);
-    }
 
-    SubPlanBuilder<JDefinedClassOrInterface> typePlan1 =
-        planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
-
-    SubPlanBuilder<JField> fieldPlan = typePlan1.appendSubPlan(JFieldAdapter.class);
-    fieldPlan.append(ContainerAnnotationAdder.FieldContainerAnnotationAdder.class);
-    if (enableWriteOnlyFieldRemoval) {
-      fieldPlan.append(WofrRemoveFields.class);
-    }
-
-    // The sub plan that write dex files representing type must not be split in order to remove dx
-    // IR from memory when dex file is written.
-    {
-      SubPlanBuilder<JDefinedClassOrInterface> typePlan6 =
+      SubPlanBuilder<JDefinedClassOrInterface> typePlan1 =
           planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
 
+      SubPlanBuilder<JField> fieldPlan = typePlan1.appendSubPlan(JFieldAdapter.class);
+      fieldPlan.append(ContainerAnnotationAdder.FieldContainerAnnotationAdder.class);
+      if (enableWriteOnlyFieldRemoval) {
+        fieldPlan.append(WofrRemoveFields.class);
+      }
+
+      // The sub plan that write dex files representing type must not be split in order to remove dx
+      // IR from memory when dex file is written.
       {
-        SubPlanBuilder<JMethod> methodPlan5 = typePlan6.appendSubPlan(JMethodAdapter.class);
-        methodPlan5.append(CodeItemBuilder.class);
-        methodPlan5.append(CfgMarkerRemover.class);
-        methodPlan5.append(EncodedMethodBuilder.class);
-        methodPlan5.append(DexCodeMarkerRemover.class);
-        methodPlan5.append(MethodAnnotationBuilder.class);
-        if (features.contains(DropMethodBody.class)) {
-          methodPlan5.append(MethodBodyRemover.class);
+        SubPlanBuilder<JDefinedClassOrInterface> typePlan6 =
+            planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
+
+        {
+          SubPlanBuilder<JMethod> methodPlan5 = typePlan6.appendSubPlan(JMethodAdapter.class);
+          methodPlan5.append(CfgBuilder.class);
+          methodPlan5.append(CodeItemBuilder.class);
+          methodPlan5.append(CfgMarkerRemover.class);
+          methodPlan5.append(EncodedMethodBuilder.class);
+          methodPlan5.append(DexCodeMarkerRemover.class);
+          if (features.contains(ParameterMetadataFeature.class)) {
+            methodPlan5.append(ParameterMetadataAnnotationsAdder.class);
+          }
+          methodPlan5.append(MethodAnnotationBuilder.class);
+          if (features.contains(DropMethodBody.class)) {
+            methodPlan5.append(MethodBodyRemover.class);
+          }
         }
-      }
 
-      {
-        SubPlanBuilder<JField> fieldPlan2 = typePlan6.appendSubPlan(JFieldAdapter.class);
-        fieldPlan2.append(EncodedFieldBuilder.class);
-        fieldPlan2.append(FieldAnnotationBuilder.class);
-      }
+        {
+          SubPlanBuilder<JField> fieldPlan2 = typePlan6.appendSubPlan(JFieldAdapter.class);
+          fieldPlan2.append(EncodedFieldBuilder.class);
+          fieldPlan2.append(FieldAnnotationBuilder.class);
+        }
 
-      if (hasSanityChecks) {
-        typePlan6.append(TypeAstChecker.class);
-      }
+        if (hasSanityChecks) {
+          typePlan6.append(TypeAstChecker.class);
+        }
 
-      if (productions.contains(DexInLibraryProduct.class)) {
         // Jayce files must be copied into output library in incremental library mode or in non
         // incremental mode
         if (features.contains(GenerateLibraryFromIncrementalFolder.class)
@@ -1775,6 +1793,7 @@
         }
         typePlan6.append(ClassDefItemMarkerRemover.class);
       }
+
     }
 
     if (hasSanityChecks) {
@@ -1795,9 +1814,13 @@
       planBuilder.append(ResourceContentRefiner.class);
     }
     planBuilder.append(Renamer.class);
+
     if (features.contains(RemoveSourceFile.class)) {
       planBuilder.append(SourceFileRemover.class);
+    } else if (features.contains(SourceFileRenaming.class)) {
+      planBuilder.append(SourceFileRenamer.class);
     }
+
     {
       SubPlanBuilder<JDefinedClassOrInterface> typePlan =
           planBuilder.appendSubPlan(JDefinedClassOrInterfaceAdapter.class);
@@ -1811,9 +1834,6 @@
       if (features.contains(RemoveGenericSignature.class)) {
         typePlan.append(TypeGenericSignatureRemover.class);
       }
-      if (features.contains(RemoveLineNumber.class)) {
-        typePlan.append(LineNumberRemover.class);
-      }
       {
         SubPlanBuilder<JField> fieldPlan = typePlan.appendSubPlan(JFieldAdapter.class);
         fieldPlan.append(FieldAnnotationRemover.class);
@@ -1828,8 +1848,8 @@
         if (features.contains(RemoveGenericSignature.class)) {
           methodPlan.append(MethodGenericSignatureRemover.class);
         }
-        if (features.contains(RemoveLocalVariableGenericSignature.class)) {
-          methodPlan.append(LocalVariableGenericSignatureRemover.class);
+        if (features.contains(RemoveVariableGenericSignature.class)) {
+          methodPlan.append(VariableGenericSignatureRemover.class);
         }
         if (features.contains(RemoveAnnotationDefaultValue.class)) {
           methodPlan.append(AnnotationDefaultValueRemover.class);
@@ -1840,9 +1860,15 @@
         if (features.contains(RemoveParameterName.class)) {
           methodPlan.append(ParameterNameRemover.class);
         }
+        if (features.contains(RemoveParameterLineNumber.class)) {
+          methodPlan.append(ParameterLineNumberRemover.class);
+        }
         if (features.contains(RemoveLocalVariableName.class)) {
           methodPlan.append(LocalVariableAndThisNameRemover.class);
         }
+        if (features.contains(RemoveLocalLineNumber.class)) {
+          methodPlan.append(LocalVariableAndThisLineNumberRemover.class);
+        }
       }
     }
   }
diff --git a/jack/src/com/android/jack/Options.java b/jack/src/com/android/jack/Options.java
index 150c1ef..274d745 100644
--- a/jack/src/com/android/jack/Options.java
+++ b/jack/src/com/android/jack/Options.java
@@ -36,8 +36,6 @@
 import com.android.jack.plugin.NotJackPluginException;
 import com.android.jack.plugin.PluginManager;
 import com.android.jack.plugin.PluginNotFoundException;
-import com.android.jack.reporting.Reportable;
-import com.android.jack.reporting.Reportable.ProblemLevel;
 import com.android.jack.reporting.Reporter;
 import com.android.jack.reporting.Reporter.Severity;
 import com.android.jack.resource.ResourceImporter;
@@ -47,8 +45,14 @@
 import com.android.jack.shrob.obfuscation.SourceFileRenamer;
 import com.android.jack.shrob.obfuscation.annotation.AnnotationRemover;
 import com.android.jack.shrob.obfuscation.annotation.ParameterAnnotationRemover;
+import com.android.jack.shrob.obfuscation.annotation.RemoveLocalLineNumber;
+import com.android.jack.shrob.obfuscation.annotation.RemoveLocalVariableName;
+import com.android.jack.shrob.obfuscation.annotation.RemoveParameterLineNumber;
+import com.android.jack.shrob.obfuscation.annotation.RemoveParameterName;
 import com.android.jack.shrob.seed.SeedPrinter;
 import com.android.jack.shrob.spec.Flags;
+import com.android.jack.transformations.enums.opt.OptimizedSwitchEnumSupport;
+import com.android.jack.transformations.enums.opt.SwitchEnumOptStrategy;
 import com.android.jack.transformations.lambda.LambdaGroupingScope;
 import com.android.jack.transformations.renamepackage.PackageRenamer;
 import com.android.jack.util.AndroidApiLevel;
@@ -153,28 +157,6 @@
   @Nonnull
   private static final Logger logger = LoggerFactory.getLogger();
 
-  private static class DeprecatedVerbosity implements Reportable {
-    @Nonnull
-    private final VerbosityLevel verbosity;
-
-    private DeprecatedVerbosity(@Nonnull VerbosityLevel verbosity) {
-      this.verbosity = verbosity;
-    }
-
-    @Override
-    @Nonnull
-    public String getMessage() {
-      return "Verbosity level '" + verbosity.name().toLowerCase() + "' is deprecated";
-    }
-
-    @Override
-    @Nonnull
-    public ProblemLevel getDefaultProblemLevel() {
-      return ProblemLevel.WARNING;
-    }
-
-  }
-
   /**
    * Assertion policies
    */
@@ -268,19 +250,6 @@
       BooleanPropertyId.create("jack.dex", "Generate dex file").addDefaultValue(Boolean.FALSE)
           .addCategory(DumpInLibrary.class);
 
-  /**
-   * property used to specify the kind of switch enum optimization that is enabled. See(@link
-   * SwitchEnumOptStrategy)
-   */
-  @Nonnull
-  public static final EnumPropertyId<SwitchEnumOptStrategy> OPTIMIZED_ENUM_SWITCH =
-      EnumPropertyId.create(
-              "jack.optimization.enum.switch", "Optimize enum switch", SwitchEnumOptStrategy.class)
-          .addDefaultValue(SwitchEnumOptStrategy.NEVER)
-          .ignoreCase()
-          .addCategory(DumpInLibrary.class)
-          .addCategory(PrebuiltCompatibility.class);
-
   @Nonnull
   public static final BooleanPropertyId GENERATE_DEX_IN_LIBRARY = BooleanPropertyId
       .create("jack.library.dex", "Generate dex files in library").addDefaultValue(Boolean.TRUE)
@@ -414,63 +383,6 @@
 
   private final File propertiesFile = null;
 
-  /**
-   * Jack verbosity level.
-   * Note: The implementation of {@link ProblemLevel} assumes that the ordinal values of
-   * {@link VerbosityLevel} are ordered from the highest severity to the lowest.
-   */
-  @VariableName("level")
-  public enum VerbosityLevel {
-    @EnumName(name = "error")
-    ERROR("error"),
-    @EnumName(name = "warning")
-    WARNING("warning"),
-    @EnumName(name = "info")
-    INFO("info"),
-    @EnumName(name = "debug", hide = true)
-    @Deprecated DEBUG("debug"),
-    @EnumName(name = "trace", hide = true)
-    @Deprecated TRACE("trace");
-
-    @Nonnull
-    private final String id;
-
-    VerbosityLevel(@Nonnull String id) {
-      this.id = id;
-    }
-
-    public String getId() {
-      return id;
-    }
-  }
-
-  /**
-   * Types of switch enum optimization strategies.
-   * 1. feedback (set on by default)
-   * 2. always
-   * 3. never
-   */
-  @VariableName("strategy")
-  public enum SwitchEnumOptStrategy {
-    // feedback-based optimization: this strategy will be enabled/disabled based on the
-    // compile time information collected, e.g., if it is detected that an enum is only
-    // used in one/few switch statements, it is useless to optimize it. Potentially enable
-    // this strategy will cost more compilation time, but save more dex code
-    @EnumName(name = "feedback")
-    FEEDBACK(),
-    // different from feedback-based optimization, always strategy doesn't collect compile-
-    // time information to guide switch enum optimization. It will always enable switch enum
-    // optimization no matter the enum is rarely/frequently used. Ideally this strategy will
-    // compile code quicker than feedback-based strategy does, but the generated dex may be
-    // larger than feedback strategy
-    @EnumName(name = "always")
-    ALWAYS(),
-    // this actually is not real strategy, but we still need it because switch enum
-    // optimization is disabled when incremental compilation is triggered
-    @EnumName(name = "never")
-    NEVER();
-  }
-
   @Nonnull
   public static final EnumPropertyId<VerbosityLevel> VERBOSITY_LEVEL = EnumPropertyId.create(
       "jack.verbose.level", "Verbosity level", VerbosityLevel.class)
@@ -717,8 +629,13 @@
       .addDefaultValue(Boolean.TRUE);
 
   @Nonnull
-  public static final BooleanPropertyId SHROB_ENABLED =
-      BooleanPropertyId.create("jack.shrob", "Enable shrink and obfuscation features")
+  public static final BooleanPropertyId SHRINKING_ENABLED =
+      BooleanPropertyId.create("jack.shrob.shrink", "Enable shrinking feature")
+      .addDefaultValue(false).addCategory(DumpInLibrary.class);
+
+  @Nonnull
+  public static final BooleanPropertyId OBFUSCATION_ENABLED =
+      BooleanPropertyId.create("jack.shrob.obfuscate", "Enable obfuscation feature")
       .addDefaultValue(false).addCategory(DumpInLibrary.class);
 
   @CheckForNull
@@ -734,6 +651,19 @@
               "Use mixed case class name when obfuscating")
           .addDefaultValue(Boolean.FALSE).addCategory(DumpInLibrary.class);
 
+  @Nonnull
+  public static final BooleanPropertyId EMIT_CLASS_FILES =
+      BooleanPropertyId.create("jack.class-file", "Generate class files")
+      .addDefaultValue(false);
+
+  @Nonnull
+  public static final PropertyId<Directory> EMIT_CLASS_FILES_FOLDER =
+    PropertyId.create(
+      "jack.class-file.output.dir",
+      "Output folder for class files",
+      new DirectoryCodec(Existence.MUST_EXIST, Permission.WRITE | Permission.READ))
+    .requiredIf(EMIT_CLASS_FILES.getValue().isTrue());
+
   @SuppressWarnings("unchecked")
   @Nonnull
   public static final ImplementationPropertyId<Filter<JMethod>> METHOD_FILTER =
@@ -857,6 +787,12 @@
           .setSeparator(",")
           .ensureUnicity();
 
+  @Nonnull
+  public static final BooleanPropertyId FORCE_PLAN_AMENDER = BooleanPropertyId
+      .create("jack.plan-amender.force", "Force plan amender")
+      .addDefaultValue(false)
+      .addCategory(Private.class);
+
   public void ensurePluginManager()
       throws IllegalOptionsException {
     if (pluginManager == null) {
@@ -1079,11 +1015,17 @@
 
     configBuilder.pushDefaultLocation(new StringLocation("proguard flags"));
 
+    configBuilder.set(SHRINKING_ENABLED, flags != null && flags.shrink());
+    configBuilder.set(OBFUSCATION_ENABLED, flags != null && flags.obfuscate());
+
     if (flags != null) {
-      configBuilder.set(SHROB_ENABLED, true);
-      configBuilder.set(Options.USE_PREBUILT_FROM_LIBRARY, false);
-      logger.log(Level.WARNING,
-          "Prebuilts from libraries are not used due to usage of shrinking or obfuscation");
+      if (flags.obfuscate() || flags.shrink()) {
+        configBuilder.set(Options.USE_PREBUILT_FROM_LIBRARY, false);
+        logger
+            .log(
+                Level.WARNING,
+                "Prebuilts from libraries are not use due to usage of shrinking or obfuscation");
+      }
 
       if (flags.obfuscate()) { // keepAttribute only makes sense when obfuscating
         boolean emitRuntimeInvisibleAnnotation = flags.keepAttribute("RuntimeInvisibleAnnotations");
@@ -1106,8 +1048,22 @@
             ParameterAnnotationRemover.EMIT_RUNTIME_RETENTION_PARAMETER_ANNOTATION,
             flags.keepAttribute("RuntimeVisibleParameterAnnotations"));
 
-        configBuilder.set(EMIT_LINE_NUMBER_DEBUG_INFO, flags.keepAttribute("LineNumberTable"));
-        configBuilder.set(EMIT_LOCAL_DEBUG_INFO, flags.keepAttribute("LocalVariableTable"));
+        boolean keepLineNumbers = flags.keepAttribute("LineNumberTable");
+        configBuilder.set(RemoveLocalLineNumber.KEEP_LOCAL_LINE_NUMBER,
+            keepLineNumbers);
+        if (!keepLineNumbers) {
+          configBuilder.set(RemoveParameterLineNumber.KEEP_PARAMETER_LINE_NUMBER,
+              flags.getKeepParameterNames());
+        } else {
+          configBuilder.set(RemoveParameterLineNumber.KEEP_PARAMETER_LINE_NUMBER, true);
+        }
+        boolean keepNames = flags.keepAttribute("LocalVariableTable");
+        configBuilder.set(RemoveLocalVariableName.KEEP_LOCAL_NAME, keepNames);
+        if (!keepNames) {
+          configBuilder.set(RemoveParameterName.KEEP_PARAMETER_NAME, flags.getKeepParameterNames());
+        } else {
+          configBuilder.set(RemoveParameterName.KEEP_PARAMETER_NAME, true);
+        }
       }
 
       configBuilder.set(Options.FLAGS, flags);
@@ -1259,7 +1215,7 @@
       if (multiDexKind == MultiDexKind.LEGACY) {
         logger.log(Level.WARNING,
             "Incremental mode is disabled due to multi-dex legacy mode");
-      } else if (flags != null) {
+      } else if (flags != null && (flags.shrink() || flags.obfuscate())) {
         logger.log(Level.WARNING,
             "Incremental mode is disabled due to usage of shrinking or obfuscation");
       } else if (!jarjarRulesFiles.isEmpty()) {
@@ -1302,7 +1258,8 @@
       // if the incremental compilation is enabled, the switch enum optimization cannot
       // be enabled because it will generates non-deterministic code. This has to be done after
       // -D options are set
-      configBuilder.set(OPTIMIZED_ENUM_SWITCH.getName(), SwitchEnumOptStrategy.NEVER);
+      configBuilder.set(
+          OptimizedSwitchEnumSupport.OPTIMIZED_ENUM_SWITCH.getName(), SwitchEnumOptStrategy.NEVER);
     }
 
     configBuilder.processEnvironmentVariables("JACK_CONFIG_");
@@ -1334,6 +1291,11 @@
       if (!config.get(Options.ANNOTATION_PROCESSOR_ENABLED).booleanValue()) {
         ecjExtraArguments.add("-proc:none");
       }
+
+      if (config.get(Options.EMIT_CLASS_FILES).booleanValue()) {
+        ecjExtraArguments.add("-d");
+        ecjExtraArguments.add(config.get(Options.EMIT_CLASS_FILES_FOLDER).getPath());
+      }
     }
 
     // Check Jack arguments
@@ -1345,7 +1307,9 @@
     }
 
     if (verbose == VerbosityLevel.DEBUG || verbose == VerbosityLevel.TRACE) {
-      config.get(Reporter.REPORTER).report(Severity.NON_FATAL, new DeprecatedVerbosity(verbose));
+      config
+          .get(Reporter.REPORTER)
+          .report(Severity.NON_FATAL, new VerbosityLevel.DeprecatedVerbosity(verbose));
     }
   }
 
diff --git a/jack/src/com/android/jack/VerbosityLevel.java b/jack/src/com/android/jack/VerbosityLevel.java
new file mode 100644
index 0000000..b710946
--- /dev/null
+++ b/jack/src/com/android/jack/VerbosityLevel.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack;
+
+import com.android.jack.reporting.Reportable;
+import com.android.jack.reporting.Reportable.ProblemLevel;
+import com.android.sched.util.codec.EnumName;
+import com.android.sched.util.codec.VariableName;
+
+import javax.annotation.Nonnull;
+
+/**
+ * Jack verbosity level.
+ * Note: The implementation of {@link ProblemLevel} assumes that the ordinal values of
+ * {@link VerbosityLevel} are ordered from the highest severity to the lowest.
+ */
+@VariableName("level")
+public enum VerbosityLevel {
+  @EnumName(name = "error")
+  ERROR("error"),
+  @EnumName(name = "warning")
+  WARNING("warning"),
+  @EnumName(name = "info")
+  INFO("info"),
+  @EnumName(name = "debug", hide = true)
+  @Deprecated DEBUG("debug"),
+  @EnumName(name = "trace", hide = true)
+  @Deprecated TRACE("trace");
+
+  @Nonnull
+  private final String id;
+
+  VerbosityLevel(@Nonnull String id) {
+    this.id = id;
+  }
+
+  @Nonnull
+  public String getId() {
+    return id;
+  }
+
+  static class DeprecatedVerbosity implements Reportable {
+    @Nonnull
+    private final VerbosityLevel verbosity;
+
+    DeprecatedVerbosity(@Nonnull VerbosityLevel verbosity) {
+      this.verbosity = verbosity;
+    }
+
+    @Override
+    @Nonnull
+    public String getMessage() {
+      return "Verbosity level '" + verbosity.name().toLowerCase() + "' is deprecated";
+    }
+
+    @Override
+    @Nonnull
+    public ProblemLevel getDefaultProblemLevel() {
+      return ProblemLevel.WARNING;
+    }
+
+  }
+}
\ No newline at end of file
diff --git a/jack/src/com/android/jack/analysis/tracer/Tracer.java b/jack/src/com/android/jack/analysis/tracer/Tracer.java
index add7ca7..1f2edab 100644
--- a/jack/src/com/android/jack/analysis/tracer/Tracer.java
+++ b/jack/src/com/android/jack/analysis/tracer/Tracer.java
@@ -352,7 +352,7 @@
   public void endVisit(@Nonnull JMethodCall mc) {
     JType returnType = mc.getType();
     trace(returnType);
-    JMethodIdWide methodId = mc.getMethodId();
+    JMethodIdWide methodId = mc.getMethodIdWide();
     JClassOrInterface receiverType = mc.getReceiverType();
     trace(receiverType);
     JMethod implementationOrDefinition = null;
@@ -391,7 +391,7 @@
   public void endVisit(@Nonnull JNewInstance newInstance) {
     JClass returnType = newInstance.getType();
     trace(returnType);
-    JMethodIdWide methodId = newInstance.getMethodId();
+    JMethodIdWide methodId = newInstance.getMethodIdWide();
     trace(methodId, returnType, JPrimitiveTypeEnum.VOID.getType(),
         false /* mustTraceOverridingMethods */);
   }
@@ -567,7 +567,10 @@
   public void endVisit(@Nonnull JVariableRef x) {
     DebugVariableInfoMarker debugInfo = x.getMarker(DebugVariableInfoMarker.class);
     if (debugInfo != null) {
-      trace(debugInfo.getType());
+      JType debugInfoType = debugInfo.getType();
+      if (debugInfoType != null) {
+        trace(debugInfoType);
+      }
     }
   }
 
diff --git a/jack/src/com/android/jack/api/v01/impl/Api01ConfigImpl.java b/jack/src/com/android/jack/api/v01/impl/Api01ConfigImpl.java
index cbdaec4..a5da41d 100644
--- a/jack/src/com/android/jack/api/v01/impl/Api01ConfigImpl.java
+++ b/jack/src/com/android/jack/api/v01/impl/Api01ConfigImpl.java
@@ -398,22 +398,22 @@
   @Override
   public void setVerbosityLevel(@Nonnull VerbosityLevel verbosityLevel)
       throws ConfigurationException {
-    com.android.jack.Options.VerbosityLevel jackVerbosityLevel;
+    com.android.jack.VerbosityLevel jackVerbosityLevel;
     switch (verbosityLevel) {
       case DEBUG: {
-        jackVerbosityLevel = com.android.jack.Options.VerbosityLevel.INFO;
+        jackVerbosityLevel = com.android.jack.VerbosityLevel.INFO;
         break;
       }
       case ERROR: {
-        jackVerbosityLevel = com.android.jack.Options.VerbosityLevel.ERROR;
+        jackVerbosityLevel = com.android.jack.VerbosityLevel.ERROR;
         break;
       }
       case INFO: {
-        jackVerbosityLevel = com.android.jack.Options.VerbosityLevel.INFO;
+        jackVerbosityLevel = com.android.jack.VerbosityLevel.INFO;
         break;
       }
       case WARNING: {
-        jackVerbosityLevel = com.android.jack.Options.VerbosityLevel.WARNING;
+        jackVerbosityLevel = com.android.jack.VerbosityLevel.WARNING;
         break;
       }
       default: {
diff --git a/jack/src/com/android/jack/api/v02/impl/Api02ConfigImpl.java b/jack/src/com/android/jack/api/v02/impl/Api02ConfigImpl.java
index 1b52ced..69f06cd 100644
--- a/jack/src/com/android/jack/api/v02/impl/Api02ConfigImpl.java
+++ b/jack/src/com/android/jack/api/v02/impl/Api02ConfigImpl.java
@@ -79,18 +79,18 @@
   @Override
   public void setVerbosityLevel(@Nonnull VerbosityLevel verbosityLevel)
       throws ConfigurationException {
-    com.android.jack.Options.VerbosityLevel jackVerbosityLevel;
+    com.android.jack.VerbosityLevel jackVerbosityLevel;
     switch (verbosityLevel) {
       case ERROR: {
-        jackVerbosityLevel = com.android.jack.Options.VerbosityLevel.ERROR;
+        jackVerbosityLevel = com.android.jack.VerbosityLevel.ERROR;
         break;
       }
       case INFO: {
-        jackVerbosityLevel = com.android.jack.Options.VerbosityLevel.INFO;
+        jackVerbosityLevel = com.android.jack.VerbosityLevel.INFO;
         break;
       }
       case WARNING: {
-        jackVerbosityLevel = com.android.jack.Options.VerbosityLevel.WARNING;
+        jackVerbosityLevel = com.android.jack.VerbosityLevel.WARNING;
         break;
       }
       default: {
diff --git a/jack/src/com/android/jack/backend/ResourceWriter.java b/jack/src/com/android/jack/backend/ResourceWriter.java
index c7aa0f7..c48b5d3 100644
--- a/jack/src/com/android/jack/backend/ResourceWriter.java
+++ b/jack/src/com/android/jack/backend/ResourceWriter.java
@@ -73,7 +73,7 @@
       InputVFile inputFile = resource.getVFile();
       VPath path = resource.getPath();
       try {
-        OutputVFile outputFile = outputVDir.getRootOutputVDir().createOutputVFile(path);
+        OutputVFile outputFile = outputVDir.getRootDir().createOutputVFile(path);
         outputFile.copy(inputFile);
       } catch (CannotCreateFileException | WrongPermissionException | CannotCloseException
           | CannotReadException | CannotWriteException e) {
diff --git a/jack/src/com/android/jack/backend/dex/AnnotationBuilder.java b/jack/src/com/android/jack/backend/dex/AnnotationBuilder.java
index 1f328c8..15e42d5 100644
--- a/jack/src/com/android/jack/backend/dex/AnnotationBuilder.java
+++ b/jack/src/com/android/jack/backend/dex/AnnotationBuilder.java
@@ -106,7 +106,7 @@
   @Nonnull
   private Annotation createAnnotation(@Nonnull JAnnotation annotation)
       throws SourceAnnotationException, BuildAnnotationException {
-    Annotation ropAnnotation = new Annotation(RopHelper.getCstType(annotation.getType()),
+    Annotation ropAnnotation = new Annotation(RopHelper.convertTypeToDx(annotation.getType()),
         getVisibility(annotation.getRetentionPolicy()));
     constantBuilder.createAnnotationPairs(annotation, ropAnnotation);
     ropAnnotation.setImmutable();
diff --git a/jack/src/com/android/jack/backend/dex/ClassAnnotationBuilder.java b/jack/src/com/android/jack/backend/dex/ClassAnnotationBuilder.java
index 83c9629..8c3b6c7 100644
--- a/jack/src/com/android/jack/backend/dex/ClassAnnotationBuilder.java
+++ b/jack/src/com/android/jack/backend/dex/ClassAnnotationBuilder.java
@@ -38,7 +38,7 @@
 import javax.annotation.Nonnull;
 
 /**
- * Builds the {@link com.android.dx.rop.annotation.Annotations Annotations} of a class or interface.
+ * Builds the {@link Annotations} of a class or interface.
  */
 @Description("Builds the rop annotations of a JDeclaredType.")
 @Constraint(need = ClassDefItemMarker.class, no = AnnotationMethodDefaultValue.class)
diff --git a/jack/src/com/android/jack/backend/dex/ClassDefItemBuilder.java b/jack/src/com/android/jack/backend/dex/ClassDefItemBuilder.java
index ce3d7ba..548c503 100644
--- a/jack/src/com/android/jack/backend/dex/ClassDefItemBuilder.java
+++ b/jack/src/com/android/jack/backend/dex/ClassDefItemBuilder.java
@@ -22,7 +22,7 @@
 import com.android.jack.dx.dex.file.ClassDefItem;
 import com.android.jack.dx.rop.code.AccessFlags;
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
+import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.rop.type.TypeList;
 import com.android.jack.ir.ast.JClass;
 import com.android.jack.ir.ast.JDefinedClassOrInterface;
@@ -44,8 +44,8 @@
 import com.android.sched.schedulable.RunnableSchedulable;
 import com.android.sched.schedulable.Transform;
 import com.android.sched.util.config.ThreadConfig;
-import com.android.sched.util.file.FileUtils;
 
+import java.io.File;
 import java.util.List;
 
 import javax.annotation.CheckForNull;
@@ -100,35 +100,28 @@
   @Nonnull
   private ClassDefItem createClassDefItem(@Nonnull JDefinedClassOrInterface type)
       throws JTypeLookupException {
-    CstType thisClass = RopHelper.getCstType(type);
-    CstType superclassType = createSuperClass(type);
-    int accessFlags = getDxAccessFlagsForType(type);
-    TypeList interfaces = createInterfacesList(type);
     CstString sourceFile = null;
     if (emitSourceFileInfo) {
       sourceFile = createSourceFile(type);
     }
-    ClassDefItem classDefItem = new ClassDefItem(thisClass, accessFlags,
-        superclassType, interfaces, sourceFile);
-    return classDefItem;
+    return new ClassDefItem(RopHelper.convertTypeToDx(type), getDxAccessFlagsForType(type),
+        createSuperClass(type), createInterfacesList(type), sourceFile);
   }
 
   @CheckForNull
-  private static CstType createSuperClass(@Nonnull JDefinedClassOrInterface type)
+  private static Type createSuperClass(@Nonnull JDefinedClassOrInterface type)
       throws JTypeLookupException {
     JClass superClass = type.getSuperClass();
     if (superClass == null) {
       if (type instanceof JDefinedInterface) {
-        return RopHelper.getCstType(
-            Jack.getSession().getPhantomLookup().getClass(CommonTypes.JAVA_LANG_OBJECT));
+        superClass = Jack.getSession().getPhantomLookup().getClass(CommonTypes.JAVA_LANG_OBJECT);
       } else {
         assert type.isSameType(
             Jack.getSession().getPhantomLookup().getClass(CommonTypes.JAVA_LANG_OBJECT));
         return null;
       }
     }
-    CstType superclassType = RopHelper.getCstType(superClass);
-    return superclassType;
+    return RopHelper.convertTypeToDx(superClass);
   }
 
   @Nonnull
@@ -145,8 +138,7 @@
     if (sourceInfo != SourceInfo.UNKNOWN) {
       // Only keep filename without the path
       String sourceFileName = sourceInfo.getFileName();
-      String fileSeparator = FileUtils.getFileSeparator();
-      int separatorPos = sourceFileName.lastIndexOf(fileSeparator);
+      int separatorPos = sourceFileName.lastIndexOf(File.separatorChar);
       if (separatorPos > 0) {
         sourceFileName = sourceFileName.substring(separatorPos + 1);
       }
diff --git a/jack/src/com/android/jack/backend/dex/ClassDefItemMarkerRemover.java b/jack/src/com/android/jack/backend/dex/ClassDefItemMarkerRemover.java
index de11a57..41eb0a9 100644
--- a/jack/src/com/android/jack/backend/dex/ClassDefItemMarkerRemover.java
+++ b/jack/src/com/android/jack/backend/dex/ClassDefItemMarkerRemover.java
@@ -17,10 +17,12 @@
 package com.android.jack.backend.dex;
 
 import com.android.jack.ir.ast.JDefinedClassOrInterface;
+import com.android.jack.scheduling.filter.TypeWithoutPrebuiltFilter;
 import com.android.jack.scheduling.marker.ClassDefItemMarker;
 import com.android.sched.item.Description;
 import com.android.sched.item.Name;
 import com.android.sched.schedulable.Constraint;
+import com.android.sched.schedulable.Filter;
 import com.android.sched.schedulable.RunnableSchedulable;
 import com.android.sched.schedulable.Transform;
 
@@ -35,6 +37,7 @@
 @Name("ClassDefItemMarkerRemover")
 @Constraint(need = ClassDefItemMarker.class)
 @Transform(remove = ClassDefItemMarker.class)
+@Filter(TypeWithoutPrebuiltFilter.class)
 public class ClassDefItemMarkerRemover implements RunnableSchedulable<JDefinedClassOrInterface> {
 
   @Override
diff --git a/jack/src/com/android/jack/backend/dex/ConstantBuilder.java b/jack/src/com/android/jack/backend/dex/ConstantBuilder.java
index 303c9e8..cf566ef 100644
--- a/jack/src/com/android/jack/backend/dex/ConstantBuilder.java
+++ b/jack/src/com/android/jack/backend/dex/ConstantBuilder.java
@@ -32,8 +32,8 @@
 import com.android.jack.dx.rop.cst.CstInteger;
 import com.android.jack.dx.rop.cst.CstKnownNull;
 import com.android.jack.dx.rop.cst.CstLong;
-import com.android.jack.dx.rop.cst.CstNat;
 import com.android.jack.dx.rop.cst.CstShort;
+import com.android.jack.dx.rop.cst.CstString;
 import com.android.jack.ir.ast.JAbstractStringLiteral;
 import com.android.jack.ir.ast.JAnnotation;
 import com.android.jack.ir.ast.JArrayLiteral;
@@ -72,7 +72,7 @@
 
     @Override
     public boolean visit(@Nonnull JAnnotation annotation) {
-      Annotation ropAnnotation = new Annotation(RopHelper.getCstType(annotation.getType()),
+      Annotation ropAnnotation = new Annotation(RopHelper.convertTypeToDx(annotation.getType()),
           AnnotationVisibility.EMBEDDED);
       createAnnotationPairs(annotation, ropAnnotation);
       ropAnnotation.setImmutable();
@@ -100,14 +100,14 @@
 
     @Override
     public boolean visit(@Nonnull JEnumLiteral literal) {
-      CstNat nat = RopHelper.createSignature(literal.getFieldId());
-      result = new CstEnumRef(nat);
+      result = new CstEnumRef(new CstString(literal.getFieldId().getName()),
+          RopHelper.convertTypeToDx(literal.getType()));
       return false;
     }
 
     @Override
     public boolean visit(@Nonnull JClassLiteral literal) {
-      result = RopHelper.getCstType(literal.getRefType());
+      result = RopHelper.convertTypeToDx(literal.getRefType());
       return false;
     }
 
diff --git a/jack/src/com/android/jack/backend/dex/DexAnnotations.java b/jack/src/com/android/jack/backend/dex/DexAnnotations.java
index 96ad6fb..e89c071 100644
--- a/jack/src/com/android/jack/backend/dex/DexAnnotations.java
+++ b/jack/src/com/android/jack/backend/dex/DexAnnotations.java
@@ -36,4 +36,6 @@
   final String ANNOTATION_THROWS = "Ldalvik/annotation/Throws;";
   @Nonnull
   final String ANNOTATION_SIGNATURE = "Ldalvik/annotation/Signature;";
+  @Nonnull
+  final String ANNOTATION_METHOD_PARAMETERS = "Ldalvik/annotation/MethodParameters;";
 }
diff --git a/jack/src/com/android/jack/backend/dex/DexWritingTool.java b/jack/src/com/android/jack/backend/dex/DexWritingTool.java
index af6e5cb..408e512 100644
--- a/jack/src/com/android/jack/backend/dex/DexWritingTool.java
+++ b/jack/src/com/android/jack/backend/dex/DexWritingTool.java
@@ -38,8 +38,10 @@
 import com.android.jack.util.AndroidApiLevel;
 import com.android.sched.util.codec.VariableName;
 import com.android.sched.util.config.ThreadConfig;
+import com.android.sched.util.file.CannotCloseException;
 import com.android.sched.util.file.CannotCreateFileException;
 import com.android.sched.util.file.CannotReadException;
+import com.android.sched.util.file.CannotWriteException;
 import com.android.sched.util.file.WrongPermissionException;
 import com.android.sched.util.location.Location;
 import com.android.sched.util.log.Event;
@@ -63,7 +65,6 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
-import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import javax.annotation.CheckForNull;
@@ -121,8 +122,9 @@
   @Nonnull
   private final AndroidApiLevel apiLevel = ThreadConfig.get(Options.ANDROID_MIN_API_LEVEL);
 
-  private final boolean usePrebuilts =
-      ThreadConfig.get(Options.USE_PREBUILT_FROM_LIBRARY).booleanValue();
+  protected final boolean usePrebuilts =
+            ThreadConfig.get(Options.USE_PREBUILT_FROM_LIBRARY).booleanValue();
+
 
   @Nonnull
   protected DexFile createDexFile() {
@@ -135,17 +137,13 @@
   protected void finishMerge(@Nonnull JackMerger merger, @Nonnull OutputVFile out)
       throws DexWritingException {
     try (Event event = tracer.open(JackEventType.DEX_MERGER_FINISH)) {
-      OutputStream os = null;
       try {
-        try {
-          os = new BufferedOutputStream(out.getOutputStream());
-          merger.finish(os);
-        } finally {
-          if (os != null) {
-            os.close();
-          }
+        try (OutputStream os = new BufferedOutputStream(out.getOutputStream())) {
+          merger.finish(os, out);
+        } catch (IOException e) {
+          throw new CannotCloseException(out, e);
         }
-      } catch (IOException | WrongPermissionException e) {
+      } catch (CannotWriteException | CannotCloseException | WrongPermissionException e) {
         throw new DexWritingException(e);
       }
     }
@@ -153,23 +151,15 @@
 
   protected void mergeDex(@Nonnull JackMerger merger, InputVFile inputDex)
       throws MergingOverflowException, DexWritingException {
-    InputStream inputStream = null;
+
     try {
-      inputStream = inputDex.getInputStream();
-      merger.addDexFile(new DexBuffer(inputStream));
-    } catch (IOException e) {
-      throw new DexWritingException(new CannotReadException(inputDex, e));
-    } catch (WrongPermissionException e) {
-      throw new DexWritingException(e);
-    } finally {
-      if (inputStream != null) {
-        try {
-          inputStream.close();
-        } catch (IOException e) {
-          logger.log(
-              Level.WARNING, "Failed to close ''{0}''", inputDex.getLocation().getDescription());
-        }
+      try (InputStream inputStream = inputDex.getInputStream()) {
+        merger.addDexFile(new DexBuffer(inputStream, inputDex.getLocation()));
+      } catch (IOException e) {
+        throw new CannotCloseException(inputDex, e);
       }
+    } catch (CannotCloseException | CannotReadException | WrongPermissionException e) {
+      throw new DexWritingException(e);
     }
   }
 
@@ -184,7 +174,7 @@
       dexName = DexFileWriter.DEX_PREFIX + dexCount + DexFileWriter.DEX_FILE_EXTENSION;
     }
     try {
-      return outputVfs.getRootOutputVDir().createOutputVFile(new VPath(dexName, '/'));
+      return outputVfs.getRootDir().createOutputVFile(new VPath(dexName, '/'));
     } catch (CannotCreateFileException e) {
       throw new DexWritingException(e);
     }
@@ -215,7 +205,10 @@
       anyDexList.add(new MatchableInputVFile(getDexInputVFileOfType(jackOutputLibrary, type)));
     }
 
-    addOrphanDexFiles(mainDexList, new HashSet<MatchableInputVFile>(anyDexList));
+    if (usePrebuilts) {
+      DexWritingTool.addOrphanDexFiles(/*outputLibrary = */ null, mainDexList,
+          new HashSet<MatchableInputVFile>(anyDexList));
+    }
   }
 
   @Nonnull
@@ -245,36 +238,40 @@
     return inputVFile;
   }
 
-  protected void addOrphanDexFiles(@Nonnull Set<MatchableInputVFile> mainDexToMerge) {
-    addOrphanDexFiles(mainDexToMerge, Collections.<MatchableInputVFile>emptySet());
+  static void addOrphanDexFiles(@CheckForNull OutputJackLibrary outputLibrary,
+      @Nonnull Set<MatchableInputVFile> mainDexToMerge) {
+    DexWritingTool.addOrphanDexFiles(outputLibrary, mainDexToMerge,
+        Collections.<MatchableInputVFile>emptySet());
   }
 
   /**
    * Orphan dex file is a dex file without an associated Jayce file.
    */
-  @Nonnull
-  protected void addOrphanDexFiles(@Nonnull Set<MatchableInputVFile> mainDexToMerge,
+  static void addOrphanDexFiles(@CheckForNull OutputJackLibrary outputLibrary,
+      @Nonnull Set<MatchableInputVFile> mainDexToMerge,
       @Nonnull Set<MatchableInputVFile> othersDexToMerge) {
-    if (usePrebuilts) {
-      for (InputLibrary inputLibrary : Jack.getSession().getImportedLibraries()) {
-        if (inputLibrary instanceof InputJackLibrary) {
-          InputJackLibrary inputJackLibrary = (InputJackLibrary) inputLibrary;
-          Iterator<InputVFile> dexFileIt = inputJackLibrary.iterator(FileType.PREBUILT);
-          while (dexFileIt.hasNext()) {
-            InputVFile dexFile = dexFileIt.next();
-            String dexFilePath = dexFile.getPathFromRoot().getPathAsString('/');
-            int indexOfDexExtension = dexFilePath.indexOf(DexFileWriter.DEX_FILE_EXTENSION);
-            // Prebuilt section of library does not contains only dex files
-            if (indexOfDexExtension != -1) {
-              String type =
-                  dexFilePath.substring(0, dexFilePath.indexOf(DexFileWriter.DEX_FILE_EXTENSION));
-              try {
-                inputJackLibrary.getFile(FileType.JAYCE, new VPath(type, '/'));
-              } catch (FileTypeDoesNotExistException e) {
-                MatchableInputVFile orphanDex = new MatchableInputVFile(dexFile);
-                if (!othersDexToMerge.contains(orphanDex)) {
-                  mainDexToMerge.add(orphanDex);
-                }
+    for (InputLibrary inputLibrary : Jack.getSession().getImportedLibraries()) {
+      if (inputLibrary instanceof InputJackLibrary) {
+        InputJackLibrary inputJackLibrary = (InputJackLibrary) inputLibrary;
+        if (outputLibrary != null
+            && outputLibrary.containsLibraryLocation(inputJackLibrary.getLocation())) {
+          continue;
+        }
+        Iterator<InputVFile> dexFileIt = inputJackLibrary.iterator(FileType.PREBUILT);
+        while (dexFileIt.hasNext()) {
+          InputVFile dexFile = dexFileIt.next();
+          String dexFilePath = dexFile.getPathFromRoot().getPathAsString('/');
+          int indexOfDexExtension = dexFilePath.indexOf(DexFileWriter.DEX_FILE_EXTENSION);
+          // Prebuilt section of library does not contains only dex files
+          if (indexOfDexExtension != -1) {
+            String type =
+                dexFilePath.substring(0, dexFilePath.indexOf(DexFileWriter.DEX_FILE_EXTENSION));
+            try {
+              inputJackLibrary.getFile(FileType.JAYCE, new VPath(type, '/'));
+            } catch (FileTypeDoesNotExistException e) {
+              MatchableInputVFile orphanDex = new MatchableInputVFile(dexFile);
+              if (!othersDexToMerge.contains(orphanDex)) {
+                mainDexToMerge.add(orphanDex);
               }
             }
           }
diff --git a/jack/src/com/android/jack/backend/dex/FieldAnnotationBuilder.java b/jack/src/com/android/jack/backend/dex/FieldAnnotationBuilder.java
index f5be1e9..20923ef 100644
--- a/jack/src/com/android/jack/backend/dex/FieldAnnotationBuilder.java
+++ b/jack/src/com/android/jack/backend/dex/FieldAnnotationBuilder.java
@@ -40,7 +40,7 @@
 import javax.annotation.Nonnull;
 
 /**
- * Builds the {@link com.android.dx.rop.annotation.Annotations Annotations} of a field.
+ * Builds the {@link Annotations} of a field.
  */
 @Description("Builds the rop annotations of a field")
 @Synchronized
diff --git a/jack/src/com/android/jack/backend/dex/FieldInitializerRemover.java b/jack/src/com/android/jack/backend/dex/FieldInitializerRemover.java
index aa05ab9..db05111 100644
--- a/jack/src/com/android/jack/backend/dex/FieldInitializerRemover.java
+++ b/jack/src/com/android/jack/backend/dex/FieldInitializerRemover.java
@@ -29,6 +29,7 @@
 import com.android.jack.ir.ast.JFieldInitializer;
 import com.android.jack.ir.ast.JIntLiteral;
 import com.android.jack.ir.ast.JLiteral;
+import com.android.jack.ir.ast.JNode;
 import com.android.jack.ir.ast.JPrimitiveType;
 import com.android.jack.ir.ast.JPrimitiveType.JPrimitiveTypeEnum;
 import com.android.jack.ir.ast.JReferenceType;
@@ -97,7 +98,9 @@
     JFieldInitializer declaration = field.getFieldInitializer();
     if (declaration != null) {
       JExpression initialValue = declaration.getInitializer();
-      TransformationRequest tr = new TransformationRequest(declaration.getParent());
+      final JNode declarationParent = declaration.getParent();
+      assert declarationParent != null;
+      TransformationRequest tr = new TransformationRequest(declarationParent);
       if (/* Field is static final and initialized by a literal */
           field.isStatic() && field.isFinal() && initialValue instanceof JLiteral
           /* Object field initialized by a String literal: don't remove unless allowed */
diff --git a/jack/src/com/android/jack/backend/dex/MainDexCollector.java b/jack/src/com/android/jack/backend/dex/MainDexCollector.java
index 273065a..b714264 100644
--- a/jack/src/com/android/jack/backend/dex/MainDexCollector.java
+++ b/jack/src/com/android/jack/backend/dex/MainDexCollector.java
@@ -51,8 +51,8 @@
 public class MainDexCollector extends TypeReferenceCollector
   implements RunnableSchedulable<JDefinedClassOrInterface> {
 
-  private final boolean isShrinkEnabled = ThreadConfig.get(Options.SHROB_ENABLED).booleanValue()
-      && ThreadConfig.get(Options.FLAGS).shrink();
+  private final boolean isShrinkEnabled =
+      ThreadConfig.get(Options.SHRINKING_ENABLED).booleanValue();
 
   @Override
   protected void collect(@Nonnull JType type) {
diff --git a/jack/src/com/android/jack/backend/dex/MethodAnnotationBuilder.java b/jack/src/com/android/jack/backend/dex/MethodAnnotationBuilder.java
index c2477a2..765558e 100644
--- a/jack/src/com/android/jack/backend/dex/MethodAnnotationBuilder.java
+++ b/jack/src/com/android/jack/backend/dex/MethodAnnotationBuilder.java
@@ -17,6 +17,8 @@
 package com.android.jack.backend.dex;
 
 import com.android.jack.Options;
+import com.android.jack.backend.dex.annotations.tag.ParameterMetadataAnnotation;
+import com.android.jack.backend.dex.annotations.tag.ParameterMetadataFeature;
 import com.android.jack.backend.dex.rop.RopHelper;
 import com.android.jack.dx.dex.file.ClassDefItem;
 import com.android.jack.dx.rop.annotation.Annotations;
@@ -44,15 +46,17 @@
 import javax.annotation.Nonnull;
 
 /**
- * Builds the {@link com.android.dx.rop.annotation.Annotations Annotations} of a method.
+ * Builds the {@link Annotations} of a method.
  */
 @Description("Builds the rop annotations of a method")
 @Synchronized
 @Constraint(need = {ClassDefItemMarker.class, ClassDefItemMarker.Method.class})
 @Transform(add = ClassDefItemMarker.MethodAnnotation.class, modify = ClassDefItemMarker.class)
 @Use(AnnotationBuilder.class)
-@Optional(@ToSupport(feature = SourceVersion8.class,
-    add = @Constraint(no = JAnnotation.RepeatedAnnotation.class)))
+@Optional({@ToSupport(feature = SourceVersion8.class,
+               add = @Constraint(no = JAnnotation.RepeatedAnnotation.class)),
+           @ToSupport(feature = ParameterMetadataFeature.class,
+               add = @Constraint(need = ParameterMetadataAnnotation.class))})
 @Filter(TypeWithoutPrebuiltFilter.class)
 public class MethodAnnotationBuilder implements RunnableSchedulable<JMethod> {
 
diff --git a/jack/src/com/android/jack/backend/dex/MethodBodyRemover.java b/jack/src/com/android/jack/backend/dex/MethodBodyRemover.java
index 575fb18..7f07b81 100644
--- a/jack/src/com/android/jack/backend/dex/MethodBodyRemover.java
+++ b/jack/src/com/android/jack/backend/dex/MethodBodyRemover.java
@@ -20,7 +20,9 @@
 import com.android.jack.ir.ast.JMethod;
 import com.android.jack.ir.ast.JMethodBody;
 import com.android.jack.scheduling.feature.DropMethodBody;
+import com.android.jack.scheduling.filter.TypeWithoutPrebuiltFilter;
 import com.android.sched.item.Description;
+import com.android.sched.schedulable.Filter;
 import com.android.sched.schedulable.RunnableSchedulable;
 import com.android.sched.schedulable.Support;
 import com.android.sched.schedulable.Transform;
@@ -34,6 +36,7 @@
 @Description("Drop method body")
 @Transform(remove = {JMethodBody.class})
 @Support(DropMethodBody.class)
+@Filter(TypeWithoutPrebuiltFilter.class)
 public class MethodBodyRemover implements RunnableSchedulable<JMethod> {
 
   @Nonnull
diff --git a/jack/src/com/android/jack/backend/dex/OrphanDexFileWriter.java b/jack/src/com/android/jack/backend/dex/OrphanDexFileWriter.java
new file mode 100644
index 0000000..a61d66d
--- /dev/null
+++ b/jack/src/com/android/jack/backend/dex/OrphanDexFileWriter.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.backend.dex;
+
+import com.android.jack.JackIOException;
+import com.android.jack.backend.dex.DexWritingTool.MatchableInputVFile;
+import com.android.jack.ir.ast.JSession;
+import com.android.jack.library.FileType;
+import com.android.jack.library.OutputJackLibrary;
+import com.android.sched.item.Description;
+import com.android.sched.item.Name;
+import com.android.sched.schedulable.Produce;
+import com.android.sched.schedulable.RunnableSchedulable;
+import com.android.sched.util.file.CannotCloseException;
+import com.android.sched.util.file.CannotCreateFileException;
+import com.android.sched.util.file.CannotReadException;
+import com.android.sched.util.file.CannotWriteException;
+import com.android.sched.util.file.WrongPermissionException;
+import com.android.sched.vfs.InputVFile;
+import com.android.sched.vfs.OutputVFile;
+import com.android.sched.vfs.VPath;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.annotation.Nonnull;
+
+/**
+ * Write an orphan dex from an imported library to an output library.
+ */
+@Description("Write an orphan dex from an imported library to an output library")
+@Name("OrphanDexFileWriter")
+@Produce(DexInLibraryProduct.class)
+public class OrphanDexFileWriter extends DexWriter implements RunnableSchedulable<JSession> {
+
+  @Override
+  public void run(@Nonnull JSession session) {
+    Set<MatchableInputVFile> prebuiltOrphanDexFiles = new HashSet<>();
+    OutputJackLibrary outputLibrary = session.getJackOutputLibrary();
+
+    DexWritingTool.addOrphanDexFiles(outputLibrary, prebuiltOrphanDexFiles);
+
+    for (MatchableInputVFile matchableInput : prebuiltOrphanDexFiles) {
+      InputVFile in = matchableInput.getInputVFile();
+      String dexFilePath = in.getPathFromRoot().getPathAsString('/');
+      int indexOfDexExtension = dexFilePath.indexOf(DexFileWriter.DEX_FILE_EXTENSION);
+      assert indexOfDexExtension != -1;
+      String type = dexFilePath.substring(0, dexFilePath.indexOf(DexFileWriter.DEX_FILE_EXTENSION));
+      OutputVFile vFile;
+      try {
+        vFile = outputLibrary.createFile(FileType.PREBUILT, new VPath(type, '/'));
+      } catch (CannotCreateFileException e) {
+        throw new JackIOException("Could not create Dex file in output "
+            + outputLibrary.getLocation().getDescription() + " for type " + type, e);
+      }
+      try {
+        vFile.copy(in);
+      } catch (CannotCloseException | CannotReadException | CannotWriteException
+          | WrongPermissionException e) {
+        throw new JackIOException("Could not copy Dex file from "
+            + in.getLocation().getDescription() + " to " + vFile.getLocation().getDescription(), e);
+      }
+    }
+  }
+}
diff --git a/jack/src/com/android/jack/backend/dex/SingleDexWritingTool.java b/jack/src/com/android/jack/backend/dex/SingleDexWritingTool.java
index 7e7dbe7..d66d84f 100644
--- a/jack/src/com/android/jack/backend/dex/SingleDexWritingTool.java
+++ b/jack/src/com/android/jack/backend/dex/SingleDexWritingTool.java
@@ -47,7 +47,9 @@
     for (JDefinedClassOrInterface type : Jack.getSession().getTypesToEmit()) {
       dexToMerge.add(new MatchableInputVFile(getDexInputVFileOfType(jackOutputLibrary, type)));
     }
-    addOrphanDexFiles(dexToMerge);
+    if (usePrebuilts) {
+      DexWritingTool.addOrphanDexFiles(/*outputLibrary = */ null, dexToMerge);
+    }
 
     try (Event event = tracer.open(JackEventType.DEX_MERGER)) {
       JackMerger merger = new JackMerger(createDexFile());
diff --git a/jack/src/com/android/jack/backend/dex/annotations/ParameterMetadataAnnotationsAdder.java b/jack/src/com/android/jack/backend/dex/annotations/ParameterMetadataAnnotationsAdder.java
new file mode 100644
index 0000000..7fcebcb
--- /dev/null
+++ b/jack/src/com/android/jack/backend/dex/annotations/ParameterMetadataAnnotationsAdder.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.backend.dex.annotations;
+
+import com.android.jack.Jack;
+import com.android.jack.backend.dex.DexAnnotations;
+import com.android.jack.backend.dex.annotations.tag.ParameterMetadataAnnotation;
+import com.android.jack.backend.dex.annotations.tag.ParameterMetadataFeature;
+import com.android.jack.ir.ast.JAnnotation;
+import com.android.jack.ir.ast.JAnnotationType;
+import com.android.jack.ir.ast.JArrayLiteral;
+import com.android.jack.ir.ast.JIntLiteral;
+import com.android.jack.ir.ast.JLiteral;
+import com.android.jack.ir.ast.JMethod;
+import com.android.jack.ir.ast.JMethodIdWide;
+import com.android.jack.ir.ast.JModifier;
+import com.android.jack.ir.ast.JNameValuePair;
+import com.android.jack.ir.ast.JNullLiteral;
+import com.android.jack.ir.ast.JParameter;
+import com.android.jack.ir.ast.JRetentionPolicy;
+import com.android.jack.ir.ast.JStringLiteral;
+import com.android.jack.ir.ast.JType;
+import com.android.jack.ir.ast.JVisitor;
+import com.android.jack.ir.ast.MethodKind;
+import com.android.jack.ir.sourceinfo.SourceInfo;
+import com.android.jack.library.DumpInLibrary;
+import com.android.jack.library.PrebuiltCompatibility;
+import com.android.jack.scheduling.filter.TypeWithoutPrebuiltFilter;
+import com.android.jack.transformations.request.AddAnnotation;
+import com.android.jack.transformations.request.PutNameValuePair;
+import com.android.jack.transformations.request.TransformationRequest;
+import com.android.sched.item.Description;
+import com.android.sched.schedulable.Filter;
+import com.android.sched.schedulable.Protect;
+import com.android.sched.schedulable.RunnableSchedulable;
+import com.android.sched.schedulable.Support;
+import com.android.sched.schedulable.Transform;
+import com.android.sched.schedulable.With;
+import com.android.sched.util.config.HasKeyId;
+import com.android.sched.util.config.id.BooleanPropertyId;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
+/**
+ * Add "system annotation" to provide parameter metadata such as parameter names and modifiers.
+ */
+@HasKeyId
+@Description("Add annotations for parameter metadata")
+@Transform(add = {ParameterMetadataAnnotation.class, JAnnotation.class, JNameValuePair.class,
+                  JStringLiteral.class, JIntLiteral.class, JArrayLiteral.class})
+@Protect(add = {JMethod.class, JParameter.class},
+    unprotect = @With(remove = ParameterMetadataAnnotation.class))
+@Filter(TypeWithoutPrebuiltFilter.class)
+@Support(ParameterMetadataFeature.class)
+public class ParameterMetadataAnnotationsAdder implements RunnableSchedulable<JMethod> {
+
+  @Nonnull
+  public static final BooleanPropertyId PARAMETER_ANNOTATION = BooleanPropertyId
+      .create("jack.dex.parameter.annotations", "Emit parameter annotations")
+      .addDefaultValue(Boolean.FALSE).addCategory(DumpInLibrary.class)
+      .addCategory(PrebuiltCompatibility.class);
+
+  @Nonnull
+  JAnnotationType methodParametersAnnotationType = Jack.getSession().getPhantomLookup()
+      .getAnnotationType(DexAnnotations.ANNOTATION_METHOD_PARAMETERS);
+
+  @Nonnull
+  JMethodIdWide namesMethodIdWide = methodParametersAnnotationType.getOrCreateMethodIdWide(
+      "names", Collections.<JType>emptyList(), MethodKind.INSTANCE_VIRTUAL);
+
+  @Nonnull
+  JMethodIdWide accessFlagsMethodIdWide = methodParametersAnnotationType.getOrCreateMethodIdWide(
+      "accessFlags", Collections.<JType>emptyList(), MethodKind.INSTANCE_VIRTUAL);
+
+  private static class Visitor extends JVisitor {
+
+    @Nonnull
+    private final List<JLiteral> names;
+    @Nonnull
+    private final List<JLiteral> accessFlags;
+    @Nonnull
+    private final SourceInfo si = SourceInfo.UNKNOWN;
+
+    public Visitor(@Nonnull int parameterCount) {
+      names = new ArrayList<>(parameterCount);
+      accessFlags = new ArrayList<>(parameterCount);
+    }
+
+    @Override
+    public boolean visit(@Nonnull JMethod method) {
+      for (JParameter parameter : method.getParams()) {
+        addParameterName(parameter.isNamePresent() ? parameter.getName() : null);
+        // Remove NAME_PRESENT modifier since it is only an internal modifier
+        accessFlags.add(new JIntLiteral(si, parameter.getModifier() & ~JModifier.NAME_PRESENT));
+      }
+
+      return super.visit(method);
+    }
+
+    private void addParameterName(@CheckForNull String parameterName) {
+      if (parameterName != null) {
+        names.add(new JStringLiteral(si, parameterName));
+      } else {
+        names.add(new JNullLiteral(si));
+      }
+    }
+  }
+
+  @Override
+  public void run(@Nonnull JMethod method) {
+    Visitor visitor = new Visitor(method.getParams().size());
+    visitor.accept(method);
+
+    writeParameterAnnotation(method, visitor.names, visitor.accessFlags);
+  }
+
+  private void writeParameterAnnotation(@Nonnull JMethod method, @Nonnull List<JLiteral> names,
+      @Nonnull List<JLiteral> accessFlags) {
+    TransformationRequest tr = new TransformationRequest(method);
+    SourceInfo si = SourceInfo.UNKNOWN;
+
+    JAnnotation annotation =
+        new JAnnotation(si, JRetentionPolicy.SYSTEM, methodParametersAnnotationType);
+    tr.append(new AddAnnotation(annotation, method));
+
+    JNameValuePair namesPair =
+        new JNameValuePair(si, namesMethodIdWide, new JArrayLiteral(si, names));
+    tr.append(new PutNameValuePair(annotation, namesPair));
+
+    JNameValuePair accessFlagsPair =
+        new JNameValuePair(si, accessFlagsMethodIdWide, new JArrayLiteral(si, accessFlags));
+    tr.append(new PutNameValuePair(annotation, accessFlagsPair));
+
+    tr.commit();
+  }
+}
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jack/src/com/android/jack/backend/dex/annotations/tag/ParameterMetadataAnnotation.java
similarity index 61%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jack/src/com/android/jack/backend/dex/annotations/tag/ParameterMetadataAnnotation.java
index 0b9fd92..a4627e5 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jack/src/com/android/jack/backend/dex/annotations/tag/ParameterMetadataAnnotation.java
@@ -14,7 +14,15 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+package com.android.jack.backend.dex.annotations.tag;
 
-public interface Interface {}
+import com.android.sched.item.Description;
+import com.android.sched.item.Tag;
 
+/**
+ * The tag {@code ParameterMetadataAnnotation} tells that the annotation for parameter metadatas
+ * have been added.
+ */
+@Description("Parameter metadatas annotations added.")
+public final class ParameterMetadataAnnotation implements Tag {
+}
diff --git a/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveLocalVariableGenericSignature.java b/jack/src/com/android/jack/backend/dex/annotations/tag/ParameterMetadataFeature.java
similarity index 66%
rename from jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveLocalVariableGenericSignature.java
rename to jack/src/com/android/jack/backend/dex/annotations/tag/ParameterMetadataFeature.java
index 96e5795..1e8c37a 100644
--- a/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveLocalVariableGenericSignature.java
+++ b/jack/src/com/android/jack/backend/dex/annotations/tag/ParameterMetadataFeature.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2016 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,15 +14,14 @@
  * limitations under the License.
  */
 
-package com.android.jack.shrob.obfuscation.annotation;
+package com.android.jack.backend.dex.annotations.tag;
 
 import com.android.sched.item.Description;
 import com.android.sched.item.Feature;
 
 /**
- * Represents the removal of the generic signatures of a local variable
+ * A {@link Feature} that represents that parameter metadata annotations are requested.
  */
-@Description("The removal of the generic signatures of a local variable")
-public class RemoveLocalVariableGenericSignature implements Feature {
-
+@Description("Parameter metadata annotations are requested.")
+public final class ParameterMetadataFeature implements Feature {
 }
diff --git a/jack/src/com/android/jack/backend/dex/invokecustom/InvokeCustomHelper.java b/jack/src/com/android/jack/backend/dex/invokecustom/InvokeCustomHelper.java
index 5e4917a..ea21614 100644
--- a/jack/src/com/android/jack/backend/dex/invokecustom/InvokeCustomHelper.java
+++ b/jack/src/com/android/jack/backend/dex/invokecustom/InvokeCustomHelper.java
@@ -29,11 +29,11 @@
 import com.android.jack.dx.rop.cst.CstMethodHandleRef;
 import com.android.jack.dx.rop.cst.CstMethodHandleRef.MethodHandleKind;
 import com.android.jack.dx.rop.cst.CstMethodRef;
-import com.android.jack.dx.rop.cst.CstNat;
 import com.android.jack.dx.rop.cst.CstPrototypeRef;
 import com.android.jack.dx.rop.cst.CstString;
 import com.android.jack.dx.rop.cst.TypedConstant;
 import com.android.jack.dx.rop.type.Prototype;
+import com.android.jack.dx.rop.type.StdTypeList;
 import com.android.jack.ir.ast.JAbstractMethodCall;
 import com.android.jack.ir.ast.JAnnotation;
 import com.android.jack.ir.ast.JAnnotationMethod;
@@ -53,7 +53,6 @@
 import com.android.jack.ir.ast.JNameValuePair;
 import com.android.jack.ir.ast.JShortLiteral;
 import com.android.jack.ir.ast.JStringLiteral;
-import com.android.jack.ir.formatter.BinarySignatureFormatter;
 
 import java.util.Collection;
 import java.util.Iterator;
@@ -68,7 +67,7 @@
 public class InvokeCustomHelper {
 
   public static boolean isInvokeCustom(@Nonnull JAbstractMethodCall call) {
-    Collection<JMethod> methods = call.getMethodId().getMethods();
+    Collection<JMethod> methods = call.getMethodIdWide().getMethods();
     Iterator<JMethod> methodsIt = methods.iterator();
     boolean isInvokeCustom = false;
     while (methodsIt.hasNext()) {
@@ -129,11 +128,8 @@
     assert callSiteArgumentTypes != null;
     assert callSiteReturnType != null;
 
-    Prototype callSitePrototype =
-        Prototype.intern(buildSignature(callSiteArgumentTypes, callSiteReturnType));
-
     return new CstCallSiteRef(methodHandle, callSiteMethodName.getValue(),
-        new CstPrototypeRef(callSitePrototype), extraArgs);
+        new CstPrototypeRef(buildPrototype(callSiteArgumentTypes, callSiteReturnType)), extraArgs);
   }
 
   @CheckForNull
@@ -198,7 +194,7 @@
             break;
           }
           case "classValue" : {
-            cst = RopHelper.getCstType(((JClassLiteral) jLiteral).getRefType());
+            cst = RopHelper.convertTypeToDx(((JClassLiteral) jLiteral).getRefType());
             break;
           }
           default: {
@@ -235,12 +231,9 @@
       type = (JClassLiteral) typeValuePair.getValue();
     }
     assert type != null;
-    BinarySignatureFormatter bsf = BinarySignatureFormatter.getFormatter();
 
-    CstNat nat =
-        new CstNat(new CstString(name.getValue()), new CstString(bsf.getName(type.getRefType())));
-
-    CstFieldRef fieldRef = new CstFieldRef(RopHelper.getCstType(owner.getRefType()), nat);
+    CstFieldRef fieldRef = new CstFieldRef(RopHelper.convertTypeToDx(owner.getRefType()),
+        new CstString(name.getValue()), RopHelper.convertTypeToDx(type.getRefType()));
 
     return new CstMethodHandleRef(kind, fieldRef);
   }
@@ -276,10 +269,9 @@
       argumentsTypes = (JArrayLiteral) argumentTypesValuePair.getValue();
     }
     assert argumentsTypes != null;
-    CstNat nat = new CstNat(new CstString(name.getValue()),
-        new CstString(buildSignature(argumentsTypes, returnType)));
 
-    CstMethodRef methodRef = new CstMethodRef(RopHelper.getCstType(owner.getRefType()), nat);
+    CstMethodRef methodRef = new CstMethodRef(RopHelper.convertTypeToDx(owner.getRefType()),
+        new CstString(name.getValue()), buildPrototype(argumentsTypes, returnType));
 
     return new CstMethodHandleRef(kind, methodRef);
   }
@@ -312,20 +304,18 @@
   }
 
   @Nonnull
-  private static String buildSignature(@Nonnull JArrayLiteral signature,
+  private static Prototype buildPrototype(@Nonnull JArrayLiteral signature,
       @Nonnull JClassLiteral returnType) {
-    BinarySignatureFormatter bsf = BinarySignatureFormatter.getFormatter();
+    List<JLiteral> values = signature.getValues();
+    StdTypeList stdTypeList = new StdTypeList(values.size());
 
-    StringBuilder signatureStr = new StringBuilder();
-    signatureStr.append('(');
-    for (JLiteral lit : signature.getValues()) {
+    int idx = 0;
+    for (JLiteral lit : values) {
       assert lit instanceof JClassLiteral;
       JClassLiteral classLit = (JClassLiteral) lit;
-      signatureStr.append(bsf.getName(classLit.getRefType()));
+      stdTypeList.set(idx++, RopHelper.convertTypeToDx(classLit.getRefType()));
     }
-    assert returnType != null;
-    signatureStr.append(')');
-    signatureStr.append(bsf.getName(returnType.getRefType()));
-    return signatureStr.toString();
+
+    return Prototype.intern(stdTypeList, RopHelper.convertTypeToDx(returnType.getRefType()));
   }
 }
diff --git a/jack/src/com/android/jack/backend/dex/rop/CodeItemBuilder.java b/jack/src/com/android/jack/backend/dex/rop/CodeItemBuilder.java
index b5ed141..7baa30a 100644
--- a/jack/src/com/android/jack/backend/dex/rop/CodeItemBuilder.java
+++ b/jack/src/com/android/jack/backend/dex/rop/CodeItemBuilder.java
@@ -388,9 +388,9 @@
         }
       }
 
-      RopMethod ropMethod =
-          new RopMethod(ropBb.getBasicBlockList(),
-              ropBb.getSpecialLabel(RopBasicBlockManager.PARAM_ASSIGNMENT));
+      RopMethod ropMethod = new RopMethod(ropBb.getBasicBlockList(),
+          ropBb.getSpecialLabel(RopBasicBlockManager.PARAM_ASSIGNMENT),
+          /* withDexCallingConvention= */ false);
 
       if (runDxOptimizations) {
         try (Event optEvent = tracer.open(JackEventType.DX_OPTIMIZATION)) {
diff --git a/jack/src/com/android/jack/backend/dex/rop/DexCodeMarkerRemover.java b/jack/src/com/android/jack/backend/dex/rop/DexCodeMarkerRemover.java
index 1311093..044ab08 100644
--- a/jack/src/com/android/jack/backend/dex/rop/DexCodeMarkerRemover.java
+++ b/jack/src/com/android/jack/backend/dex/rop/DexCodeMarkerRemover.java
@@ -17,10 +17,12 @@
 package com.android.jack.backend.dex.rop;
 
 import com.android.jack.ir.ast.JMethod;
+import com.android.jack.scheduling.filter.TypeWithoutPrebuiltFilter;
 import com.android.jack.scheduling.marker.DexCodeMarker;
 import com.android.sched.item.Description;
 import com.android.sched.item.Name;
 import com.android.sched.schedulable.Constraint;
+import com.android.sched.schedulable.Filter;
 import com.android.sched.schedulable.RunnableSchedulable;
 import com.android.sched.schedulable.Transform;
 
@@ -33,6 +35,7 @@
 @Name("DexCodeMarkerRemover")
 @Constraint(need = DexCodeMarker.class)
 @Transform(remove = DexCodeMarker.class)
+@Filter(TypeWithoutPrebuiltFilter.class)
 public class DexCodeMarkerRemover implements RunnableSchedulable<JMethod> {
 
   @Override
diff --git a/jack/src/com/android/jack/backend/dex/rop/RopBuilderVisitor.java b/jack/src/com/android/jack/backend/dex/rop/RopBuilderVisitor.java
index e26adce..c7572e8 100644
--- a/jack/src/com/android/jack/backend/dex/rop/RopBuilderVisitor.java
+++ b/jack/src/com/android/jack/backend/dex/rop/RopBuilderVisitor.java
@@ -46,10 +46,8 @@
 import com.android.jack.dx.rop.cst.CstLiteral64;
 import com.android.jack.dx.rop.cst.CstLong;
 import com.android.jack.dx.rop.cst.CstMethodRef;
-import com.android.jack.dx.rop.cst.CstNat;
 import com.android.jack.dx.rop.cst.CstPrototypeRef;
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
 import com.android.jack.dx.rop.type.Prototype;
 import com.android.jack.dx.rop.type.StdTypeList;
 import com.android.jack.dx.rop.type.Type;
@@ -63,7 +61,6 @@
 import com.android.jack.ir.ast.JAnnotation;
 import com.android.jack.ir.ast.JArrayLength;
 import com.android.jack.ir.ast.JArrayRef;
-import com.android.jack.ir.ast.JArrayType;
 import com.android.jack.ir.ast.JBinaryOperation;
 import com.android.jack.ir.ast.JBinaryOperator;
 import com.android.jack.ir.ast.JBooleanLiteral;
@@ -262,14 +259,10 @@
 
     @Override
     public boolean visit(@Nonnull JClassLiteral literal) {
-      Constant cst = RopHelper.getCstType(literal.getRefType());
-
-      JType type = literal.getType();
-
-      Rop constOp = Rops.opConst(RopHelper.convertTypeToDx(type));
+      Rop constOp = Rops.opConst(RopHelper.convertTypeToDx(literal.getType()));
       SourcePosition literalSrcPos = RopHelper.getSourcePosition(literal);
       Insn constInst = new ThrowingCstInsn(constOp, literalSrcPos,
-          RegisterSpecList.EMPTY, getCatchTypes(), cst);
+          RegisterSpecList.EMPTY, getCatchTypes(), RopHelper.convertTypeToDx(literal.getRefType()));
       addInstruction(constInst);
       addMoveResultPseudoAsExtraInstruction(destReg, literalSrcPos);
       return false;
@@ -287,8 +280,7 @@
 
     @Override
     public boolean visit(@Nonnull JNewArray newArray) {
-      JArrayType type = newArray.getType();
-      CstType cstType = RopHelper.getCstType(type);
+      Type dxType = RopHelper.convertTypeToDx(newArray.getType());
       SourcePosition newArraySourcePosition = RopHelper.getSourcePosition(newArray);
       List<JExpression> valuesSize = newArray.getInitializers();
 
@@ -304,7 +296,7 @@
         Rop op = Rops.opFilledNewArray(arrayType, valuesSize.size());
 
         Insn insn =
-            new ThrowingCstInsn(op, newArraySourcePosition, sources, getCatchTypes(), cstType);
+            new ThrowingCstInsn(op, newArraySourcePosition, sources, getCatchTypes(), dxType);
         addInstruction(insn);
         addMoveResultAsExtraInstruction(arrayType, destReg, newArraySourcePosition);
       } else {
@@ -316,10 +308,10 @@
         RegisterSpecList sources =
             RegisterSpecList.make(getRegisterSpec(dims.get(0)));
 
-        Rop op = Rops.opNewArray(cstType.getClassType());
+        Rop op = Rops.opNewArray(dxType);
 
         Insn insn =
-            new ThrowingCstInsn(op, newArraySourcePosition, sources, getCatchTypes(), cstType);
+            new ThrowingCstInsn(op, newArraySourcePosition, sources, getCatchTypes(), dxType);
         addInstruction(insn);
         addMoveResultPseudoAsExtraInstruction(destReg, newArraySourcePosition);
 
@@ -331,7 +323,7 @@
           }
           insn = new FillArrayDataInsn(
               Rops.FILL_ARRAY_DATA, newArraySourcePosition, RegisterSpecList.make(destReg),
-              initValues, cstType);
+              initValues, dxType);
           addExtraInstruction(insn);
         }
       }
@@ -364,7 +356,7 @@
     private void buildArrayRead(@Nonnull RegisterSpec destReg, @Nonnull JArrayRef arrayRef,
         @Nonnull SourcePosition sourcePosition) {
       assert arrayRef.getInstance() instanceof JVariableRef
-          || arrayRef.getInstance() instanceof JNullLiteral;
+          || isNullOrReinterpretCastOfNull(arrayRef.getInstance());
       RegisterSpec instanceReg = getRegisterSpec(arrayRef.getInstance());
       RegisterSpec indexReg = getRegisterSpec(arrayRef.getIndexExpr());
       RegisterSpecList sources = RegisterSpecList.make(instanceReg, indexReg);
@@ -386,7 +378,7 @@
       } else {
         JExpression instance = fieldRef.getInstance();
         assert instance != null;
-        assert instance instanceof JVariableRef || instance instanceof JNullLiteral;
+        assert instance instanceof JVariableRef || isNullOrReinterpretCastOfNull(instance);
         RegisterSpec instanceReg = getRegisterSpec(instance);
         RegisterSpecList sources = RegisterSpecList.make(instanceReg);
 
@@ -710,10 +702,8 @@
 
   private void buildAlloc(@Nonnull RegisterSpec destReg, @Nonnull JAlloc alloc,
       @Nonnull SourcePosition sourcePosition) {
-    CstType type = RopHelper.getCstType(alloc.getInstanceType());
-    Rop rop = Rops.NEW_INSTANCE;
-    addInstruction(
-        new ThrowingCstInsn(rop, sourcePosition, RegisterSpecList.EMPTY, getCatchTypes(), type));
+    addInstruction(new ThrowingCstInsn(Rops.NEW_INSTANCE, sourcePosition, RegisterSpecList.EMPTY,
+        getCatchTypes(), RopHelper.convertTypeToDx(alloc.getInstanceType())));
     addMoveResultPseudoAsExtraInstruction(destReg, sourcePosition);
   }
 
@@ -724,8 +714,10 @@
           throws AssertionError {
     if (value instanceof JExceptionRuntimeValue) {
       assert dest instanceof JVariableRef;
-      assert declaration.getParent() instanceof JCatchBlock
-          && ((JCatchBlock) declaration.getParent()).getStatements().get(0) == declaration;
+      final JNode declarationParent = declaration.getParent();
+      assert declarationParent != null;
+      assert declarationParent instanceof JCatchBlock
+          && ((JCatchBlock) declarationParent).getStatements().get(0) == declaration;
       RegisterSpec exceptionReg = ropReg.getOrCreateRegisterSpec((JVariableRef) dest);
       addInstruction(new PlainInsn(
           Rops.opMoveException(exceptionReg.getTypeBearer()), RopHelper.getSourcePosition(dest),
@@ -746,7 +738,7 @@
   private void buildArrayWrite(JArrayRef arrayRef, JExpression value,
       SourcePosition sourcePosition) {
     assert arrayRef.getInstance() instanceof JVariableRef
-    || arrayRef.getInstance() instanceof JNullLiteral;
+    || isNullOrReinterpretCastOfNull(arrayRef.getInstance());
     RegisterSpec valueReg = getRegisterSpec(value);
     RegisterSpec instanceReg = getRegisterSpec(arrayRef.getInstance());
     RegisterSpec indexReg = getRegisterSpec(arrayRef.getIndexExpr());
@@ -758,10 +750,9 @@
 
   private void buildInstanceOf(RegisterSpec destReg, JInstanceOf instanceOf) {
     SourcePosition srcPos = RopHelper.getSourcePosition(instanceOf);
-    RegisterSpec regExpr = getRegisterSpec(instanceOf.getExpr());
-    CstType type = RopHelper.getCstType(instanceOf.getTestType());
-    addInstruction(new ThrowingCstInsn(Rops.INSTANCE_OF, srcPos, RegisterSpecList.make(regExpr),
-        getCatchTypes(), type));
+    addInstruction(new ThrowingCstInsn(Rops.INSTANCE_OF, srcPos,
+        RegisterSpecList.make(getRegisterSpec(instanceOf.getExpr())), getCatchTypes(),
+        RopHelper.convertTypeToDx(instanceOf.getTestType())));
     addMoveResultPseudoAsExtraInstruction(destReg, srcPos);
   }
 
@@ -800,7 +791,7 @@
     } else {
       JExpression instance = fieldRef.getInstance();
       assert instance != null;
-      assert instance instanceof JVariableRef || instance instanceof JNullLiteral;
+      assert instance instanceof JVariableRef || isNullOrReinterpretCastOfNull(instance);
       RegisterSpec instanceReg = getRegisterSpec(instance);
       RegisterSpecList sources = RegisterSpecList.make(valueReg, instanceReg);
 
@@ -865,7 +856,7 @@
 
       Insn insn =
           new ThrowingCstInsn(Rops.CHECK_CAST, sourcePosition, sources, getCatchTypes(),
-              RopHelper.getCstType(castTo));
+              RopHelper.convertTypeToDx(castTo));
       addInstruction(insn);
 
       addMoveResultPseudoAsExtraInstruction(destReg, sourcePosition);
@@ -1186,11 +1177,11 @@
 
   private void buildInvokePolymorphic(@CheckForNull RegisterSpec result,
       @Nonnull JPolymorphicMethodCall methodCall) {
-    CstType definingClass = RopHelper.getCstType(methodCall.getReceiverType());
-    String signatureWithoutName = RopHelper.getMethodSignatureWithoutName(methodCall);
-    CstNat nat = new CstNat(new CstString(methodCall.getMethodName()),
-        new CstString(signatureWithoutName));
-    CstMethodRef methodRef = new CstMethodRef(definingClass, nat);
+    CstMethodRef methodRef =
+        new CstMethodRef(RopHelper.convertTypeToDx(methodCall.getReceiverType()),
+            new CstString(methodCall.getMethodName()),
+            RopHelper.getPrototypeFromPolymorphicCall(methodCall));
+
     SourcePosition methodCallSrcPos = RopHelper.getSourcePosition(methodCall);
     Prototype prototype =
         Prototype.intern(RopHelper.getPolymorphicCallSiteSymbolicDescriptor(methodCall));
@@ -1222,7 +1213,7 @@
     if (InvokeCustomHelper.isInvokeCustom(methodCall)
         && apiLevel.getProvisionalLevel() == ProvisionalLevel.O_BETA2) {
       JAnnotation invokeCustomCallSite = InvokeCustomHelper
-          .getInvokeCustomCallsite(methodCall.getMethodId().getMethods().iterator().next());
+          .getInvokeCustomCallsite(methodCall.getMethodIdWide().getMethods().iterator().next());
       assert invokeCustomCallSite != null;
       CstCallSiteRef callSiteRef =
           InvokeCustomHelper.readInvokeCustomCallSite(invokeCustomCallSite);
@@ -1247,16 +1238,15 @@
       return;
     }
 
-    String signatureWithoutName = RopHelper.getMethodSignatureWithoutName(methodCall);
     SourcePosition methodCallSrcPos = RopHelper.getSourcePosition(methodCall);
 
-    Prototype prototype = Prototype.intern(signatureWithoutName);
+    Prototype prototype = RopHelper.getPrototype(methodCall.getMethodId());
 
     RegisterSpecList sources;
     int paramIndex = 0;
 
     Rop callOp;
-    MethodKind methodKind = methodCall.getMethodId().getKind();
+    MethodKind methodKind = methodCall.getMethodIdWide().getKind();
     if (methodKind == MethodKind.STATIC) {
       // Reserve space for the method arguments
       sources = new RegisterSpecList(methodCall.getArgs().size());
@@ -1319,9 +1309,12 @@
     if (expr instanceof JVariableRef) {
       regSpec = ropReg.getOrCreateRegisterSpec((JVariableRef) expr);
     } else {
-      assert expr instanceof JValueLiteral;
+      assert (expr instanceof JValueLiteral || isNullOrReinterpretCastOfNull(expr));
       regSpec =
           ropReg.getOrCreateTmpRegister(RopHelper.convertTypeToDx(expr.getType()));
+      if (expr instanceof JReinterpretCastOperation) {
+        expr = ((JReinterpretCastOperation) expr).getExpr();
+      }
       buildConstant(regSpec, (JValueLiteral) expr);
     }
 
@@ -1382,4 +1375,11 @@
   public void endVisit(@Nonnull JStatement x) {
     ropReg.resetFreeTmpRegister();
   }
+
+  private static boolean isNullOrReinterpretCastOfNull(@Nonnull JExpression expr) {
+    if (expr instanceof JReinterpretCastOperation) {
+      return isNullOrReinterpretCastOfNull(((JReinterpretCastOperation) expr).getExpr());
+    }
+    return expr instanceof JNullLiteral;
+  }
 }
diff --git a/jack/src/com/android/jack/backend/dex/rop/RopHelper.java b/jack/src/com/android/jack/backend/dex/rop/RopHelper.java
index 6a5dee8..d145c73 100644
--- a/jack/src/com/android/jack/backend/dex/rop/RopHelper.java
+++ b/jack/src/com/android/jack/backend/dex/rop/RopHelper.java
@@ -19,9 +19,8 @@
 import com.android.jack.dx.rop.code.SourcePosition;
 import com.android.jack.dx.rop.cst.CstFieldRef;
 import com.android.jack.dx.rop.cst.CstMethodRef;
-import com.android.jack.dx.rop.cst.CstNat;
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
+import com.android.jack.dx.rop.type.Prototype;
 import com.android.jack.dx.rop.type.StdTypeList;
 import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.rop.type.TypeList;
@@ -31,6 +30,7 @@
 import com.android.jack.ir.ast.JFieldId;
 import com.android.jack.ir.ast.JMethod;
 import com.android.jack.ir.ast.JMethodCall;
+import com.android.jack.ir.ast.JMethodId;
 import com.android.jack.ir.ast.JNode;
 import com.android.jack.ir.ast.JNullType;
 import com.android.jack.ir.ast.JParameter;
@@ -77,9 +77,8 @@
   @Nonnull
   public static CstMethodRef createMethodRef(@Nonnull JReferenceType type,
       @Nonnull JMethod method) {
-    CstType definingClass = RopHelper.getCstType(type);
-    CstNat nat = createSignature(method);
-    CstMethodRef methodRef = new CstMethodRef(definingClass, nat);
+    CstMethodRef methodRef = new CstMethodRef(RopHelper.convertTypeToDx(type),
+        new CstString(method.getName()), getPrototype(method.getMethodId()));
     return methodRef;
   }
 
@@ -109,11 +108,9 @@
    */
   @Nonnull
   public static CstMethodRef createMethodRef(@Nonnull JMethodCall methodCall) {
-    CstType definingClass = RopHelper.getCstType(methodCall.getReceiverType());
-    String signatureWithoutName = getMethodSignatureWithoutName(methodCall);
-    CstNat nat =
-        new CstNat(new CstString(methodCall.getMethodName()), new CstString(signatureWithoutName));
-    CstMethodRef methodRef = new CstMethodRef(definingClass, nat);
+    Type definingClass = RopHelper.convertTypeToDx(methodCall.getReceiverType());
+    CstMethodRef methodRef = new CstMethodRef(definingClass,
+        new CstString(methodCall.getMethodName()), getPrototype(methodCall.getMethodId()));
     return methodRef;
   }
 
@@ -132,9 +129,9 @@
   @Nonnull
   public static CstFieldRef createFieldRef(@Nonnull JFieldId field,
       @Nonnull JClassOrInterface receiverType) {
-    CstType definingClass = getCstType(receiverType);
-    CstNat nat = createSignature(field);
-    CstFieldRef fieldRef = new CstFieldRef(definingClass, nat);
+    Type definingClass = convertTypeToDx(receiverType);
+    CstString name = new CstString(field.getName());
+    CstFieldRef fieldRef = new CstFieldRef(definingClass, name, convertTypeToDx(field.getType()));
     return fieldRef;
   }
 
@@ -162,34 +159,31 @@
     return res;
   }
 
-  @Nonnull
-  public static String getMethodSignatureWithoutName(@Nonnull JPolymorphicMethodCall call) {
-    StringBuilder sb = new StringBuilder();
-    sb.append('(');
 
-    for (JType p : call.getMethodId().getParamTypes()) {
-      sb.append(formatter.getName(p));
+  @Nonnull
+  public static Prototype getPrototype(@Nonnull JMethodId method) {
+    List<JType> parameterTypes = method.getMethodIdWide().getParamTypes();
+    StdTypeList stdTypeList = new StdTypeList(parameterTypes.size());
+
+    int idx = 0;
+    for (JType parameterType : parameterTypes) {
+      stdTypeList.set(idx++, convertTypeToDx(parameterType));
     }
 
-    sb.append(')');
-    sb.append(formatter.getName(call.getReturnTypeOfPolymorphicMethod()));
-
-    return sb.toString();
+    return Prototype.intern(stdTypeList, convertTypeToDx(method.getType()));
   }
 
   @Nonnull
-  public static String getMethodSignatureWithoutName(@Nonnull JMethodCall call) {
-    StringBuilder sb = new StringBuilder();
-    sb.append('(');
+  public static Prototype getPrototypeFromPolymorphicCall(@Nonnull JPolymorphicMethodCall call) {
+    List<JType> parameterTypes = call.getMethodIdWide().getParamTypes();
+    StdTypeList stdTypeList = new StdTypeList(parameterTypes.size());
 
-    for (JType p : call.getMethodId().getParamTypes()) {
-      sb.append(formatter.getName(p));
+    int idx = 0;
+    for (JType parameterType : parameterTypes) {
+      stdTypeList.set(idx++, convertTypeToDx(parameterType));
     }
 
-    sb.append(')');
-    sb.append(formatter.getName(call.getType()));
-
-    return sb.toString();
+    return Prototype.intern(stdTypeList, convertTypeToDx(call.getReturnTypeOfPolymorphicMethod()));
   }
 
   /**
@@ -250,39 +244,11 @@
     }
   }
 
-  /**
-   * Builds a constant name and type ({@code CstNat}) from a {@code JMethod}
-   *
-   * @param method The {@code JMethod} used to build a {@code CstNat}.
-   * @return The built {@code CstNat}.
-   */
   @Nonnull
-  private static CstNat createSignature(@Nonnull JMethod method) {
-    CstString name = new CstString(method.getName());
-    CstString descriptor = new CstString(formatter.getName(method));
-    CstNat signature = new CstNat(name, descriptor);
-    return signature;
-  }
-
-  /**
-   * Builds a constant name and type ({@code CstNat}) from a {@code JField}
-   *
-   * @param field The {@code JField} used to build a {@code CstNat}.
-   * @return The built {@code CstNat}.
-   */
-  @Nonnull
-  public static CstNat createSignature(@Nonnull JField field) {
-    return createSignature(field.getId());
-  }
-
-  @Nonnull
-  public static CstNat createSignature(@Nonnull JFieldId field) {
-    String fieldName = field.getName();
+  public static CstString createSignature(@Nonnull JFieldId field) {
     String fieldSignature = formatter.getName(field.getType());
-    CstString name = new CstString(fieldName);
     CstString descriptor = new CstString(fieldSignature);
-    CstNat signature = new CstNat(name, descriptor);
-    return signature;
+    return descriptor;
   }
 
   /**
@@ -314,19 +280,6 @@
     return typesList;
   }
 
-  /**
-   * Converts a {@code JType} to a {@code CstType}.
-   *
-   * @param type a non-null {@code JType}.
-   * @throws NullPointerException if given type is null.
-   */
-  @Nonnull
-  public static CstType getCstType(@Nonnull JType type) {
-    Type ropType = convertTypeToDx(type);
-    CstType cstType = CstType.intern(ropType);
-    return cstType;
-  }
-
   private static class RopFormatter extends InternalFormatter {
 
     /**
diff --git a/jack/src/com/android/jack/backend/dex/rop/RopRegisterManager.java b/jack/src/com/android/jack/backend/dex/rop/RopRegisterManager.java
index 7e56db8..5e41877 100644
--- a/jack/src/com/android/jack/backend/dex/rop/RopRegisterManager.java
+++ b/jack/src/com/android/jack/backend/dex/rop/RopRegisterManager.java
@@ -20,7 +20,6 @@
 import com.android.jack.dx.rop.code.LocalItem;
 import com.android.jack.dx.rop.code.RegisterSpec;
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
 import com.android.jack.dx.rop.type.Type;
 import com.android.jack.ir.ast.JDefinedClassOrInterface;
 import com.android.jack.ir.ast.JParameter;
@@ -99,7 +98,7 @@
         cstSignature = new CstString(thisMarker.getGenericSignature());
       }
       LocalItem localItem =
-          LocalItem.make(new CstString(name), RopHelper.getCstType(type), cstSignature);
+          LocalItem.make(new CstString(name), RopHelper.convertTypeToDx(type), cstSignature);
       thisReg = RegisterSpec.make(nextFreeReg, dexRegType, localItem);
     } else {
       thisReg = RegisterSpec.make(nextFreeReg, dexRegType);
@@ -177,7 +176,6 @@
    */
   @Nonnull
   RegisterSpec getOrCreateRegisterSpec(@Nonnull JParameter parameter) {
-    assert parameter.getMarker(DebugVariableInfoMarker.class) == null;
     return getRegisterSpec(getRegisterNumber(parameter), parameter, /* debugInfo= */ null);
   }
 
@@ -188,26 +186,35 @@
     JType variableType = variable.getType();
     Type regType = RopHelper.convertTypeToDx(variableType);
 
-    if (emitDebugInfo && variable.getName() != null
+    String name = variable.getName();
+    if (emitDebugInfo && name != null
         && (emitSyntheticDebugInfo || !variable.isSynthetic())) {
       if (debugInfo != null) {
         // Debug info marker exists, uses debug information from it
-        CstString cstSignature = null;
-        String genericSignature = debugInfo.getGenericSignature();
-        if (genericSignature != null) {
-          cstSignature = new CstString(genericSignature);
+        if (debugInfo == DebugVariableInfoMarker.NO_DEBUG_INFO) {
+          // There is no debug information when coming from Jill, do not get name from JVariable
+          reg = RegisterSpec.make(regNum, regType);
+        } else {
+          CstString cstSignature = null;
+          String genericSignature = debugInfo.getGenericSignature();
+          if (genericSignature != null) {
+            cstSignature = new CstString(genericSignature);
+          }
+          String debugName = debugInfo.getName();
+          assert debugName != null;
+          JType debugType = debugInfo.getType();
+          assert debugType != null;
+          LocalItem localItem = LocalItem.make(new CstString(debugName),
+              RopHelper.convertTypeToDx(debugType), cstSignature);
+          reg = RegisterSpec.make(regNum, regType, localItem);
         }
-        LocalItem localItem = LocalItem.make(new CstString(debugInfo.getName()),
-            CstType.intern(RopHelper.convertTypeToDx(debugInfo.getType())), cstSignature);
-        reg = RegisterSpec.make(regNum, regType, localItem);
       } else {
         CstString cstSignature = null;
         GenericSignature infoMarker = variable.getMarker(GenericSignature.class);
         if (infoMarker != null) {
           cstSignature = new CstString(infoMarker.getGenericSignature());
         }
-        LocalItem localItem = LocalItem.make(new CstString(variable.getName()),
-            CstType.intern(regType), cstSignature);
+        LocalItem localItem = LocalItem.make(new CstString(name), regType, cstSignature);
         reg = RegisterSpec.make(regNum, regType, localItem);
       }
     } else {
diff --git a/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java b/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java
index 31c6877..6e89f6e 100644
--- a/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java
+++ b/jack/src/com/android/jack/backend/jayce/JayceFileImporter.java
@@ -47,7 +47,6 @@
 import com.android.sched.util.log.LoggerFactory;
 import com.android.sched.util.log.Tracer;
 import com.android.sched.util.log.TracerFactory;
-import com.android.sched.vfs.GenericInputVFile;
 import com.android.sched.vfs.InputVFile;
 import com.android.sched.vfs.VPath;
 
@@ -174,11 +173,11 @@
               path.substring(0, path.lastIndexOf(JAYCE_FILE_EXTENSION));
           try {
             String previousDigest =
-                ((GenericInputVFile)
-                    previousInputLibrary.getFile(
-                        FileType.PREBUILT, new VPath(pathWithoutExt, '/'))).getDigest();
+                previousInputLibrary
+                    .getFile(FileType.PREBUILT, new VPath(pathWithoutExt, '/'))
+                    .getDigest();
             if (previousDigest != null
-                && previousDigest.equals(((GenericInputVFile) jayceFile).getDigest())) {
+                && previousDigest.equals(jayceFile.getDigest())) {
               return; // both types are identical, ignore
             }
           } catch (FileTypeDoesNotExistException e) {
diff --git a/jack/src/com/android/jack/backend/jayce/JayceInLibraryWriter.java b/jack/src/com/android/jack/backend/jayce/JayceInLibraryWriter.java
index 5644d59..44d5d14 100644
--- a/jack/src/com/android/jack/backend/jayce/JayceInLibraryWriter.java
+++ b/jack/src/com/android/jack/backend/jayce/JayceInLibraryWriter.java
@@ -20,6 +20,7 @@
 import com.android.jack.JackAbortException;
 import com.android.jack.ir.ast.JDefinedClassOrInterface;
 import com.android.jack.ir.formatter.BinaryQualifiedNameFormatter;
+import com.android.jack.jayce.JayceInternalWriter;
 import com.android.jack.jayce.JayceWriterFactory;
 import com.android.jack.library.FileType;
 import com.android.jack.library.InputLibrary;
@@ -33,15 +34,13 @@
 import com.android.sched.schedulable.RunnableSchedulable;
 import com.android.sched.util.file.CannotCloseException;
 import com.android.sched.util.file.CannotCreateFileException;
-import com.android.sched.util.file.CannotReadException;
+import com.android.sched.util.file.CannotWriteException;
 import com.android.sched.util.file.WrongPermissionException;
 import com.android.sched.util.location.Location;
 import com.android.sched.vfs.OutputVFile;
 import com.android.sched.vfs.VPath;
 
 import java.io.BufferedOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
 
 import javax.annotation.Nonnull;
 
@@ -81,16 +80,12 @@
     try {
       OutputVFile vFile = outputJackLibrary.createFile(FileType.JAYCE,
           new VPath(BinaryQualifiedNameFormatter.getFormatter().getName(type), '/'));
-      try (OutputStream out = new BufferedOutputStream(vFile.getOutputStream())) {
-        try {
-          JayceWriterFactory.get(outputJackLibrary, out).write(type);
-        } catch (IOException e) {
-          throw new CannotReadException(vFile, e);
-        }
-      } catch (IOException e) {
-        throw new CannotCloseException(vFile, e);
+      try (JayceInternalWriter jayceWriter =
+          JayceWriterFactory.get(
+              outputJackLibrary, new BufferedOutputStream(vFile.getOutputStream()), vFile)) {
+        jayceWriter.write(type);
       }
-    } catch (CannotReadException | CannotCloseException | CannotCreateFileException
+    } catch (CannotWriteException | CannotCloseException | CannotCreateFileException
         | WrongPermissionException e) {
       LibraryWritingException reportable =
           new LibraryWritingException(new LibraryIOException(outputJackLibrary.getLocation(), e));
diff --git a/jack/src/com/android/jack/cfg/CfgBuilder.java b/jack/src/com/android/jack/cfg/CfgBuilder.java
index 153f577..2a25498 100644
--- a/jack/src/com/android/jack/cfg/CfgBuilder.java
+++ b/jack/src/com/android/jack/cfg/CfgBuilder.java
@@ -270,8 +270,6 @@
       ConditionalBasicBlock condBlock = new ConditionalBasicBlock(basicBlockId++, currentStmts);
       setBlockOfStatement(condBlock);
 
-      assert ifStmt.getThenStmt() != null;
-
       accept(ifStmt.getThenStmt());
 
       JStatement elseStmt = ifStmt.getElseStmt();
diff --git a/jack/src/com/android/jack/debug/DebugVariableInfoMarker.java b/jack/src/com/android/jack/debug/DebugVariableInfoMarker.java
index 42ad19f..3101a37 100644
--- a/jack/src/com/android/jack/debug/DebugVariableInfoMarker.java
+++ b/jack/src/com/android/jack/debug/DebugVariableInfoMarker.java
@@ -17,6 +17,7 @@
 package com.android.jack.debug;
 
 import com.android.jack.ir.ast.JLocalRef;
+import com.android.jack.ir.ast.JParameterRef;
 import com.android.jack.ir.ast.JType;
 import com.android.sched.item.Description;
 import com.android.sched.marker.Marker;
@@ -29,32 +30,40 @@
 /**
  * This {@link Marker} contains debug information related to variable.
  */
-@ValidOn({JLocalRef.class})
+@ValidOn({JLocalRef.class, JParameterRef.class})
 @Description("This marker contains debug information related to variable.")
 public class DebugVariableInfoMarker implements SerializableMarker {
 
   @Nonnull
-  private final String name;
+  public static final DebugVariableInfoMarker NO_DEBUG_INFO =
+      new DebugVariableInfoMarker(null, null, null);
 
-  @Nonnull
+  @CheckForNull
+  private String name;
+
+  @CheckForNull
   private final JType type;
 
   @CheckForNull
   private String genericSignature;
 
-  public DebugVariableInfoMarker(@Nonnull String name, @Nonnull JType type,
+  public DebugVariableInfoMarker(@CheckForNull String name, @CheckForNull JType type,
       @CheckForNull String genericSignature) {
     this.name = name;
     this.type = type;
     this.genericSignature = genericSignature;
   }
 
-  @Nonnull
+  @CheckForNull
   public String getName() {
     return name;
   }
 
-  @Nonnull
+  public void setName(@CheckForNull String name) {
+    this.name = name;
+  }
+
+  @CheckForNull
   public JType getType() {
     return type;
   }
diff --git a/jack/src/com/android/jack/dx/dex/SizeOf.java b/jack/src/com/android/jack/dx/dex/SizeOf.java
index 3534591..63a382d 100644
--- a/jack/src/com/android/jack/dx/dex/SizeOf.java
+++ b/jack/src/com/android/jack/dx/dex/SizeOf.java
@@ -34,7 +34,7 @@
   public static final int SIGNATURE = UBYTE * 20;
 
   @Nonnegative
-  public static final int getHeaderSize(@Nonnegative int dexVersion) {
+  public static int getHeaderSize() {
     /*
      * magic ubyte[8]
      * checksum uint
@@ -62,16 +62,6 @@
      */
     int headerSize = (8 * UBYTE) + UINT + SIGNATURE + (20 * UINT); // 0x70;
 
-    if (dexVersion == DexFormat.O_BETA2_DEX_VERSION) {
-      /*
-       * call_site_ids_size uint
-       * call_site_ids_off uint
-       * method_handle_ids_size uint
-       * method_handle_ids_off uint
-       */
-      headerSize += 4 * UINT; // 0x80
-    }
-
     return headerSize;
   }
 
diff --git a/jack/src/com/android/jack/dx/dex/TableOfContents.java b/jack/src/com/android/jack/dx/dex/TableOfContents.java
index cab1da5..b42caf4 100644
--- a/jack/src/com/android/jack/dx/dex/TableOfContents.java
+++ b/jack/src/com/android/jack/dx/dex/TableOfContents.java
@@ -97,7 +97,7 @@
     signature = headerIn.readByteArray(20);
     fileSize = headerIn.readInt();
     int headerSize = headerIn.readInt();
-    if (headerSize != SizeOf.getHeaderSize(dexVersion)) {
+    if (headerSize != SizeOf.getHeaderSize()) {
       throw new DexException("Unexpected header: 0x" + Integer.toHexString(headerSize));
     }
     int endianTag = headerIn.readInt();
@@ -122,12 +122,6 @@
     methodIds.off = headerIn.readInt();
     classDefs.size = headerIn.readInt();
     classDefs.off = headerIn.readInt();
-    if (dexVersion == DexFormat.O_BETA2_DEX_VERSION) {
-      callSiteIds.size = headerIn.readInt();
-      callSiteIds.off = headerIn.readInt();
-      methodHandleIds.size = headerIn.readInt();
-      methodHandleIds.off = headerIn.readInt();
-    }
     dataSize = headerIn.readInt();
     dataOff = headerIn.readInt();
   }
diff --git a/jack/src/com/android/jack/dx/dex/code/ArrayData.java b/jack/src/com/android/jack/dx/dex/code/ArrayData.java
index 81f7ac0..21b801e 100644
--- a/jack/src/com/android/jack/dx/dex/code/ArrayData.java
+++ b/jack/src/com/android/jack/dx/dex/code/ArrayData.java
@@ -22,7 +22,7 @@
 import com.android.jack.dx.rop.cst.Constant;
 import com.android.jack.dx.rop.cst.CstLiteral32;
 import com.android.jack.dx.rop.cst.CstLiteral64;
-import com.android.jack.dx.rop.cst.CstType;
+import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.util.AnnotatedOutput;
 import com.android.jack.dx.util.Hex;
 
@@ -62,14 +62,8 @@
   public ArrayData(SourcePosition position, CodeAddress user, ArrayList<Constant> values,
       Constant arrayType) {
     super(position, RegisterSpecList.EMPTY);
-
-    if (user == null) {
-      throw new NullPointerException("user == null");
-    }
-
-    if (values == null) {
-      throw new NullPointerException("values == null");
-    }
+    assert user != null;
+    assert values != null;
 
     int sz = values.size();
 
@@ -79,13 +73,13 @@
 
     this.arrayType = arrayType;
 
-    if (arrayType == CstType.BYTE_ARRAY || arrayType == CstType.BOOLEAN_ARRAY) {
+    if (arrayType == Type.BYTE_ARRAY || arrayType == Type.BOOLEAN_ARRAY) {
       elemWidth = 1;
-    } else if (arrayType == CstType.SHORT_ARRAY || arrayType == CstType.CHAR_ARRAY) {
+    } else if (arrayType == Type.SHORT_ARRAY || arrayType == Type.CHAR_ARRAY) {
       elemWidth = 2;
-    } else if (arrayType == CstType.INT_ARRAY || arrayType == CstType.FLOAT_ARRAY) {
+    } else if (arrayType == Type.INT_ARRAY || arrayType == Type.FLOAT_ARRAY) {
       elemWidth = 4;
-    } else if (arrayType == CstType.LONG_ARRAY || arrayType == CstType.DOUBLE_ARRAY) {
+    } else if (arrayType == Type.LONG_ARRAY || arrayType == Type.DOUBLE_ARRAY) {
       elemWidth = 8;
     } else {
       throw new IllegalArgumentException("Unexpected constant type");
diff --git a/jack/src/com/android/jack/dx/dex/code/CatchHandlerList.java b/jack/src/com/android/jack/dx/dex/code/CatchHandlerList.java
index cfec0ab..e72f6ea 100644
--- a/jack/src/com/android/jack/dx/dex/code/CatchHandlerList.java
+++ b/jack/src/com/android/jack/dx/dex/code/CatchHandlerList.java
@@ -16,7 +16,7 @@
 
 package com.android.jack.dx.dex.code;
 
-import com.android.jack.dx.rop.cst.CstType;
+import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.util.FixedSizeList;
 import com.android.jack.dx.util.Hex;
 
@@ -108,7 +108,7 @@
     }
 
     Entry last = get(size - 1);
-    return last.getExceptionType().equals(CstType.OBJECT);
+    return last.getExceptionType().equals(Type.OBJECT);
   }
 
   /**
@@ -118,7 +118,7 @@
    * @param exceptionType {@code non-null;} type of exception handled
    * @param handler {@code >= 0;} exception handler address
    */
-  public void set(int n, CstType exceptionType, int handler) {
+  public void set(int n, Type exceptionType, int handler) {
     set0(n, new Entry(exceptionType, handler));
   }
 
@@ -167,7 +167,7 @@
    */
   public static class Entry implements Comparable<Entry> {
     /** {@code non-null;} type of exception handled */
-    private final CstType exceptionType;
+    private final Type exceptionType;
 
     /** {@code >= 0;} exception handler address */
     private final int handler;
@@ -178,15 +178,13 @@
      * @param exceptionType {@code non-null;} type of exception handled
      * @param handler {@code >= 0;} exception handler address
      */
-    public Entry(CstType exceptionType, int handler) {
+    public Entry(Type exceptionType, int handler) {
+      assert exceptionType != null;
+
       if (handler < 0) {
         throw new IllegalArgumentException("handler < 0");
       }
 
-      if (exceptionType == null) {
-        throw new NullPointerException("exceptionType == null");
-      }
-
       this.handler = handler;
       this.exceptionType = exceptionType;
     }
@@ -224,7 +222,7 @@
      *
      * @return {@code non-null;} the exception type
      */
-    public CstType getExceptionType() {
+    public Type getExceptionType() {
       return exceptionType;
     }
 
diff --git a/jack/src/com/android/jack/dx/dex/code/CstInsn.java b/jack/src/com/android/jack/dx/dex/code/CstInsn.java
index 878a4e8..7b558f2 100644
--- a/jack/src/com/android/jack/dx/dex/code/CstInsn.java
+++ b/jack/src/com/android/jack/dx/dex/code/CstInsn.java
@@ -48,11 +48,7 @@
   public CstInsn(Dop opcode, SourcePosition position, RegisterSpecList registers,
       Constant constant) {
     super(opcode, position, registers);
-
-    if (constant == null) {
-      throw new NullPointerException("constant == null");
-    }
-
+    assert constant != null;
     this.constant = constant;
     this.index = -1;
   }
diff --git a/jack/src/com/android/jack/dx/dex/code/DalvCode.java b/jack/src/com/android/jack/dx/dex/code/DalvCode.java
index bf92ad4..74ff7f2 100644
--- a/jack/src/com/android/jack/dx/dex/code/DalvCode.java
+++ b/jack/src/com/android/jack/dx/dex/code/DalvCode.java
@@ -80,13 +80,8 @@
    */
   public DalvCode(int positionInfo, OutputFinisher unprocessedInsns,
       CatchBuilder unprocessedCatches) {
-    if (unprocessedInsns == null) {
-      throw new NullPointerException("unprocessedInsns == null");
-    }
-
-    if (unprocessedCatches == null) {
-      throw new NullPointerException("unprocessedCatches == null");
-    }
+    assert unprocessedInsns != null;
+    assert unprocessedCatches != null;
 
     this.positionInfo = positionInfo;
     this.unprocessedInsns = unprocessedInsns;
diff --git a/jack/src/com/android/jack/dx/dex/code/DalvInsn.java b/jack/src/com/android/jack/dx/dex/code/DalvInsn.java
index 0cb8964..da6c0be 100644
--- a/jack/src/com/android/jack/dx/dex/code/DalvInsn.java
+++ b/jack/src/com/android/jack/dx/dex/code/DalvInsn.java
@@ -89,17 +89,9 @@
    * ins and outs)
    */
   public DalvInsn(Dop opcode, SourcePosition position, RegisterSpecList registers) {
-    if (opcode == null) {
-      throw new NullPointerException("opcode == null");
-    }
-
-    if (position == null) {
-      throw new NullPointerException("position == null");
-    }
-
-    if (registers == null) {
-      throw new NullPointerException("registers == null");
-    }
+    assert opcode != null;
+    assert position != null;
+    assert registers != null;
 
     this.address = -1;
     this.opcode = opcode;
diff --git a/jack/src/com/android/jack/dx/dex/code/Dop.java b/jack/src/com/android/jack/dx/dex/code/Dop.java
index 0a0cbc2..b819d5b 100644
--- a/jack/src/com/android/jack/dx/dex/code/Dop.java
+++ b/jack/src/com/android/jack/dx/dex/code/Dop.java
@@ -58,6 +58,8 @@
    * is always the first register
    */
   public Dop(int opcode, int family, int nextOpcode, InsnFormat format, boolean hasResult) {
+    assert format != null;
+
     if (!Opcodes.isValidShape(opcode)) {
       throw new IllegalArgumentException("bogus opcode");
     }
@@ -70,10 +72,6 @@
       throw new IllegalArgumentException("bogus nextOpcode");
     }
 
-    if (format == null) {
-      throw new NullPointerException("format == null");
-    }
-
     this.opcode = opcode;
     this.family = family;
     this.nextOpcode = nextOpcode;
diff --git a/jack/src/com/android/jack/dx/dex/code/LocalList.java b/jack/src/com/android/jack/dx/dex/code/LocalList.java
index 8c8263c..407582b 100644
--- a/jack/src/com/android/jack/dx/dex/code/LocalList.java
+++ b/jack/src/com/android/jack/dx/dex/code/LocalList.java
@@ -19,7 +19,6 @@
 import com.android.jack.dx.rop.code.RegisterSpec;
 import com.android.jack.dx.rop.code.RegisterSpecSet;
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
 import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.util.FixedSizeList;
 
@@ -128,7 +127,7 @@
     private final RegisterSpec spec;
 
     /** {@code non-null;} variable type (derived from {@code spec}) */
-    private final CstType type;
+    private final Type type;
 
     /**
      * Constructs an instance.
@@ -139,23 +138,14 @@
      * the variable
      */
     public Entry(int address, Disposition disposition, RegisterSpec spec) {
+      assert disposition != null;
+      assert spec != null;
+      assert spec.getLocalItem() != null;
+
       if (address < 0) {
         throw new IllegalArgumentException("address < 0");
       }
 
-      if (disposition == null) {
-        throw new NullPointerException("disposition == null");
-      }
-
-      try {
-        if (spec.getLocalItem() == null) {
-          throw new NullPointerException("spec.getLocalItem() == null");
-        }
-      } catch (NullPointerException ex) {
-        // Elucidate the exception.
-        throw new NullPointerException("spec == null");
-      }
-
       this.address = address;
       this.disposition = disposition;
       this.spec = spec;
@@ -263,7 +253,7 @@
      *
      * @return {@code non-null;} the type
      */
-    public CstType getType() {
+    public Type getType() {
       return type;
     }
 
@@ -467,7 +457,7 @@
     private int[] endIndices;
 
     /** {@code >= 0;} last address seen */
-    private int lastAddress;
+    private final int lastAddress;
 
     /**
      * Constructs an instance.
diff --git a/jack/src/com/android/jack/dx/dex/code/LocalSnapshot.java b/jack/src/com/android/jack/dx/dex/code/LocalSnapshot.java
index 8b87e39..5472aad 100644
--- a/jack/src/com/android/jack/dx/dex/code/LocalSnapshot.java
+++ b/jack/src/com/android/jack/dx/dex/code/LocalSnapshot.java
@@ -40,11 +40,7 @@
    */
   public LocalSnapshot(SourcePosition position, RegisterSpecSet locals) {
     super(position);
-
-    if (locals == null) {
-      throw new NullPointerException("locals == null");
-    }
-
+    assert locals != null;
     this.locals = locals;
   }
 
diff --git a/jack/src/com/android/jack/dx/dex/code/LocalStart.java b/jack/src/com/android/jack/dx/dex/code/LocalStart.java
index 60b7577..583f685 100644
--- a/jack/src/com/android/jack/dx/dex/code/LocalStart.java
+++ b/jack/src/com/android/jack/dx/dex/code/LocalStart.java
@@ -55,11 +55,7 @@
    */
   public LocalStart(SourcePosition position, RegisterSpec local) {
     super(position);
-
-    if (local == null) {
-      throw new NullPointerException("local == null");
-    }
-
+    assert local != null;
     this.local = local;
   }
 
diff --git a/jack/src/com/android/jack/dx/dex/code/OutputFinisher.java b/jack/src/com/android/jack/dx/dex/code/OutputFinisher.java
index a7cc59a..a083783 100644
--- a/jack/src/com/android/jack/dx/dex/code/OutputFinisher.java
+++ b/jack/src/com/android/jack/dx/dex/code/OutputFinisher.java
@@ -26,7 +26,6 @@
 import com.android.jack.dx.rop.code.SourcePosition;
 import com.android.jack.dx.rop.cst.Constant;
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
 import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.ssa.BasicRegisterMapper;
 import com.android.jack.dx.util.DexException;
@@ -212,10 +211,10 @@
     CstString name = local.getName();
     CstString signature = local.getSignature();
     Type type = spec.getType();
-    CstType localType = local.getType();
+    Type localType = local.getType();
 
     if (type != Type.KNOWN_NULL) {
-      result.add(CstType.intern(type));
+      result.add(type);
     }
 
     if (localType != null) {
diff --git a/jack/src/com/android/jack/dx/dex/code/PositionList.java b/jack/src/com/android/jack/dx/dex/code/PositionList.java
index 3869b6e..6faaef2 100644
--- a/jack/src/com/android/jack/dx/dex/code/PositionList.java
+++ b/jack/src/com/android/jack/dx/dex/code/PositionList.java
@@ -159,14 +159,12 @@
      * @param position {@code non-null;} corresponding source position information
      */
     public Entry(int address, SourcePosition position) {
+      assert position != null;
+
       if (address < 0) {
         throw new IllegalArgumentException("address < 0");
       }
 
-      if (position == null) {
-        throw new NullPointerException("position == null");
-      }
-
       this.address = address;
       this.position = position;
     }
diff --git a/jack/src/com/android/jack/dx/dex/code/RopToDop.java b/jack/src/com/android/jack/dx/dex/code/RopToDop.java
index 19636ec..9d114fa 100644
--- a/jack/src/com/android/jack/dx/dex/code/RopToDop.java
+++ b/jack/src/com/android/jack/dx/dex/code/RopToDop.java
@@ -27,7 +27,6 @@
 import com.android.jack.dx.rop.cst.CstFieldRef;
 import com.android.jack.dx.rop.cst.CstKnownNull;
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
 import com.android.jack.dx.rop.type.Type;
 
 import java.util.HashMap;
@@ -598,7 +597,7 @@
       }
       case RegOps.CONST: {
         Constant cst = ((CstInsn) insn).getConstant();
-        if (cst instanceof CstType) {
+        if (cst instanceof Type) {
           return Dops.CONST_CLASS;
         } else if (cst instanceof CstString) {
           return Dops.CONST_STRING;
diff --git a/jack/src/com/android/jack/dx/dex/code/RopTranslator.java b/jack/src/com/android/jack/dx/dex/code/RopTranslator.java
index cf4c360..d9eff2a 100644
--- a/jack/src/com/android/jack/dx/dex/code/RopTranslator.java
+++ b/jack/src/com/android/jack/dx/dex/code/RopTranslator.java
@@ -80,12 +80,6 @@
   private final int paramSize;
 
   /**
-   * true if the parameters to this method happen to be in proper order
-   * at the end of the frame (as the optimizer emits them)
-   */
-  private boolean paramsAreInOrder;
-
-  /**
    * Translates a {@link RopMethod}. This may modify the given
    * input.
    *
@@ -124,7 +118,6 @@
     this.addresses = new BlockAddresses(method);
     this.paramSize = paramSize;
     this.order = null;
-    this.paramsAreInOrder = calculateParamsAreInOrder(method, paramSize);
 
     BasicBlockList blocks = method.getBlocks();
     int bsz = blocks.size();
@@ -151,7 +144,7 @@
      * If params are not in order, we will need register space
      * for them before this is all over...
      */
-    this.regCount = blocks.getRegCount() + (paramsAreInOrder ? 0 : this.paramSize);
+    this.regCount = blocks.getRegCount() + (method.withDexCallingConvention() ? 0 : this.paramSize);
 
     this.output = new OutputCollector(dexOptions, maxInsns, bsz * 3, regCount, paramSize);
 
@@ -163,40 +156,6 @@
   }
 
   /**
-   * Checks to see if the move-param instructions that occur in this
-   * method happen to slot the params in an order at the top of the
-   * stack frame that matches dalvik's calling conventions. This will
-   * alway result in "true" for methods that have run through the
-   * SSA optimizer.
-   *
-   * @param paramSize size, in register units, of all the parameters
-   * to this method
-   */
-  private static boolean calculateParamsAreInOrder(RopMethod method, final int paramSize) {
-    final boolean[] paramsAreInOrder = {true};
-    final int initialRegCount = method.getBlocks().getRegCount();
-
-    /*
-     * We almost could just check the first block here, but the
-     * {@code cf} layer will put in a second move-param in a
-     * subsequent block in the case of synchronized methods.
-     */
-    method.getBlocks().forEachInsn(new Insn.BaseVisitor() {
-      @Override
-      public void visitPlainCstInsn(PlainCstInsn insn) {
-        if (insn.getOpcode().getOpcode() == RegOps.MOVE_PARAM) {
-          int param = ((CstInteger) insn.getConstant()).getValue();
-
-          paramsAreInOrder[0] = paramsAreInOrder[0]
-              && ((initialRegCount - paramSize + param) == insn.getResult().getReg());
-        }
-      }
-    });
-
-    return paramsAreInOrder[0];
-  }
-
-  /**
    * Does the translation and returns the result.
    *
    * @return {@code non-null;} the result
@@ -559,7 +518,7 @@
       }
 
       if (ropOpcode == RegOps.MOVE_PARAM) {
-        if (!paramsAreInOrder) {
+        if (!method.withDexCallingConvention()) {
           /*
            * Parameters are not in order at the top of the reg space.
            * We need to add moves.
diff --git a/jack/src/com/android/jack/dx/dex/code/StdCatchBuilder.java b/jack/src/com/android/jack/dx/dex/code/StdCatchBuilder.java
index 07c63c3..b2520ef 100644
--- a/jack/src/com/android/jack/dx/dex/code/StdCatchBuilder.java
+++ b/jack/src/com/android/jack/dx/dex/code/StdCatchBuilder.java
@@ -19,7 +19,6 @@
 import com.android.jack.dx.rop.code.BasicBlock;
 import com.android.jack.dx.rop.code.BasicBlockList;
 import com.android.jack.dx.rop.code.RopMethod;
-import com.android.jack.dx.rop.cst.CstType;
 import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.rop.type.TypeList;
 import com.android.jack.dx.util.IntList;
@@ -53,18 +52,9 @@
    * @param addresses {@code non-null;} address objects for each block
    */
   public StdCatchBuilder(RopMethod method, int[] order, BlockAddresses addresses) {
-    if (method == null) {
-      throw new NullPointerException("method == null");
-    }
-
-    if (order == null) {
-      throw new NullPointerException("order == null");
-    }
-
-    if (addresses == null) {
-      throw new NullPointerException("addresses == null");
-    }
-
+    assert method != null;
+    assert order != null;
+    assert addresses != null;
     this.method = method;
     this.order = order;
     this.addresses = addresses;
@@ -246,9 +236,8 @@
     CatchHandlerList result = new CatchHandlerList(catchSize);
 
     for (int i = 0; i < catchSize; i++) {
-      CstType oneType = new CstType(catches.getType(i));
       CodeAddress oneHandler = addresses.getStart(successors.get(i));
-      result.set(i, oneType, oneHandler.getAddress());
+      result.set(i, catches.getType(i), oneHandler.getAddress());
     }
 
     result.setImmutable();
@@ -289,18 +278,11 @@
    * @return {@code true} if the range is valid as a catch range
    */
   private static boolean rangeIsValid(BasicBlock start, BasicBlock end, BlockAddresses addresses) {
-    if (start == null) {
-      throw new NullPointerException("start == null");
-    }
-
-    if (end == null) {
-      throw new NullPointerException("end == null");
-    }
-
+    assert start != null;
+    assert end != null;
     // See above about selection of instructions.
     int startAddress = addresses.getLast(start).getAddress();
     int endAddress = addresses.getEnd(end).getAddress();
-
     return (endAddress - startAddress) <= MAX_CATCH_RANGE;
   }
 }
diff --git a/jack/src/com/android/jack/dx/dex/code/SwitchData.java b/jack/src/com/android/jack/dx/dex/code/SwitchData.java
index 2e6c268..9c5c061 100644
--- a/jack/src/com/android/jack/dx/dex/code/SwitchData.java
+++ b/jack/src/com/android/jack/dx/dex/code/SwitchData.java
@@ -61,19 +61,9 @@
   public SwitchData(SourcePosition position, CodeAddress user, IntList cases,
       CodeAddress[] targets) {
     super(position, RegisterSpecList.EMPTY);
-
-    if (user == null) {
-      throw new NullPointerException("user == null");
-    }
-
-    if (cases == null) {
-      throw new NullPointerException("cases == null");
-    }
-
-    if (targets == null) {
-      throw new NullPointerException("targets == null");
-    }
-
+    assert user != null;
+    assert cases != null;
+    assert targets != null;
     int sz = cases.size();
 
     if (sz != targets.length) {
diff --git a/jack/src/com/android/jack/dx/dex/code/TargetInsn.java b/jack/src/com/android/jack/dx/dex/code/TargetInsn.java
index b97025d..545e821 100644
--- a/jack/src/com/android/jack/dx/dex/code/TargetInsn.java
+++ b/jack/src/com/android/jack/dx/dex/code/TargetInsn.java
@@ -24,7 +24,7 @@
  */
 public final class TargetInsn extends FixedSizeInsn {
   /** {@code non-null;} the branch target */
-  private CodeAddress target;
+  private final CodeAddress target;
 
   /**
    * Constructs an instance. The output address of this instance is initially
@@ -41,11 +41,7 @@
   public TargetInsn(Dop opcode, SourcePosition position, RegisterSpecList registers,
       CodeAddress target) {
     super(opcode, position, registers);
-
-    if (target == null) {
-      throw new NullPointerException("target == null");
-    }
-
+    assert target != null;
     this.target = target;
   }
 
diff --git a/jack/src/com/android/jack/dx/dex/code/form/Form21c.java b/jack/src/com/android/jack/dx/dex/code/form/Form21c.java
index 61236fa..d0fa581 100644
--- a/jack/src/com/android/jack/dx/dex/code/form/Form21c.java
+++ b/jack/src/com/android/jack/dx/dex/code/form/Form21c.java
@@ -24,7 +24,7 @@
 import com.android.jack.dx.rop.cst.Constant;
 import com.android.jack.dx.rop.cst.CstFieldRef;
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
+import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.util.AnnotatedOutput;
 
 import java.util.BitSet;
@@ -111,7 +111,7 @@
       return false;
     }
 
-    return (cst instanceof CstType) || (cst instanceof CstFieldRef) || (cst instanceof CstString);
+    return (cst instanceof Type) || (cst instanceof CstFieldRef) || (cst instanceof CstString);
   }
 
   /** {@inheritDoc} */
diff --git a/jack/src/com/android/jack/dx/dex/code/form/Form22c.java b/jack/src/com/android/jack/dx/dex/code/form/Form22c.java
index 95144d2..8fc181a 100644
--- a/jack/src/com/android/jack/dx/dex/code/form/Form22c.java
+++ b/jack/src/com/android/jack/dx/dex/code/form/Form22c.java
@@ -22,7 +22,7 @@
 import com.android.jack.dx.rop.code.RegisterSpecList;
 import com.android.jack.dx.rop.cst.Constant;
 import com.android.jack.dx.rop.cst.CstFieldRef;
-import com.android.jack.dx.rop.cst.CstType;
+import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.util.AnnotatedOutput;
 
 import java.util.BitSet;
@@ -85,7 +85,7 @@
     }
 
     Constant cst = ci.getConstant();
-    return (cst instanceof CstType) || (cst instanceof CstFieldRef);
+    return (cst instanceof Type) || (cst instanceof CstFieldRef);
   }
 
   /** {@inheritDoc} */
diff --git a/jack/src/com/android/jack/dx/dex/code/form/Form31c.java b/jack/src/com/android/jack/dx/dex/code/form/Form31c.java
index 599119e..42c1277 100644
--- a/jack/src/com/android/jack/dx/dex/code/form/Form31c.java
+++ b/jack/src/com/android/jack/dx/dex/code/form/Form31c.java
@@ -24,7 +24,7 @@
 import com.android.jack.dx.rop.cst.Constant;
 import com.android.jack.dx.rop.cst.CstFieldRef;
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
+import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.util.AnnotatedOutput;
 
 import java.util.BitSet;
@@ -106,7 +106,7 @@
     CstInsn ci = (CstInsn) insn;
     Constant cst = ci.getConstant();
 
-    return (cst instanceof CstType) || (cst instanceof CstFieldRef) || (cst instanceof CstString);
+    return (cst instanceof Type) || (cst instanceof CstFieldRef) || (cst instanceof CstString);
   }
 
   /** {@inheritDoc} */
diff --git a/jack/src/com/android/jack/dx/dex/code/form/Form35c.java b/jack/src/com/android/jack/dx/dex/code/form/Form35c.java
index 7334e54..ea8614d 100644
--- a/jack/src/com/android/jack/dx/dex/code/form/Form35c.java
+++ b/jack/src/com/android/jack/dx/dex/code/form/Form35c.java
@@ -24,7 +24,6 @@
 import com.android.jack.dx.rop.cst.Constant;
 import com.android.jack.dx.rop.cst.CstCallSiteRef;
 import com.android.jack.dx.rop.cst.CstMethodRef;
-import com.android.jack.dx.rop.cst.CstType;
 import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.util.AnnotatedOutput;
 
@@ -87,7 +86,7 @@
     }
 
     Constant cst = ci.getConstant();
-    if (!((cst instanceof CstMethodRef) || (cst instanceof CstType)
+    if (!((cst instanceof CstMethodRef) || (cst instanceof Type)
         || (cst instanceof CstCallSiteRef))) {
       return false;
     }
diff --git a/jack/src/com/android/jack/dx/dex/code/form/Form3rc.java b/jack/src/com/android/jack/dx/dex/code/form/Form3rc.java
index ec815fd..62bf430 100644
--- a/jack/src/com/android/jack/dx/dex/code/form/Form3rc.java
+++ b/jack/src/com/android/jack/dx/dex/code/form/Form3rc.java
@@ -23,7 +23,7 @@
 import com.android.jack.dx.rop.cst.Constant;
 import com.android.jack.dx.rop.cst.CstCallSiteRef;
 import com.android.jack.dx.rop.cst.CstMethodRef;
-import com.android.jack.dx.rop.cst.CstType;
+import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.util.AnnotatedOutput;
 
 /**
@@ -79,7 +79,7 @@
       return false;
     }
 
-    if (!((cst instanceof CstMethodRef) || (cst instanceof CstType)
+    if (!((cst instanceof CstMethodRef) || (cst instanceof Type)
         || (cst instanceof CstCallSiteRef))) {
       return false;
     }
diff --git a/jack/src/com/android/jack/dx/dex/file/AnnotationItem.java b/jack/src/com/android/jack/dx/dex/file/AnnotationItem.java
index 492da3f..52b82b9 100644
--- a/jack/src/com/android/jack/dx/dex/file/AnnotationItem.java
+++ b/jack/src/com/android/jack/dx/dex/file/AnnotationItem.java
@@ -107,11 +107,7 @@
      * leb128 type is used to represent some things.
      */
     super(ALIGNMENT, -1);
-
-    if (annotation == null) {
-      throw new NullPointerException("annotation == null");
-    }
-
+    assert annotation != null;
     this.annotation = annotation;
     this.type = null;
     this.encodedForm = null;
diff --git a/jack/src/com/android/jack/dx/dex/file/AnnotationSetItem.java b/jack/src/com/android/jack/dx/dex/file/AnnotationSetItem.java
index eea7fa6..79927e6 100644
--- a/jack/src/com/android/jack/dx/dex/file/AnnotationSetItem.java
+++ b/jack/src/com/android/jack/dx/dex/file/AnnotationSetItem.java
@@ -67,13 +67,8 @@
    */
   private static int writeSize(Annotations annotations) {
     // This includes an int size at the start of the list.
-
-    try {
-      return (annotations.size() * ENTRY_WRITE_SIZE) + 4;
-    } catch (NullPointerException ex) {
-      // Elucidate the exception.
-      throw new NullPointerException("list == null");
-    }
+    assert annotations != null;
+    return (annotations.size() * ENTRY_WRITE_SIZE) + 4;
   }
 
   /**
diff --git a/jack/src/com/android/jack/dx/dex/file/AnnotationSetRefItem.java b/jack/src/com/android/jack/dx/dex/file/AnnotationSetRefItem.java
index 2759ebd..e2af2b4 100644
--- a/jack/src/com/android/jack/dx/dex/file/AnnotationSetRefItem.java
+++ b/jack/src/com/android/jack/dx/dex/file/AnnotationSetRefItem.java
@@ -39,11 +39,7 @@
    */
   public AnnotationSetRefItem(AnnotationSetItem annotations) {
     super(ALIGNMENT, WRITE_SIZE);
-
-    if (annotations == null) {
-      throw new NullPointerException("annotations == null");
-    }
-
+    assert annotations != null;
     this.annotations = annotations;
   }
 
diff --git a/jack/src/com/android/jack/dx/dex/file/AnnotationUtils.java b/jack/src/com/android/jack/dx/dex/file/AnnotationUtils.java
index 6ab032b..49d4b1b 100644
--- a/jack/src/com/android/jack/dx/dex/file/AnnotationUtils.java
+++ b/jack/src/com/android/jack/dx/dex/file/AnnotationUtils.java
@@ -27,7 +27,6 @@
 import com.android.jack.dx.rop.cst.CstKnownNull;
 import com.android.jack.dx.rop.cst.CstMethodRef;
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
 import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.rop.type.TypeList;
 
@@ -36,28 +35,25 @@
  */
 public final class AnnotationUtils {
   /** {@code non-null;} type for {@code AnnotationDefault} annotations */
-  private static final CstType ANNOTATION_DEFAULT_TYPE =
-      CstType.intern(Type.intern("Ldalvik/annotation/AnnotationDefault;"));
+  private static final Type ANNOTATION_DEFAULT_TYPE =
+      Type.intern("Ldalvik/annotation/AnnotationDefault;");
 
   /** {@code non-null;} type for {@code EnclosingClass} annotations */
-  private static final CstType ENCLOSING_CLASS_TYPE =
-      CstType.intern(Type.intern("Ldalvik/annotation/EnclosingClass;"));
+  private static final Type ENCLOSING_CLASS_TYPE =
+      Type.intern("Ldalvik/annotation/EnclosingClass;");
 
   /** {@code non-null;} type for {@code EnclosingMethod} annotations */
-  private static final CstType ENCLOSING_METHOD_TYPE =
-      CstType.intern(Type.intern("Ldalvik/annotation/EnclosingMethod;"));
+  private static final Type ENCLOSING_METHOD_TYPE =
+      Type.intern("Ldalvik/annotation/EnclosingMethod;");
 
   /** {@code non-null;} type for {@code InnerClass} annotations */
-  private static final CstType INNER_CLASS_TYPE =
-      CstType.intern(Type.intern("Ldalvik/annotation/InnerClass;"));
+  private static final Type INNER_CLASS_TYPE = Type.intern("Ldalvik/annotation/InnerClass;");
 
   /** {@code non-null;} type for {@code MemberClasses} annotations */
-  private static final CstType MEMBER_CLASSES_TYPE =
-      CstType.intern(Type.intern("Ldalvik/annotation/MemberClasses;"));
+  private static final Type MEMBER_CLASSES_TYPE = Type.intern("Ldalvik/annotation/MemberClasses;");
 
   /** {@code non-null;} type for {@code Throws} annotations */
-  private static final CstType THROWS_TYPE =
-      CstType.intern(Type.intern("Ldalvik/annotation/Throws;"));
+  private static final Type THROWS_TYPE = Type.intern("Ldalvik/annotation/Throws;");
 
   /** {@code non-null;} the UTF-8 constant {@code "accessFlags"} */
   private static final CstString ACCESS_FLAGS_STRING = new CstString("accessFlags");
@@ -95,7 +91,7 @@
    * @param clazz {@code non-null;} the enclosing class
    * @return {@code non-null;} the annotation
    */
-  public static Annotation makeEnclosingClass(CstType clazz) {
+  public static Annotation makeEnclosingClass(Type clazz) {
     Annotation result = new Annotation(ENCLOSING_CLASS_TYPE, SYSTEM);
 
     result.put(new NameValuePair(VALUE_STRING, clazz));
@@ -174,7 +170,7 @@
     CstArray.List list = new CstArray.List(size);
 
     for (int i = 0; i < size; i++) {
-      list.set(i, CstType.intern(types.getType(i)));
+      list.set(i, types.getType(i));
     }
 
     list.setImmutable();
diff --git a/jack/src/com/android/jack/dx/dex/file/AnnotationsDirectoryItem.java b/jack/src/com/android/jack/dx/dex/file/AnnotationsDirectoryItem.java
index 481b7fb..1260851 100644
--- a/jack/src/com/android/jack/dx/dex/file/AnnotationsDirectoryItem.java
+++ b/jack/src/com/android/jack/dx/dex/file/AnnotationsDirectoryItem.java
@@ -130,9 +130,7 @@
    * @param annotations {@code non-null;} annotations to set for this class
    */
   public void setClassAnnotations(Annotations annotations) {
-    if (annotations == null) {
-      throw new NullPointerException("annotations == null");
-    }
+    assert annotations != null;
 
     if (classAnnotations != null) {
       throw new UnsupportedOperationException("class annotations already set");
diff --git a/jack/src/com/android/jack/dx/dex/file/CallSiteIdsSection.java b/jack/src/com/android/jack/dx/dex/file/CallSiteIdsSection.java
index 36672c1..196c009 100644
--- a/jack/src/com/android/jack/dx/dex/file/CallSiteIdsSection.java
+++ b/jack/src/com/android/jack/dx/dex/file/CallSiteIdsSection.java
@@ -18,8 +18,6 @@
 
 import com.android.jack.dx.rop.cst.Constant;
 import com.android.jack.dx.rop.cst.CstCallSiteRef;
-import com.android.jack.dx.util.AnnotatedOutput;
-import com.android.jack.dx.util.Hex;
 
 import java.util.Collection;
 import java.util.LinkedHashMap;
@@ -61,30 +59,6 @@
     return result;
   }
 
-  /**
-   * Writes the portion of the file header that refers to this instance.
-   *
-   * @param out {@code non-null;} where to write
-   */
-  public void writeHeaderPart(AnnotatedOutput out) {
-    throwIfNotPrepared();
-
-    int sz = callSiteIds.size();
-    int offset = (sz == 0) ? 0 : getFileOffset();
-
-    if (sz > 65536) {
-      throw new UnsupportedOperationException("too many call site ids");
-    }
-
-    if (out.annotates()) {
-      out.annotate(4, "call_site_ids_size:  " + Hex.u4(sz));
-      out.annotate(4, "call_site_ids_off:   " + Hex.u4(offset));
-    }
-
-    out.writeInt(sz);
-    out.writeInt(offset);
-  }
-
   public void add(@Nonnull CstCallSiteRef cstCallSiteRef) {
     throwIfPrepared();
 
diff --git a/jack/src/com/android/jack/dx/dex/file/ClassDataItem.java b/jack/src/com/android/jack/dx/dex/file/ClassDataItem.java
index 19538d7..3250018 100644
--- a/jack/src/com/android/jack/dx/dex/file/ClassDataItem.java
+++ b/jack/src/com/android/jack/dx/dex/file/ClassDataItem.java
@@ -19,8 +19,8 @@
 import com.android.jack.dx.rop.cst.Constant;
 import com.android.jack.dx.rop.cst.CstArray;
 import com.android.jack.dx.rop.cst.CstLiteralBits;
-import com.android.jack.dx.rop.cst.CstType;
 import com.android.jack.dx.rop.cst.Zeroes;
+import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.util.AnnotatedOutput;
 import com.android.jack.dx.util.ByteArrayAnnotatedOutput;
 import com.android.jack.dx.util.Writers;
@@ -39,7 +39,7 @@
  */
 public final class ClassDataItem extends OffsettedItem {
   /** {@code non-null;} what class this data is for, just for listing generation */
-  private final CstType thisClass;
+  private final Type thisClass;
 
   /** {@code non-null;} list of static fields */
   private final ArrayList<EncodedField> staticFields;
@@ -72,13 +72,9 @@
    * @param thisClass {@code non-null;} what class this data is for, just
    * for listing generation
    */
-  public ClassDataItem(CstType thisClass) {
+  public ClassDataItem(Type thisClass) {
     super(1, -1);
-
-    if (thisClass == null) {
-      throw new NullPointerException("thisClass == null");
-    }
-
+    assert thisClass != null;
     this.thisClass = thisClass;
     this.staticFields = new ArrayList<EncodedField>(20);
     this.staticValues = new HashMap<EncodedField, Constant>(40);
@@ -118,9 +114,7 @@
    * @param value {@code null-ok;} initial value for the field, if any
    */
   public void addStaticField(EncodedField field, Constant value) {
-    if (field == null) {
-      throw new NullPointerException("field == null");
-    }
+    assert field != null;
 
     if (staticValuesConstant != null) {
       throw new UnsupportedOperationException("static fields already sorted");
@@ -136,10 +130,7 @@
    * @param field {@code non-null;} the field to add
    */
   public void addInstanceField(EncodedField field) {
-    if (field == null) {
-      throw new NullPointerException("field == null");
-    }
-
+    assert field != null;
     instanceFields.add(field);
   }
 
@@ -149,10 +140,7 @@
    * @param method {@code non-null;} the method to add
    */
   public void addDirectMethod(EncodedMethod method) {
-    if (method == null) {
-      throw new NullPointerException("method == null");
-    }
-
+    assert method != null;
     directMethods.add(method);
   }
 
@@ -162,10 +150,7 @@
    * @param method {@code non-null;} the method to add
    */
   public void addVirtualMethod(EncodedMethod method) {
-    if (method == null) {
-      throw new NullPointerException("method == null");
-    }
-
+    assert method != null;
     virtualMethods.add(method);
   }
 
diff --git a/jack/src/com/android/jack/dx/dex/file/ClassDefItem.java b/jack/src/com/android/jack/dx/dex/file/ClassDefItem.java
index a75a2fd..144d4e8 100644
--- a/jack/src/com/android/jack/dx/dex/file/ClassDefItem.java
+++ b/jack/src/com/android/jack/dx/dex/file/ClassDefItem.java
@@ -25,8 +25,8 @@
 import com.android.jack.dx.rop.cst.CstFieldRef;
 import com.android.jack.dx.rop.cst.CstMethodRef;
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
 import com.android.jack.dx.rop.type.StdTypeList;
+import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.rop.type.TypeList;
 import com.android.jack.dx.util.AnnotatedOutput;
 import com.android.jack.dx.util.Hex;
@@ -44,7 +44,7 @@
 public final class ClassDefItem extends IndexedItem {
 
   /** {@code non-null;} type constant for this class */
-  private final CstType thisClass;
+  private final Type thisClass;
 
   /** access flags */
   private final int accessFlags;
@@ -53,7 +53,7 @@
    * {@code null-ok;} superclass or {@code null} if this class is a/the
    * root class
    */
-  private final CstType superclass;
+  private final Type superclass;
 
   /** {@code null-ok;} list of implemented interfaces */
   private TypeListItem interfaces;
@@ -85,21 +85,14 @@
    * @param sourceFile {@code null-ok;} source file name or
    * {@code null} if unknown
    */
-  public ClassDefItem(CstType thisClass, int accessFlags, CstType superclass, TypeList interfaces,
+  public ClassDefItem(Type thisClass, int accessFlags, Type superclass, TypeList interfaces,
       CstString sourceFile) {
-    if (thisClass == null) {
-      throw new NullPointerException("thisClass == null");
-    }
-
+    assert thisClass != null;
+    assert interfaces != null;
     /*
      * TODO(dx team): Maybe check accessFlags and superclass, at
      * least for easily-checked stuff?
      */
-
-    if (interfaces == null) {
-      throw new NullPointerException("interfaces == null");
-    }
-
     this.thisClass = thisClass;
     this.accessFlags = accessFlags;
     this.superclass = superclass;
@@ -213,7 +206,7 @@
    *
    * @return {@code non-null;} the constant
    */
-  public CstType getThisClass() {
+  public Type getThisClass() {
     return thisClass;
   }
 
@@ -232,7 +225,7 @@
    * @return {@code null-ok;} the superclass or {@code null} if
    * this class is a/the root class
    */
-  public CstType getSuperclass() {
+  public Type getSuperclass() {
     return superclass;
   }
 
diff --git a/jack/src/com/android/jack/dx/dex/file/ClassDefsSection.java b/jack/src/com/android/jack/dx/dex/file/ClassDefsSection.java
index 0c66c50..77681c2 100644
--- a/jack/src/com/android/jack/dx/dex/file/ClassDefsSection.java
+++ b/jack/src/com/android/jack/dx/dex/file/ClassDefsSection.java
@@ -17,7 +17,6 @@
 package com.android.jack.dx.dex.file;
 
 import com.android.jack.dx.rop.cst.Constant;
-import com.android.jack.dx.rop.cst.CstType;
 import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.rop.type.TypeList;
 import com.android.jack.dx.util.AnnotatedOutput;
@@ -65,14 +64,11 @@
   /** {@inheritDoc} */
   @Override
   public IndexedItem get(Constant cst) {
-    if (cst == null) {
-      throw new NullPointerException("cst == null");
-    }
+    assert cst != null;
 
     throwIfNotPrepared();
 
-    Type type = ((CstType) cst).getClassType();
-    IndexedItem result = classDefs.get(type);
+    IndexedItem result = classDefs.get(cst);
 
     if (result == null) {
       throw new IllegalArgumentException("not found");
@@ -108,14 +104,9 @@
    * @param clazz {@code non-null;} the class def to add
    */
   public void add(ClassDefItem clazz) {
-    Type type;
+    assert clazz != null;
+    Type type = clazz.getThisClass();
 
-    try {
-      type = clazz.getThisClass().getClassType();
-    } catch (NullPointerException ex) {
-      // Elucidate the exception.
-      throw new NullPointerException("clazz == null");
-    }
 
     throwIfPrepared();
 
@@ -168,9 +159,8 @@
 
     maxDepth--;
 
-    CstType superclassCst = c.getSuperclass();
-    if (superclassCst != null) {
-      Type superclass = superclassCst.getClassType();
+    Type superclass = c.getSuperclass();
+    if (superclass != null) {
       idx = orderItems0(superclass, idx, maxDepth);
     }
 
diff --git a/jack/src/com/android/jack/dx/dex/file/CodeItem.java b/jack/src/com/android/jack/dx/dex/file/CodeItem.java
index 97041a8..f69801e 100644
--- a/jack/src/com/android/jack/dx/dex/file/CodeItem.java
+++ b/jack/src/com/android/jack/dx/dex/file/CodeItem.java
@@ -71,19 +71,9 @@
    */
   public CodeItem(CstMethodRef ref, DalvCode code, boolean isStatic, TypeList throwsList) {
     super(ALIGNMENT, -1);
-
-    if (ref == null) {
-      throw new NullPointerException("ref == null");
-    }
-
-    if (code == null) {
-      throw new NullPointerException("code == null");
-    }
-
-    if (throwsList == null) {
-      throw new NullPointerException("throwsList == null");
-    }
-
+    assert ref != null;
+    assert code != null;
+    assert throwsList != null;
     this.ref = ref;
     this.code = code;
     this.isStatic = isStatic;
diff --git a/jack/src/com/android/jack/dx/dex/file/DebugInfoDecoder.java b/jack/src/com/android/jack/dx/dex/file/DebugInfoDecoder.java
index 3672450..0d17a37 100644
--- a/jack/src/com/android/jack/dx/dex/file/DebugInfoDecoder.java
+++ b/jack/src/com/android/jack/dx/dex/file/DebugInfoDecoder.java
@@ -116,10 +116,7 @@
    */
   public DebugInfoDecoder(ByteInput encoded, int regSize, boolean isStatic, Prototype desc,
       int thisIdx) {
-    if (encoded == null) {
-      throw new NullPointerException("encoded == null");
-    }
-
+    assert encoded != null;
     this.encoded = encoded;
     this.isStatic = isStatic;
     this.desc = desc;
diff --git a/jack/src/com/android/jack/dx/dex/file/DebugInfoEncoder.java b/jack/src/com/android/jack/dx/dex/file/DebugInfoEncoder.java
index cb41406..f584b68 100644
--- a/jack/src/com/android/jack/dx/dex/file/DebugInfoEncoder.java
+++ b/jack/src/com/android/jack/dx/dex/file/DebugInfoEncoder.java
@@ -34,7 +34,6 @@
 import com.android.jack.dx.rop.code.SourcePosition;
 import com.android.jack.dx.rop.cst.CstMethodRef;
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
 import com.android.jack.dx.rop.type.Prototype;
 import com.android.jack.dx.rop.type.StdTypeList;
 import com.android.jack.dx.rop.type.Type;
@@ -580,7 +579,7 @@
     }
     sb.append(' ');
 
-    CstType type = e.getType();
+    Type type = e.getType();
     if (type == null) {
       sb.append("null");
     } else {
@@ -649,7 +648,7 @@
    * @param type {@code null-ok;} type to emit
    * @throws IOException
    */
-  private void emitTypeIndex(CstType type) throws IOException {
+  private void emitTypeIndex(Type type) throws IOException {
     if ((type == null) || (file == null)) {
       output.writeUleb128(0);
     } else {
diff --git a/jack/src/com/android/jack/dx/dex/file/DebugInfoItem.java b/jack/src/com/android/jack/dx/dex/file/DebugInfoItem.java
index 8f5ceb6..51c4f5a 100644
--- a/jack/src/com/android/jack/dx/dex/file/DebugInfoItem.java
+++ b/jack/src/com/android/jack/dx/dex/file/DebugInfoItem.java
@@ -46,11 +46,7 @@
   public DebugInfoItem(DalvCode code, boolean isStatic, CstMethodRef ref) {
     // We don't know the write size yet.
     super(ALIGNMENT, -1);
-
-    if (code == null) {
-      throw new NullPointerException("code == null");
-    }
-
+    assert code != null;
     this.code = code;
     this.isStatic = isStatic;
     this.ref = ref;
diff --git a/jack/src/com/android/jack/dx/dex/file/DexFile.java b/jack/src/com/android/jack/dx/dex/file/DexFile.java
index 38788c8..7217d7d 100644
--- a/jack/src/com/android/jack/dx/dex/file/DexFile.java
+++ b/jack/src/com/android/jack/dx/dex/file/DexFile.java
@@ -28,7 +28,7 @@
 import com.android.jack.dx.rop.cst.CstMethodRef;
 import com.android.jack.dx.rop.cst.CstPrototypeRef;
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
+import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.util.ByteArrayAnnotatedOutput;
 import com.android.jack.dx.util.ExceptionWithContext;
 
@@ -492,10 +492,11 @@
    * @param cst {@code non-null;} constant to possibly intern
    */
   /*package*/void internIfAppropriate(Constant cst) {
+    assert cst != null;
     if (cst instanceof CstString) {
       stringIds.intern((CstString) cst);
-    } else if (cst instanceof CstType) {
-      typeIds.intern((CstType) cst);
+    } else if (cst instanceof Type) {
+      typeIds.intern((Type) cst);
     } else if (cst instanceof CstBaseMethodRef) {
       methodIds.intern((CstBaseMethodRef) cst);
     } else if (cst instanceof CstFieldRef) {
@@ -506,16 +507,13 @@
       protoIds.intern(((CstPrototypeRef) cst).getPrototype());
     } else if (cst instanceof CstMethodHandleRef) {
       methodHandleIds.intern((CstMethodHandleRef) cst);
-    } else if (cst == null) {
-      throw new NullPointerException("cst == null");
     }
   }
 
   public void appendIfAppropriate(Constant cst) {
+    assert cst != null;
     if (cst instanceof CstCallSiteRef) {
       callSiteIds.add((CstCallSiteRef) cst);
-    } else if (cst == null) {
-      throw new NullPointerException("cst == null");
     }
   }
 
@@ -533,7 +531,7 @@
   public IndexedItem findItemOrNull(Constant cst) {
     if (cst instanceof CstString) {
       return stringIds.get(cst);
-    } else if (cst instanceof CstType) {
+    } else if (cst instanceof Type) {
       return typeIds.get(cst);
     } else if (cst instanceof CstBaseMethodRef) {
       return methodIds.get(cst);
@@ -557,7 +555,7 @@
    */
   public void prepare() {
     prepare(Collections.<CstString>emptyList(), Collections.<CstFieldRef>emptyList(),
-        Collections.<CstMethodRef>emptyList(), Collections.<CstType>emptyList(),
+        Collections.<CstMethodRef>emptyList(), Collections.<Type>emptyList(),
         Collections.<CstPrototypeRef>emptyList());
   }
 
@@ -568,12 +566,12 @@
    * @param cstStrings Collection of CstString to intern
    * @param cstFieldRefs Collection of CstFieldRef to intern
    * @param cstMethodRefs Collection of CstMethodRef to intern
-   * @param cstTypes Collection of CstType to intern
+   * @param types Collection of {@link Type} to intern
    * @param cstPrototypeRefs Collection of CstPrototypeRef to intern
    */
   public void prepare(@Nonnull Collection<CstString> cstStrings,
       @Nonnull Collection<CstFieldRef> cstFieldRefs,
-      @Nonnull Collection<CstMethodRef> cstMethodRefs, @Nonnull Collection<CstType> cstTypes,
+      @Nonnull Collection<CstMethodRef> cstMethodRefs, @Nonnull Collection<Type> types,
       @Nonnull Collection<CstPrototypeRef> cstPrototypeRefs) {
     for (CstString cst : cstStrings) {
       stringIds.intern(cst);
@@ -584,7 +582,7 @@
     for (CstMethodRef cst : cstMethodRefs) {
       methodIds.intern(cst);
     }
-    for (CstType cst : cstTypes) {
+    for (Type cst : types) {
       typeIds.intern(cst);
     }
     for (CstPrototypeRef cts : cstPrototypeRefs) {
diff --git a/jack/src/com/android/jack/dx/dex/file/EncodedArrayItem.java b/jack/src/com/android/jack/dx/dex/file/EncodedArrayItem.java
index 7bad073..07494bc 100644
--- a/jack/src/com/android/jack/dx/dex/file/EncodedArrayItem.java
+++ b/jack/src/com/android/jack/dx/dex/file/EncodedArrayItem.java
@@ -47,11 +47,7 @@
      * leb128 type is used to represent some things.
      */
     super(ALIGNMENT, -1);
-
-    if (array == null) {
-      throw new NullPointerException("array == null");
-    }
-
+    assert array != null;
     this.array = array;
     this.encodedForm = null;
   }
diff --git a/jack/src/com/android/jack/dx/dex/file/EncodedField.java b/jack/src/com/android/jack/dx/dex/file/EncodedField.java
index 46faa65..a934d11 100644
--- a/jack/src/com/android/jack/dx/dex/file/EncodedField.java
+++ b/jack/src/com/android/jack/dx/dex/file/EncodedField.java
@@ -40,17 +40,12 @@
    */
   public EncodedField(CstFieldRef field, int accessFlags) {
     super(accessFlags);
-
-    if (field == null) {
-      throw new NullPointerException("field == null");
-    }
-
+    assert field != null;
     /*
      * TODO(dx team): Maybe check accessFlags, at least for
      * easily-checked stuff?
      */
-
-this.field = field;
+    this.field = field;
   }
 
   /** {@inheritDoc} */
@@ -106,7 +101,7 @@
   /** {@inheritDoc} */
   @Override
   public CstString getName() {
-    return field.getNat().getName();
+    return field.getName();
   }
 
   /** {@inheritDoc} */
diff --git a/jack/src/com/android/jack/dx/dex/file/EncodedMethod.java b/jack/src/com/android/jack/dx/dex/file/EncodedMethod.java
index c7a65e4..482a94e 100644
--- a/jack/src/com/android/jack/dx/dex/file/EncodedMethod.java
+++ b/jack/src/com/android/jack/dx/dex/file/EncodedMethod.java
@@ -48,15 +48,9 @@
    */
   public EncodedMethod(CstMethodRef method, int accessFlags, OffsettedItem code) {
     super(accessFlags);
-
     assert code == null || code instanceof Code;
-
-    if (method == null) {
-      throw new NullPointerException("method == null");
-    }
-
+    assert method != null;
     this.method = method;
-
     this.code = code;
   }
 
@@ -131,7 +125,7 @@
   /** {@inheritDoc} */
   @Override
   public final CstString getName() {
-    return method.getNat().getName();
+    return method.getName();
   }
 
   /** {@inheritDoc} */
diff --git a/jack/src/com/android/jack/dx/dex/file/FieldAnnotationStruct.java b/jack/src/com/android/jack/dx/dex/file/FieldAnnotationStruct.java
index 23fb729..4f82500 100644
--- a/jack/src/com/android/jack/dx/dex/file/FieldAnnotationStruct.java
+++ b/jack/src/com/android/jack/dx/dex/file/FieldAnnotationStruct.java
@@ -39,14 +39,8 @@
    * @param annotations {@code non-null;} the associated annotations
    */
   public FieldAnnotationStruct(CstFieldRef field, AnnotationSetItem annotations) {
-    if (field == null) {
-      throw new NullPointerException("field == null");
-    }
-
-    if (annotations == null) {
-      throw new NullPointerException("annotations == null");
-    }
-
+    assert field != null;
+    assert annotations != null;
     this.field = field;
     this.annotations = annotations;
   }
diff --git a/jack/src/com/android/jack/dx/dex/file/FieldIdsSection.java b/jack/src/com/android/jack/dx/dex/file/FieldIdsSection.java
index d623b74..26c24a3 100644
--- a/jack/src/com/android/jack/dx/dex/file/FieldIdsSection.java
+++ b/jack/src/com/android/jack/dx/dex/file/FieldIdsSection.java
@@ -54,9 +54,7 @@
   /** {@inheritDoc} */
   @Override
   public IndexedItem get(Constant cst) {
-    if (cst == null) {
-      throw new NullPointerException("cst == null");
-    }
+    assert cst != null;
 
     throwIfNotPrepared();
 
@@ -96,9 +94,7 @@
    * @return {@code non-null;} the interned reference
    */
   public FieldIdItem intern(CstFieldRef field) {
-    if (field == null) {
-      throw new NullPointerException("field == null");
-    }
+    assert field != null;
 
     throwIfPrepared();
 
@@ -120,9 +116,7 @@
    * @return {@code >= 0;} the reference's index
    */
   public int indexOf(CstFieldRef ref) {
-    if (ref == null) {
-      throw new NullPointerException("ref == null");
-    }
+    assert ref != null;
 
     throwIfNotPrepared();
 
diff --git a/jack/src/com/android/jack/dx/dex/file/HeaderItem.java b/jack/src/com/android/jack/dx/dex/file/HeaderItem.java
index cc4cfff..980da27 100644
--- a/jack/src/com/android/jack/dx/dex/file/HeaderItem.java
+++ b/jack/src/com/android/jack/dx/dex/file/HeaderItem.java
@@ -29,14 +29,10 @@
  */
 public final class HeaderItem extends IndexedItem {
 
-  @Nonnegative
-  private final int dexVersion;
-
   /**
    * Constructs an instance.
    */
-  public HeaderItem(@Nonnegative int dexVersion) {
-    this.dexVersion = dexVersion;
+  public HeaderItem() {
   }
 
   /** {@inheritDoc} */
@@ -49,7 +45,7 @@
   @Override
   @Nonnegative
   public int writeSize() {
-    return SizeOf.getHeaderSize(dexVersion);
+    return SizeOf.getHeaderSize();
   }
 
   /** {@inheritDoc} */
@@ -74,7 +70,7 @@
       out.annotate(4, "checksum");
       out.annotate(20, "signature");
       out.annotate(4, "file_size:       " + Hex.u4(file.getFileSize()));
-      out.annotate(4, "header_size:     " + Hex.u4(SizeOf.getHeaderSize(dexVersion)));
+      out.annotate(4, "header_size:     " + Hex.u4(SizeOf.getHeaderSize()));
       out.annotate(4, "endian_tag:      " + Hex.u4(DexFormat.ENDIAN_TAG));
       out.annotate(4, "link_size:       0");
       out.annotate(4, "link_off:        0");
@@ -90,7 +86,7 @@
     out.writeZeroes(24);
 
     out.writeInt(file.getFileSize());
-    out.writeInt(SizeOf.getHeaderSize(dexVersion));
+    out.writeInt(SizeOf.getHeaderSize());
     out.writeInt(DexFormat.ENDIAN_TAG);
 
     /*
@@ -109,11 +105,6 @@
     file.getMethodIds().writeHeaderPart(out);
     file.getClassDefs().writeHeaderPart(out);
 
-    if (dexVersion == DexFormat.O_BETA2_DEX_VERSION) {
-      file.getCallSiteIds().writeHeaderPart(out);
-      file.getMethodHandleIds().writeHeaderPart(out);
-    }
-
     if (out.annotates()) {
       out.annotate(4, "data_size:       " + Hex.u4(dataSize));
       out.annotate(4, "data_off:        " + Hex.u4(dataOff));
diff --git a/jack/src/com/android/jack/dx/dex/file/HeaderSection.java b/jack/src/com/android/jack/dx/dex/file/HeaderSection.java
index e9db77c..a5df91b 100644
--- a/jack/src/com/android/jack/dx/dex/file/HeaderSection.java
+++ b/jack/src/com/android/jack/dx/dex/file/HeaderSection.java
@@ -37,7 +37,7 @@
   public HeaderSection(DexFile file) {
     super(null, file, 4);
 
-    HeaderItem item = new HeaderItem(file.getDexOptions().getDexVersion());
+    HeaderItem item = new HeaderItem();
     item.setIndex(0);
 
     this.list = Collections.singletonList(item);
diff --git a/jack/src/com/android/jack/dx/dex/file/IdItem.java b/jack/src/com/android/jack/dx/dex/file/IdItem.java
index df27a71..666b8e5 100644
--- a/jack/src/com/android/jack/dx/dex/file/IdItem.java
+++ b/jack/src/com/android/jack/dx/dex/file/IdItem.java
@@ -16,29 +16,24 @@
 
 package com.android.jack.dx.dex.file;
 
-import com.android.jack.dx.rop.cst.CstType;
+import com.android.jack.dx.rop.type.Type;
 
 /**
  * Representation of a reference to an item inside a Dalvik file.
  */
 public abstract class IdItem extends IndexedItem {
   /**
-   * {@code non-null;} the type constant for the defining class of
-   * the reference
+   * {@code non-null;} the type for the defining class of the reference
    */
-  private final CstType type;
+  private final Type type;
 
   /**
    * Constructs an instance.
    *
-   * @param type {@code non-null;} the type constant for the defining
-   * class of the reference
+   * @param type {@code non-null;} the type for the defining class of the reference
    */
-  public IdItem(CstType type) {
-    if (type == null) {
-      throw new NullPointerException("type == null");
-    }
-
+  public IdItem(Type type) {
+    assert type != null;
     this.type = type;
   }
 
@@ -50,12 +45,11 @@
   }
 
   /**
-   * Gets the type constant for the defining class of the
-   * reference.
+   * Gets the type for the defining class of the reference.
    *
    * @return {@code non-null;} the type constant
    */
-  public final CstType getDefiningClass() {
+  public final Type getDefiningClass() {
     return type;
   }
 }
diff --git a/jack/src/com/android/jack/dx/dex/file/ImportedCodeItem.java b/jack/src/com/android/jack/dx/dex/file/ImportedCodeItem.java
index fcc0107..27f2fc0 100644
--- a/jack/src/com/android/jack/dx/dex/file/ImportedCodeItem.java
+++ b/jack/src/com/android/jack/dx/dex/file/ImportedCodeItem.java
@@ -77,22 +77,12 @@
   public ImportedCodeItem(CstMethodRef ref, Code code, ImportedDebugInfoItem debugInfoItem,
       CstIndexMap cstIndexMap) {
     super(ALIGNMENT, -1);
-
-    if (ref == null) {
-      throw new NullPointerException("ref == null");
-    }
+    assert ref != null;
+    assert code != null;
+    assert cstIndexMap != null;
     this.ref = ref;
-
-    if (code == null) {
-      throw new NullPointerException("code == null");
-    }
     this.code = code;
-
     this.debugInfoItem = debugInfoItem;
-
-    if (cstIndexMap == null) {
-      throw new NullPointerException("cstIndexMap == null");
-    }
     this.cstIndexMap = cstIndexMap;
   }
 
diff --git a/jack/src/com/android/jack/dx/dex/file/MapItem.java b/jack/src/com/android/jack/dx/dex/file/MapItem.java
index 21f1724..7ffac12 100644
--- a/jack/src/com/android/jack/dx/dex/file/MapItem.java
+++ b/jack/src/com/android/jack/dx/dex/file/MapItem.java
@@ -59,9 +59,7 @@
    * should be added to; it should be empty on entry to this method
    */
   public static void addMap(Section[] sections, MixedItemSection mapSection) {
-    if (sections == null) {
-      throw new NullPointerException("sections == null");
-    }
+    assert sections != null;
 
     if (mapSection.items().size() != 0) {
       throw new IllegalArgumentException("mapSection.items().size() != 0");
@@ -109,23 +107,12 @@
    */
   private MapItem(ItemType type, Section section, Item firstItem, int itemCount) {
     super(ALIGNMENT, WRITE_SIZE);
-
-    if (type == null) {
-      throw new NullPointerException("type == null");
-    }
-
-    if (section == null) {
-      throw new NullPointerException("section == null");
-    }
-
-    if (firstItem == null) {
-      throw new NullPointerException("firstItem == null");
-    }
-
+    assert type != null;
+    assert section != null;
+    assert firstItem != null;
     if (itemCount <= 0) {
       throw new IllegalArgumentException("itemCount <= 0");
     }
-
     this.type = type;
     this.section = section;
     this.firstItem = firstItem;
@@ -140,11 +127,7 @@
    */
   private MapItem(Section section) {
     super(ALIGNMENT, WRITE_SIZE);
-
-    if (section == null) {
-      throw new NullPointerException("section == null");
-    }
-
+    assert section != null;
     this.type = ItemType.TYPE_MAP_LIST;
     this.section = section;
     this.firstItem = null;
diff --git a/jack/src/com/android/jack/dx/dex/file/MemberIdItem.java b/jack/src/com/android/jack/dx/dex/file/MemberIdItem.java
index c2011a4..645f28d 100644
--- a/jack/src/com/android/jack/dx/dex/file/MemberIdItem.java
+++ b/jack/src/com/android/jack/dx/dex/file/MemberIdItem.java
@@ -18,7 +18,6 @@
 
 import com.android.jack.dx.dex.SizeOf;
 import com.android.jack.dx.rop.cst.CstMemberRef;
-import com.android.jack.dx.rop.cst.CstNat;
 import com.android.jack.dx.util.AnnotatedOutput;
 import com.android.jack.dx.util.Hex;
 
@@ -53,7 +52,7 @@
     super.addContents(file);
 
     StringIdsSection stringIds = file.getStringIds();
-    stringIds.intern(getRef().getNat().getName());
+    stringIds.intern(getRef().getName());
   }
 
   /** {@inheritDoc} */
@@ -61,9 +60,8 @@
   public final void writeTo(DexFile file, AnnotatedOutput out) {
     TypeIdsSection typeIds = file.getTypeIds();
     StringIdsSection stringIds = file.getStringIds();
-    CstNat nat = cst.getNat();
     int classIdx = typeIds.indexOf(getDefiningClass());
-    int nameIdx = stringIds.indexOf(nat.getName());
+    int nameIdx = stringIds.indexOf(cst.getName());
     int typoidIdx = getTypoidIdx(file);
 
     if (out.annotates()) {
diff --git a/jack/src/com/android/jack/dx/dex/file/MethodAnnotationStruct.java b/jack/src/com/android/jack/dx/dex/file/MethodAnnotationStruct.java
index a01882f..6c70d24 100644
--- a/jack/src/com/android/jack/dx/dex/file/MethodAnnotationStruct.java
+++ b/jack/src/com/android/jack/dx/dex/file/MethodAnnotationStruct.java
@@ -39,14 +39,8 @@
    * @param annotations {@code non-null;} the associated annotations
    */
   public MethodAnnotationStruct(CstMethodRef method, AnnotationSetItem annotations) {
-    if (method == null) {
-      throw new NullPointerException("method == null");
-    }
-
-    if (annotations == null) {
-      throw new NullPointerException("annotations == null");
-    }
-
+    assert method != null;
+    assert annotations != null;
     this.method = method;
     this.annotations = annotations;
   }
diff --git a/jack/src/com/android/jack/dx/dex/file/MethodHandleIdsSection.java b/jack/src/com/android/jack/dx/dex/file/MethodHandleIdsSection.java
index 5380c47..0e1880a 100644
--- a/jack/src/com/android/jack/dx/dex/file/MethodHandleIdsSection.java
+++ b/jack/src/com/android/jack/dx/dex/file/MethodHandleIdsSection.java
@@ -18,8 +18,6 @@
 
 import com.android.jack.dx.rop.cst.Constant;
 import com.android.jack.dx.rop.cst.CstMethodHandleRef;
-import com.android.jack.dx.util.AnnotatedOutput;
-import com.android.jack.dx.util.Hex;
 
 import java.util.Collection;
 import java.util.TreeMap;
@@ -62,30 +60,6 @@
   }
 
   /**
-   * Writes the portion of the file header that refers to this instance.
-   *
-   * @param out {@code non-null;} where to write
-   */
-  public void writeHeaderPart(@Nonnull AnnotatedOutput out) {
-    throwIfNotPrepared();
-
-    int sz = methodHandleIds.size();
-    int offset = (sz == 0) ? 0 : getFileOffset();
-
-    if (sz > 65536) {
-      throw new UnsupportedOperationException("too many method handle ids");
-    }
-
-    if (out.annotates()) {
-      out.annotate(4, "method_handle_ids_size:  " + Hex.u4(sz));
-      out.annotate(4, "method_handle_ids_off:   " + Hex.u4(offset));
-    }
-
-    out.writeInt(sz);
-    out.writeInt(offset);
-  }
-
-  /**
    * Interns an element into this instance.
    *
    * @param cstMethodHandleRef {@code non-null;} the method handle to intern
diff --git a/jack/src/com/android/jack/dx/dex/file/MethodIdsSection.java b/jack/src/com/android/jack/dx/dex/file/MethodIdsSection.java
index f3dc0a6..3830df1 100644
--- a/jack/src/com/android/jack/dx/dex/file/MethodIdsSection.java
+++ b/jack/src/com/android/jack/dx/dex/file/MethodIdsSection.java
@@ -54,9 +54,7 @@
   /** {@inheritDoc} */
   @Override
   public IndexedItem get(Constant cst) {
-    if (cst == null) {
-      throw new NullPointerException("cst == null");
-    }
+    assert cst != null;
 
     throwIfNotPrepared();
 
@@ -96,9 +94,7 @@
    * @return {@code non-null;} the interned reference
    */
   public MethodIdItem intern(CstBaseMethodRef method) {
-    if (method == null) {
-      throw new NullPointerException("method == null");
-    }
+    assert method != null;
 
     throwIfPrepared();
 
@@ -120,9 +116,7 @@
    * @return {@code >= 0;} the reference's index
    */
   public int indexOf(CstBaseMethodRef ref) {
-    if (ref == null) {
-      throw new NullPointerException("ref == null");
-    }
+    assert ref != null;
 
     throwIfNotPrepared();
 
diff --git a/jack/src/com/android/jack/dx/dex/file/MixedItemSection.java b/jack/src/com/android/jack/dx/dex/file/MixedItemSection.java
index 68909b1..93682ca 100644
--- a/jack/src/com/android/jack/dx/dex/file/MixedItemSection.java
+++ b/jack/src/com/android/jack/dx/dex/file/MixedItemSection.java
@@ -166,15 +166,12 @@
    * @param item {@code non-null;} the item to add
    */
   public void add(OffsettedItem item) {
+    assert item != null;
+
     throwIfPrepared();
 
-    try {
-      if (item.getAlignment() > getAlignment()) {
-        throw new IllegalArgumentException("incompatible item alignment");
-      }
-    } catch (NullPointerException ex) {
-      // Elucidate the exception.
-      throw new NullPointerException("item == null");
+    if (item.getAlignment() > getAlignment()) {
+      throw new IllegalArgumentException("incompatible item alignment");
     }
 
     items.add(item);
diff --git a/jack/src/com/android/jack/dx/dex/file/OffsettedItem.java b/jack/src/com/android/jack/dx/dex/file/OffsettedItem.java
index 020c3ab..5cc429b 100644
--- a/jack/src/com/android/jack/dx/dex/file/OffsettedItem.java
+++ b/jack/src/com/android/jack/dx/dex/file/OffsettedItem.java
@@ -231,9 +231,7 @@
    * in order to meet its alignment constraint
    */
   public final int place(Section addedTo, int offset) {
-    if (addedTo == null) {
-      throw new NullPointerException("addedTo == null");
-    }
+    assert addedTo != null;
 
     if (offset < 0) {
       throw new IllegalArgumentException("offset < 0");
diff --git a/jack/src/com/android/jack/dx/dex/file/ParameterAnnotationStruct.java b/jack/src/com/android/jack/dx/dex/file/ParameterAnnotationStruct.java
index da4ebc9..97c0270 100644
--- a/jack/src/com/android/jack/dx/dex/file/ParameterAnnotationStruct.java
+++ b/jack/src/com/android/jack/dx/dex/file/ParameterAnnotationStruct.java
@@ -46,14 +46,8 @@
    * @param annotationsList {@code non-null;} the associated annotations list
    */
   public ParameterAnnotationStruct(CstMethodRef method, AnnotationsList annotationsList) {
-    if (method == null) {
-      throw new NullPointerException("method == null");
-    }
-
-    if (annotationsList == null) {
-      throw new NullPointerException("annotationsList == null");
-    }
-
+    assert method != null;
+    assert annotationsList != null;
     this.method = method;
     this.annotationsList = annotationsList;
 
diff --git a/jack/src/com/android/jack/dx/dex/file/ProtoIdItem.java b/jack/src/com/android/jack/dx/dex/file/ProtoIdItem.java
index f971c05..29185a8 100644
--- a/jack/src/com/android/jack/dx/dex/file/ProtoIdItem.java
+++ b/jack/src/com/android/jack/dx/dex/file/ProtoIdItem.java
@@ -49,9 +49,7 @@
    * @param prototype {@code non-null;} the constant for the prototype
    */
   public ProtoIdItem(Prototype prototype) {
-    if (prototype == null) {
-      throw new NullPointerException("prototype == null");
-    }
+    assert prototype != null;
 
     this.prototype = prototype;
     this.shortForm = makeShortForm(prototype);
@@ -87,7 +85,7 @@
    * @return the corresponding short-form character
    */
   private static char shortFormCharFor(Type type) {
-    char descriptorChar = type.getDescriptor().charAt(0);
+    char descriptorChar = type.getDescriptor().getString().charAt(0);
 
     if (descriptorChar == '[') {
       return 'L';
diff --git a/jack/src/com/android/jack/dx/dex/file/ProtoIdsSection.java b/jack/src/com/android/jack/dx/dex/file/ProtoIdsSection.java
index 4740173..2d8a80c 100644
--- a/jack/src/com/android/jack/dx/dex/file/ProtoIdsSection.java
+++ b/jack/src/com/android/jack/dx/dex/file/ProtoIdsSection.java
@@ -97,9 +97,7 @@
    * @return {@code non-null;} the interned reference
    */
   public ProtoIdItem intern(Prototype prototype) {
-    if (prototype == null) {
-      throw new NullPointerException("prototype == null");
-    }
+    assert prototype != null;
 
     throwIfPrepared();
 
@@ -121,9 +119,7 @@
    * @return {@code >= 0;} the reference's index
    */
   public int indexOf(Prototype prototype) {
-    if (prototype == null) {
-      throw new NullPointerException("prototype == null");
-    }
+    assert prototype != null;
 
     throwIfNotPrepared();
 
diff --git a/jack/src/com/android/jack/dx/dex/file/Section.java b/jack/src/com/android/jack/dx/dex/file/Section.java
index 46d332d..918d585 100644
--- a/jack/src/com/android/jack/dx/dex/file/Section.java
+++ b/jack/src/com/android/jack/dx/dex/file/Section.java
@@ -66,9 +66,7 @@
    * must be a power of 2
    */
   public Section(String name, DexFile file, int alignment) {
-    if (file == null) {
-      throw new NullPointerException("file == null");
-    }
+    assert file != null;
 
     validateAlignment(alignment);
 
diff --git a/jack/src/com/android/jack/dx/dex/file/StringIdItem.java b/jack/src/com/android/jack/dx/dex/file/StringIdItem.java
index c42f264..409aebc 100644
--- a/jack/src/com/android/jack/dx/dex/file/StringIdItem.java
+++ b/jack/src/com/android/jack/dx/dex/file/StringIdItem.java
@@ -37,10 +37,7 @@
    * @param value {@code non-null;} the string value
    */
   public StringIdItem(CstString value) {
-    if (value == null) {
-      throw new NullPointerException("value == null");
-    }
-
+    assert value != null;
     this.value = value;
     this.data = null;
   }
diff --git a/jack/src/com/android/jack/dx/dex/file/StringIdsSection.java b/jack/src/com/android/jack/dx/dex/file/StringIdsSection.java
index 53e5241..f054936 100644
--- a/jack/src/com/android/jack/dx/dex/file/StringIdsSection.java
+++ b/jack/src/com/android/jack/dx/dex/file/StringIdsSection.java
@@ -17,7 +17,6 @@
 package com.android.jack.dx.dex.file;
 
 import com.android.jack.dx.rop.cst.Constant;
-import com.android.jack.dx.rop.cst.CstNat;
 import com.android.jack.dx.rop.cst.CstString;
 import com.android.jack.dx.util.AnnotatedOutput;
 import com.android.jack.dx.util.Hex;
@@ -55,9 +54,7 @@
   /** {@inheritDoc} */
   @Override
   public IndexedItem get(Constant cst) {
-    if (cst == null) {
-      throw new NullPointerException("cst == null");
-    }
+    assert cst != null;
 
     throwIfNotPrepared();
 
@@ -108,9 +105,7 @@
    * @return {@code non-null;} the interned string
    */
   public StringIdItem intern(CstString string) {
-    if (string == null) {
-      throw new NullPointerException("string == null");
-    }
+    assert string != null;
 
     throwIfPrepared();
 
@@ -132,9 +127,7 @@
    * @return {@code non-null;} the interned string
    */
   public StringIdItem intern(StringIdItem string) {
-    if (string == null) {
-      throw new NullPointerException("string == null");
-    }
+    assert string != null;
 
     throwIfPrepared();
 
@@ -150,16 +143,6 @@
   }
 
   /**
-   * Interns the components of a name-and-type into this instance.
-   *
-   * @param nat {@code non-null;} the name-and-type
-   */
-  public void intern(CstNat nat) {
-    intern(nat.getName());
-    intern(nat.getDescriptor());
-  }
-
-  /**
    * Gets the index of the given string, which must have been added
    * to this instance.
    *
@@ -167,9 +150,7 @@
    * @return {@code >= 0;} the string's index
    */
   public int indexOf(CstString string) {
-    if (string == null) {
-      throw new NullPointerException("string == null");
-    }
+    assert string != null;
 
     throwIfNotPrepared();
 
diff --git a/jack/src/com/android/jack/dx/dex/file/TypeIdItem.java b/jack/src/com/android/jack/dx/dex/file/TypeIdItem.java
index 417afb5..0361dc2 100644
--- a/jack/src/com/android/jack/dx/dex/file/TypeIdItem.java
+++ b/jack/src/com/android/jack/dx/dex/file/TypeIdItem.java
@@ -18,7 +18,7 @@
 
 import com.android.jack.dx.dex.SizeOf;
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
+import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.util.AnnotatedOutput;
 import com.android.jack.dx.util.Hex;
 
@@ -29,9 +29,9 @@
   /**
    * Constructs an instance.
    *
-   * @param type {@code non-null;} the constant for the type
+   * @param type {@code non-null;} the type
    */
-  public TypeIdItem(CstType type) {
+  public TypeIdItem(Type type) {
     super(type);
   }
 
@@ -56,7 +56,7 @@
   /** {@inheritDoc} */
   @Override
   public void writeTo(DexFile file, AnnotatedOutput out) {
-    CstType type = getDefiningClass();
+    Type type = getDefiningClass();
     CstString descriptor = type.getDescriptor();
     int idx = file.getStringIds().indexOf(descriptor);
 
diff --git a/jack/src/com/android/jack/dx/dex/file/TypeIdsSection.java b/jack/src/com/android/jack/dx/dex/file/TypeIdsSection.java
index fd1186a..e8dd6d0 100644
--- a/jack/src/com/android/jack/dx/dex/file/TypeIdsSection.java
+++ b/jack/src/com/android/jack/dx/dex/file/TypeIdsSection.java
@@ -18,7 +18,6 @@
 
 import com.android.jack.dx.dex.DexFormat;
 import com.android.jack.dx.rop.cst.Constant;
-import com.android.jack.dx.rop.cst.CstType;
 import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.util.AnnotatedOutput;
 import com.android.jack.dx.util.DexIndexOverflowException;
@@ -56,14 +55,11 @@
   /** {@inheritDoc} */
   @Override
   public IndexedItem get(Constant cst) {
-    if (cst == null) {
-      throw new NullPointerException("cst == null");
-    }
+    assert cst != null;
 
     throwIfNotPrepared();
 
-    Type type = ((CstType) cst).getClassType();
-    IndexedItem result = typeIds.get(type);
+    IndexedItem result = typeIds.get(cst);
 
     if (result == null) {
       throw new IllegalArgumentException("not found: " + cst);
@@ -104,41 +100,15 @@
    * @return {@code non-null;} the interned reference
    */
   public TypeIdItem intern(Type type) {
-    if (type == null) {
-      throw new NullPointerException("type == null");
-    }
+    assert type != null;
 
     throwIfPrepared();
 
     TypeIdItem result = typeIds.get(type);
 
     if (result == null) {
-      result = new TypeIdItem(new CstType(type));
-      typeIds.put(type, result);
-    }
-
-    return result;
-  }
-
-  /**
-   * Interns an element into this instance.
-   *
-   * @param type {@code non-null;} the type to intern
-   * @return {@code non-null;} the interned reference
-   */
-  public TypeIdItem intern(CstType type) {
-    if (type == null) {
-      throw new NullPointerException("type == null");
-    }
-
-    throwIfPrepared();
-
-    Type typePerSe = type.getClassType();
-    TypeIdItem result = typeIds.get(typePerSe);
-
-    if (result == null) {
       result = new TypeIdItem(type);
-      typeIds.put(typePerSe, result);
+      typeIds.put(type, result);
     }
 
     return result;
@@ -152,9 +122,7 @@
    * @return {@code >= 0;} the reference's index
    */
   public int indexOf(Type type) {
-    if (type == null) {
-      throw new NullPointerException("type == null");
-    }
+    assert type != null;
 
     throwIfNotPrepared();
 
@@ -167,21 +135,6 @@
     return item.getIndex();
   }
 
-  /**
-   * Gets the index of the given type, which must have
-   * been added to this instance.
-   *
-   * @param type {@code non-null;} the type to look up
-   * @return {@code >= 0;} the reference's index
-   */
-  public int indexOf(CstType type) {
-    if (type == null) {
-      throw new NullPointerException("type == null");
-    }
-
-    return indexOf(type.getClassType());
-  }
-
   /** {@inheritDoc} */
   @Override
   protected void orderItems() {
diff --git a/jack/src/com/android/jack/dx/dex/file/UniformListItem.java b/jack/src/com/android/jack/dx/dex/file/UniformListItem.java
index 9eb36ae..39dd114 100644
--- a/jack/src/com/android/jack/dx/dex/file/UniformListItem.java
+++ b/jack/src/com/android/jack/dx/dex/file/UniformListItem.java
@@ -52,11 +52,7 @@
    */
   public UniformListItem(ItemType itemType, List<T> items) {
     super(getAlignment(items), writeSize(items));
-
-    if (itemType == null) {
-      throw new NullPointerException("itemType == null");
-    }
-
+    assert itemType != null;
     this.items = items;
     this.itemType = itemType;
   }
@@ -70,15 +66,13 @@
    * @return {@code >= 4;} the alignment requirement
    */
   private static int getAlignment(List<? extends OffsettedItem> items) {
+    assert items != null;
     try {
       // Since they all must have the same alignment, any one will do.
       return Math.max(HEADER_SIZE, items.get(0).getAlignment());
     } catch (IndexOutOfBoundsException ex) {
       // Translate the exception.
       throw new IllegalArgumentException("items.size() == 0");
-    } catch (NullPointerException ex) {
-      // Translate the exception.
-      throw new NullPointerException("items == null");
     }
   }
 
diff --git a/jack/src/com/android/jack/dx/dex/file/ValueEncoder.java b/jack/src/com/android/jack/dx/dex/file/ValueEncoder.java
index 767339c..9178278 100644
--- a/jack/src/com/android/jack/dx/dex/file/ValueEncoder.java
+++ b/jack/src/com/android/jack/dx/dex/file/ValueEncoder.java
@@ -32,7 +32,7 @@
 import com.android.jack.dx.rop.cst.CstMethodRef;
 import com.android.jack.dx.rop.cst.CstPrototypeRef;
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
+import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.util.AnnotatedOutput;
 import com.android.jack.dx.util.Hex;
 
@@ -163,14 +163,8 @@
    * @param out {@code non-null;} output stream to write to
    */
   public ValueEncoder(DexFile file, AnnotatedOutput out) {
-    if (file == null) {
-      throw new NullPointerException("file == null");
-    }
-
-    if (out == null) {
-      throw new NullPointerException("out == null");
-    }
-
+    assert file != null;
+    assert out != null;
     this.file = file;
     this.out = out;
   }
@@ -214,7 +208,7 @@
         break;
       }
       case VALUE_TYPE: {
-        int index = file.getTypeIds().indexOf((CstType) cst);
+        int index = file.getTypeIds().indexOf((Type) cst);
         writeUnsignedIntegralValue(type, index);
         break;
       }
@@ -326,7 +320,7 @@
     StringIdsSection stringIds = file.getStringIds();
     TypeIdsSection typeIds = file.getTypeIds();
 
-    CstType type = annotation.getType();
+    Type type = annotation.getType();
     int typeIdx = typeIds.indexOf(type);
 
     if (annotates) {
diff --git a/jack/src/com/android/jack/dx/io/DexBuffer.java b/jack/src/com/android/jack/dx/io/DexBuffer.java
index bacc0a9..b90e567 100644
--- a/jack/src/com/android/jack/dx/io/DexBuffer.java
+++ b/jack/src/com/android/jack/dx/io/DexBuffer.java
@@ -32,6 +32,11 @@
 import com.android.jack.dx.util.Leb128Utils;
 import com.android.jack.dx.util.Mutf8;
 import com.android.jack.tools.merger.MergerTools;
+import com.android.sched.util.file.CannotCloseException;
+import com.android.sched.util.file.CannotReadException;
+import com.android.sched.util.location.FileLocation;
+import com.android.sched.util.location.Location;
+import com.android.sched.util.location.ZipLocation;
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
@@ -127,10 +132,10 @@
   }
 
   /**
-   * Creates a new dex buffer of the dex in {@code in}, and closes {@code in}.
+   * Creates a new dex buffer of the dex in {@code in}.
    */
-  public DexBuffer(InputStream in) throws IOException {
-    loadFrom(in);
+  public DexBuffer(@Nonnull InputStream in, @Nonnull Location location) throws CannotReadException {
+    loadFrom(in, location);
     this.internalSection = new Section(0);
     this.strings = readStrings();
     this.typeIds = readTypeIds();
@@ -144,19 +149,29 @@
   /**
    * Creates a new dex buffer from the dex file {@code file}.
    */
-  public DexBuffer(File file) throws IOException {
+  public DexBuffer(File file) throws CannotReadException, CannotCloseException {
+    FileLocation fileLocation = new FileLocation(file);
     if (FileUtils.hasArchiveSuffix(file.getName())) {
-      ZipFile zipFile = new ZipFile(file);
-      ZipEntry entry = zipFile.getEntry(DexFormat.DEX_IN_JAR_NAME);
-      if (entry != null) {
-        loadFrom(zipFile.getInputStream(entry));
-        zipFile.close();
-      } else {
-        zipFile.close();
-        throw new DexException("Expected " + DexFormat.DEX_IN_JAR_NAME + " in " + file);
+      try (ZipFile zipFile = new ZipFile(file)) {
+        ZipEntry entry = zipFile.getEntry(DexFormat.DEX_IN_JAR_NAME);
+        if (entry != null) {
+          try (InputStream is = zipFile.getInputStream(entry)) {
+            loadFrom(is, new ZipLocation(fileLocation, entry));
+          } catch (IOException e) {
+            throw new CannotCloseException(new ZipLocation(fileLocation, entry), e);
+          }
+        } else {
+          throw new DexException("Expected " + DexFormat.DEX_IN_JAR_NAME + " in " + file);
+        }
+      } catch (IOException e) {
+        throw new CannotCloseException(fileLocation, e);
       }
     } else if (file.getName().endsWith(".dex")) {
-      loadFrom(new FileInputStream(file));
+      try (InputStream is = new FileInputStream(file)) {
+        loadFrom(is, fileLocation);
+      } catch (IOException e) {
+        throw new CannotCloseException(fileLocation, e);
+      }
     } else {
       throw new DexException("unknown output extension: " + file);
     }
@@ -252,15 +267,19 @@
     return Arrays.asList(result);
   }
 
-  private void loadFrom(InputStream in) throws IOException {
+  private void loadFrom(@Nonnull InputStream in, @Nonnull Location location)
+      throws CannotReadException {
     ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
     byte[] buffer = new byte[8192];
 
-    int count;
-    while ((count = in.read(buffer)) != -1) {
-      bytesOut.write(buffer, 0, count);
+    try {
+      int count;
+      while ((count = in.read(buffer)) != -1) {
+        bytesOut.write(buffer, 0, count);
+      }
+    } catch (IOException e) {
+      throw new CannotReadException(location, e);
     }
-    in.close();
 
     this.data = bytesOut.toByteArray();
     this.length = data.length;
@@ -512,7 +531,7 @@
 
       @Override
       protected void visitType(int index) {
-        callSiteArrayList.set(idx++, cstIndexMap.getCstType(index));
+        callSiteArrayList.set(idx++, cstIndexMap.getType(index));
       }
     }
 
diff --git a/jack/src/com/android/jack/dx/io/DexIndexPrinter.java b/jack/src/com/android/jack/dx/io/DexIndexPrinter.java
index d194b43..dbd9cfc 100644
--- a/jack/src/com/android/jack/dx/io/DexIndexPrinter.java
+++ b/jack/src/com/android/jack/dx/io/DexIndexPrinter.java
@@ -17,9 +17,10 @@
 package com.android.jack.dx.io;
 
 import com.android.jack.dx.dex.TableOfContents;
+import com.android.sched.util.file.CannotCloseException;
+import com.android.sched.util.file.CannotReadException;
 
 import java.io.File;
-import java.io.IOException;
 
 /**
  * Executable that prints all indices of a dex file.
@@ -28,7 +29,7 @@
   private final DexBuffer dexBuffer;
   private final TableOfContents tableOfContents;
 
-  public DexIndexPrinter(File file) throws IOException {
+  public DexIndexPrinter(File file) throws CannotReadException, CannotCloseException {
     this.dexBuffer = new DexBuffer(file);
     this.tableOfContents = dexBuffer.getTableOfContents();
   }
@@ -110,7 +111,7 @@
     }
   }
 
-  public static void main(String[] args) throws IOException {
+  public static void main(String[] args) throws CannotReadException, CannotCloseException {
     DexIndexPrinter indexPrinter = new DexIndexPrinter(new File(args[0]));
     indexPrinter.printMap();
     indexPrinter.printStrings();
diff --git a/jack/src/com/android/jack/dx/io/instructions/ShortArrayCodeInput.java b/jack/src/com/android/jack/dx/io/instructions/ShortArrayCodeInput.java
index 4f3fba1..ed7ca8d 100644
--- a/jack/src/com/android/jack/dx/io/instructions/ShortArrayCodeInput.java
+++ b/jack/src/com/android/jack/dx/io/instructions/ShortArrayCodeInput.java
@@ -29,10 +29,7 @@
    * Constructs an instance.
    */
   public ShortArrayCodeInput(short[] array) {
-    if (array == null) {
-      throw new NullPointerException("array == null");
-    }
-
+    assert array != null;
     this.array = array;
   }
 
diff --git a/jack/src/com/android/jack/dx/rop/annotation/Annotation.java b/jack/src/com/android/jack/dx/rop/annotation/Annotation.java
index a0453e8..c978b6a 100644
--- a/jack/src/com/android/jack/dx/rop/annotation/Annotation.java
+++ b/jack/src/com/android/jack/dx/rop/annotation/Annotation.java
@@ -17,7 +17,7 @@
 package com.android.jack.dx.rop.annotation;
 
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
+import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.util.MutabilityControl;
 import com.android.jack.dx.util.ToHuman;
 
@@ -33,7 +33,7 @@
  */
 public final class Annotation extends MutabilityControl implements Comparable<Annotation>, ToHuman {
   /** {@code non-null;} type of the annotation */
-  private final CstType type;
+  private final Type type;
 
   /** {@code non-null;} the visibility of the annotation */
   private final AnnotationVisibility visibility;
@@ -47,15 +47,9 @@
    * @param type {@code non-null;} type of the annotation
    * @param visibility {@code non-null;} the visibility of the annotation
    */
-  public Annotation(CstType type, AnnotationVisibility visibility) {
-    if (type == null) {
-      throw new NullPointerException("type == null");
-    }
-
-    if (visibility == null) {
-      throw new NullPointerException("visibility == null");
-    }
-
+  public Annotation(Type type, AnnotationVisibility visibility) {
+    assert type != null;
+    assert visibility != null;
     this.type = type;
     this.visibility = visibility;
     this.elements = new TreeMap<CstString, NameValuePair>();
@@ -160,7 +154,7 @@
    *
    * @return {@code non-null;} the type
    */
-  public CstType getType() {
+  public Type getType() {
     return type;
   }
 
@@ -181,12 +175,8 @@
    * @param pair {@code non-null;} the (name, value) pair to place into this instance
    */
   public void put(NameValuePair pair) {
+    assert pair != null;
     throwIfImmutable();
-
-    if (pair == null) {
-      throw new NullPointerException("pair == null");
-    }
-
     elements.put(pair.getName(), pair);
   }
 
@@ -198,12 +188,8 @@
    * @param pair {@code non-null;} the (name, value) pair to add to this instance
    */
   public void add(NameValuePair pair) {
+    assert pair != null;
     throwIfImmutable();
-
-    if (pair == null) {
-      throw new NullPointerException("pair == null");
-    }
-
     CstString name = pair.getName();
 
     if (elements.get(name) != null) {
diff --git a/jack/src/com/android/jack/dx/rop/annotation/Annotations.java b/jack/src/com/android/jack/dx/rop/annotation/Annotations.java
index 626f963..708bd9f 100644
--- a/jack/src/com/android/jack/dx/rop/annotation/Annotations.java
+++ b/jack/src/com/android/jack/dx/rop/annotation/Annotations.java
@@ -16,7 +16,7 @@
 
 package com.android.jack.dx.rop.annotation;
 
-import com.android.jack.dx.rop.cst.CstType;
+import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.util.MutabilityControl;
 
 import java.util.Collection;
@@ -36,7 +36,7 @@
   }
 
   /** {@code non-null;} map from types to annotations */
-  private final TreeMap<CstType, Annotation> annotations;
+  private final TreeMap<Type, Annotation> annotations;
 
   /**
    * Constructs an immutable instance which is the combination of the
@@ -82,7 +82,7 @@
    * Constructs an empty instance.
    */
   public Annotations() {
-    annotations = new TreeMap<CstType, Annotation>();
+    annotations = new TreeMap<Type, Annotation>();
   }
 
   /** {@inheritDoc} */
@@ -166,13 +166,11 @@
    * @throws IllegalArgumentException thrown if there is a duplicate type
    */
   public void add(Annotation annotation) {
+    assert annotation != null;
+
     throwIfImmutable();
 
-    if (annotation == null) {
-      throw new NullPointerException("annotation == null");
-    }
-
-    CstType type = annotation.getType();
+    Type type = annotation.getType();
 
     if (annotations.containsKey(type)) {
       throw new IllegalArgumentException("duplicate type: " + type.toHuman());
@@ -189,11 +187,9 @@
    * @throws IllegalArgumentException thrown if there is a duplicate type
    */
   public void addAll(Annotations toAdd) {
-    throwIfImmutable();
+    assert toAdd != null;
 
-    if (toAdd == null) {
-      throw new NullPointerException("toAdd == null");
-    }
+    throwIfImmutable();
 
     for (Annotation a : toAdd.annotations.values()) {
       add(a);
diff --git a/jack/src/com/android/jack/dx/rop/annotation/NameValuePair.java b/jack/src/com/android/jack/dx/rop/annotation/NameValuePair.java
index ac88345..35d34b5 100644
--- a/jack/src/com/android/jack/dx/rop/annotation/NameValuePair.java
+++ b/jack/src/com/android/jack/dx/rop/annotation/NameValuePair.java
@@ -41,14 +41,8 @@
    * @param value {@code non-null;} the value
    */
   public NameValuePair(@Nonnull CstString name, @Nonnull Constant value) {
-    if (name == null) {
-      throw new NullPointerException("name == null");
-    }
-
-    if (value == null) {
-      throw new NullPointerException("value == null");
-    }
-
+    assert name != null;
+    assert value != null;
     this.name = name;
     this.value = value;
   }
diff --git a/jack/src/com/android/jack/dx/rop/code/BasicBlock.java b/jack/src/com/android/jack/dx/rop/code/BasicBlock.java
index 6fa8306..40875e7 100644
--- a/jack/src/com/android/jack/dx/rop/code/BasicBlock.java
+++ b/jack/src/com/android/jack/dx/rop/code/BasicBlock.java
@@ -61,12 +61,8 @@
       throw new IllegalArgumentException("label < 0");
     }
 
-    try {
-      insns.throwIfMutable();
-    } catch (NullPointerException ex) {
-      // Elucidate exception.
-      throw new NullPointerException("insns == null");
-    }
+    assert insns != null;
+    insns.throwIfMutable();
 
     int sz = insns.size();
 
@@ -87,12 +83,8 @@
           "insns does not end with " + "a branch or throwing " + "instruction");
     }
 
-    try {
-      successors.throwIfMutable();
-    } catch (NullPointerException ex) {
-      // Elucidate exception.
-      throw new NullPointerException("successors == null");
-    }
+    assert successors != null;
+    successors.throwIfMutable();
 
     if (primarySuccessor < -1) {
       throw new IllegalArgumentException("primarySuccessor < -1");
diff --git a/jack/src/com/android/jack/dx/rop/code/CstInsn.java b/jack/src/com/android/jack/dx/rop/code/CstInsn.java
index c639863..a3af7df 100644
--- a/jack/src/com/android/jack/dx/rop/code/CstInsn.java
+++ b/jack/src/com/android/jack/dx/rop/code/CstInsn.java
@@ -37,11 +37,7 @@
   public CstInsn(Rop opcode, SourcePosition position, RegisterSpec result, RegisterSpecList sources,
       Constant cst) {
     super(opcode, position, result, sources);
-
-    if (cst == null) {
-      throw new NullPointerException("cst == null");
-    }
-
+    assert cst != null;
     this.cst = cst;
   }
 
diff --git a/jack/src/com/android/jack/dx/rop/code/Insn.java b/jack/src/com/android/jack/dx/rop/code/Insn.java
index 6ed8b67..2830bbb 100644
--- a/jack/src/com/android/jack/dx/rop/code/Insn.java
+++ b/jack/src/com/android/jack/dx/rop/code/Insn.java
@@ -49,18 +49,9 @@
    * @param sources {@code non-null;} specs for all the sources
    */
   public Insn(Rop opcode, SourcePosition position, RegisterSpec result, RegisterSpecList sources) {
-    if (opcode == null) {
-      throw new NullPointerException("opcode == null");
-    }
-
-    if (position == null) {
-      throw new NullPointerException("position == null");
-    }
-
-    if (sources == null) {
-      throw new NullPointerException("sources == null");
-    }
-
+    assert opcode != null;
+    assert position != null;
+    assert sources != null;
     this.opcode = opcode;
     this.position = position;
     this.result = result;
diff --git a/jack/src/com/android/jack/dx/rop/code/LocalItem.java b/jack/src/com/android/jack/dx/rop/code/LocalItem.java
index 9ebf093..bd9b83b 100644
--- a/jack/src/com/android/jack/dx/rop/code/LocalItem.java
+++ b/jack/src/com/android/jack/dx/rop/code/LocalItem.java
@@ -16,8 +16,9 @@
 
 package com.android.jack.dx.rop.code;
 
+import com.android.jack.dx.rop.cst.Constant;
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
+import com.android.jack.dx.rop.type.Type;
 
 /**
  * A local variable item: either a name or a signature or both.
@@ -27,7 +28,7 @@
   private final CstString name;
 
   /** {@code null-ok;} local variable type */
-  private final CstType type;
+  private final Type type;
 
   /** {@code null-ok;} local variable signature */
   private final CstString signature;
@@ -44,7 +45,7 @@
   *        discussion under {@code dalvik.annotation.Signature} in "dex-format.html")
   * @return {@code null-ok;} appropriate instance.
   */
-  public static LocalItem make(CstString name, CstType type, CstString signature) {
+  public static LocalItem make(CstString name, Type type, CstString signature) {
     if (name == null && type == null) {
       return null;
     }
@@ -59,7 +60,7 @@
    * @param type {@code null-ok;} local variable type
    * @param signature {@code null-ok;} local variable signature
    */
-  private LocalItem(CstString name, CstType type, CstString signature) {
+  private LocalItem(CstString name, Type type, CstString signature) {
     this.name = name;
     this.type = type;
     this.signature = signature;
@@ -97,13 +98,13 @@
   }
 
   /**
-   * Compares two CstType like CstType.compareTo(), excepts treats a null
+   * Compares two {@link Type} like {@link Type#compareTo(Constant)}, excepts treats a null
    * as the least-possible string value.
    *
    * @return negative integer, zero, or positive integer in accordance
    * with Comparable.compareTo()
    */
-  private static int compareHandlesNulls(CstType a, CstType b) {
+  private static int compareHandlesNulls(Type a, Type b) {
     if (a == b) {
       return 0;
     } else if (a == null) {
@@ -183,7 +184,7 @@
    *
    * @return {@code null-ok;} type.
    */
-  public CstType getType() {
+  public Type getType() {
     return type;
   }
 }
diff --git a/jack/src/com/android/jack/dx/rop/code/LocalVariableExtractor.java b/jack/src/com/android/jack/dx/rop/code/LocalVariableExtractor.java
index 739150c..2ad2807 100644
--- a/jack/src/com/android/jack/dx/rop/code/LocalVariableExtractor.java
+++ b/jack/src/com/android/jack/dx/rop/code/LocalVariableExtractor.java
@@ -53,9 +53,7 @@
    * @param method {@code non-null;} the method to extract from
    */
   private LocalVariableExtractor(RopMethod method) {
-    if (method == null) {
-      throw new NullPointerException("method == null");
-    }
+    assert method != null;
 
     BasicBlockList blocks = method.getBlocks();
     int maxLabel = blocks.getMaxLabel();
diff --git a/jack/src/com/android/jack/dx/rop/code/LocalVariableInfo.java b/jack/src/com/android/jack/dx/rop/code/LocalVariableInfo.java
index bd00bc2..c26e785 100644
--- a/jack/src/com/android/jack/dx/rop/code/LocalVariableInfo.java
+++ b/jack/src/com/android/jack/dx/rop/code/LocalVariableInfo.java
@@ -52,9 +52,7 @@
    * @param method {@code non-null;} the method being represented by this instance
    */
   public LocalVariableInfo(RopMethod method) {
-    if (method == null) {
-      throw new NullPointerException("method == null");
-    }
+    assert method != null;
 
     BasicBlockList blocks = method.getBlocks();
     int maxLabel = blocks.getMaxLabel();
@@ -75,11 +73,9 @@
    * @param specs {@code non-null;} the register set to associate with the block
    */
   public void setStarts(int label, RegisterSpecSet specs) {
-    throwIfImmutable();
+    assert specs != null;
 
-    if (specs == null) {
-      throw new NullPointerException("specs == null");
-    }
+    throwIfImmutable();
 
     try {
       blockStarts[label] = specs;
@@ -184,16 +180,11 @@
    * @param spec {@code non-null;} the associated register spec
    */
   public void addAssignment(Insn insn, RegisterSpec spec) {
+    assert insn != null;
+    assert spec != null;
+
     throwIfImmutable();
 
-    if (insn == null) {
-      throw new NullPointerException("insn == null");
-    }
-
-    if (spec == null) {
-      throw new NullPointerException("spec == null");
-    }
-
     insnAssignments.put(insn, spec);
   }
 
diff --git a/jack/src/com/android/jack/dx/rop/code/RegisterSpec.java b/jack/src/com/android/jack/dx/rop/code/RegisterSpec.java
index 4be552f..2ba4d58 100644
--- a/jack/src/com/android/jack/dx/rop/code/RegisterSpec.java
+++ b/jack/src/com/android/jack/dx/rop/code/RegisterSpec.java
@@ -101,10 +101,7 @@
    * @return {@code non-null;} an appropriately-constructed instance
    */
   public static RegisterSpec make(int reg, TypeBearer type, LocalItem local) {
-    if (local == null) {
-      throw new NullPointerException("local  == null");
-    }
-
+    assert local != null;
     return intern(reg, type, local);
   }
 
@@ -148,11 +145,7 @@
     if (reg < 0) {
       throw new IllegalArgumentException("reg < 0");
     }
-
-    if (type == null) {
-      throw new NullPointerException("type == null");
-    }
-
+    assert type != null;
     this.reg = reg;
     this.type = type;
     this.local = local;
diff --git a/jack/src/com/android/jack/dx/rop/code/RegisterSpecSet.java b/jack/src/com/android/jack/dx/rop/code/RegisterSpecSet.java
index 7538027..c282204 100644
--- a/jack/src/com/android/jack/dx/rop/code/RegisterSpecSet.java
+++ b/jack/src/com/android/jack/dx/rop/code/RegisterSpecSet.java
@@ -259,11 +259,9 @@
    * @param spec {@code non-null;} the register spec to put in the instance
    */
   public void put(RegisterSpec spec) {
-    throwIfImmutable();
+    assert spec != null;
 
-    if (spec == null) {
-      throw new NullPointerException("spec == null");
-    }
+    throwIfImmutable();
 
     size = -1;
 
diff --git a/jack/src/com/android/jack/dx/rop/code/Rop.java b/jack/src/com/android/jack/dx/rop/code/Rop.java
index 3ae002b..71853b1 100644
--- a/jack/src/com/android/jack/dx/rop/code/Rop.java
+++ b/jack/src/com/android/jack/dx/rop/code/Rop.java
@@ -98,17 +98,9 @@
       int branchingness,
       boolean isCallLike,
       String nickname) {
-    if (result == null) {
-      throw new NullPointerException("result == null");
-    }
-
-    if (sources == null) {
-      throw new NullPointerException("sources == null");
-    }
-
-    if (exceptions == null) {
-      throw new NullPointerException("exceptions == null");
-    }
+    assert result != null;
+    assert sources != null;
+    assert exceptions != null;
 
     if ((branchingness < BRANCH_MIN) || (branchingness > BRANCH_MAX)) {
       throw new IllegalArgumentException("bogus branchingness");
diff --git a/jack/src/com/android/jack/dx/rop/code/RopMethod.java b/jack/src/com/android/jack/dx/rop/code/RopMethod.java
index 3133652..6310458 100644
--- a/jack/src/com/android/jack/dx/rop/code/RopMethod.java
+++ b/jack/src/com/android/jack/dx/rop/code/RopMethod.java
@@ -23,6 +23,12 @@
  * All of the parts that make up a method at the rop layer.
  */
 public final class RopMethod {
+
+  /**
+   *  Tells if parameters are compliant with the Dex calling convention.
+   */
+  private final boolean withDexCallingConvention;
+
   /** {@code non-null;} basic block list of the method */
   private final BasicBlockList blocks;
 
@@ -46,11 +52,11 @@
    *
    * @param blocks {@code non-null;} basic block list of the method
    * @param firstLabel {@code >= 0;} the label of the first block to execute
+   * @param withDexCallingConvention tells if parameters are compliant with the Dex calling
+   *        convention
    */
-  public RopMethod(BasicBlockList blocks, int firstLabel) {
-    if (blocks == null) {
-      throw new NullPointerException("blocks == null");
-    }
+  public RopMethod(BasicBlockList blocks, int firstLabel, boolean withDexCallingConvention) {
+    assert blocks != null;
 
     if (firstLabel < 0) {
       throw new IllegalArgumentException("firstLabel < 0");
@@ -61,6 +67,8 @@
 
     this.predecessors = null;
     this.exitPredecessors = null;
+
+    this.withDexCallingConvention = withDexCallingConvention;
   }
 
   /**
@@ -116,32 +124,6 @@
     return exitPredecessors;
   }
 
-
-  /**
-   * Returns an instance that is identical to this one, except that
-   * the registers in each instruction are offset by the given
-   * amount.
-   *
-   * @param delta the amount to offset register numbers by
-   * @return {@code non-null;} an appropriately-constructed instance
-   */
-  public RopMethod withRegisterOffset(int delta) {
-    RopMethod result = new RopMethod(blocks.withRegisterOffset(delta), firstLabel);
-
-    if (exitPredecessors != null) {
-      /*
-       * The predecessors have been calculated. It's safe to
-       * inject these into the new instance, since the
-       * transformation being applied doesn't affect the
-       * predecessors.
-       */
-      result.exitPredecessors = exitPredecessors;
-      result.predecessors = predecessors;
-    }
-
-    return result;
-  }
-
   /**
    * Calculates the predecessor sets for each block as well as for the
    * exit.
@@ -202,4 +184,8 @@
     this.predecessors = predecessors;
     this.exitPredecessors = exitPredecessors;
   }
+
+  public boolean withDexCallingConvention() {
+    return withDexCallingConvention;
+  }
 }
diff --git a/jack/src/com/android/jack/dx/rop/code/Rops.java b/jack/src/com/android/jack/dx/rop/code/Rops.java
index 4a6f022..a13abaf 100644
--- a/jack/src/com/android/jack/dx/rop/code/Rops.java
+++ b/jack/src/com/android/jack/dx/rop/code/Rops.java
@@ -19,7 +19,6 @@
 import com.android.jack.dx.rop.cst.Constant;
 import com.android.jack.dx.rop.cst.CstBaseMethodRef;
 import com.android.jack.dx.rop.cst.CstMethodRef;
-import com.android.jack.dx.rop.cst.CstType;
 import com.android.jack.dx.rop.type.Prototype;
 import com.android.jack.dx.rop.type.StdTypeList;
 import com.android.jack.dx.rop.type.Type;
@@ -1068,29 +1067,25 @@
       case RegOps.INVOKE_VIRTUAL: {
         CstBaseMethodRef cstMeth = (CstMethodRef) cst;
         Prototype meth = cstMeth.getPrototype();
-        CstType definer = cstMeth.getDefiningClass();
-        meth = meth.withFirstParameter(definer.getClassType());
+        meth = meth.withFirstParameter(cstMeth.getDefiningClass());
         return opInvokeVirtual(meth);
       }
       case RegOps.INVOKE_SUPER: {
         CstBaseMethodRef cstMeth = (CstMethodRef) cst;
         Prototype meth = cstMeth.getPrototype();
-        CstType definer = cstMeth.getDefiningClass();
-        meth = meth.withFirstParameter(definer.getClassType());
+        meth = meth.withFirstParameter(cstMeth.getDefiningClass());
         return opInvokeSuper(meth);
       }
       case RegOps.INVOKE_DIRECT: {
         CstBaseMethodRef cstMeth = (CstMethodRef) cst;
         Prototype meth = cstMeth.getPrototype();
-        CstType definer = cstMeth.getDefiningClass();
-        meth = meth.withFirstParameter(definer.getClassType());
+        meth = meth.withFirstParameter(cstMeth.getDefiningClass());
         return opInvokeDirect(meth);
       }
       case RegOps.INVOKE_INTERFACE: {
         CstBaseMethodRef cstMeth = (CstMethodRef) cst;
         Prototype meth = cstMeth.getPrototype();
-        CstType definer = cstMeth.getDefiningClass();
-        meth = meth.withFirstParameter(definer.getClassType());
+        meth = meth.withFirstParameter(cstMeth.getDefiningClass());
         return opInvokeInterface(meth);
       }
     }
diff --git a/jack/src/com/android/jack/dx/rop/code/SwitchInsn.java b/jack/src/com/android/jack/dx/rop/code/SwitchInsn.java
index 81e286b..86694bb 100644
--- a/jack/src/com/android/jack/dx/rop/code/SwitchInsn.java
+++ b/jack/src/com/android/jack/dx/rop/code/SwitchInsn.java
@@ -45,10 +45,7 @@
       throw new IllegalArgumentException("bogus branchingness");
     }
 
-    if (cases == null) {
-      throw new NullPointerException("cases == null");
-    }
-
+    assert cases != null;
     this.cases = cases;
   }
 
diff --git a/jack/src/com/android/jack/dx/rop/code/ThrowingCstInsn.java b/jack/src/com/android/jack/dx/rop/code/ThrowingCstInsn.java
index b8c93e8..28a36a5 100644
--- a/jack/src/com/android/jack/dx/rop/code/ThrowingCstInsn.java
+++ b/jack/src/com/android/jack/dx/rop/code/ThrowingCstInsn.java
@@ -46,10 +46,7 @@
       throw new IllegalArgumentException("bogus branchingness");
     }
 
-    if (catches == null) {
-      throw new NullPointerException("catches == null");
-    }
-
+    assert catches != null;
     this.catches = catches;
   }
 
diff --git a/jack/src/com/android/jack/dx/rop/code/ThrowingInsn.java b/jack/src/com/android/jack/dx/rop/code/ThrowingInsn.java
index 21956cf..1e013f9 100644
--- a/jack/src/com/android/jack/dx/rop/code/ThrowingInsn.java
+++ b/jack/src/com/android/jack/dx/rop/code/ThrowingInsn.java
@@ -66,10 +66,7 @@
       throw new IllegalArgumentException("bogus branchingness");
     }
 
-    if (catches == null) {
-      throw new NullPointerException("catches == null");
-    }
-
+    assert catches != null;
     this.catches = catches;
   }
 
diff --git a/jack/src/com/android/jack/dx/rop/cst/CstAnnotation.java b/jack/src/com/android/jack/dx/rop/cst/CstAnnotation.java
index e89424d..7f94251 100644
--- a/jack/src/com/android/jack/dx/rop/cst/CstAnnotation.java
+++ b/jack/src/com/android/jack/dx/rop/cst/CstAnnotation.java
@@ -34,9 +34,7 @@
    * @param annotation {@code non-null;} the annotation to hold
    */
   public CstAnnotation(Annotation annotation) {
-    if (annotation == null) {
-      throw new NullPointerException("annotation == null");
-    }
+    assert annotation != null;
 
     annotation.throwIfMutable();
 
diff --git a/jack/src/com/android/jack/dx/rop/cst/CstArray.java b/jack/src/com/android/jack/dx/rop/cst/CstArray.java
index 940e084..fb7fd5a 100644
--- a/jack/src/com/android/jack/dx/rop/cst/CstArray.java
+++ b/jack/src/com/android/jack/dx/rop/cst/CstArray.java
@@ -34,9 +34,7 @@
    * @param list {@code non-null;} the actual list of contents
    */
   public CstArray(List list) {
-    if (list == null) {
-      throw new NullPointerException("list == null");
-    }
+    assert list != null;
 
     list.throwIfMutable();
 
diff --git a/jack/src/com/android/jack/dx/rop/cst/CstBaseMethodRef.java b/jack/src/com/android/jack/dx/rop/cst/CstBaseMethodRef.java
index 1ba7d88..e5e4e9e 100644
--- a/jack/src/com/android/jack/dx/rop/cst/CstBaseMethodRef.java
+++ b/jack/src/com/android/jack/dx/rop/cst/CstBaseMethodRef.java
@@ -19,6 +19,9 @@
 import com.android.jack.dx.rop.type.Prototype;
 import com.android.jack.dx.rop.type.Type;
 
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
 /**
  * Base class for constants of "methodish" type.
  *
@@ -27,25 +30,27 @@
  */
 public abstract class CstBaseMethodRef extends CstMemberRef {
   /** {@code non-null;} the raw prototype for this method */
+  @Nonnull
   private final Prototype prototype;
 
   /**
    * {@code null-ok;} the prototype for this method taken to be an instance
    * method, or {@code null} if not yet calculated
    */
+  @CheckForNull
   private Prototype instancePrototype;
 
   /**
    * Constructs an instance.
    *
    * @param definingClass {@code non-null;} the type of the defining class
-   * @param nat {@code non-null;} the name-and-type
+   * @param name {@code non-null;} the member reference name
+   * @param prototype {@code non-null;} the member reference prototype
    */
-  /*package*/CstBaseMethodRef(CstType definingClass, CstNat nat) {
-    super(definingClass, nat);
-
-    String descriptor = getNat().getDescriptor().getString();
-    this.prototype = Prototype.intern(descriptor);
+  /* package */ CstBaseMethodRef(@Nonnull Type definingClass, @Nonnull CstString name,
+      @Nonnull Prototype prototype) {
+    super(definingClass, name);
+    this.prototype = prototype;
     this.instancePrototype = null;
   }
 
@@ -55,6 +60,7 @@
    *
    * @return {@code non-null;} the method prototype
    */
+  @Nonnull
   public final Prototype getPrototype() {
     return prototype;
   }
@@ -70,12 +76,13 @@
    * @param isStatic whether the method should be considered static
    * @return {@code non-null;} the method prototype
    */
+  @Nonnull
   public final Prototype getPrototype(boolean isStatic) {
     if (isStatic) {
       return prototype;
     } else {
       if (instancePrototype == null) {
-        Type thisType = getDefiningClass().getClassType();
+        Type thisType = getDefiningClass();
         instancePrototype = prototype.withFirstParameter(thisType);
       }
       return instancePrototype;
@@ -103,6 +110,7 @@
    * @return {@code non-null;} the method's return type
    */
   @Override
+  @Nonnull
   public final Type getType() {
     return prototype.getReturnType();
   }
@@ -124,27 +132,29 @@
     return getPrototype(isStatic).getParameterTypes().getWordCount();
   }
 
-  /**
-   * Gets whether this is a reference to an instance initialization
-   * method. This is just a convenient shorthand for
-   * {@code getNat().isInstanceInit()}.
-   *
-   * @return {@code true} iff this is a reference to an
-   * instance initialization method
-   */
-  public final boolean isInstanceInit() {
-    return getNat().isInstanceInit();
+  /** {@inheritDoc} */
+  @Override
+  public final boolean equals(Object other) {
+    if ((other == null) || (getClass() != other.getClass())) {
+      return false;
+    }
+
+    CstBaseMethodRef otherRef = (CstBaseMethodRef) other;
+    return getDefiningClass().equals(otherRef.getDefiningClass())
+        && getName().equals(otherRef.getName()) && prototype.equals(otherRef.prototype);
   }
 
-  /**
-   * Gets whether this is a reference to a class initialization
-   * method. This is just a convenient shorthand for
-   * {@code getNat().isClassInit()}.
-   *
-   * @return {@code true} iff this is a reference to an
-   * instance initialization method
-   */
-  public final boolean isClassInit() {
-    return getNat().isClassInit();
+  /** {@inheritDoc} */
+  @Override
+  public final int hashCode() {
+    return ((getDefiningClass().hashCode() * 31) + getName().hashCode() * 31)
+        + getType().hashCode();
+  }
+
+  /** {@inheritDoc} */
+  @Override
+  @Nonnull
+  public final String toHuman() {
+    return getDefiningClass().toHuman() + '.' + getName().toHuman() + ':' + prototype.toString();
   }
 }
diff --git a/jack/src/com/android/jack/dx/rop/cst/CstEnumRef.java b/jack/src/com/android/jack/dx/rop/cst/CstEnumRef.java
index 9e206a4..c389e7d 100644
--- a/jack/src/com/android/jack/dx/rop/cst/CstEnumRef.java
+++ b/jack/src/com/android/jack/dx/rop/cst/CstEnumRef.java
@@ -32,17 +32,18 @@
   /**
    * Constructs an instance.
    *
-   * @param nat {@code non-null;} the name-and-type; the defining class is derived
-   * from this
+   * @param name {@code non-null;} the member reference name
+   * @param type {@code non-null;} the member reference type
    */
-  public CstEnumRef(CstNat nat) {
-    super(new CstType(nat.getFieldType()), nat);
+  public CstEnumRef(@Nonnull CstString name, @Nonnull Type type) {
+    super(type, name);
 
     fieldRef = null;
   }
 
   /** {@inheritDoc} */
   @Override
+  @Nonnull
   public String typeName() {
     return "enum";
   }
@@ -53,8 +54,9 @@
    * <b>Note:</b> This returns the enumerated type.
    */
   @Override
+  @Nonnull
   public Type getType() {
-    return getDefiningClass().getClassType();
+    return getDefiningClass();
   }
 
   /**
@@ -62,9 +64,10 @@
    *
    * @return {@code non-null;} the corresponding field reference
    */
+  @Nonnull
   public CstFieldRef getFieldRef() {
     if (fieldRef == null) {
-      fieldRef = new CstFieldRef(getDefiningClass(), getNat());
+      fieldRef = new CstFieldRef(getDefiningClass(), getName(), getDefiningClass());
     }
 
     return fieldRef;
@@ -75,4 +78,30 @@
   public ValueType getEncodedValueType() {
     return ValueType.VALUE_ENUM;
   }
+
+  /** {@inheritDoc} */
+  @Override
+  public final boolean equals(Object other) {
+    if ((other == null) || (getClass() != other.getClass())) {
+      return false;
+    }
+
+    CstEnumRef otherRef = (CstEnumRef) other;
+    return getDefiningClass().equals(otherRef.getDefiningClass())
+        && getName().equals(otherRef.getName()) && getType().equals(otherRef.getType());
+  }
+
+  /** {@inheritDoc} */
+  @Override
+  public final int hashCode() {
+    return ((getDefiningClass().hashCode() * 31) + getName().hashCode() * 31)
+        + getType().hashCode();
+  }
+
+  /** {@inheritDoc} */
+  @Override
+  @Nonnull
+  public final String toHuman() {
+    return getDefiningClass().toHuman() + '.' + getName().toHuman() + ':' + getType().toHuman();
+  }
 }
diff --git a/jack/src/com/android/jack/dx/rop/cst/CstFieldRef.java b/jack/src/com/android/jack/dx/rop/cst/CstFieldRef.java
index 50b2181..49f4d2f 100644
--- a/jack/src/com/android/jack/dx/rop/cst/CstFieldRef.java
+++ b/jack/src/com/android/jack/dx/rop/cst/CstFieldRef.java
@@ -25,32 +25,28 @@
  * Constants of type {@code CONSTANT_Fieldref_info}.
  */
 public final class CstFieldRef extends CstMemberRef {
-  /**
-   * Returns an instance of this class that represents the static
-   * field which should hold the class corresponding to a given
-   * primitive type. For example, if given {@link Type#INT}, this
-   * method returns an instance corresponding to the field
-   * {@code java.lang.Integer.TYPE}.
-   *
-   * @param primitiveType {@code non-null;} the primitive type
-   * @return {@code non-null;} the corresponding static field
-   */
-  public static CstFieldRef forPrimitiveType(Type primitiveType) {
-    return new CstFieldRef(CstType.forBoxedPrimitiveType(primitiveType), CstNat.PRIMITIVE_TYPE_NAT);
-  }
+
+  /** {@code non-null;} the field type */
+  @Nonnull
+  private final Type type;
 
   /**
    * Constructs an instance.
    *
    * @param definingClass {@code non-null;} the type of the defining class
-   * @param nat {@code non-null;} the name-and-type
+   * @param name {@code non-null;} the member reference name
+   * @param type {@code non-null;} the member reference type
    */
-  public CstFieldRef(CstType definingClass, CstNat nat) {
-    super(definingClass, nat);
+  public CstFieldRef(@Nonnull Type definingClass, @Nonnull CstString name,
+      @Nonnull Type type) {
+    super(definingClass, name);
+    this.type = type;
+
   }
 
   /** {@inheritDoc} */
   @Override
+  @Nonnull
   public String typeName() {
     return "field";
   }
@@ -61,8 +57,9 @@
    * @return {@code non-null;} the field's type
    */
   @Override
+  @Nonnull
   public Type getType() {
-    return getNat().getFieldType();
+    return type;
   }
 
   /** {@inheritDoc} */
@@ -75,9 +72,7 @@
     }
 
     CstFieldRef otherField = (CstFieldRef) other;
-    CstString thisDescriptor = getNat().getDescriptor();
-    CstString otherDescriptor = otherField.getNat().getDescriptor();
-    return thisDescriptor.compareTo(otherDescriptor);
+    return type.compareTo(otherField.type);
   }
 
   @Override
@@ -85,4 +80,30 @@
   public ValueType getEncodedValueType() {
     return ValueType.VALUE_FIELD;
   }
+
+  /** {@inheritDoc} */
+  @Override
+  public final boolean equals(Object other) {
+    if ((other == null) || (getClass() != other.getClass())) {
+      return false;
+    }
+
+    CstFieldRef otherRef = (CstFieldRef) other;
+    return getDefiningClass().equals(otherRef.getDefiningClass())
+        && getName().equals(otherRef.getName()) && type.equals(otherRef.type);
+  }
+
+  /** {@inheritDoc} */
+  @Override
+  public final int hashCode() {
+    return ((getDefiningClass().hashCode() * 31) + getName().hashCode() * 31)
+        + getType().hashCode();
+  }
+
+  /** {@inheritDoc} */
+  @Override
+  @Nonnull
+  public final String toHuman() {
+    return getDefiningClass().toHuman() + '.' + getName().toHuman() + ':' + type.toHuman();
+  }
 }
diff --git a/jack/src/com/android/jack/dx/rop/cst/CstIndexMap.java b/jack/src/com/android/jack/dx/rop/cst/CstIndexMap.java
index 1f0744e..4bc7f33 100644
--- a/jack/src/com/android/jack/dx/rop/cst/CstIndexMap.java
+++ b/jack/src/com/android/jack/dx/rop/cst/CstIndexMap.java
@@ -18,6 +18,7 @@
 import com.android.jack.dx.dex.file.DexFile;
 import com.android.jack.dx.dex.file.IndexedItem;
 import com.android.jack.dx.io.DexBuffer;
+import com.android.jack.dx.rop.type.Type;
 
 import javax.annotation.Nonnegative;
 import javax.annotation.Nonnull;
@@ -31,9 +32,9 @@
   @Nonnull
   private final CstString[] strings;
 
-  /** Mapping between index and {@link CstType} value of a dex file.*/
+  /** Mapping between index and {@link Type} value of a dex file.*/
   @Nonnull
-  private final CstType[] types;
+  private final Type[] types;
 
   /** Mapping between index and {@link CstMethodRef} value of a dex file.*/
   @Nonnull
@@ -56,7 +57,7 @@
 
   public CstIndexMap(@Nonnull DexBuffer dexBuffer) {
     strings = new CstString[dexBuffer.strings().size()];
-    types = new CstType[dexBuffer.typeNames().size()];
+    types = new Type[dexBuffer.typeNames().size()];
     methods = new CstMethodRef[dexBuffer.methodIds().size()];
     fields = new CstFieldRef[dexBuffer.fieldIds().size()];
     prototypes = new CstPrototypeRef[dexBuffer.protoIds().size()];
@@ -79,13 +80,13 @@
   /**
    * Keeps type mapping of a dex file.
    * @param index Type index.
-   * @param cstType The type.
+   * @param type The type.
    */
-  public void addTypeMapping(@Nonnegative int index, @Nonnull CstType cstType) {
-    assert types[index] == null || types[index].compareTo(cstType) == 0;
+  public void addTypeMapping(@Nonnegative int index, @Nonnull Type type) {
+    assert types[index] == null || types[index].compareTo(type) == 0;
 
     if (types[index] == null) {
-      types[index] = cstType;
+      types[index] = type;
     }
   }
 
@@ -249,8 +250,8 @@
   }
 
   @Nonnull
-  public CstType getCstType(@Nonnegative int index) {
-    CstType cstType = types[index];
+  public Type getType(@Nonnegative int index) {
+    Type cstType = types[index];
     assert cstType != null;
     return cstType;
   }
diff --git a/jack/src/com/android/jack/dx/rop/cst/CstInterfaceMethodRef.java b/jack/src/com/android/jack/dx/rop/cst/CstInterfaceMethodRef.java
deleted file mode 100644
index c7c419a..0000000
--- a/jack/src/com/android/jack/dx/rop/cst/CstInterfaceMethodRef.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2007 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.jack.dx.rop.cst;
-
-import com.android.jack.dx.dex.file.ValueEncoder.ValueType;
-
-import javax.annotation.Nonnull;
-
-/**
- * Constants of type {@code CONSTANT_InterfaceMethodref_info}.
- */
-public final class CstInterfaceMethodRef extends CstBaseMethodRef {
-  /**
-   * {@code null-ok;} normal {@link CstMethodRef} that corresponds to this
-   * instance, if calculated
-   */
-  private CstMethodRef methodRef;
-
-  /**
-   * Constructs an instance.
-   *
-   * @param definingClass {@code non-null;} the type of the defining class
-   * @param nat {@code non-null;} the name-and-type
-   */
-  public CstInterfaceMethodRef(CstType definingClass, CstNat nat) {
-    super(definingClass, nat);
-    methodRef = null;
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public String typeName() {
-    return "ifaceMethod";
-  }
-
-  /**
-   * Gets a normal (non-interface) {@link CstMethodRef} that corresponds to
-   * this instance.
-   *
-   * @return {@code non-null;} an appropriate instance
-   */
-  public CstMethodRef toMethodRef() {
-    if (methodRef == null) {
-      methodRef = new CstMethodRef(getDefiningClass(), getNat());
-    }
-
-    return methodRef;
-  }
-
-  @Override
-  @Nonnull
-  public ValueType getEncodedValueType() {
-    throw new UnsupportedOperationException();
-  }
-}
diff --git a/jack/src/com/android/jack/dx/rop/cst/CstMemberRef.java b/jack/src/com/android/jack/dx/rop/cst/CstMemberRef.java
index 2b36a7d..10cdace 100644
--- a/jack/src/com/android/jack/dx/rop/cst/CstMemberRef.java
+++ b/jack/src/com/android/jack/dx/rop/cst/CstMemberRef.java
@@ -16,50 +16,33 @@
 
 package com.android.jack.dx.rop.cst;
 
+import com.android.jack.dx.rop.type.Type;
+
+import javax.annotation.Nonnull;
+
 /**
  * Constants of type {@code CONSTANT_*ref_info}.
  */
 public abstract class CstMemberRef extends TypedConstant {
   /** {@code non-null;} the type of the defining class */
-  private final CstType definingClass;
 
-  /** {@code non-null;} the name-and-type */
-  private final CstNat nat;
+  private final Type definingClass;
+
+  /** {@code non-null;} the name */
+  @Nonnull
+  private final CstString name;
 
   /**
    * Constructs an instance.
    *
    * @param definingClass {@code non-null;} the type of the defining class
-   * @param nat {@code non-null;} the name-and-type
+   * @param name {@code non-null;} the member reference name
    */
-  /*package*/CstMemberRef(CstType definingClass, CstNat nat) {
-    if (definingClass == null) {
-      throw new NullPointerException("definingClass == null");
-    }
-
-    if (nat == null) {
-      throw new NullPointerException("nat == null");
-    }
-
+  /* package */ CstMemberRef(@Nonnull Type definingClass, @Nonnull CstString name) {
+    assert definingClass != null;
+    assert name != null;
     this.definingClass = definingClass;
-    this.nat = nat;
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public final boolean equals(Object other) {
-    if ((other == null) || (getClass() != other.getClass())) {
-      return false;
-    }
-
-    CstMemberRef otherRef = (CstMemberRef) other;
-    return definingClass.equals(otherRef.definingClass) && nat.equals(otherRef.nat);
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public final int hashCode() {
-    return (definingClass.hashCode() * 31) ^ nat.hashCode();
+    this.name = name;
   }
 
   /**
@@ -78,14 +61,12 @@
       return cmp;
     }
 
-    CstString thisName = nat.getName();
-    CstString otherName = otherMember.nat.getName();
-
-    return thisName.compareTo(otherName);
+    return name.compareTo(otherMember.name);
   }
 
   /** {@inheritDoc} */
   @Override
+  @Nonnull
   public final String toString() {
     return typeName() + '{' + toHuman() + '}';
   }
@@ -96,27 +77,18 @@
     return false;
   }
 
-  /** {@inheritDoc} */
-  @Override
-  public final String toHuman() {
-    return definingClass.toHuman() + '.' + nat.toHuman();
-  }
-
   /**
    * Gets the type of the defining class.
    *
    * @return {@code non-null;} the type of defining class
    */
-  public final CstType getDefiningClass() {
+  @Nonnull
+  public final Type getDefiningClass() {
     return definingClass;
   }
 
-  /**
-   * Gets the defining name-and-type.
-   *
-   * @return {@code non-null;} the name-and-type
-   */
-  public final CstNat getNat() {
-    return nat;
+  @Nonnull
+  public CstString getName() {
+    return name;
   }
 }
diff --git a/jack/src/com/android/jack/dx/rop/cst/CstMethodRef.java b/jack/src/com/android/jack/dx/rop/cst/CstMethodRef.java
index f725d9d..fee0d77 100644
--- a/jack/src/com/android/jack/dx/rop/cst/CstMethodRef.java
+++ b/jack/src/com/android/jack/dx/rop/cst/CstMethodRef.java
@@ -17,6 +17,8 @@
 package com.android.jack.dx.rop.cst;
 
 import com.android.jack.dx.dex.file.ValueEncoder.ValueType;
+import com.android.jack.dx.rop.type.Prototype;
+import com.android.jack.dx.rop.type.Type;
 
 import javax.annotation.Nonnull;
 
@@ -24,18 +26,22 @@
  * Constants of type {@code CONSTANT_Methodref_info}.
  */
 public final class CstMethodRef extends CstBaseMethodRef {
+
   /**
    * Constructs an instance.
    *
    * @param definingClass {@code non-null;} the type of the defining class
-   * @param nat {@code non-null;} the name-and-type
+   * @param name {@code non-null;} the member reference name
+   * @param prototype {@code non-null;} the member reference prototype
    */
-  public CstMethodRef(CstType definingClass, CstNat nat) {
-    super(definingClass, nat);
+  public CstMethodRef(@Nonnull Type definingClass, @Nonnull CstString name,
+      @Nonnull Prototype prototype) {
+    super(definingClass, name, prototype);
   }
 
   /** {@inheritDoc} */
   @Override
+  @Nonnull
   public String typeName() {
     return "method";
   }
diff --git a/jack/src/com/android/jack/dx/rop/cst/CstNat.java b/jack/src/com/android/jack/dx/rop/cst/CstNat.java
deleted file mode 100644
index cdb923c..0000000
--- a/jack/src/com/android/jack/dx/rop/cst/CstNat.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (C) 2007 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.jack.dx.rop.cst;
-
-import com.android.jack.dx.dex.file.ValueEncoder.ValueType;
-import com.android.jack.dx.rop.type.Type;
-
-import javax.annotation.Nonnull;
-
-/**
- * Constants of type {@code CONSTANT_NameAndType_info}.
- */
-public final class CstNat extends Constant {
-  /**
-   * {@code non-null;} the instance for name {@code TYPE} and descriptor
-   * {@code java.lang.Class}, which is useful when dealing with
-   * wrapped primitives
-   */
-  public static final CstNat PRIMITIVE_TYPE_NAT =
-      new CstNat(new CstString("TYPE"), new CstString("Ljava/lang/Class;"));
-
-  /** {@code non-null;} the name */
-  private final CstString name;
-
-  /** {@code non-null;} the descriptor (type) */
-  private final CstString descriptor;
-
-  /**
-   * Constructs an instance.
-   *
-   * @param name {@code non-null;} the name
-   * @param descriptor {@code non-null;} the descriptor
-   */
-  public CstNat(CstString name, CstString descriptor) {
-    if (name == null) {
-      throw new NullPointerException("name == null");
-    }
-
-    if (descriptor == null) {
-      throw new NullPointerException("descriptor == null");
-    }
-
-    this.name = name;
-    this.descriptor = descriptor;
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public boolean equals(Object other) {
-    if (!(other instanceof CstNat)) {
-      return false;
-    }
-
-    CstNat otherNat = (CstNat) other;
-    return name.equals(otherNat.name) && descriptor.equals(otherNat.descriptor);
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public int hashCode() {
-    return (name.hashCode() * 31) ^ descriptor.hashCode();
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  protected int compareTo0(Constant other) {
-    CstNat otherNat = (CstNat) other;
-    int cmp = name.compareTo(otherNat.name);
-
-    if (cmp != 0) {
-      return cmp;
-    }
-
-    return descriptor.compareTo(otherNat.descriptor);
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public String toString() {
-    return "nat{" + toHuman() + '}';
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public String typeName() {
-    return "nat";
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public boolean isCategory2() {
-    return false;
-  }
-
-  /**
-   * Gets the name.
-   *
-   * @return {@code non-null;} the name
-   */
-  public CstString getName() {
-    return name;
-  }
-
-  /**
-   * Gets the descriptor.
-   *
-   * @return {@code non-null;} the descriptor
-   */
-  public CstString getDescriptor() {
-    return descriptor;
-  }
-
-  /**
-   * Returns an unadorned but human-readable version of the name-and-type
-   * value.
-   *
-   * @return {@code non-null;} the human form
-   */
-  @Override
-  public String toHuman() {
-    return name.toHuman() + ':' + descriptor.toHuman();
-  }
-
-  /**
-   * Gets the field type corresponding to this instance's descriptor.
-   * This method is only valid to call if the descriptor in fact describes
-   * a field (and not a method).
-   *
-   * @return {@code non-null;} the field type
-   */
-  public Type getFieldType() {
-    return Type.intern(descriptor.getString());
-  }
-
-  /**
-   * Gets whether this instance has the name of a standard instance
-   * initialization method. This is just a convenient shorthand for
-   * {@code getName().getString().equals("<init>")}.
-   *
-   * @return {@code true} iff this is a reference to an
-   * instance initialization method
-   */
-  public final boolean isInstanceInit() {
-    return name.getString().equals("<init>");
-  }
-
-  /**
-   * Gets whether this instance has the name of a standard class
-   * initialization method. This is just a convenient shorthand for
-   * {@code getName().getString().equals("<clinit>")}.
-   *
-   * @return {@code true} iff this is a reference to an
-   * instance initialization method
-   */
-  public final boolean isClassInit() {
-    return name.getString().equals("<clinit>");
-  }
-
-  @Override
-  @Nonnull
-  public ValueType getEncodedValueType() {
-    throw new UnsupportedOperationException();
-  }
-}
diff --git a/jack/src/com/android/jack/dx/rop/cst/CstString.java b/jack/src/com/android/jack/dx/rop/cst/CstString.java
index f99f290..a97addd 100644
--- a/jack/src/com/android/jack/dx/rop/cst/CstString.java
+++ b/jack/src/com/android/jack/dx/rop/cst/CstString.java
@@ -197,10 +197,7 @@
    * @param string {@code non-null;} the UTF-8 value as a string
    */
   public CstString(String string) {
-    if (string == null) {
-      throw new NullPointerException("string == null");
-    }
-
+    assert string != null;
     this.string = string.intern();
   }
 
diff --git a/jack/src/com/android/jack/dx/rop/cst/CstType.java b/jack/src/com/android/jack/dx/rop/cst/CstType.java
deleted file mode 100644
index 53aeb6a..0000000
--- a/jack/src/com/android/jack/dx/rop/cst/CstType.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * Copyright (C) 2007 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.jack.dx.rop.cst;
-
-import com.android.jack.dx.dex.file.ValueEncoder.ValueType;
-import com.android.jack.dx.rop.type.Type;
-
-import java.util.HashMap;
-
-import javax.annotation.Nonnull;
-
-/**
- * Constants that represent an arbitrary type (reference or primitive).
- */
-public final class CstType extends TypedConstant {
-  /** {@code non-null;} map of interned types */
-  private static final HashMap<Type, CstType> interns = new HashMap<Type, CstType>(100);
-
-  /** {@code non-null;} instance corresponding to the class {@code Object} */
-  public static final CstType OBJECT = intern(Type.OBJECT);
-
-  /** {@code non-null;} instance corresponding to the class {@code Boolean} */
-  public static final CstType BOOLEAN = intern(Type.BOOLEAN_CLASS);
-
-  /** {@code non-null;} instance corresponding to the class {@code Byte} */
-  public static final CstType BYTE = intern(Type.BYTE_CLASS);
-
-  /** {@code non-null;} instance corresponding to the class {@code Character} */
-  public static final CstType CHARACTER = intern(Type.CHARACTER_CLASS);
-
-  /** {@code non-null;} instance corresponding to the class {@code Double} */
-  public static final CstType DOUBLE = intern(Type.DOUBLE_CLASS);
-
-  /** {@code non-null;} instance corresponding to the class {@code Float} */
-  public static final CstType FLOAT = intern(Type.FLOAT_CLASS);
-
-  /** {@code non-null;} instance corresponding to the class {@code Long} */
-  public static final CstType LONG = intern(Type.LONG_CLASS);
-
-  /** {@code non-null;} instance corresponding to the class {@code Integer} */
-  public static final CstType INTEGER = intern(Type.INTEGER_CLASS);
-
-  /** {@code non-null;} instance corresponding to the class {@code Short} */
-  public static final CstType SHORT = intern(Type.SHORT_CLASS);
-
-  /** {@code non-null;} instance corresponding to the class {@code Void} */
-  public static final CstType VOID = intern(Type.VOID_CLASS);
-
-  /** {@code non-null;} instance corresponding to the type {@code boolean[]} */
-  public static final CstType BOOLEAN_ARRAY = intern(Type.BOOLEAN_ARRAY);
-
-  /** {@code non-null;} instance corresponding to the type {@code byte[]} */
-  public static final CstType BYTE_ARRAY = intern(Type.BYTE_ARRAY);
-
-  /** {@code non-null;} instance corresponding to the type {@code char[]} */
-  public static final CstType CHAR_ARRAY = intern(Type.CHAR_ARRAY);
-
-  /** {@code non-null;} instance corresponding to the type {@code double[]} */
-  public static final CstType DOUBLE_ARRAY = intern(Type.DOUBLE_ARRAY);
-
-  /** {@code non-null;} instance corresponding to the type {@code float[]} */
-  public static final CstType FLOAT_ARRAY = intern(Type.FLOAT_ARRAY);
-
-  /** {@code non-null;} instance corresponding to the type {@code long[]} */
-  public static final CstType LONG_ARRAY = intern(Type.LONG_ARRAY);
-
-  /** {@code non-null;} instance corresponding to the type {@code int[]} */
-  public static final CstType INT_ARRAY = intern(Type.INT_ARRAY);
-
-  /** {@code non-null;} instance corresponding to the type {@code short[]} */
-  public static final CstType SHORT_ARRAY = intern(Type.SHORT_ARRAY);
-
-  /** {@code non-null;} the underlying type */
-  private final Type type;
-
-  /**
-   * {@code null-ok;} the type descriptor corresponding to this instance, if
-   * calculated
-   */
-  private CstString descriptor;
-
-  /**
-   * Returns an instance of this class that represents the wrapper
-   * class corresponding to a given primitive type. For example, if
-   * given {@link Type#INT}, this method returns the class reference
-   * {@code java.lang.Integer}.
-   *
-   * @param primitiveType {@code non-null;} the primitive type
-   * @return {@code non-null;} the corresponding wrapper class
-   */
-  public static CstType forBoxedPrimitiveType(Type primitiveType) {
-    switch (primitiveType.getBasicType()) {
-      case Type.BT_BOOLEAN:
-        return BOOLEAN;
-      case Type.BT_BYTE:
-        return BYTE;
-      case Type.BT_CHAR:
-        return CHARACTER;
-      case Type.BT_DOUBLE:
-        return DOUBLE;
-      case Type.BT_FLOAT:
-        return FLOAT;
-      case Type.BT_INT:
-        return INTEGER;
-      case Type.BT_LONG:
-        return LONG;
-      case Type.BT_SHORT:
-        return SHORT;
-      case Type.BT_VOID:
-        return VOID;
-    }
-
-    throw new IllegalArgumentException("not primitive: " + primitiveType);
-  }
-
-  /**
-   * Returns an interned instance of this class for the given type.
-   *
-   * @param type {@code non-null;} the underlying type
-   * @return {@code non-null;} an appropriately-constructed instance
-   */
-  public static CstType intern(Type type) {
-    synchronized (interns) {
-      CstType cst = interns.get(type);
-
-      if (cst == null) {
-        cst = new CstType(type);
-        interns.put(type, cst);
-      }
-
-      return cst;
-    }
-  }
-
-  /**
-   * Constructs an instance.
-   *
-   * @param type {@code non-null;} the underlying type
-   */
-  public CstType(Type type) {
-    if (type == null) {
-      throw new NullPointerException("type == null");
-    }
-
-    if (type == Type.KNOWN_NULL) {
-      throw new UnsupportedOperationException("KNOWN_NULL is not representable");
-    }
-
-    this.type = type;
-    this.descriptor = null;
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public boolean equals(Object other) {
-    if (!(other instanceof CstType)) {
-      return false;
-    }
-
-    return type == ((CstType) other).type;
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public int hashCode() {
-    return type.hashCode();
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  protected int compareTo0(Constant other) {
-    String thisDescriptor = type.getDescriptor();
-    String otherDescriptor = ((CstType) other).type.getDescriptor();
-    return thisDescriptor.compareTo(otherDescriptor);
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public String toString() {
-    return "type{" + toHuman() + '}';
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public Type getType() {
-    return Type.CLASS;
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public String typeName() {
-    return "type";
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public boolean isCategory2() {
-    return false;
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public String toHuman() {
-    return type.toHuman();
-  }
-
-  /**
-   * Gets the underlying type (as opposed to the type corresponding
-   * to this instance as a constant, which is always
-   * {@code Class}).
-   *
-   * @return {@code non-null;} the type corresponding to the name
-   */
-  public Type getClassType() {
-    return type;
-  }
-
-  /**
-   * Gets the type descriptor for this instance.
-   *
-   * @return {@code non-null;} the descriptor
-   */
-  public CstString getDescriptor() {
-    if (descriptor == null) {
-      descriptor = new CstString(type.getDescriptor());
-    }
-
-    return descriptor;
-  }
-
-  /**
-   * Returns a human readable package name for this type, like "java.util".
-   * If this is an array type, this returns the package name of the array's
-   * component type. If this is a primitive type, this returns "default".
-   */
-  public String getPackageName() {
-    // descriptor is a string like "[[Ljava/util/String;"
-    String descriptor = getDescriptor().getString();
-    int lastSlash = descriptor.lastIndexOf('/');
-    int lastLeftSquare = descriptor.lastIndexOf('['); // -1 unless this is an array
-    if (lastSlash == -1) {
-      return "default";
-    } else {
-      // +2 to skip the '[' and the 'L' prefix
-      return descriptor.substring(lastLeftSquare + 2, lastSlash).replace('/', '.');
-    }
-  }
-
-  @Override
-  @Nonnull
-  public ValueType getEncodedValueType() {
-    return ValueType.VALUE_TYPE;
-  }
-}
diff --git a/jack/src/com/android/jack/dx/rop/cst/TypedConstant.java b/jack/src/com/android/jack/dx/rop/cst/TypedConstant.java
index 2e44b28..7422656 100644
--- a/jack/src/com/android/jack/dx/rop/cst/TypedConstant.java
+++ b/jack/src/com/android/jack/dx/rop/cst/TypedConstant.java
@@ -29,24 +29,24 @@
    */
   @Override
   public final TypeBearer getFrameType() {
-    return this;
+    return getType().getFrameTypeImpl();
   }
 
   /** {@inheritDoc} */
   @Override
   public final int getBasicType() {
-    return getType().getBasicType();
+    return getType().getBasicTypeImpl();
   }
 
   /** {@inheritDoc} */
   @Override
   public final int getBasicFrameType() {
-    return getType().getBasicFrameType();
+    return getType().getBasicFrameTypeImpl();
   }
 
   /** {@inheritDoc} */
   @Override
-  public final boolean isConstant() {
+  public boolean isConstant() {
     return true;
   }
 }
diff --git a/jack/src/com/android/jack/dx/rop/type/Prototype.java b/jack/src/com/android/jack/dx/rop/type/Prototype.java
index ed4e46c..97c7b8b 100644
--- a/jack/src/com/android/jack/dx/rop/type/Prototype.java
+++ b/jack/src/com/android/jack/dx/rop/type/Prototype.java
@@ -18,6 +18,8 @@
 
 import java.util.HashMap;
 
+import javax.annotation.Nonnull;
+
 /**
  * Representation of a method descriptor. Instances of this class are
  * generally interned and may be usefully compared with each other
@@ -44,15 +46,45 @@
    * given method descriptor. See vmspec-2 sec4.3.3 for details on the
    * field descriptor syntax.
    *
+   * @param parameterTypes {@code non-null;} the list of parameter types
+   * @param returnType {@code non-null;} the return type
+   * @return {@code non-null;} the corresponding instance
+   */
+  public static Prototype intern(@Nonnull StdTypeList parameterTypes, @Nonnull Type returnType) {
+    StringBuilder descriptorBuff = new StringBuilder();
+    descriptorBuff.append('(');
+    for (int i = 0, length = parameterTypes.size(); i < length; i++) {
+      descriptorBuff.append(parameterTypes.get(i).getDescriptor());
+    }
+    descriptorBuff.append(')');
+    descriptorBuff.append(returnType.getDescriptor());
+
+    String descriptor = descriptorBuff.toString();
+
+    Prototype result;
+    synchronized (internTable) {
+      result = internTable.get(descriptor);
+    }
+    if (result != null) {
+      return result;
+    }
+
+    result = new Prototype(descriptor, returnType, parameterTypes);
+    return putIntern(result);
+  }
+
+  /**
+   * Returns the unique instance corresponding to the
+   * given method descriptor. See vmspec-2 sec4.3.3 for details on the
+   * field descriptor syntax.
+   *
    * @param descriptor {@code non-null;} the descriptor
    * @return {@code non-null;} the corresponding instance
    * @throws IllegalArgumentException thrown if the descriptor has
    * invalid syntax
    */
-  public static Prototype intern(String descriptor) {
-    if (descriptor == null) {
-      throw new NullPointerException("descriptor == null");
-    }
+  public static Prototype intern(@Nonnull String descriptor) {
+    assert descriptor != null;
 
     Prototype result;
     synchronized (internTable) {
@@ -211,18 +243,9 @@
    * @param descriptor {@code non-null;} the descriptor string
    */
   private Prototype(String descriptor, Type returnType, StdTypeList parameterTypes) {
-    if (descriptor == null) {
-      throw new NullPointerException("descriptor == null");
-    }
-
-    if (returnType == null) {
-      throw new NullPointerException("returnType == null");
-    }
-
-    if (parameterTypes == null) {
-      throw new NullPointerException("parameterTypes == null");
-    }
-
+    assert descriptor != null;
+    assert returnType != null;
+    assert parameterTypes != null;
     this.descriptor = descriptor;
     this.returnType = returnType;
     this.parameterTypes = parameterTypes;
diff --git a/jack/src/com/android/jack/dx/rop/type/Type.java b/jack/src/com/android/jack/dx/rop/type/Type.java
index 1ccb1f3..59a530c 100644
--- a/jack/src/com/android/jack/dx/rop/type/Type.java
+++ b/jack/src/com/android/jack/dx/rop/type/Type.java
@@ -16,11 +16,16 @@
 
 package com.android.jack.dx.rop.type;
 
+import com.android.jack.dx.dex.file.ValueEncoder.ValueType;
+import com.android.jack.dx.rop.cst.Constant;
+import com.android.jack.dx.rop.cst.CstString;
+import com.android.jack.dx.rop.cst.TypedConstant;
 import com.android.jack.dx.util.Hex;
 
 import java.util.HashMap;
 
 import javax.annotation.Nonnegative;
+import javax.annotation.Nonnull;
 
 /**
  * Representation of a value type, such as may appear in a field, in a
@@ -28,7 +33,7 @@
  * class are generally interned and may be usefully compared with each
  * other using {@code ==}.
  */
-public final class Type implements TypeBearer, Comparable<Type> {
+public final class Type extends TypedConstant implements TypeBearer {
 
   /**
    * {@code non-null;} intern table mapping string descriptors to
@@ -239,7 +244,7 @@
   public static final Type SHORT_ARRAY = SHORT.getArrayType();
 
   /** {@code non-null;} field descriptor for the type */
-  private final String descriptor;
+  private final CstString descriptor;
 
   /**
    * basic type corresponding to this type; one of the
@@ -301,15 +306,13 @@
       return result;
     }
 
+    assert descriptor != null;
     char firstChar;
     try {
       firstChar = descriptor.charAt(0);
     } catch (IndexOutOfBoundsException ex) {
       // Translate the exception.
       throw new IllegalArgumentException("descriptor is empty");
-    } catch (NullPointerException ex) {
-      // Elucidate the exception.
-      throw new NullPointerException("descriptor == null");
     }
 
     if (firstChar == '[') {
@@ -376,14 +379,10 @@
    * invalid syntax
    */
   public static Type internReturnType(String descriptor) {
-    try {
-      if (descriptor.equals("V")) {
-        // This is the one special case where void may be returned.
-        return VOID;
-      }
-    } catch (NullPointerException ex) {
-      // Elucidate the exception.
-      throw new NullPointerException("descriptor == null");
+    assert descriptor != null;
+    if (descriptor.equals("V")) {
+      // This is the one special case where void may be returned.
+      return VOID;
     }
 
     return intern(descriptor);
@@ -400,9 +399,7 @@
    * @param newAt {@code >= -1;} allocation bytecode index
    */
   private Type(String descriptor, int basicType, int newAt) {
-    if (descriptor == null) {
-      throw new NullPointerException("descriptor == null");
-    }
+    assert descriptor != null;
 
     if ((basicType < 0) || (basicType >= BT_COUNT)) {
       throw new IllegalArgumentException("bad basicType");
@@ -412,7 +409,7 @@
       throw new IllegalArgumentException("newAt < -1");
     }
 
-    this.descriptor = descriptor;
+    this.descriptor = new CstString(descriptor);
     this.basicType = basicType;
     this.newAt = newAt;
     this.arrayType = null;
@@ -459,14 +456,8 @@
 
   /** {@inheritDoc} */
   @Override
-  public int compareTo(Type other) {
-    return descriptor.compareTo(other.descriptor);
-  }
-
-  /** {@inheritDoc} */
-  @Override
   public String toString() {
-    return descriptor;
+    return descriptor.getString();
   }
 
   /** {@inheritDoc} */
@@ -494,7 +485,7 @@
       case BT_OBJECT:
         break;
       default:
-        return descriptor;
+        return descriptor.getString();
     }
 
     if (isArray()) {
@@ -511,9 +502,7 @@
     return this;
   }
 
-  /** {@inheritDoc} */
-  @Override
-  public Type getFrameType() {
+  public Type getFrameTypeImpl() {
     switch (basicType) {
       case BT_BOOLEAN:
       case BT_BYTE:
@@ -527,15 +516,11 @@
     return this;
   }
 
-  /** {@inheritDoc} */
-  @Override
-  public int getBasicType() {
+  public int getBasicTypeImpl() {
     return basicType;
   }
 
-  /** {@inheritDoc} */
-  @Override
-  public int getBasicFrameType() {
+  public int getBasicFrameTypeImpl() {
     switch (basicType) {
       case BT_BOOLEAN:
       case BT_BYTE:
@@ -549,18 +534,12 @@
     return basicType;
   }
 
-  /** {@inheritDoc} */
-  @Override
-  public boolean isConstant() {
-    return false;
-  }
-
   /**
    * Gets the descriptor.
    *
    * @return {@code non-null;} the descriptor
    */
-  public String getDescriptor() {
+  public CstString getDescriptor() {
     return descriptor;
   }
 
@@ -578,10 +557,11 @@
         throw new IllegalArgumentException("not an object type: " + descriptor);
       }
 
-      if (descriptor.charAt(0) == '[') {
-        className = descriptor;
+      String descriptorStr = descriptor.getString();
+      if (descriptorStr.charAt(0) == '[') {
+        className = descriptorStr;
       } else {
-        className = descriptor.substring(1, descriptor.length() - 1);
+        className = descriptorStr.substring(1, descriptorStr.length() - 1);
       }
     }
 
@@ -632,6 +612,7 @@
    * @see #isCategory1
    * @return whether or not this is a category 2 type
    */
+  @Override
   public boolean isCategory2() {
     switch (basicType) {
       case BT_LONG:
@@ -708,7 +689,7 @@
    * @return whether this type is an array type
    */
   public boolean isArray() {
-    return (descriptor.charAt(0) == '[');
+    return (descriptor.getString().charAt(0) == '[');
   }
 
   /**
@@ -767,7 +748,7 @@
    */
   public Type getArrayType() {
     if (arrayType == null) {
-      arrayType = putIntern(new Type('[' + descriptor, BT_OBJECT));
+      arrayType = putIntern(new Type('[' + descriptor.getString(), BT_OBJECT));
     }
 
     return arrayType;
@@ -781,10 +762,11 @@
    */
   public Type getComponentType() {
     if (componentType == null) {
-      if (descriptor.charAt(0) != '[') {
+      String descriptorStr = descriptor.getString();
+      if (descriptorStr.charAt(0) != '[') {
         throw new IllegalArgumentException("not an array type: " + descriptor);
       }
-      componentType = intern(descriptor.substring(1));
+      componentType = intern(descriptorStr.substring(1));
     }
 
     return componentType;
@@ -844,7 +826,7 @@
    */
   private static Type putIntern(Type type) {
     synchronized (internTable) {
-      String descriptor = type.getDescriptor();
+      String descriptor = type.getDescriptor().getString();
       Type already = internTable.get(descriptor);
       if (already != null) {
         return already;
@@ -853,4 +835,46 @@
       return type;
     }
   }
+
+  @Override
+  public String typeName() {
+    return "type";
+  }
+
+  @Override
+  protected int compareTo0(Constant other) {
+    assert other instanceof Type;
+    return descriptor.compareTo(((Type) other).descriptor);
+  }
+
+
+  @Override
+  @Nonnull
+  public ValueType getEncodedValueType() {
+    return ValueType.VALUE_TYPE;
+  }
+
+  /**
+   * Returns a human readable package name for this type, like "java.util".
+   * If this is an array type, this returns the package name of the array's
+   * component type. If this is a primitive type, this returns "default".
+   */
+  public String getPackageName() {
+    // descriptor is a string like "[[Ljava/util/String;"
+    String descriptor = getDescriptor().getString();
+    int lastSlash = descriptor.lastIndexOf('/');
+    int lastLeftSquare = descriptor.lastIndexOf('['); // -1 unless this is an array
+    if (lastSlash == -1) {
+      return "default";
+    } else {
+      // +2 to skip the '[' and the 'L' prefix
+      return descriptor.substring(lastLeftSquare + 2, lastSlash).replace('/', '.');
+    }
+  }
+
+  /** {@inheritDoc} */
+  @Override
+  public boolean isConstant() {
+    return false;
+  }
 }
diff --git a/jack/src/com/android/jack/dx/ssa/LocalVariableExtractor.java b/jack/src/com/android/jack/dx/ssa/LocalVariableExtractor.java
index 38490ae..9fe2b7a 100644
--- a/jack/src/com/android/jack/dx/ssa/LocalVariableExtractor.java
+++ b/jack/src/com/android/jack/dx/ssa/LocalVariableExtractor.java
@@ -62,12 +62,8 @@
    * @param method {@code non-null;} the method to extract from
    */
   private LocalVariableExtractor(SsaMethod method) {
-    if (method == null) {
-      throw new NullPointerException("method == null");
-    }
-
+    assert method != null;
     ArrayList<SsaBasicBlock> blocks = method.getBlocks();
-
     this.method = method;
     this.blocks = blocks;
     this.resultInfo = new LocalVariableInfo(method);
diff --git a/jack/src/com/android/jack/dx/ssa/LocalVariableInfo.java b/jack/src/com/android/jack/dx/ssa/LocalVariableInfo.java
index 14c3799..c3a7434 100644
--- a/jack/src/com/android/jack/dx/ssa/LocalVariableInfo.java
+++ b/jack/src/com/android/jack/dx/ssa/LocalVariableInfo.java
@@ -55,10 +55,7 @@
    * @param method {@code non-null;} the method being represented by this instance
    */
   public LocalVariableInfo(SsaMethod method) {
-    if (method == null) {
-      throw new NullPointerException("method == null");
-    }
-
+    assert method != null;
     List<SsaBasicBlock> blocks = method.getBlocks();
 
     this.regCount = method.getRegCount();
@@ -77,11 +74,9 @@
    * @param specs {@code non-null;} the register set to associate with the block
    */
   public void setStarts(int index, RegisterSpecSet specs) {
-    throwIfImmutable();
+    assert specs != null;
 
-    if (specs == null) {
-      throw new NullPointerException("specs == null");
-    }
+    throwIfImmutable();
 
     try {
       blockStarts[index] = specs;
@@ -182,16 +177,11 @@
    * @param spec {@code non-null;} the associated register spec
    */
   public void addAssignment(SsaInsn insn, RegisterSpec spec) {
+    assert insn != null;
+    assert spec != null;
+
     throwIfImmutable();
 
-    if (insn == null) {
-      throw new NullPointerException("insn == null");
-    }
-
-    if (spec == null) {
-      throw new NullPointerException("spec == null");
-    }
-
     insnAssignments.put(insn, spec);
   }
 
diff --git a/jack/src/com/android/jack/dx/ssa/SsaInsn.java b/jack/src/com/android/jack/dx/ssa/SsaInsn.java
index 403e56d..51e3937 100644
--- a/jack/src/com/android/jack/dx/ssa/SsaInsn.java
+++ b/jack/src/com/android/jack/dx/ssa/SsaInsn.java
@@ -41,10 +41,7 @@
    * never change.
    */
   protected SsaInsn(RegisterSpec result, SsaBasicBlock block) {
-    if (block == null) {
-      throw new NullPointerException("block == null");
-    }
-
+    assert block != null;
     this.block = block;
     this.result = result;
   }
@@ -85,10 +82,7 @@
    * @param result {@code non-null;} the new result register
    */
   protected void setResult(RegisterSpec result) {
-    if (result == null) {
-      throw new NullPointerException("result == null");
-    }
-
+    assert result != null;
     this.result = result;
   }
 
diff --git a/jack/src/com/android/jack/dx/ssa/back/IdenticalBlockCombiner.java b/jack/src/com/android/jack/dx/ssa/back/IdenticalBlockCombiner.java
index 9e8b870..a47bf34 100644
--- a/jack/src/com/android/jack/dx/ssa/back/IdenticalBlockCombiner.java
+++ b/jack/src/com/android/jack/dx/ssa/back/IdenticalBlockCombiner.java
@@ -108,7 +108,8 @@
     newBlocks.shrinkToFit();
     newBlocks.setImmutable();
 
-    return new RopMethod(newBlocks, ropMethod.getFirstLabel());
+    return new RopMethod(newBlocks, ropMethod.getFirstLabel(),
+        ropMethod.withDexCallingConvention());
   }
 
   /**
diff --git a/jack/src/com/android/jack/dx/ssa/back/SsaToRop.java b/jack/src/com/android/jack/dx/ssa/back/SsaToRop.java
index 1fb22f6..2fa858c 100644
--- a/jack/src/com/android/jack/dx/ssa/back/SsaToRop.java
+++ b/jack/src/com/android/jack/dx/ssa/back/SsaToRop.java
@@ -121,7 +121,8 @@
     removeEmptyGotos();
 
     RopMethod ropMethod = new RopMethod(convertBasicBlocks(),
-        ssaMeth.blockIndexToRopLabel(ssaMeth.getEntryBlockIndex()));
+        ssaMeth.blockIndexToRopLabel(ssaMeth.getEntryBlockIndex()),
+        /* withDexCallingConvention= */ true);
     ropMethod = new IdenticalBlockCombiner(ropMethod).process();
 
     return ropMethod;
diff --git a/jack/src/com/android/jack/dx/util/ByteArray.java b/jack/src/com/android/jack/dx/util/ByteArray.java
index 2b2167a..0dbccbd 100644
--- a/jack/src/com/android/jack/dx/util/ByteArray.java
+++ b/jack/src/com/android/jack/dx/util/ByteArray.java
@@ -45,9 +45,7 @@
    * the slice (exclusive)
    */
   public ByteArray(byte[] bytes, int start, int end) {
-    if (bytes == null) {
-      throw new NullPointerException("bytes == null");
-    }
+    assert bytes != null;
 
     if (start < 0) {
       throw new IllegalArgumentException("start < 0");
diff --git a/jack/src/com/android/jack/dx/util/ByteArrayAnnotatedOutput.java b/jack/src/com/android/jack/dx/util/ByteArrayAnnotatedOutput.java
index fcfab9f..0b448f6 100644
--- a/jack/src/com/android/jack/dx/util/ByteArrayAnnotatedOutput.java
+++ b/jack/src/com/android/jack/dx/util/ByteArrayAnnotatedOutput.java
@@ -99,10 +99,7 @@
    * @param stretchy whether the instance is to be stretchy
    */
   private ByteArrayAnnotatedOutput(byte[] data, boolean stretchy) {
-    if (data == null) {
-      throw new NullPointerException("data == null");
-    }
-
+    assert data != null;
     this.stretchy = stretchy;
     this.data = data;
     this.cursor = 0;
diff --git a/jack/src/com/android/jack/dx/util/ExceptionWithContext.java b/jack/src/com/android/jack/dx/util/ExceptionWithContext.java
index 028e917..34eadd9 100644
--- a/jack/src/com/android/jack/dx/util/ExceptionWithContext.java
+++ b/jack/src/com/android/jack/dx/util/ExceptionWithContext.java
@@ -108,10 +108,7 @@
    * @param str {@code non-null;} new context
    */
   public void addContext(String str) {
-    if (str == null) {
-      throw new NullPointerException("str == null");
-    }
-
+    assert str != null;
     context.append(str);
     if (!str.endsWith("\n")) {
       context.append('\n');
diff --git a/jack/src/com/android/jack/dx/util/IndentingWriter.java b/jack/src/com/android/jack/dx/util/IndentingWriter.java
index b7a8e41..ab31a35 100644
--- a/jack/src/com/android/jack/dx/util/IndentingWriter.java
+++ b/jack/src/com/android/jack/dx/util/IndentingWriter.java
@@ -55,19 +55,13 @@
    */
   public IndentingWriter(Writer out, int width, String prefix) {
     super(out);
-
-    if (out == null) {
-      throw new NullPointerException("out == null");
-    }
+    assert out != null;
+    assert prefix != null;
 
     if (width < 0) {
       throw new IllegalArgumentException("width < 0");
     }
 
-    if (prefix == null) {
-      throw new NullPointerException("prefix == null");
-    }
-
     this.width = (width != 0) ? width : Integer.MAX_VALUE;
     this.maxIndent = width >> 1;
     this.prefix = (prefix.length() == 0) ? null : prefix;
diff --git a/jack/src/com/android/jack/dx/util/LabeledList.java b/jack/src/com/android/jack/dx/util/LabeledList.java
index 3579dbf..2f27822 100644
--- a/jack/src/com/android/jack/dx/util/LabeledList.java
+++ b/jack/src/com/android/jack/dx/util/LabeledList.java
@@ -130,9 +130,7 @@
 
     for (int i = 0; i < sz; i++) {
       LabeledItem li = (LabeledItem) get0(i);
-      if (li == null) {
-        throw new NullPointerException("null at index " + i);
-      }
+      assert li != null;
       result[i] = li.getLabel();
     }
 
diff --git a/jack/src/com/android/jack/dx/util/TwoColumnOutput.java b/jack/src/com/android/jack/dx/util/TwoColumnOutput.java
index 204c20f..f5cc224 100644
--- a/jack/src/com/android/jack/dx/util/TwoColumnOutput.java
+++ b/jack/src/com/android/jack/dx/util/TwoColumnOutput.java
@@ -84,9 +84,8 @@
    * @param spacer {@code non-null;} spacer string to sit between the two columns
    */
   public TwoColumnOutput(Writer out, int leftWidth, int rightWidth, String spacer) {
-    if (out == null) {
-      throw new NullPointerException("out == null");
-    }
+    assert out != null;
+    assert spacer != null;
 
     if (leftWidth < 1) {
       throw new IllegalArgumentException("leftWidth < 1");
@@ -96,10 +95,6 @@
       throw new IllegalArgumentException("rightWidth < 1");
     }
 
-    if (spacer == null) {
-      throw new NullPointerException("spacer == null");
-    }
-
     StringWriter leftWriter = new StringWriter(1000);
     StringWriter rightWriter = new StringWriter(1000);
 
diff --git a/jack/src/com/android/jack/ecj/loader/jast/JAstBinaryType.java b/jack/src/com/android/jack/ecj/loader/jast/JAstBinaryType.java
index 3080330..d7f4497 100644
--- a/jack/src/com/android/jack/ecj/loader/jast/JAstBinaryType.java
+++ b/jack/src/com/android/jack/ecj/loader/jast/JAstBinaryType.java
@@ -43,6 +43,7 @@
 import org.eclipse.jdt.internal.compiler.env.IBinaryType;
 import org.eclipse.jdt.internal.compiler.env.IBinaryTypeAnnotation;
 import org.eclipse.jdt.internal.compiler.env.ITypeAnnotationWalker;
+import org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.ExternalAnnotationStatus;
 import org.eclipse.jdt.internal.compiler.lookup.ExtraCompilerModifiers;
 import org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment;
 
@@ -459,4 +460,9 @@
     // Jack does not support ecj external annotation file
     return walker;
   }
+
+  @Override
+  public ExternalAnnotationStatus getExternalAnnotationStatus() {
+    return ExternalAnnotationStatus.FROM_SOURCE;
+  }
 }
diff --git a/jack/src/com/android/jack/frontend/MethodIdDuplicateRemover.java b/jack/src/com/android/jack/frontend/MethodIdDuplicateRemover.java
index f7bd125..5bb764d 100644
--- a/jack/src/com/android/jack/frontend/MethodIdDuplicateRemover.java
+++ b/jack/src/com/android/jack/frontend/MethodIdDuplicateRemover.java
@@ -71,6 +71,20 @@
     }
 
     @Nonnull
+    private JMethodId getResolvedMethodId(@Nonnull JClassOrInterface receiverType,
+        @Nonnull JMethodId id) {
+      Collection<JMethod> methods = id.getMethods();
+      if (!methods.isEmpty()) {
+        JMethod method = methods.iterator().next();
+        return method.getMethodId();
+      } else {
+        JMethodIdWide methodIdWide = id.getMethodIdWide();
+        return receiverType.getOrCreateMethodId(methodIdWide.getName(),
+            methodIdWide.getParamTypes(), methodIdWide.getKind(), id.getType());
+      }
+    }
+
+    @Nonnull
     private JMethodIdWide getResolvedMethodIdWide(
         @Nonnull JClassOrInterface receiverType, @Nonnull JMethodIdWide id) {
       Collection<JMethod> methods = id.getMethods();
@@ -100,7 +114,7 @@
 
     @Override
     public boolean visit(@Nonnull JMethodCall call) {
-      JMethodIdWide id = getResolvedMethodIdWide(call.getReceiverType(), call.getMethodId());
+      JMethodId id = getResolvedMethodId(call.getReceiverType(), call.getMethodId());
       call.resolveMethodId(id);
       return super.visit(call);
     }
diff --git a/jack/src/com/android/jack/frontend/java/JAstBuilder.java b/jack/src/com/android/jack/frontend/java/JAstBuilder.java
index 6e25731..cc20154 100644
--- a/jack/src/com/android/jack/frontend/java/JAstBuilder.java
+++ b/jack/src/com/android/jack/frontend/java/JAstBuilder.java
@@ -19,6 +19,7 @@
 
 import com.android.jack.JackEventType;
 import com.android.jack.JackUserException;
+import com.android.jack.Options;
 import com.android.jack.frontend.java.JackBatchCompiler.TransportJUEAroundEcjError;
 import com.android.jack.ir.JNodeInternalError;
 import com.android.jack.ir.ast.JDefinedClassOrInterface;
@@ -28,6 +29,8 @@
 import com.android.jack.ir.impl.JackIrBuilder;
 import com.android.jack.ir.impl.ReferenceMapper;
 import com.android.jack.ir.impl.SourceCompilationException;
+import com.android.sched.util.config.Config;
+import com.android.sched.util.config.ThreadConfig;
 import com.android.sched.util.location.FileLocation;
 import com.android.sched.util.log.Event;
 import com.android.sched.util.log.Tracer;
@@ -63,6 +66,9 @@
 class JAstBuilder extends JavaParser {
 
   @Nonnull
+  private final Config config = ThreadConfig.getConfig();
+
+  @Nonnull
   private final Tracer tracer = TracerFactory.getTracer();
 
   @Nonnull
@@ -153,6 +159,10 @@
         for (JDefinedClassOrInterface type : types) {
           session.addTypeToEmit(type);
         }
+
+        if (config.get(Options.EMIT_CLASS_FILES).booleanValue()) {
+          unit.generateCode();
+        }
       }
     } catch (IllegalArgumentException e) {
       // This is a workaround to reduce bad handling of IllegalArgumentException in
@@ -260,19 +270,19 @@
   }
 
   @Override
-  public void compile(ICompilationUnit[] sourceUnits) {
+  protected void backupAptProblems() {
+    resetJack = true;
+    super.backupAptProblems();
+  }
+
+  @Override
+  public void reset() {
+    super.reset();
     if (resetJack) {
       session.reset();
       astBuilder = new JackIrBuilder(lookupEnvironment, session);
       resetJack = false;
     }
-    super.compile(sourceUnits);
-  }
-
-  @Override
-  public void reset() {
-    resetJack = true;
-    super.reset();
   }
 
   public void finishCompilation() {
diff --git a/jack/src/com/android/jack/incremental/CommonFilter.java b/jack/src/com/android/jack/incremental/CommonFilter.java
index d810517..3c12400 100644
--- a/jack/src/com/android/jack/incremental/CommonFilter.java
+++ b/jack/src/com/android/jack/incremental/CommonFilter.java
@@ -56,6 +56,7 @@
 import com.android.sched.util.file.CannotCreateFileException;
 import com.android.sched.util.file.Directory;
 import com.android.sched.util.file.FileOrDirectory;
+import com.android.sched.util.file.FileOrDirectory.Existence;
 import com.android.sched.util.file.FileOrDirectory.Permission;
 import com.android.sched.util.file.Files;
 import com.android.sched.util.file.InputZipFile;
@@ -71,6 +72,7 @@
 import com.android.sched.vfs.ReadZipFS;
 import com.android.sched.vfs.VFS;
 import com.android.sched.vfs.VPath;
+import com.android.sched.vfs.WrongVFSTypeException;
 import com.android.sched.vfs.ZipUtils;
 
 import java.io.File;
@@ -344,11 +346,11 @@
         File jackJar = new File(location.toURI().getPath());
         for (String prefix: JACK_DEFAULT_LIB_PATH) {
           VFS jackVfs = new PrefixedFS(new ReadZipFS(new InputZipFile(jackJar.getPath())),
-              new VPath(prefix, ZipUtils.ZIP_SEPARATOR));
+              new VPath(prefix, ZipUtils.ZIP_SEPARATOR), Existence.MUST_EXIST);
           libraries.add(JackLibraryFactory.getInputLibrary(jackVfs));
         }
         return libraries;
-      } catch (LibraryException e) {
+      } catch (LibraryException | WrongVFSTypeException e) {
         EmbeddedLibraryLoadingException reportable = new EmbeddedLibraryLoadingException(e);
         session.getReporter().report(Severity.FATAL, reportable);
         throw new JackAbortException(reportable);
diff --git a/jack/src/com/android/jack/ir/JackFormatIr.java b/jack/src/com/android/jack/ir/JackFormatIr.java
index a071824..b9308f2 100644
--- a/jack/src/com/android/jack/ir/JackFormatIr.java
+++ b/jack/src/com/android/jack/ir/JackFormatIr.java
@@ -17,6 +17,7 @@
 package com.android.jack.ir;
 
 import com.android.jack.backend.dex.annotations.AnnotationMethodDefaultValue;
+import com.android.jack.debug.DebugVariableInfoMarker;
 import com.android.jack.digest.OriginDigestMarker;
 import com.android.jack.ir.ast.JAbsentArrayDimension;
 import com.android.jack.ir.ast.JAddOperation;
@@ -139,6 +140,7 @@
 @Description("All JNodes, tags or markers that represent the Jack format.")
 @ComposedOf({AnnotationMethodDefaultValue.class,
     BooleanTestOutsideIf.class,
+    DebugVariableInfoMarker.class,
     DefaultBridgeIntoInterface.class,
     EmptyClinit.class,
     ImplicitBoxingAndUnboxing.class,
diff --git a/jack/src/com/android/jack/ir/ast/JAbstractMethodCall.java b/jack/src/com/android/jack/ir/ast/JAbstractMethodCall.java
index 3cc9f27..cdda0d6 100644
--- a/jack/src/com/android/jack/ir/ast/JAbstractMethodCall.java
+++ b/jack/src/com/android/jack/ir/ast/JAbstractMethodCall.java
@@ -43,22 +43,17 @@
   @Nonnull
   private final List<JExpression> args = new ArrayList<JExpression>();
   @Nonnull
-  private JMethodIdWide methodId;
-  @Nonnull
-  private final JType returnType;
+  private JMethodId methodId;
 
 
   protected JAbstractMethodCall(@Nonnull SourceInfo info, @CheckForNull JExpression instance,
-      @Nonnull JClassOrInterface receiverType, @Nonnull JMethodIdWide methodId,
-      @Nonnull JType returnType) {
+      @Nonnull JClassOrInterface receiverType, @Nonnull JMethodId methodId) {
     super(info);
     assert receiverType != null;
     assert methodId != null;
-    assert returnType != null;
     this.instance = instance;
     this.receiverType = receiverType;
     this.methodId = methodId;
-    this.returnType = returnType;
   }
 
   /**
@@ -139,17 +134,22 @@
   }
 
   @Nonnull
-  public JMethodIdWide getMethodId() {
+  public JMethodIdWide getMethodIdWide() {
+    return methodId.getMethodIdWide();
+  }
+
+  @Nonnull
+  public JMethodId getMethodId() {
     return methodId;
   }
 
   @Nonnull
   @Override
   public JType getType() {
-    return returnType;
+    return methodId.getType();
   }
 
-  public void resolveMethodId(@Nonnull JMethodIdWide methodId) {
+  public void resolveMethodId(@Nonnull JMethodId methodId) {
     this.methodId = methodId;
   }
 
@@ -178,22 +178,43 @@
 
   @Nonnull
   public String getMethodName() {
-    return methodId.getName();
+    return methodId.getMethodIdWide().getName();
   }
 
   public abstract boolean isCallToPolymorphicMethod();
 
   static boolean isCallToPolymorphicMethod(@Nonnull JClassOrInterface receiverType,
-      @Nonnull JMethodIdWide methodId, @Nonnull JType returnType) {
+      @Nonnull JMethodId methodId) {
     UserFriendlyFormatter formatter = UserFriendlyFormatter.getFormatter();
-    String calledMethodName = methodId.getName();
-    List<JType> paramTypes = methodId.getParamTypes();
+    String calledMethodName = methodId.getMethodIdWide().getName();
+    List<JType> paramTypes = methodId.getMethodIdWide().getParamTypes();
 
     return receiverType != null
-        && formatter.getName(returnType).equals("java.lang.Object")
-        && formatter.getName(receiverType).equals("java.lang.invoke.MethodHandle")
+        && formatter.getName(methodId.getType()).equals("java.lang.Object")
+        && isSubtypeOfOrMethodHandle(formatter, receiverType)
         && (calledMethodName.equals("invoke") || calledMethodName.equals("invokeExact"))
         && paramTypes.size() == 1
         && formatter.getName(paramTypes.get(0)).equals("java.lang.Object[]");
   }
+
+  private static boolean isSubtypeOfOrMethodHandle(@Nonnull UserFriendlyFormatter formatter,
+      @Nonnull JClassOrInterface type) {
+    if (type instanceof JPhantomClass) {
+      return isSubtypeOfOrMethodHandle(formatter, (JPhantomClass) type);
+    } else if (type instanceof JDefinedClass) {
+      return isSubtypeOfOrMethodHandle(formatter, (JDefinedClass) type);
+    }
+    return false;
+  }
+
+  private static boolean isSubtypeOfOrMethodHandle(@Nonnull UserFriendlyFormatter formatter,
+      @Nonnull JPhantomClass type) {
+    return formatter.getName(type).equals("java.lang.invoke.MethodHandle");
+  }
+
+  private static boolean isSubtypeOfOrMethodHandle(@Nonnull UserFriendlyFormatter formatter,
+      @Nonnull JDefinedClass type) {
+    return formatter.getName(type).equals("java.lang.invoke.MethodHandle")
+        || isSubtypeOfOrMethodHandle(formatter, type.getSuperClass());
+  }
 }
diff --git a/jack/src/com/android/jack/ir/ast/JClassLiteral.java b/jack/src/com/android/jack/ir/ast/JClassLiteral.java
index f45d916..ec04608 100644
--- a/jack/src/com/android/jack/ir/ast/JClassLiteral.java
+++ b/jack/src/com/android/jack/ir/ast/JClassLiteral.java
@@ -91,7 +91,9 @@
         || parent instanceof JAnnotationMethod
         || parent instanceof JFieldInitializer
         || parent instanceof JReturnStatement
-        || parent instanceof JSynchronizedBlock)) {
+        || parent instanceof JSynchronizedBlock
+        || parent instanceof JLock
+        || parent instanceof JUnlock)) {
       throw new JNodeInternalError(this, "Invalid parent");
     }
   }
diff --git a/jack/src/com/android/jack/ir/ast/JDefinedClassOrInterface.java b/jack/src/com/android/jack/ir/ast/JDefinedClassOrInterface.java
index 8ea9ffb..781f660 100644
--- a/jack/src/com/android/jack/ir/ast/JDefinedClassOrInterface.java
+++ b/jack/src/com/android/jack/ir/ast/JDefinedClassOrInterface.java
@@ -287,6 +287,17 @@
    * @return Returns the matching method if any, throws a {@link JMethodLookupException} otherwise.
    */
   @Nonnull
+  public JMethod getMethod(@Nonnull JMethodId methodId) throws JMethodLookupException {
+    JMethodIdWide methodIdWide = methodId.getMethodIdWide();
+    return getMethod(methodIdWide.getName(), methodId.getType(), methodIdWide.getParamTypes());
+  }
+
+  /**
+   * Returns the {@link JMethod} with the signature {@code signature} declared for this type.
+   *
+   * @return Returns the matching method if any, throws a {@link JMethodLookupException} otherwise.
+   */
+  @Nonnull
   public JMethod getMethod(@Nonnull String name, @Nonnull JType returnType,
       @Nonnull JType... args) throws JMethodLookupException {
     return (getMethod(name, returnType, Arrays.asList(args)));
diff --git a/jack/src/com/android/jack/ir/ast/JDefinedInterface.java b/jack/src/com/android/jack/ir/ast/JDefinedInterface.java
index 2ef2497..d7a9c80 100644
--- a/jack/src/com/android/jack/ir/ast/JDefinedInterface.java
+++ b/jack/src/com/android/jack/ir/ast/JDefinedInterface.java
@@ -129,8 +129,7 @@
         continue;
       }
       try {
-        JMethod jloMth = ((JDefinedClass) jlo).getMethod(mth.getName(), mth.getType(),
-            mth.getMethodIdWide().getParamTypes());
+        JMethod jloMth = ((JDefinedClass) jlo).getMethod(mth.getMethodId());
         if (jloMth.isPublic() && !jloMth.isStatic()) {
           // Do not take overriding of jlo public non static methods
           continue;
diff --git a/jack/src/com/android/jack/ir/ast/JIfStatement.java b/jack/src/com/android/jack/ir/ast/JIfStatement.java
index a5a2c77..c355980 100644
--- a/jack/src/com/android/jack/ir/ast/JIfStatement.java
+++ b/jack/src/com/android/jack/ir/ast/JIfStatement.java
@@ -21,6 +21,7 @@
 import com.android.sched.scheduler.ScheduleInstance;
 import com.android.sched.transform.TransformRequest;
 
+import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 
 /**
@@ -29,26 +30,34 @@
 @Description("Java if statement")
 public class JIfStatement extends JStatement {
 
+  @CheckForNull
   private JStatement elseStmt;
+  @Nonnull
   private JExpression ifExpr;
+  @Nonnull
   private JStatement thenStmt;
 
-  public JIfStatement(
-      SourceInfo info, JExpression ifExpr, JStatement thenStmt, JStatement elseStmt) {
+  public JIfStatement(@Nonnull SourceInfo info, @Nonnull JExpression ifExpr,
+      @Nonnull JStatement thenStmt, @CheckForNull JStatement elseStmt) {
     super(info);
+    assert ifExpr != null;
+    assert thenStmt != null;
     this.ifExpr = ifExpr;
     this.thenStmt = thenStmt;
     this.elseStmt = elseStmt;
   }
 
+  @CheckForNull
   public JStatement getElseStmt() {
     return elseStmt;
   }
 
+  @Nonnull
   public JExpression getIfExpr() {
     return ifExpr;
   }
 
+  @Nonnull
   public JStatement getThenStmt() {
     return thenStmt;
   }
@@ -57,9 +66,7 @@
   public void traverse(@Nonnull JVisitor visitor) {
     if (visitor.visit(this)) {
       visitor.accept(ifExpr);
-      if (thenStmt != null) {
-        visitor.accept(thenStmt);
-      }
+      visitor.accept(thenStmt);
       if (elseStmt != null) {
         visitor.accept(elseStmt);
       }
@@ -71,9 +78,7 @@
   public void traverse(@Nonnull ScheduleInstance<? super Component> schedule) throws Exception {
     schedule.process(this);
     ifExpr.traverse(schedule);
-    if (thenStmt != null) {
-      thenStmt.traverse(schedule);
-    }
+    thenStmt.traverse(schedule);
     if (elseStmt != null) {
       elseStmt.traverse(schedule);
     }
@@ -97,9 +102,8 @@
 
   @Override
   protected void removeImpl(@Nonnull JNode existingNode) throws UnsupportedOperationException {
-    if (thenStmt == existingNode) {
-      thenStmt = null;
-    } else if (elseStmt == existingNode) {
+    assert existingNode != thenStmt;
+    if (elseStmt == existingNode) {
       elseStmt = null;
     } else {
       super.removeImpl(existingNode);
diff --git a/jack/src/com/android/jack/ir/ast/JMethodCall.java b/jack/src/com/android/jack/ir/ast/JMethodCall.java
index 7e331ca..de3bbb0 100644
--- a/jack/src/com/android/jack/ir/ast/JMethodCall.java
+++ b/jack/src/com/android/jack/ir/ast/JMethodCall.java
@@ -48,21 +48,20 @@
    * forces the caller to potentially deal with cloning objects if needed.
    */
   public JMethodCall(@Nonnull JMethodCall other, @CheckForNull JExpression instance) {
-    super(other.getSourceInfo(), instance, other.getReceiverType(), other.getMethodId(),
-        other.getType());
+    super(other.getSourceInfo(), instance, other.getReceiverType(), other.getMethodId());
     dispatchKind = other.getDispatchKind();
     assert other.getReceiverType() == null || !JPolymorphicMethodCall
-        .isCallToPolymorphicMethod(other.getReceiverType(), other.getMethodId(), other.getType());
+        .isCallToPolymorphicMethod(other.getReceiverType(), other.getMethodId());
   }
 
   public JMethodCall(@Nonnull SourceInfo info, @CheckForNull JExpression instance,
-      @Nonnull JClassOrInterface receiverType, @Nonnull JMethodIdWide methodId,
-      @Nonnull JType returnType, boolean isVirtualDispatch) {
-    super(info, instance, receiverType, methodId, returnType);
+      @Nonnull JClassOrInterface receiverType, @Nonnull JMethodId methodId,
+      boolean isVirtualDispatch) {
+    super(info, instance, receiverType, methodId);
     assert methodId != null;
     assert receiverType == null
-        || !JPolymorphicMethodCall.isCallToPolymorphicMethod(receiverType, methodId, returnType);
-    assert (!isVirtualDispatch) || methodId.getKind() == MethodKind.INSTANCE_VIRTUAL;
+        || !JPolymorphicMethodCall.isCallToPolymorphicMethod(receiverType, methodId);
+    assert (!isVirtualDispatch) || getMethodIdWide().getKind() == MethodKind.INSTANCE_VIRTUAL;
     this.dispatchKind = isVirtualDispatch ? DispatchKind.VIRTUAL : DispatchKind.DIRECT;
   }
 
@@ -93,6 +92,6 @@
 
   @Override
   public boolean isCallToPolymorphicMethod() {
-    return isCallToPolymorphicMethod(getReceiverType(), getMethodId(), getType());
+    return isCallToPolymorphicMethod(getReceiverType(), getMethodId());
   }
 }
diff --git a/jack/src/com/android/jack/ir/ast/JModifier.java b/jack/src/com/android/jack/ir/ast/JModifier.java
index f8e937d..76a5ecc 100644
--- a/jack/src/com/android/jack/ir/ast/JModifier.java
+++ b/jack/src/com/android/jack/ir/ast/JModifier.java
@@ -43,6 +43,7 @@
   public static final int SYNTHETIC    = 0x1000;
   public static final int ANNOTATION   = 0x2000;
   public static final int ENUM         = 0x4000;
+  public static final int IMPLICIT     = 0x8000;
   public static final int STATIC_INIT  = 0x10000;
   public static final int DEPRECATED   = 0x100000;
 
@@ -53,6 +54,7 @@
   public static final int ANONYMOUS_TYPE          = 0x40000;
   public static final int CAPTURED_VARIABLE       = 0x80000;
   public static final int LAMBDA_METHOD           = 0x200000;
+  public static final int NAME_PRESENT            = 0x400000;
 
   private static final int TYPE_MODIFIER_MASK = PUBLIC | PROTECTED | PRIVATE | STATIC | FINAL
       | ENUM | SYNTHETIC | ABSTRACT | INTERFACE | ANNOTATION | SUPER | STRICTFP | DEPRECATED;
@@ -66,6 +68,9 @@
 
   private static final int LOCAL_MODIFIER_MASK = FINAL | SYNTHETIC | CAPTURED_VARIABLE;
 
+  private static final int PARAMETER_MODIFIER_MASK =
+      FINAL | SYNTHETIC | CAPTURED_VARIABLE | IMPLICIT | NAME_PRESENT;
+
   public static boolean isPublic(int modifier) {
     return ((modifier & PUBLIC) == PUBLIC);
   }
@@ -154,6 +159,15 @@
     return ((modifier & DEPRECATED) == DEPRECATED);
   }
 
+  public static boolean isImplicit(int modifier) {
+    return ((modifier & IMPLICIT) == IMPLICIT);
+  }
+
+  public static boolean isNamePresent(int modifier) {
+    return ((modifier & NAME_PRESENT) == NAME_PRESENT);
+  }
+
+
   /**
    * Check that this modifier only has flags meant for types
    * @param modifier the modifier to test
@@ -291,7 +305,7 @@
    * @return true if the modifier is conform, false otherwise
    */
   public static boolean isParameterModifier(int modifier) {
-    return ((modifier & LOCAL_MODIFIER_MASK) == modifier);
+    return ((modifier & PARAMETER_MODIFIER_MASK) == modifier);
   }
 
   private static void getStringModifierCommon(int modifier, StringBuilder modifierStrBuilder) {
@@ -376,8 +390,8 @@
   }
 
   @Nonnull
-  public static String getStringVariableModifier(int modifier) {
-    assert isLocalModifier(modifier);
+  public static String getStringParameterModifier(int modifier) {
+    assert isParameterModifier(modifier);
 
     StringBuilder modifierStrBuilder = new StringBuilder();
     getStringModifierCommon(modifier, modifierStrBuilder);
diff --git a/jack/src/com/android/jack/ir/ast/JNewInstance.java b/jack/src/com/android/jack/ir/ast/JNewInstance.java
index 5e00036..36c688e 100644
--- a/jack/src/com/android/jack/ir/ast/JNewInstance.java
+++ b/jack/src/com/android/jack/ir/ast/JNewInstance.java
@@ -29,6 +29,9 @@
 @Description("A new instance expression")
 public class JNewInstance extends JMethodCall {
 
+  @Nonnull
+  private final JClass createdType;
+
   /**
    * Initialize a new instance operation equivalent to another one. The new
    * object has no arguments on initialization. This forces the caller to
@@ -36,17 +39,19 @@
    */
   public JNewInstance(JNewInstance other) {
     super(other, null);
+    createdType = other.createdType;
   }
 
   public JNewInstance(@Nonnull SourceInfo info, @Nonnull JClassOrInterface receiverType,
-      @Nonnull JMethodIdWide ctor) {
-    super(info, null, receiverType, ctor, receiverType, false /* isVirtualDispatch */);
+      @Nonnull JMethodId ctor) {
+    super(info, null, receiverType, ctor, false /* isVirtualDispatch */);
+    createdType = (JClass) receiverType;
   }
 
   @Nonnull
   @Override
   public JClass getType() {
-    return (JClass) super.getType();
+    return createdType;
   }
 
   @Override
diff --git a/jack/src/com/android/jack/ir/ast/JNode.java b/jack/src/com/android/jack/ir/ast/JNode.java
index 4f2129e..368ddce 100644
--- a/jack/src/com/android/jack/ir/ast/JNode.java
+++ b/jack/src/com/android/jack/ir/ast/JNode.java
@@ -90,6 +90,7 @@
   @Nonnull
   protected SourceInfo info;
 
+  @CheckForNull
   protected JNode parent = null;
 
   protected JNode(@Nonnull SourceInfo info) {
@@ -100,6 +101,7 @@
   /**
    * @return the parent
    */
+  @CheckForNull
   public JNode getParent() {
     return parent;
   }
@@ -255,14 +257,14 @@
     return false;
   }
 
-  public void updateParents(JNode parent) {
+  public void updateParents(@Nonnull JNode parent) {
     new ParentSetterVisitor(parent).accept(this);
   }
 
   /**
    * @param parent the parent to set
    */
-  private void setParent(JNode parent) {
+  private void setParent(@Nonnull JNode parent) {
     assert parent != null;
     this.parent = parent;
   }
diff --git a/jack/src/com/android/jack/ir/ast/JParameter.java b/jack/src/com/android/jack/ir/ast/JParameter.java
index 499ac1a..dce5cde 100644
--- a/jack/src/com/android/jack/ir/ast/JParameter.java
+++ b/jack/src/com/android/jack/ir/ast/JParameter.java
@@ -174,4 +174,20 @@
   public void removeLoader() {
     loader = NopParameterLoader.INSTANCE;
   }
+
+  public void setimplicit() {
+    modifier |= JModifier.IMPLICIT;
+  }
+
+  public boolean isImplicit() {
+    return (JModifier.isImplicit(modifier));
+  }
+
+  public void setNamePresent() {
+    modifier |= JModifier.NAME_PRESENT;
+  }
+
+  public boolean isNamePresent() {
+    return (JModifier.isNamePresent(modifier));
+  }
 }
diff --git a/jack/src/com/android/jack/ir/ast/JPolymorphicMethodCall.java b/jack/src/com/android/jack/ir/ast/JPolymorphicMethodCall.java
index 0cdfd36..34cf67e 100644
--- a/jack/src/com/android/jack/ir/ast/JPolymorphicMethodCall.java
+++ b/jack/src/com/android/jack/ir/ast/JPolymorphicMethodCall.java
@@ -44,10 +44,10 @@
   public JPolymorphicMethodCall(@Nonnull SourceInfo info, @Nonnull JExpression instance,
       @Nonnull JClassOrInterface receiverType, @Nonnull JMethodId methodId,
       @Nonnull JType callSiteReturnType, @Nonnull List<JType> callSiteParameterTypes) {
-    super(info, instance, receiverType, methodId.getMethodIdWide(), methodId.getType());
+    super(info, instance, receiverType, methodId);
 
     assert instance != null;
-    assert isCallToPolymorphicMethod(receiverType, methodId.getMethodIdWide(), methodId.getType());
+    assert isCallToPolymorphicMethod(receiverType, methodId);
 
     this.callSiteReturnType = callSiteReturnType;
     this.callSiteParameterTypes = callSiteParameterTypes;
diff --git a/jack/src/com/android/jack/ir/ast/JReferenceTypeCommon.java b/jack/src/com/android/jack/ir/ast/JReferenceTypeCommon.java
index 5c8fdca..7547100 100644
--- a/jack/src/com/android/jack/ir/ast/JReferenceTypeCommon.java
+++ b/jack/src/com/android/jack/ir/ast/JReferenceTypeCommon.java
@@ -83,7 +83,7 @@
 
   @Override
   @Nonnull
-  public JArrayType getArray() {
+  public synchronized JArrayType getArray() {
     if (array == null) {
       array = new JArrayType(this);
     }
diff --git a/jack/src/com/android/jack/ir/ast/JVariable.java b/jack/src/com/android/jack/ir/ast/JVariable.java
index 302c460..b8ec74e 100644
--- a/jack/src/com/android/jack/ir/ast/JVariable.java
+++ b/jack/src/com/android/jack/ir/ast/JVariable.java
@@ -17,6 +17,7 @@
 
 
 import com.android.jack.Jack;
+import com.android.jack.debug.DebugVariableInfoMarker;
 import com.android.jack.ir.StringInterner;
 import com.android.jack.ir.ast.JPrimitiveType.JPrimitiveTypeEnum;
 import com.android.jack.ir.sourceinfo.SourceInfo;
@@ -38,6 +39,11 @@
 public abstract class JVariable extends JNode implements HasName, CanBeSetFinal,
     CanBeRenamed, HasType, Annotable {
 
+  /**
+   * Name of JParameter is either the name coming from the source code, either the name coming from
+   * Jill through the parameter name information. It is not the name from debug informations. Debug
+   * informations when coming from Jill are put into {@link DebugVariableInfoMarker}.
+   */
   @CheckForNull
   private String name;
   @Nonnull
@@ -110,6 +116,10 @@
     modifier |= JModifier.CAPTURED_VARIABLE;
   }
 
+  public void setModifier(int modifier) {
+    this.modifier = modifier;
+  }
+
   @Override
   public void addAnnotation(@Nonnull JAnnotation annotation) {
     annotations.add(annotation);
diff --git a/jack/src/com/android/jack/ir/formatter/BinarySignatureFormatter.java b/jack/src/com/android/jack/ir/formatter/BinarySignatureFormatter.java
index 94bf498..337b7fb 100644
--- a/jack/src/com/android/jack/ir/formatter/BinarySignatureFormatter.java
+++ b/jack/src/com/android/jack/ir/formatter/BinarySignatureFormatter.java
@@ -107,7 +107,7 @@
       sb.append(getNameInternal(enclosingPackage));
       sb.append(getPackageSeparator());
     }
-    sb.append(classOrInterfaceSimpleName).append(";");
+    sb.append(classOrInterfaceSimpleName).append(';');
     return sb.toString();
   }
 
diff --git a/jack/src/com/android/jack/ir/impl/BaseGenerationVisitor.java b/jack/src/com/android/jack/ir/impl/BaseGenerationVisitor.java
index da5d10e..52090e9 100644
--- a/jack/src/com/android/jack/ir/impl/BaseGenerationVisitor.java
+++ b/jack/src/com/android/jack/ir/impl/BaseGenerationVisitor.java
@@ -673,13 +673,12 @@
     accept(x.getIfExpr());
     rparen();
 
-    if (x.getThenStmt() != null) {
-      nestedStatementPush(x.getThenStmt());
-      accept(x.getThenStmt());
-      nestedStatementPop(x.getThenStmt());
-    }
+    nestedStatementPush(x.getThenStmt());
+    accept(x.getThenStmt());
+    nestedStatementPop(x.getThenStmt());
 
-    if (x.getElseStmt() != null) {
+    JStatement elseStmt = x.getElseStmt();
+    if (elseStmt != null) {
       if (needSemi) {
         semi();
         newline();
@@ -688,15 +687,15 @@
         needSemi = true;
       }
       print(CHARS_ELSE);
-      boolean elseIf = x.getElseStmt() instanceof JIfStatement;
+      boolean elseIf = elseStmt instanceof JIfStatement;
       if (!elseIf) {
-        nestedStatementPush(x.getElseStmt());
+        nestedStatementPush(elseStmt);
       } else {
         space();
       }
-      accept(x.getElseStmt());
+      accept(elseStmt);
       if (!elseIf) {
-        nestedStatementPop(x.getElseStmt());
+        nestedStatementPop(elseStmt);
       }
     }
 
@@ -901,7 +900,7 @@
   public boolean visit(@Nonnull JPolymorphicMethodCall x) {
     JExpression instance = x.getInstance();
     assert instance != null;
-    JMethodIdWide target = x.getMethodId();
+    JMethodIdWide target = x.getMethodIdWide();
     if (x.getInstance() instanceof JThisRef) {
         print(CHARS_THIS);
     } else {
@@ -921,7 +920,7 @@
   @Override
   public boolean visit(@Nonnull JMethodCall x) {
     JExpression instance = x.getInstance();
-    JMethodIdWide target = x.getMethodId();
+    JMethodIdWide target = x.getMethodIdWide();
     if (instance == null) {
       // Static call.
       printTypeName(x.getReceiverType());
@@ -996,7 +995,7 @@
   @Override
   public boolean visit(@Nonnull JNewInstance x) {
     print(CHARS_NEW);
-    JMethodIdWide target = x.getMethodId();
+    JMethodIdWide target = x.getMethodIdWide();
     printName(target);
     lparen();
     visitCollectionWithCommas(x.getArgs().iterator());
@@ -1025,7 +1024,7 @@
   @Override
   public boolean visit(@Nonnull JParameter x) {
     printAnnotationLiterals(x.getAnnotations());
-    print(JModifier.getStringVariableModifier(x.getModifier()));
+    print(JModifier.getStringParameterModifier(x.getModifier()));
     printType(x);
     space();
     printName(x);
diff --git a/jack/src/com/android/jack/ir/impl/JackIrBuilder.java b/jack/src/com/android/jack/ir/impl/JackIrBuilder.java
index 52c1ec2..705d780 100644
--- a/jack/src/com/android/jack/ir/impl/JackIrBuilder.java
+++ b/jack/src/com/android/jack/ir/impl/JackIrBuilder.java
@@ -182,6 +182,7 @@
 import org.eclipse.jdt.internal.compiler.ast.IntLiteral;
 import org.eclipse.jdt.internal.compiler.ast.LabeledStatement;
 import org.eclipse.jdt.internal.compiler.ast.LambdaExpression;
+import org.eclipse.jdt.internal.compiler.ast.Literal;
 import org.eclipse.jdt.internal.compiler.ast.LocalDeclaration;
 import org.eclipse.jdt.internal.compiler.ast.LongLiteral;
 import org.eclipse.jdt.internal.compiler.ast.MarkerAnnotation;
@@ -713,8 +714,12 @@
             value = pop(x.valueIfFalse);
             condition = pop(x.condition);
           }
-          push(new JMultiExpression(info,
-             condition,  generateImplicitConversion(x.implicitConversion, value)));
+          if (condition instanceof JBooleanLiteral) {
+            push(generateImplicitConversion(x.implicitConversion, value));
+          } else {
+            push(new JMultiExpression(info, condition,
+                generateImplicitConversion(x.implicitConversion, value)));
+          }
         } else {
           JExpression valueIfFalse = pop(x.valueIfFalse);
           JExpression valueIfTrue = pop(x.valueIfTrue);
@@ -748,8 +753,10 @@
       final int typeId = (implicitConversionCode & TypeIds.IMPLICIT_CONVERSION_MASK) >> 4;
       JPrimitiveType primitiveType = getJType(typeId);
       if (primitiveType != null) {
-        convertedExpression = new JDynamicCastOperation(convertedExpression.getSourceInfo(),
-            convertedExpression, primitiveType);
+        if (!primitiveType.isSameType(convertedExpression.getType())) {
+          convertedExpression = new JDynamicCastOperation(convertedExpression.getSourceInfo(),
+              convertedExpression, primitiveType);
+        }
 
         if ((implicitConversionCode & TypeIds.BOXING) != 0) {
           convertedExpression = TypeLegalizer.box(convertedExpression,
@@ -1503,7 +1510,7 @@
 
         JMethodCall methodCall =
             new JMethodCall(sourceInfo, instanceExpr, methodToCall.getEnclosingType(),
-                methodToCall.getMethodIdWide(), methodToCall.getType(), isVirtualDispatch);
+                methodToCall.getMethodId(), isVirtualDispatch);
 
         addArgToMethodCall(referenceExpression, argsOfLambdaMth, methodCall, firstParamIdx);
 
@@ -1559,7 +1566,7 @@
       assert constructor instanceof JConstructor;
 
       JNewInstance newInstance =
-          new JNewInstance(sourceInfo, (JClassOrInterface) type, constructor.getMethodIdWide());
+          new JNewInstance(sourceInfo, (JClassOrInterface) type, constructor.getMethodId());
 
       boolean isNestedType = referenceExpression.receiverType.isNestedType();
 
@@ -3138,18 +3145,22 @@
       JMethod implMethod = getTypeMap().get(jdtBridgeMethod.targetMethod);
       SourceInfo info = implMethod.getSourceInfo();
       String[] paramNames = null;
+      int [] modifiers = null;
       List<JParameter> implParams = implMethod.getParams();
       if (jdtBridgeMethod.parameters != null) {
         int paramCount = implParams.size();
         assert paramCount == jdtBridgeMethod.parameters.length;
         paramNames = new String[paramCount];
+        modifiers = new int[paramCount];
         for (int i = 0; i < paramCount; ++i) {
           paramNames[i] = implParams.get(i).getName();
+          modifiers[i] = JModifier.SYNTHETIC | JModifier.NAME_PRESENT;
         }
       }
       // bridge methods should not be flagged as VARARGS
       jdtBridgeMethod.modifiers &= ~JModifier.VARARGS;
-      JMethod bridgeMethod = createSyntheticMethodFromBinding(info, jdtBridgeMethod, paramNames);
+      JMethod bridgeMethod =
+          createSyntheticMethodFromBinding(info, jdtBridgeMethod, paramNames, modifiers);
 
       // We can't complete the bridge yet with annotations because target annotations may not be
       // created yet, so lets delay their completion for the end the conversion from ecj model to
@@ -3598,7 +3609,7 @@
       MethodBinding b = x.binding;
       assert b.isConstructor();
       JConstructor ctor = (JConstructor) getTypeMap().get(b);
-      JMethodCall call = new JNewInstance(info, ctor.getEnclosingType(), ctor.getMethodIdWide());
+      JMethodCall call = new JNewInstance(info, ctor.getEnclosingType(), ctor.getMethodId());
       JExpression qualExpr = pop(qualifier);
 
       // Enums: hidden arguments for the name and id.
@@ -3792,10 +3803,49 @@
       return result;
     }
 
+    /**
+     * This class checks to make sure if the expression contains a unary plus. If so, we will
+     * signal simplify() to not use the constant that ECJ computed since it contains a bug. It will
+     * also assert that this bug exists. Should that assertion start failing, we know the bug is
+     * fixed and this extra check is not necessary.
+     *
+     * {@link "https://bugs.eclipse.org/bugs/show_bug.cgi?id=509590"}
+     */
+    private final class EcjBugChecker extends ASTVisitor {
+      private boolean hasEcjUnaryPosBug = false;
+      @Override
+      public void endVisit(UnaryExpression x, BlockScope b) {
+        int operator = ((x.bits & ASTNode.OperatorMASK) >> ASTNode.OperatorSHIFT);
+        // We don't take the constant result from ECJ if it involves a unary + and a non-literal.
+        if (operator == OperatorIds.PLUS && !(x.expression instanceof Literal)) {
+          hasEcjUnaryPosBug = true;
+          // We have an (+ (expression))
+          Constant outer = x.constant;
+          Constant inner = x.expression.constant;
+
+          // Since the + operator is no-op, the inner and the outer constant should be exactly the
+          // same. If not, the current version of ECJ has the mentioned bug.
+          @SuppressWarnings("unused")
+          boolean hasEcjUnaryPosBug = !outer.equals(inner);
+
+          // We are going to assume there is a bug in ECJ and work around it. If this fails,
+          // we know that the bug has been fixed.
+          // assert hasEcjUnaryPosBug; // STOPSHIP THIS IS REMOVE DUE TO BUG # 34758593
+        }
+      }
+    }
+
     private JExpression simplify(JExpression result, Expression x) {
       if (x.constant != null && x.constant != Constant.NotAConstant) {
-        // Prefer JDT-computed constant value to the actual written expression.
-        result = getConstant(result.getSourceInfo(), x.constant);
+        EcjBugChecker checker = new EcjBugChecker();
+        x.traverse(checker, (BlockScope) null);
+        if (checker.hasEcjUnaryPosBug) {
+          // Don't take the result from ECJ if there is a unary pos unless the bug has been fixed.
+          return result;
+        } else {
+          // Prefer JDT-computed constant value to the actual written expression.
+          result = getConstant(result.getSourceInfo(), x.constant);
+        }
       } else if (x instanceof FieldReference) {
         FieldBinding binding = ((FieldReference) x).binding;
         Constant constant = binding.constant();
@@ -4462,12 +4512,15 @@
               binding.getExactMethod(VALUE_OF, new TypeBinding[]{x.scope.getJavaLangString()},
                   curCud.scope);
           assert valueOfBinding != null;
-          createSyntheticMethodFromBinding(info, valueOfBinding, new String[]{"name"});
+          // valueOf method of an enum is implicitly declared, consequently, their parameters are
+          // implicitly declared.
+          createSyntheticMethodFromBinding(info, valueOfBinding, new String[] {"name"},
+              new int[] {JModifier.IMPLICIT | JModifier.NAME_PRESENT});
         }
         {
           MethodBinding valuesBinding = binding.getExactMethod(VALUES, NO_TYPES, curCud.scope);
           assert valuesBinding != null;
-          createSyntheticMethodFromBinding(info, valuesBinding, null);
+          createSyntheticMethodFromBinding(info, valuesBinding, null, null);
         }
       }
 
@@ -4539,8 +4592,9 @@
 
   @Nonnull
   private JMethod createSyntheticMethodFromBinding(@Nonnull SourceInfo info,
-      @Nonnull MethodBinding binding, @CheckForNull String[] paramNames)
-      throws JTypeLookupException {
+      @Nonnull MethodBinding binding, @CheckForNull String[] paramNames,
+      @CheckForNull int[] paramModifier) throws JTypeLookupException {
+    assert paramNames == null || paramModifier == null || paramModifier.length == paramNames.length;
     JMethod method = getTypeMap().get(binding);
     method.setSourceInfo(info);
     int i = 0;
@@ -4548,8 +4602,11 @@
       param.setSourceInfo(info);
       if (paramNames != null) {
         param.setName(paramNames[i]);
-        i++;
       }
+      if (paramModifier != null) {
+        param.setModifier(paramModifier[i]);
+      }
+      i++;
     }
     method.setBody(new JMethodBody(info, new JBlock(info)));
     return method;
@@ -4593,8 +4650,8 @@
 
     JMethodIdWide methodId = targetMethod.getMethodIdWide();
     assert methodId.getKind() == MethodKind.STATIC || instance != null;
-    JMethodCall call = new JMethodCall(info, instance,
-        receiverType, methodId, targetMethod.getType(), methodId.canBeVirtual());
+    JMethodCall call = new JMethodCall(info, instance, receiverType, targetMethod.getMethodId(),
+        methodId.canBeVirtual());
     return call;
   }
 
@@ -4604,8 +4661,7 @@
       @Nonnull JDefinedClassOrInterface receiverType,
       @Nonnull JMethod targetMethod) {
 
-    JMethodCall call = new JMethodCall(info, instance,
-        receiverType, targetMethod.getMethodIdWide(), targetMethod.getType(),
+    JMethodCall call = new JMethodCall(info, instance, receiverType, targetMethod.getMethodId(),
         false /* isVirtualDispatch */);
     return call;
   }
diff --git a/jack/src/com/android/jack/ir/impl/ReferenceMapper.java b/jack/src/com/android/jack/ir/impl/ReferenceMapper.java
index 169de64..0f12f12 100644
--- a/jack/src/com/android/jack/ir/impl/ReferenceMapper.java
+++ b/jack/src/com/android/jack/ir/impl/ReferenceMapper.java
@@ -111,6 +111,12 @@
   @Nonnull
   private final SourceInfoFactory sourceInfoFactory;
 
+  @CheckForNull
+  private ReferenceBinding ecjJlo = null;
+
+  @CheckForNull
+  private MethodBinding ecjJloCloneMth = null;
+
   public ReferenceMapper(@Nonnull JNodeLookup lookup,
       @Nonnull LookupEnvironment lookupEnvironment, @Nonnull SourceInfoFactory sourceInfoFactory) {
     this.lookup = lookup;
@@ -159,8 +165,28 @@
     return field;
   }
 
+  private boolean isCloneOfArray(@Nonnull MethodBinding binding) {
+    if (ecjJlo == null) {
+      ecjJlo = lookupEnvironment.getType(TypeConstants.JAVA_LANG_OBJECT);
+      assert ecjJlo != null;
+      MethodBinding[] methods = ecjJlo.getMethods("clone".toCharArray());
+      assert methods.length == 1;
+      ecjJloCloneMth = methods[0];
+    }
+
+    return binding.declaringClass.equals(ecjJlo) && new String(binding.selector).equals("clone")
+        && binding.returnType.isArrayType();
+  }
+
   @Nonnull
   public JMethod get(@Nonnull MethodBinding binding) throws JTypeLookupException {
+    if (isCloneOfArray(binding)) {
+      // ECJ has replaced the clone prototype "jlo clone()" by "int[] clone()", thus replace the
+      // binding by the binding of clone from jlo to be able to lookup the method.
+      binding = ecjJloCloneMth;
+      assert binding != null;
+    }
+
     binding = binding.original();
     SignatureKey key = new SignatureKey(binding);
     JMethod method = methods.get(key);
@@ -253,14 +279,16 @@
         // Enums have hidden arguments for name and value
         createParameter(info, method, "enum$name",
             lookupEnvironment.getType(TypeConstants.JAVA_LANG_STRING),
-            JModifier.FINAL | JModifier.SYNTHETIC);
+            JModifier.SYNTHETIC | JModifier.NAME_PRESENT);
         createParameter(info, method, "enum$ordinal", TypeBinding.INT,
-            JModifier.FINAL | JModifier.SYNTHETIC);
+            JModifier.SYNTHETIC | JModifier.NAME_PRESENT);
       }
       // add synthetic args for outer this
       if (isNested) {
         NestedTypeBinding nestedBinding = (NestedTypeBinding) declaringClass;
-        createParameters(nestedBinding.enclosingInstances, info, method, alreadyNamedVariables);
+        createParameters(nestedBinding.enclosingInstances, info, method, alreadyNamedVariables,
+            /* forceToImplicit= */ !nestedBinding.isAnonymousType()
+                || !nestedBinding.superclass().isLocalType());
       }
     } else {
       JType returnType = get(b.returnType);
@@ -292,7 +320,8 @@
         // add synthetic args for locals
         NestedTypeBinding nestedBinding = (NestedTypeBinding) declaringClass;
         // add synthetic args for outer this and locals
-        createParameters(nestedBinding.outerLocalVariables, info, method, alreadyNamedVariables);
+        createParameters(nestedBinding.outerLocalVariables, info, method, alreadyNamedVariables,
+            /* forceToImplicit= */ false);
       }
     }
 
@@ -338,7 +367,8 @@
 
   private void createParameters(@CheckForNull SyntheticArgumentBinding[] sab,
       @Nonnull SourceInfo info, @Nonnull JMethod method,
-      @Nonnull Set<String> alreadyNamedVariables) {
+      @Nonnull Set<String> alreadyNamedVariables,
+      boolean forceToImplicit) {
     if (sab != null) {
       for (int i = 0; i < sab.length; ++i) {
         SyntheticArgumentBinding arg = sab[i];
@@ -346,7 +376,9 @@
         if (alreadyNamedVariables.contains(argName)) {
           argName += "_" + i;
         }
-        createParameter(info, method, argName, arg.type, getModifier(arg));
+        createParameter(info, method, argName, arg.type,
+            getFinalModifier(arg) | (forceToImplicit ? JModifier.IMPLICIT : JModifier.SYNTHETIC)
+                | JModifier.NAME_PRESENT);
         alreadyNamedVariables.add(argName);
       }
     }
@@ -358,12 +390,13 @@
       for (Argument argument : x.arguments) {
         SourceInfo info = makeSourceInfo(cuInfo, argument, sourceInfoFactory);
         LocalVariableBinding binding = argument.binding;
-        createParameter(info, method, intern(binding.name), binding.type, getModifier(binding));
+        createParameter(info, method, intern(binding.name), binding.type,
+            getFinalModifier(binding) | JModifier.NAME_PRESENT);
       }
     }
   }
 
-  private int getModifier(@Nonnull LocalVariableBinding lvBinding) {
+  private int getFinalModifier(@Nonnull LocalVariableBinding lvBinding) {
     return lvBinding.isFinal() ? JModifier.FINAL : JModifier.DEFAULT;
   }
 
diff --git a/jack/src/com/android/jack/jayce/JayceInternalWriter.java b/jack/src/com/android/jack/jayce/JayceInternalWriter.java
index b358891..dcf78a4 100644
--- a/jack/src/com/android/jack/jayce/JayceInternalWriter.java
+++ b/jack/src/com/android/jack/jayce/JayceInternalWriter.java
@@ -17,19 +17,20 @@
 package com.android.jack.jayce;
 
 import com.android.jack.ir.ast.JNode;
-
-import java.io.IOException;
+import com.android.sched.util.file.CannotCloseException;
+import com.android.sched.util.file.CannotWriteException;
 
 import javax.annotation.Nonnull;
 
 /**
  * Jayce internal writer.
  */
-public interface JayceInternalWriter {
+public interface JayceInternalWriter extends AutoCloseable {
 
-  public void write(@Nonnull JNode jNode) throws IOException;
+  public void write(@Nonnull JNode jNode) throws CannotWriteException;
 
   int getCurrentMinor();
 
-  public void close() throws IOException;
+  @Override
+  public void close() throws CannotCloseException;
 }
diff --git a/jack/src/com/android/jack/jayce/JayceWriterFactory.java b/jack/src/com/android/jack/jayce/JayceWriterFactory.java
index 9c34f95..3b76cee 100644
--- a/jack/src/com/android/jack/jayce/JayceWriterFactory.java
+++ b/jack/src/com/android/jack/jayce/JayceWriterFactory.java
@@ -19,6 +19,7 @@
 import com.android.jack.jayce.v0004.io.JayceInternalWriterImpl;
 import com.android.jack.library.FileType;
 import com.android.jack.library.OutputJackLibrary;
+import com.android.sched.util.location.HasLocation;
 
 import java.io.OutputStream;
 
@@ -33,8 +34,8 @@
 
   @Nonnull
   public static JayceInternalWriter get(@Nonnull OutputJackLibrary outputJackLibrary,
-      @Nonnull OutputStream out) {
-    JayceInternalWriterImpl jayceWriter = new JayceInternalWriterImpl(out);
+      @Nonnull OutputStream out, @Nonnull HasLocation locationProvider) {
+    JayceInternalWriterImpl jayceWriter = new JayceInternalWriterImpl(out, locationProvider);
 
     outputJackLibrary.putProperty(
         outputJackLibrary.buildPropertyName(FileType.JAYCE, null /* suffix */),
diff --git a/jack/src/com/android/jack/jayce/v0002/NNode.java b/jack/src/com/android/jack/jayce/v0002/NNode.java
index c43b982..95b4349 100644
--- a/jack/src/com/android/jack/jayce/v0002/NNode.java
+++ b/jack/src/com/android/jack/jayce/v0002/NNode.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -45,8 +44,6 @@
   public abstract Object exportAsJast(@Nonnull ExportSession exportSession)
       throws JTypeLookupException, JMethodLookupException;
 
-  public abstract void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException;
-
   public abstract void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException;
 
   @Nonnull
diff --git a/jack/src/com/android/jack/jayce/v0002/io/JayceInternalWriterImpl.java b/jack/src/com/android/jack/jayce/v0002/io/JayceInternalWriterImpl.java
deleted file mode 100644
index d961122..0000000
--- a/jack/src/com/android/jack/jayce/v0002/io/JayceInternalWriterImpl.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.jack.jayce.v0002.io;
-
-import com.android.jack.JackEventType;
-import com.android.jack.ir.ast.FieldKind;
-import com.android.jack.ir.ast.JMethodCall.DispatchKind;
-import com.android.jack.ir.ast.JNode;
-import com.android.jack.ir.ast.JRetentionPolicy;
-import com.android.jack.ir.ast.MethodKind;
-import com.android.jack.jayce.JayceInternalWriter;
-import com.android.jack.jayce.v0002.NNode;
-import com.android.jack.jayce.v0002.NodeFactory;
-import com.android.jack.jayce.v0002.Version;
-import com.android.jack.jayce.v0002.nodes.HasCatchBlockIds;
-import com.android.jack.jayce.v0002.nodes.HasSourceInfo;
-import com.android.jack.jayce.v0002.nodes.NMethod;
-import com.android.jack.jayce.v0002.nodes.NMethodCall.ReceiverKind;
-import com.android.jack.jayce.v0002.nodes.NSourceInfo;
-import com.android.jack.jayce.v0002.util.DispatchKindIdHelper;
-import com.android.jack.jayce.v0002.util.FieldRefKindIdHelper;
-import com.android.jack.jayce.v0002.util.MethodKindIdHelper;
-import com.android.jack.jayce.v0002.util.ReceiverKindIdHelper;
-import com.android.jack.jayce.v0002.util.RetentionPolicyIdHelper;
-import com.android.sched.util.log.Event;
-import com.android.sched.util.log.Tracer;
-import com.android.sched.util.log.TracerFactory;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnegative;
-import javax.annotation.Nonnull;
-
-/**
- * Jayce internal writer implementation.
- */
-public class JayceInternalWriterImpl implements JayceInternalWriter {
-
-  @Nonnull
-  private final Tracer tracer = TracerFactory.getTracer();
-
-  @Nonnull
-  private final JayceOutputStream out;
-
-  @CheckForNull
-  private String currentFileName;
-
-  @Nonnegative
-  private int currentLineNumber;
-
-  @Nonnull
-  private final  List<String> currentCatchBlockList = new ArrayList<String>();
-
-  public JayceInternalWriterImpl(@Nonnull OutputStream out) {
-    this.out = new JayceOutputStream(out);
-  }
-
-  public void writeNode(@CheckForNull NNode node) throws IOException {
-    if (node == null) {
-      writeNull();
-    } else {
-      writeSourceInfoBegin(node);
-      writeCatchBlockIds(node);
-      writeToken(node.getToken());
-      writeOpen();
-      node.writeContent(this);
-      writeSourceInfoEnd(node);
-      assert !(node instanceof NMethod) || currentCatchBlockList.isEmpty();
-      writeClose();
-    }
-  }
-
-  private void writeSourceInfoBegin(@Nonnull NNode node) throws IOException {
-    if (node instanceof HasSourceInfo) {
-      NSourceInfo sourceInfo = ((HasSourceInfo) node).getSourceInfos();
-      writeFileNameIfDifferentFromCurrent(sourceInfo.fileName);
-      writeLineIfDifferentFromCurrent(sourceInfo.startLine);
-    }
-  }
-
-  private void writeSourceInfoEnd(@Nonnull NNode node) throws IOException {
-    if (node instanceof HasSourceInfo) {
-      writeLineIfDifferentFromCurrent(
-          ((HasSourceInfo) node).getSourceInfos().endLine);
-    }
-  }
-
-  public void writeIds(@Nonnull List<String> list) throws IOException {
-    writeOpen();
-
-    writeTrimmedInt(list.size());
-
-    for (String id : list) {
-      writeId(id);
-    }
-
-    writeClose();
-  }
-
-  public void writeCatchBlockIds(@CheckForNull NNode node) throws IOException {
-    if (node instanceof HasCatchBlockIds) {
-      List<String> list = ((HasCatchBlockIds) node).getCatchBlockIds();
-      List<String> removedIds = new ArrayList<String>(currentCatchBlockList.size());
-      List<String> addedIds = new ArrayList<String>(list.size());
-
-      for (String s : currentCatchBlockList) {
-        removedIds.add(s);
-      }
-      for (String s : list) {
-        addedIds.add(s);
-      }
-
-      // intersection(current, list)
-      currentCatchBlockList.retainAll(list);
-      // current \ intersection(current, list)
-      removedIds.removeAll(currentCatchBlockList);
-      // list \ intersection(current, list)
-      addedIds.removeAll(currentCatchBlockList);
-
-      int addedIdsSize = addedIds.size();
-      int removedIdsSize = removedIds.size();
-
-      if (addedIdsSize > 0) {
-        writeOpenAddCatchBlockIds();
-        writeInt(addedIdsSize);
-        for (int i = 0; i < addedIdsSize; i++) {
-          writeString(addedIds.get(i));
-        }
-        writeCloseCatchBlockIds();
-      }
-
-      if (removedIdsSize > 0) {
-        writeOpenRemoveCatchBlockIds();
-        writeInt(removedIdsSize);
-        for (int i = 0; i < removedIdsSize; i++) {
-          writeString(removedIds.get(i));
-        }
-        writeCloseCatchBlockIds();
-      }
-      currentCatchBlockList.addAll(addedIds);
-    }
-  }
-
-  public void writeNodes(@Nonnull Collection<? extends NNode> nodes) throws IOException {
-    writeOpen();
-
-    writeTrimmedInt(nodes.size());
-
-    for (Iterator<? extends NNode> iterator = nodes.iterator(); iterator.hasNext();) {
-      writeNode(iterator.next());
-    }
-
-    writeClose();
-  }
-
-  public void writeInt(int value) throws IOException {
-    writeTrimmedInt(value);
-    writeSpace();
-  }
-
-  private void writeTrimmedInt(int value) throws IOException {
-    out.writeInt(value);
-  }
-
-  public void writeBoolean(boolean value)  throws IOException {
-    out.writeBoolean(value);
-  }
-
-  public void writeLong(long value) throws IOException {
-    writeTrimmedLong(value);
-    writeSpace();
-  }
-
-  private void writeTrimmedLong(long value) throws IOException {
-    out.writeLong(value);
-  }
-
-  public void writeByte(byte value) throws IOException {
-    out.writeByte(value);
-    writeSpace();
-  }
-
-  public void writeShort(short value) throws IOException {
-    out.writeShort(value);
-    writeSpace();
-  }
-
-  public void writeChar(char value) throws IOException {
-    out.writeChar(value);
-    writeSpace();
-  }
-
-  public void writeFloat(float value) throws IOException {
-    writeTrimmedInt(Float.floatToRawIntBits(value));
-    writeSpace();
-  }
-
-  public void writeDouble(double value) throws IOException {
-    writeTrimmedLong(Double.doubleToRawLongBits(value));
-    writeSpace();
-  }
-
-  public void writeId(@CheckForNull String id)  throws IOException {
-    writeString(id);
-  }
-
-  public void writeRetentionPolicyEnum(@Nonnull JRetentionPolicy enumValue) throws IOException {
-    writeByte(RetentionPolicyIdHelper.getId(enumValue));
-  }
-
-  public void writeFieldRefKindEnum(@Nonnull FieldKind enumValue) throws IOException {
-    writeByte(FieldRefKindIdHelper.getId(enumValue));
-  }
-
-  public void writeMethodKindEnum(@Nonnull MethodKind enumValue) throws IOException {
-    writeByte(MethodKindIdHelper.getId(enumValue));
-  }
-
-  public void writeReceiverKindEnum(@Nonnull ReceiverKind enumValue) throws IOException {
-    writeByte(ReceiverKindIdHelper.getId(enumValue));
-  }
-
-  public void writeDispatchKindEnum(@Nonnull DispatchKind enumValue) throws IOException {
-    writeByte(DispatchKindIdHelper.getId(enumValue));
-  }
-
-  public void writeString(@CheckForNull String string)  throws IOException {
-    out.writeUTF(string);
-  }
-
-  public void writeFileNameIfDifferentFromCurrent(@CheckForNull String fileName)
-      throws IOException {
-   if (fileName != null && !fileName.equals(currentFileName)) {
-      writeCurrentFileName(fileName);
-    }
-    // Assume that elements with unknown debug infos are in same file.
-  }
-
-  public void writeCurrentFileName(@Nonnull String fileName)  throws IOException {
-    writeOpenFileName();
-    writeString(fileName);
-    writeCloseFileName();
-    currentFileName = fileName;
-  }
-
-  public void writeLineIfDifferentFromCurrent(@Nonnegative int lineNumber)
-      throws IOException {
-    if (lineNumber != currentLineNumber) {
-      writeCurrentLine(lineNumber);
-    }
-  }
-
-  public void writeCurrentLine(@Nonnegative int lineNumber)
-      throws IOException {
-    writeOpenLineInfo();
-    writeTrimmedInt(lineNumber);
-    writeCloseLineInfo();
-    currentLineNumber = lineNumber;
-  }
-
-  private void writeNull()  throws IOException {
-    writeToken(Token.NULL);
-    writeSpace();
-  }
-
-  @SuppressWarnings("unused")
-  private void writeSpace()  throws IOException{
-  }
-
-  private void writeToken(@Nonnull Token token) throws IOException {
-    out.writeByte(token.ordinal());
-  }
-
-  @SuppressWarnings("unused")
-  private void writeOpen()  throws IOException{
-  }
-
-  private void writeClose() throws IOException {
-    writeToken(Token.RPARENTHESIS);
-  }
-
-  private void writeOpenFileName() throws IOException {
-    writeToken(Token.SHARP);
-  }
-
-  @SuppressWarnings("unused")
-  private void writeCloseFileName()  throws IOException{
-  }
-
-  private void writeOpenLineInfo() throws IOException {
-    writeToken(Token.LBRACKET);
-  }
-
-  @SuppressWarnings("unused")
-  private void writeCloseLineInfo()  throws IOException{
-  }
-
-  private void writeOpenAddCatchBlockIds() throws IOException {
-    writeToken(Token.LCURLY_ADD);
-  }
-
-  private void writeOpenRemoveCatchBlockIds() throws IOException {
-    writeToken(Token.LCURLY_REMOVE);
-  }
-
-  @SuppressWarnings("unused")
-  private void writeCloseCatchBlockIds()  throws IOException{
-  }
-
-  @Override
-  public void write(@Nonnull JNode jNode) throws IOException {
-    try (Event eventWriting = tracer.open(JackEventType.NNODE_WRITING)) {
-      ImportHelper importHelper = new ImportHelper(new NodeFactory());
-      NNode nNode;
-      try (Event eventConvert = tracer.open(JackEventType.JNODE_TO_NNODE_CONVERSION)) {
-        nNode = importHelper.load(jNode);
-      }
-
-      writeNode(nNode);
-    }
-  }
-
-  @Override
-  public int getCurrentMinor() {
-    return Version.CURRENT_MINOR;
-  }
-
-  @Override
-  public void close() throws IOException {
-    out.close();
-  }
-}
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAbsentArrayDimension.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAbsentArrayDimension.java
index fc49090..5ba7a7d 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAbsentArrayDimension.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAbsentArrayDimension.java
@@ -20,7 +20,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -54,11 +53,6 @@
 
   @SuppressWarnings("unused")
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-  }
-
-  @SuppressWarnings("unused")
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
   }
 
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAddOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAddOperation.java
index 86c6632..f658ae7 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAddOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAddOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAlloc.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAlloc.java
index 450dddc..3d3aa57 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAlloc.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAlloc.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -63,11 +62,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(instanceType);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     instanceType = in.readId();
   }
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAndOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAndOperation.java
index 63376e9..0c52eb2 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAndOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAndOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAnnotation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAnnotation.java
index cb9cc4b..0307143 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAnnotation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAnnotation.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -83,14 +82,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert retentionPolicy != null;
-    out.writeRetentionPolicyEnum(retentionPolicy);
-    out.writeId(annotationType);
-    out.writeNodes(elements);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     retentionPolicy = in.readRetentionPolicyEnum();
     annotationType = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAnnotationMethod.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAnnotationMethod.java
index 5df6e6a..2ea7623 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAnnotationMethod.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAnnotationMethod.java
@@ -30,7 +30,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -102,17 +101,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert annotations != null;
-    out.writeId(name);
-    out.writeId(returnType);
-    out.writeInt(modifier);
-    out.writeNodes(annotations);
-    out.writeNode(defaultValue);
-    out.writeNodes(markers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     level = in.getNodeLevel();
     name = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAnnotationType.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAnnotationType.java
index 80b4ed5..0b95057 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAnnotationType.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAnnotationType.java
@@ -29,7 +29,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.util.NamingTools;
 
@@ -121,21 +120,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert retentionPolicy != null;
-    out.writeRetentionPolicyEnum(retentionPolicy);
-    out.writeInt(modifiers);
-    out.writeId(signature);
-    out.writeIds(superInterfaces);
-    out.writeId(enclosingType);
-    out.writeIds(inners);
-    out.writeNodes(getFields());
-    out.writeNodes(getMethods());
-    out.writeNodes(annotations);
-    out.writeNodes(markers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     level = in.getNodeLevel();
     retentionPolicy = in.readRetentionPolicyEnum();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NArrayLength.java b/jack/src/com/android/jack/jayce/v0002/nodes/NArrayLength.java
index 0986ea5..4b467e8 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NArrayLength.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NArrayLength.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -66,11 +65,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(instance);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     instance = in.readNode(NExpression.class);
   }
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NArrayLiteral.java b/jack/src/com/android/jack/jayce/v0002/nodes/NArrayLiteral.java
index a46fd01..c7ca67b 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NArrayLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NArrayLiteral.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -71,11 +70,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNodes(values);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     values = in.readNodes(NLiteral.class);
   }
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NArrayRef.java b/jack/src/com/android/jack/jayce/v0002/nodes/NArrayRef.java
index 5a887ef..29b4319 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NArrayRef.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NArrayRef.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -72,12 +71,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(instance);
-    out.writeNode(index);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     instance = in.readNode(NExpression.class);
     index = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgAddOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgAddOperation.java
index 3626421..712ffd9 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgAddOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgAddOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgBitAndOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgBitAndOperation.java
index 7b3f381..35da5f4 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgBitAndOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgBitAndOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgBitOrOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgBitOrOperation.java
index e3d82ef..209ff3b 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgBitOrOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgBitOrOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgBitXorOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgBitXorOperation.java
index ab2f788..19d265f 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgBitXorOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgBitXorOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgConcatOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgConcatOperation.java
index 11ff9d1..50264fe 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgConcatOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgConcatOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgDivOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgDivOperation.java
index 5826b3b..4b29df3 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgDivOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgDivOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgModOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgModOperation.java
index f34da1f..9107608 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgModOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgModOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgMulOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgMulOperation.java
index 7551140..8d8c22c 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgMulOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgMulOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgOperation.java
index 2371a40..3e0524c 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgShlOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgShlOperation.java
index c328902..4c35056 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgShlOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgShlOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgShrOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgShrOperation.java
index 82ee7d4..2d61062 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgShrOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgShrOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgShruOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgShruOperation.java
index 1768a4e..c2a168f 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgShruOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgShruOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgSubOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgSubOperation.java
index b3d5bf0..feae2ac 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAsgSubOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAsgSubOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NAssertStatement.java b/jack/src/com/android/jack/jayce/v0002/nodes/NAssertStatement.java
index 2c7a4a3..f04e1e8 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NAssertStatement.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NAssertStatement.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -84,12 +83,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(testExpression);
-    out.writeNode(arg);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     testExpression = in.readNode(NExpression.class);
     arg = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NBitAndOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NBitAndOperation.java
index d4dc894..41387b4 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NBitAndOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NBitAndOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NBitOrOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NBitOrOperation.java
index 531696e..f7ac85a 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NBitOrOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NBitOrOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NBitXorOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NBitXorOperation.java
index ad7b7dd..1007602 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NBitXorOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NBitXorOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NBlock.java b/jack/src/com/android/jack/jayce/v0002/nodes/NBlock.java
index 83c8de0..18e754d 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NBlock.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NBlock.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -74,11 +73,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNodes(statements);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     statements = in.readNodes(NStatement.class);
 
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NBooleanLiteral.java b/jack/src/com/android/jack/jayce/v0002/nodes/NBooleanLiteral.java
index ac272be..9722a24 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NBooleanLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NBooleanLiteral.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -59,14 +58,8 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeBoolean(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     value = in.readBoolean();
-    
   }
 
   @Override
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NBreakStatement.java b/jack/src/com/android/jack/jayce/v0002/nodes/NBreakStatement.java
index 4e15d9e..91ec822 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NBreakStatement.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NBreakStatement.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -71,11 +70,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeString(label);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     label = in.readString();
   }
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NByteLiteral.java b/jack/src/com/android/jack/jayce/v0002/nodes/NByteLiteral.java
index 3796a36..1377c19 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NByteLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NByteLiteral.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -59,14 +58,8 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeByte(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     value = in.readByte();
-    
   }
 
   @Override
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NCaseStatement.java b/jack/src/com/android/jack/jayce/v0002/nodes/NCaseStatement.java
index ab7333d..2b965e8 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NCaseStatement.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NCaseStatement.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -80,12 +79,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(id);
-    out.writeNode(expr);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     id = in.readId();
     expr = in.readNode(NLiteral.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NCatchBlock.java b/jack/src/com/android/jack/jayce/v0002/nodes/NCatchBlock.java
index 39e7ed8..b6cd636 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NCatchBlock.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NCatchBlock.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -103,14 +102,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(id);
-    out.writeIds(catchTypes);
-    out.writeNode(catchVar);
-    out.writeNodes(statements);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     id = in.readId();
     catchTypes = in.readIds();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NCharLiteral.java b/jack/src/com/android/jack/jayce/v0002/nodes/NCharLiteral.java
index 8c6e1ff..2c59cd2 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NCharLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NCharLiteral.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -59,14 +58,8 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeChar(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     value = in.readChar();
-    
   }
 
   @Override
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NClassLiteral.java b/jack/src/com/android/jack/jayce/v0002/nodes/NClassLiteral.java
index 6df0c8c..6fde647 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NClassLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NClassLiteral.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -64,11 +63,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(refType);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     refType = in.readId();
 
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NClassType.java b/jack/src/com/android/jack/jayce/v0002/nodes/NClassType.java
index 1ed2c94..e00f4f8 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NClassType.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NClassType.java
@@ -30,7 +30,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 import com.android.jack.util.NamingTools;
@@ -169,23 +168,6 @@
  }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeInt(modifiers);
-    out.writeId(signature);
-    out.writeId(superClass);
-    out.writeIds(superInterfaces);
-    out.writeId(enclosingType);
-    out.writeId(enclosingMethodClass);
-    out.writeId(enclosingMethod);
-    out.writeIds(inners);
-    out.writeNodes(getFields());
-    out.writeNodes(getMethods());
-    out.writeNodes(annotations);
-    out.writeNodes(markers);
-
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     level = in.getNodeLevel();
     modifiers = in.readInt();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NConcatOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NConcatOperation.java
index ae0c812..cbce509 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NConcatOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NConcatOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -72,12 +71,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NConditionalExpression.java b/jack/src/com/android/jack/jayce/v0002/nodes/NConditionalExpression.java
index 56ffe67..947d6a3 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NConditionalExpression.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NConditionalExpression.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -79,13 +78,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(ifTest);
-    out.writeNode(thenExpr);
-    out.writeNode(elseExpr);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     ifTest = in.readNode(NExpression.class);
     thenExpr = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NConstructor.java b/jack/src/com/android/jack/jayce/v0002/nodes/NConstructor.java
index 199ce84..cb08009 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NConstructor.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NConstructor.java
@@ -28,7 +28,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -91,16 +90,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert annotations != null;
-    out.writeNodes(getParameters());
-    out.writeInt(modifier);
-    out.writeNodes(annotations);
-    out.writeNode(body);
-    out.writeNodes(markers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     level = in.getNodeLevel();
     setParameters(in.readNodes(NParameter.class));
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NContinueStatement.java b/jack/src/com/android/jack/jayce/v0002/nodes/NContinueStatement.java
index 8102924..99239b0 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NContinueStatement.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NContinueStatement.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -73,11 +72,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeString(label);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     label = in.readString();
   }
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NDivOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NDivOperation.java
index 23a8438..ee5e7dc 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NDivOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NDivOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NDoStatement.java b/jack/src/com/android/jack/jayce/v0002/nodes/NDoStatement.java
index ae9997b..cde3fd5 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NDoStatement.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NDoStatement.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -79,12 +78,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(testExpression);
-    out.writeNode(body);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     testExpression = in.readNode(NExpression.class);
     body = in.readNode(NStatement.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NDoubleLiteral.java b/jack/src/com/android/jack/jayce/v0002/nodes/NDoubleLiteral.java
index b9292d5..8efb455 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NDoubleLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NDoubleLiteral.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -60,14 +59,8 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeDouble(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     value = in.readDouble();
-    
   }
 
   @Override
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NDynamicCastOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NDynamicCastOperation.java
index ae8010c..3797af4 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NDynamicCastOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NDynamicCastOperation.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -70,12 +69,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(castType);
-    out.writeNode(expr);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     castType = in.readId();
     expr = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NEnumField.java b/jack/src/com/android/jack/jayce/v0002/nodes/NEnumField.java
index 034c45c..f7757b0 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NEnumField.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NEnumField.java
@@ -25,7 +25,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -92,17 +91,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeInt(modifiers);
-    out.writeId(type);
-    out.writeId(name);
-    out.writeNode(initialValue);
-    out.writeInt(ordinal);
-    out.writeNodes(annotations);
-    out.writeNodes(markers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     modifiers = in.readInt();
     type = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NEnumLiteral.java b/jack/src/com/android/jack/jayce/v0002/nodes/NEnumLiteral.java
index e5a222b..3220cfa 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NEnumLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NEnumLiteral.java
@@ -25,7 +25,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JLookup;
 
@@ -76,12 +75,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(enumFieldDeclaringType);
-    out.writeId(enumFieldName);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     enumFieldDeclaringType = in.readId();
     enumFieldName = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NEnumType.java b/jack/src/com/android/jack/jayce/v0002/nodes/NEnumType.java
index e6ce97e..15ceeba 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NEnumType.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NEnumType.java
@@ -30,7 +30,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 import com.android.jack.util.NamingTools;
@@ -138,23 +137,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeInt(modifiers);
-    out.writeId(signature);
-    out.writeId(superClass);
-    out.writeIds(superInterfaces);
-    out.writeId(enclosingType);
-    out.writeId(enclosingMethodClass);
-    out.writeId(enclosingMethod);
-    out.writeIds(inners);
-    out.writeNodes(getFields());
-    out.writeNodes(getMethods());
-    out.writeNodes(annotations);
-    out.writeNodes(markers);
-
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     level = in.getNodeLevel();
     modifiers = in.readInt();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NEqOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NEqOperation.java
index dfcd198..2e7e17c 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NEqOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NEqOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NExceptionRuntimeValue.java b/jack/src/com/android/jack/jayce/v0002/nodes/NExceptionRuntimeValue.java
index 6d45802..7624985 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NExceptionRuntimeValue.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NExceptionRuntimeValue.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -62,11 +61,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(catchedType);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     catchedType = in.readId();
   }
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NExpressionStatement.java b/jack/src/com/android/jack/jayce/v0002/nodes/NExpressionStatement.java
index b4197ce..f378e53 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NExpressionStatement.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NExpressionStatement.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -75,11 +74,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(expression);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     expression = in.readNode(NExpression.class);
   }
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NField.java b/jack/src/com/android/jack/jayce/v0002/nodes/NField.java
index 78bfc46..c7f0212 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NField.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NField.java
@@ -28,7 +28,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -121,16 +120,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeInt(modifiers);
-    out.writeId(type);
-    out.writeId(name);
-    out.writeNode(initialValue);
-    out.writeNodes(annotations);
-    out.writeNodes(markers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     modifiers = in.readInt();
     type = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NFieldInitializer.java b/jack/src/com/android/jack/jayce/v0002/nodes/NFieldInitializer.java
index c0cebac..f0ea949 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NFieldInitializer.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NFieldInitializer.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -50,11 +49,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) {
     throw new UnsupportedOperationException();
   }
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NFieldRef.java b/jack/src/com/android/jack/jayce/v0002/nodes/NFieldRef.java
index 38c0ef7..eb215e7 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NFieldRef.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NFieldRef.java
@@ -26,7 +26,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -90,16 +89,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert kind != null;
-    out.writeId(field);
-    out.writeId(fieldType);
-    out.writeId(receiverType);
-    out.writeFieldRefKindEnum(kind);
-    out.writeNode(instance);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     field = in.readId();
     fieldType = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NFloatLiteral.java b/jack/src/com/android/jack/jayce/v0002/nodes/NFloatLiteral.java
index 742102b..a152053 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NFloatLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NFloatLiteral.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -60,14 +59,8 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeFloat(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     value = in.readFloat();
-    
   }
 
   @Override
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NForStatement.java b/jack/src/com/android/jack/jayce/v0002/nodes/NForStatement.java
index 5fc7c8c..a857fb3 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NForStatement.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NForStatement.java
@@ -25,7 +25,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -101,17 +100,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert initializers != null;
-    assert increments != null;
-
-    out.writeNodes(initializers);
-    out.writeNode(testExpression);
-    out.writeNodes(increments);
-    out.writeNode(body);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     initializers = in.readNodes(NStatement.class);
     testExpression = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NGenericSignature.java b/jack/src/com/android/jack/jayce/v0002/nodes/NGenericSignature.java
index 2a4780e..3e4e056 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NGenericSignature.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NGenericSignature.java
@@ -20,7 +20,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -53,11 +52,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeString(genericSignature);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     genericSignature = in.readString();
   }
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NGoto.java b/jack/src/com/android/jack/jayce/v0002/nodes/NGoto.java
index 23848b0..a1cf0cd 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NGoto.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NGoto.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -73,11 +72,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(target);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     target = in.readId();
   }
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NGtOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NGtOperation.java
index 15cce80..97c07cd 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NGtOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NGtOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NGteOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NGteOperation.java
index 043fc5d..916986d 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NGteOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NGteOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NIfStatement.java b/jack/src/com/android/jack/jayce/v0002/nodes/NIfStatement.java
index 7696473..0879b21 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NIfStatement.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NIfStatement.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -88,13 +87,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(ifExpression);
-    out.writeNode(thenStatement);
-    out.writeNode(elseStatement);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     ifExpression = in.readNode(NExpression.class);
     thenStatement = in.readNode(NStatement.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NInstanceOf.java b/jack/src/com/android/jack/jayce/v0002/nodes/NInstanceOf.java
index 57fbe54..273bb50 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NInstanceOf.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NInstanceOf.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -72,12 +71,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(expr);
-    out.writeId(testType);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     expr = in.readNode(NExpression.class);
     testType = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NIntLiteral.java b/jack/src/com/android/jack/jayce/v0002/nodes/NIntLiteral.java
index e7868d6..15b91a8 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NIntLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NIntLiteral.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -59,14 +58,8 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeInt(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     value = in.readInt();
-    
   }
 
   @Override
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NInterfaceType.java b/jack/src/com/android/jack/jayce/v0002/nodes/NInterfaceType.java
index da2b0ad..813095f 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NInterfaceType.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NInterfaceType.java
@@ -28,7 +28,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.util.NamingTools;
 
@@ -137,20 +136,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeInt(modifiers);
-    out.writeId(signature);
-    out.writeIds(superInterfaces);
-    out.writeId(enclosingType);
-    out.writeIds(inners);
-    out.writeNodes(getFields());
-    out.writeNodes(getMethods());
-    out.writeNodes(annotations);
-    out.writeNodes(markers);
-
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     level = in.getNodeLevel();
     modifiers = in.readInt();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NLabeledStatement.java b/jack/src/com/android/jack/jayce/v0002/nodes/NLabeledStatement.java
index 5c9ac36..1eef583 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NLabeledStatement.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NLabeledStatement.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -88,13 +87,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeString(label);
-    out.writeId(id);
-    out.writeNode(body);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     label = in.readString();
     id = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NLocal.java b/jack/src/com/android/jack/jayce/v0002/nodes/NLocal.java
index 12a1b63..d85a059 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NLocal.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NLocal.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -100,16 +99,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(id);
-    out.writeInt(modifiers);
-    out.writeId(type);
-    out.writeId(name);
-    out.writeNodes(annotationSet);
-    out.writeNodes(markers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     id = in.readId();
     modifiers = in.readInt();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NLocalRef.java b/jack/src/com/android/jack/jayce/v0002/nodes/NLocalRef.java
index 0421ba0..22d8dd1 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NLocalRef.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NLocalRef.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -62,11 +61,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(localId);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     localId = in.readId();
 
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NLock.java b/jack/src/com/android/jack/jayce/v0002/nodes/NLock.java
index df9e049..ad7f1f1 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NLock.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NLock.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -75,11 +74,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lockExpr);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lockExpr = in.readNode(NExpression.class);
   }
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NLongLiteral.java b/jack/src/com/android/jack/jayce/v0002/nodes/NLongLiteral.java
index 617639c..d9fc62d 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NLongLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NLongLiteral.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -59,14 +58,8 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeLong(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     value = in.readLong();
-    
   }
 
   @Override
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NLtOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NLtOperation.java
index 74a55cc..d01e172 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NLtOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NLtOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NLteOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NLteOperation.java
index fcadb49..ebe14e2 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NLteOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NLteOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NMethod.java b/jack/src/com/android/jack/jayce/v0002/nodes/NMethod.java
index d12008f..6113ad5 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NMethod.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NMethod.java
@@ -36,7 +36,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -163,19 +162,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert methodKind != null;
-    out.writeId(name);
-    out.writeId(returnType);
-    out.writeNodes(getParameters());
-    out.writeMethodKindEnum(methodKind);
-    out.writeInt(modifier);
-    out.writeNodes(annotations);
-    out.writeNode(body);
-    out.writeNodes(markers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     level = in.getNodeLevel();
     name = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NMethodBody.java b/jack/src/com/android/jack/jayce/v0002/nodes/NMethodBody.java
index 94d0887..38dfbea 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NMethodBody.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NMethodBody.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -74,12 +73,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNodes(locals);
-    out.writeNode(block);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     locals = in.readNodes(NLocal.class);
     block = in.readNode(NBlock.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NMethodCall.java b/jack/src/com/android/jack/jayce/v0002/nodes/NMethodCall.java
index 0d129b2..3fdb403 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NMethodCall.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NMethodCall.java
@@ -21,7 +21,7 @@
 import com.android.jack.ir.ast.JExpression;
 import com.android.jack.ir.ast.JMethodCall;
 import com.android.jack.ir.ast.JMethodCall.DispatchKind;
-import com.android.jack.ir.ast.JMethodIdWide;
+import com.android.jack.ir.ast.JMethodId;
 import com.android.jack.ir.ast.JType;
 import com.android.jack.ir.ast.JTypeLookupException;
 import com.android.jack.ir.ast.MethodKind;
@@ -29,7 +29,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -91,9 +90,9 @@
     instance = (NExpression) loader.load(jMethodCall.getInstance());
     receiverType = ImportHelper.getSignatureName(jMethodCall.getReceiverType());
     receiverKind = getReceiverKind(jMethodCall);
-    methodName = jMethodCall.getMethodId().getName();
-    methodArgsType = ImportHelper.getMethodArgsSignature(jMethodCall.getMethodId());
-    methodKind = jMethodCall.getMethodId().getKind();
+    methodName = jMethodCall.getMethodIdWide().getName();
+    methodArgsType = ImportHelper.getMethodArgsSignature(jMethodCall.getMethodIdWide());
+    methodKind = jMethodCall.getMethodIdWide().getKind();
     returnType = ImportHelper.getSignatureName(jMethodCall.getType());
     args = loader.load(NExpression.class, jMethodCall.getArgs());
     dispatchKind = jMethodCall.getDispatchKind();
@@ -124,12 +123,12 @@
     } else {
       jReceiverType = exportSession.getLookup().getInterface(receiverType);
     }
-    JMethodIdWide methodId = jReceiverType.getOrCreateMethodIdWide(methodName,
-        exportSession.getTypeListFromSignatureList(methodArgsType), methodKind);
     JType jReturnType = exportSession.getLookup().getType(returnType);
+    JMethodId methodId = jReceiverType.getOrCreateMethodId(methodName,
+        exportSession.getTypeListFromSignatureList(methodArgsType), methodKind, jReturnType);
     SourceInfo jSourceInfo = sourceInfo.exportAsJast(exportSession);
     JMethodCall jMethodCall = new JMethodCall(jSourceInfo, jInstance, jReceiverType, methodId,
-        jReturnType, dispatchKind == DispatchKind.VIRTUAL /* isVirtualDispatch */);
+        dispatchKind == DispatchKind.VIRTUAL /* isVirtualDispatch */);
     for (NExpression arg : args) {
       jMethodCall.addArg(arg.exportAsJast(exportSession));
     }
@@ -137,26 +136,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert receiverType != null;
-    assert receiverKind != null;
-    assert methodName != null;
-    assert methodKind != null;
-    assert returnType != null;
-    assert dispatchKind != null;
-    assert sourceInfo != null;
-    out.writeNode(instance);
-    out.writeId(receiverType);
-    out.writeReceiverKindEnum(receiverKind);
-    out.writeId(methodName);
-    out.writeIds(methodArgsType);
-    out.writeMethodKindEnum(methodKind);
-    out.writeId(returnType);
-    out.writeNodes(args);
-    out.writeDispatchKindEnum(dispatchKind);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     instance = in.readNode(NExpression.class);
     receiverType = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NMethodLiteral.java b/jack/src/com/android/jack/jayce/v0002/nodes/NMethodLiteral.java
index 85cccd0..a40241a 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NMethodLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NMethodLiteral.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -75,12 +74,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(method);
-    out.writeId(methodEnclosingType);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     method = in.readId();
     methodEnclosingType = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NModOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NModOperation.java
index d7309ae..77235dd 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NModOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NModOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NMulOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NMulOperation.java
index 4e2f3d4..4768d7d 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NMulOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NMulOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NMultiExpression.java b/jack/src/com/android/jack/jayce/v0002/nodes/NMultiExpression.java
index fc263a5..889ea0e 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NMultiExpression.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NMultiExpression.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -71,11 +70,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNodes(exprs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     exprs = in.readNodes(NExpression.class);
 
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NNameValuePair.java b/jack/src/com/android/jack/jayce/v0002/nodes/NNameValuePair.java
index 895f114..8e75e60 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NNameValuePair.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NNameValuePair.java
@@ -28,7 +28,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -87,12 +86,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeString(name);
-    out.writeNode(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     name = in.readString();
     value = in.readNode(NLiteral.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NNativeMethodBody.java b/jack/src/com/android/jack/jayce/v0002/nodes/NNativeMethodBody.java
index 3909d02..3495320 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NNativeMethodBody.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NNativeMethodBody.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -57,12 +56,6 @@
 
   @SuppressWarnings("unused")
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-
-  }
-
-  @SuppressWarnings("unused")
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
 
   }
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NNeqOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NNeqOperation.java
index 4b27f28..2b692fe 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NNeqOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NNeqOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NNewArray.java b/jack/src/com/android/jack/jayce/v0002/nodes/NNewArray.java
index f5ded7b..53dce14 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NNewArray.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NNewArray.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -88,13 +87,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(type);
-    out.writeNodes(dims);
-    out.writeNodes(initializers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     type = in.readId();
     dims = in.readNodes(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NNewInstance.java b/jack/src/com/android/jack/jayce/v0002/nodes/NNewInstance.java
index cfe8952..d07d368 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NNewInstance.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NNewInstance.java
@@ -17,15 +17,15 @@
 package com.android.jack.jayce.v0002.nodes;
 
 import com.android.jack.ir.ast.JClassOrInterface;
-import com.android.jack.ir.ast.JMethodIdWide;
+import com.android.jack.ir.ast.JMethodId;
 import com.android.jack.ir.ast.JNewInstance;
+import com.android.jack.ir.ast.JPrimitiveType.JPrimitiveTypeEnum;
 import com.android.jack.ir.ast.JTypeLookupException;
 import com.android.jack.ir.ast.MethodKind;
 import com.android.jack.ir.sourceinfo.SourceInfo;
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -49,7 +49,7 @@
   public void importFromJast(@Nonnull ImportHelper loader, @Nonnull Object node) {
     JNewInstance jNewInstance = (JNewInstance) node;
     receiverType = ImportHelper.getSignatureName(jNewInstance.getReceiverType());
-    methodArgsType = ImportHelper.getMethodArgsSignature(jNewInstance.getMethodId());
+    methodArgsType = ImportHelper.getMethodArgsSignature(jNewInstance.getMethodIdWide());
     args = loader.load(NExpression.class, jNewInstance.getArgs());
     sourceInfo = loader.load(jNewInstance.getSourceInfo());
   }
@@ -67,9 +67,9 @@
     assert methodArgsType != null;
     assert args != null;
     JClassOrInterface jReceiverType = exportSession.getLookup().getClass(receiverType);
-    JMethodIdWide methodId = jReceiverType.getOrCreateMethodIdWide(INIT_NAME,
+    JMethodId methodId = jReceiverType.getOrCreateMethodId(INIT_NAME,
         exportSession.getTypeListFromSignatureList(methodArgsType),
-        MethodKind.INSTANCE_NON_VIRTUAL);
+        MethodKind.INSTANCE_NON_VIRTUAL, JPrimitiveTypeEnum.VOID.getType());
     SourceInfo jSourceInfo = sourceInfo.exportAsJast(exportSession);
     JNewInstance jNewInstance = new JNewInstance(jSourceInfo, jReceiverType, methodId);
     for (NExpression arg : args) {
@@ -79,15 +79,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert instance == null;
-    assert methodKind == null;
-    out.writeId(receiverType);
-    out.writeIds(methodArgsType);
-    out.writeNodes(args);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     receiverType = in.readId();
     methodArgsType = in.readIds();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NNullLiteral.java b/jack/src/com/android/jack/jayce/v0002/nodes/NNullLiteral.java
index 428396f..9803ff0 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NNullLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NNullLiteral.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -57,11 +56,6 @@
 
   @SuppressWarnings("unused")
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-  }
-
-  @SuppressWarnings("unused")
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
   }
 
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NOrOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NOrOperation.java
index a8820db..4f6c9b9 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NOrOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NOrOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NParameter.java b/jack/src/com/android/jack/jayce/v0002/nodes/NParameter.java
index 677c3d8..c69a48a 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NParameter.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NParameter.java
@@ -26,7 +26,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -114,16 +113,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(id);
-    out.writeInt(modifiers);
-    out.writeId(type);
-    out.writeId(name);
-    out.writeNodes(annotations);
-    out.writeNodes(markers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     id = in.readId();
     modifiers = in.readInt();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NParameterRef.java b/jack/src/com/android/jack/jayce/v0002/nodes/NParameterRef.java
index 9c53533..d68d22c 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NParameterRef.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NParameterRef.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -63,11 +62,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(localId);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     localId = in.readId();
   }
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NPostfixDecOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NPostfixDecOperation.java
index d7cc927..d0761ce 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NPostfixDecOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NPostfixDecOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -62,11 +61,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(arg);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     arg = in.readNode(NExpression.class);
 
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NPostfixIncOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NPostfixIncOperation.java
index 59e6c69..9b750cd 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NPostfixIncOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NPostfixIncOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -62,11 +61,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(arg);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     arg = in.readNode(NExpression.class);
 
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixBitNotOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixBitNotOperation.java
index 15dd882..dff4e86 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixBitNotOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixBitNotOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -62,11 +61,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(arg);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     arg = in.readNode(NExpression.class);
 
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixDecOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixDecOperation.java
index 51d86c8..c7bbaa2 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixDecOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixDecOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -62,11 +61,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(arg);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     arg = in.readNode(NExpression.class);
 
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixIncOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixIncOperation.java
index 72f2cb5..0207af6 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixIncOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixIncOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -62,11 +61,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(arg);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     arg = in.readNode(NExpression.class);
 
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixNegOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixNegOperation.java
index 10633ec..0498b36 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixNegOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixNegOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -62,11 +61,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(arg);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     arg = in.readNode(NExpression.class);
 
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixNotOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixNotOperation.java
index 246fe4e..8ce086c 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixNotOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NPrefixNotOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -62,11 +61,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(arg);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     arg = in.readNode(NExpression.class);
 
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NReinterpretCastOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NReinterpretCastOperation.java
index a07f316..1201f79 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NReinterpretCastOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NReinterpretCastOperation.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -74,12 +73,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(castType);
-    out.writeNode(expr);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     castType = in.readId();
     expr = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NReturnStatement.java b/jack/src/com/android/jack/jayce/v0002/nodes/NReturnStatement.java
index db316d8..19628a9 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NReturnStatement.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NReturnStatement.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -74,11 +73,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(expr);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     expr = in.readNode(NExpression.class);
   }
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NShlOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NShlOperation.java
index ea4522f..2fb3033 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NShlOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NShlOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NShortLiteral.java b/jack/src/com/android/jack/jayce/v0002/nodes/NShortLiteral.java
index b736662..7114f6e 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NShortLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NShortLiteral.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -59,14 +58,8 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeShort(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     value = in.readShort();
-    
   }
 
   @Override
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NShrOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NShrOperation.java
index bf652ad..dcdec80 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NShrOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NShrOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NShruOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NShruOperation.java
index bf8eb97..bced6d0 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NShruOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NShruOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NSimpleName.java b/jack/src/com/android/jack/jayce/v0002/nodes/NSimpleName.java
index e8e779c..9014619 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NSimpleName.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NSimpleName.java
@@ -20,7 +20,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -54,11 +53,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeString(simpleName);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     simpleName = in.readString();
   }
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NStringLiteral.java b/jack/src/com/android/jack/jayce/v0002/nodes/NStringLiteral.java
index a7464e0..e144787 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NStringLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NStringLiteral.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -61,11 +60,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeString(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     value = in.readString();
 
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NSubOperation.java b/jack/src/com/android/jack/jayce/v0002/nodes/NSubOperation.java
index 5266807..08ddc95 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NSubOperation.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NSubOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NSwitchStatement.java b/jack/src/com/android/jack/jayce/v0002/nodes/NSwitchStatement.java
index fb42b9a..4cb863d 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NSwitchStatement.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NSwitchStatement.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -98,13 +97,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(expr);
-    out.writeIds(cases);
-    out.writeNode(body);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     expr = in.readNode(NExpression.class);
     cases = in.readIds();
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NSynchronizedBlock.java b/jack/src/com/android/jack/jayce/v0002/nodes/NSynchronizedBlock.java
index 88e3461..949ada0 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NSynchronizedBlock.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NSynchronizedBlock.java
@@ -25,7 +25,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -86,12 +85,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lockExpr);
-    out.writeNode(synchronizedBlock);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lockExpr = in.readNode(NExpression.class);
     synchronizedBlock = in.readNode(NBlock.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NThisRef.java b/jack/src/com/android/jack/jayce/v0002/nodes/NThisRef.java
index 9c780a5..31c5f9d 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NThisRef.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NThisRef.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -63,11 +62,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(type);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     type = in.readId();
 
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NThisRefTypeInfo.java b/jack/src/com/android/jack/jayce/v0002/nodes/NThisRefTypeInfo.java
index b8bc490..a4a00de 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NThisRefTypeInfo.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NThisRefTypeInfo.java
@@ -20,7 +20,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -56,11 +55,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeString(genericSignature);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     genericSignature = in.readString();
   }
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NThrowStatement.java b/jack/src/com/android/jack/jayce/v0002/nodes/NThrowStatement.java
index 921d034..bc2d10d 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NThrowStatement.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NThrowStatement.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -75,11 +74,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(expr);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     expr = in.readNode(NExpression.class);
   }
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NThrownExceptionMarker.java b/jack/src/com/android/jack/jayce/v0002/nodes/NThrownExceptionMarker.java
index 8786fee..87a1f55 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NThrownExceptionMarker.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NThrownExceptionMarker.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 
 import java.io.IOException;
@@ -61,11 +60,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeIds(thrownExceptions);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     thrownExceptions = in.readIds();
   }
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NTryStatement.java b/jack/src/com/android/jack/jayce/v0002/nodes/NTryStatement.java
index be93e4a..f52bd2e 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NTryStatement.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NTryStatement.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -96,14 +95,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNodes(resourcesDeclaration);
-    out.writeNode(tryBlock);
-    out.writeNodes(catchBlocks);
-    out.writeNode(finallyBlock);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     resourcesDeclaration = in.readNodes(NStatement.class);
     tryBlock = in.readNode(NBlock.class);
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NUnlock.java b/jack/src/com/android/jack/jayce/v0002/nodes/NUnlock.java
index 2232e9c..c23b2b8 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NUnlock.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NUnlock.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -75,11 +74,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lockExpr);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lockExpr = in.readNode(NExpression.class);
   }
diff --git a/jack/src/com/android/jack/jayce/v0002/nodes/NWhileStatement.java b/jack/src/com/android/jack/jayce/v0002/nodes/NWhileStatement.java
index 3e92825..cce2f1f 100644
--- a/jack/src/com/android/jack/jayce/v0002/nodes/NWhileStatement.java
+++ b/jack/src/com/android/jack/jayce/v0002/nodes/NWhileStatement.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0002.io.ExportSession;
 import com.android.jack.jayce.v0002.io.ImportHelper;
 import com.android.jack.jayce.v0002.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0002.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0002.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -79,12 +78,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(testExpression);
-    out.writeNode(body);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     testExpression = in.readNode(NExpression.class);
     body = in.readNode(NStatement.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/NNode.java b/jack/src/com/android/jack/jayce/v0003/NNode.java
index 4a3a5dc..0077b15 100644
--- a/jack/src/com/android/jack/jayce/v0003/NNode.java
+++ b/jack/src/com/android/jack/jayce/v0003/NNode.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -45,8 +44,6 @@
   public abstract Object exportAsJast(@Nonnull ExportSession exportSession)
       throws JTypeLookupException, JMethodLookupException;
 
-  public abstract void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException;
-
   public abstract void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException;
 
   @Nonnull
diff --git a/jack/src/com/android/jack/jayce/v0003/io/JayceInternalWriterImpl.java b/jack/src/com/android/jack/jayce/v0003/io/JayceInternalWriterImpl.java
deleted file mode 100644
index 3760ec5..0000000
--- a/jack/src/com/android/jack/jayce/v0003/io/JayceInternalWriterImpl.java
+++ /dev/null
@@ -1,356 +0,0 @@
-/*
-* Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.jack.jayce.v0003.io;
-
-import com.android.jack.JackEventType;
-import com.android.jack.ir.ast.FieldKind;
-import com.android.jack.ir.ast.JMethodCall.DispatchKind;
-import com.android.jack.ir.ast.JNode;
-import com.android.jack.ir.ast.JRetentionPolicy;
-import com.android.jack.ir.ast.MethodKind;
-import com.android.jack.jayce.JayceInternalWriter;
-import com.android.jack.jayce.v0003.NNode;
-import com.android.jack.jayce.v0003.NodeFactory;
-import com.android.jack.jayce.v0003.Version;
-import com.android.jack.jayce.v0003.nodes.HasCatchBlockIds;
-import com.android.jack.jayce.v0003.nodes.HasSourceInfo;
-import com.android.jack.jayce.v0003.nodes.NMethod;
-import com.android.jack.jayce.v0003.nodes.NMethodCall.ReceiverKind;
-import com.android.jack.jayce.v0003.nodes.NSourceInfo;
-import com.android.jack.jayce.v0003.util.DispatchKindIdHelper;
-import com.android.jack.jayce.v0003.util.FieldRefKindIdHelper;
-import com.android.jack.jayce.v0003.util.MethodKindIdHelper;
-import com.android.jack.jayce.v0003.util.ReceiverKindIdHelper;
-import com.android.jack.jayce.v0003.util.RetentionPolicyIdHelper;
-import com.android.sched.util.log.Event;
-import com.android.sched.util.log.Tracer;
-import com.android.sched.util.log.TracerFactory;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnegative;
-import javax.annotation.Nonnull;
-
-/**
- * Jayce internal writer implementation.
- */
-public class JayceInternalWriterImpl implements JayceInternalWriter {
-
-  @Nonnull
-  private final Tracer tracer = TracerFactory.getTracer();
-
-  @Nonnull
-  private final JayceOutputStream out;
-
-  @CheckForNull
-  private String currentFileName;
-
-  @Nonnegative
-  private int currentLineNumber;
-
-  @Nonnull
-  private final  List<String> currentCatchBlockList = new ArrayList<String>();
-
-  public JayceInternalWriterImpl(@Nonnull OutputStream out) {
-    this.out = new JayceOutputStream(out);
-  }
-
-  public void writeNode(@CheckForNull NNode node) throws IOException {
-    if (node == null) {
-      writeNull();
-    } else {
-      writeSourceInfoBegin(node);
-      writeCatchBlockIds(node);
-      writeToken(node.getToken());
-      writeOpen();
-      node.writeContent(this);
-      writeSourceInfoEnd(node);
-      assert !(node instanceof NMethod) || currentCatchBlockList.isEmpty();
-      writeClose();
-    }
-  }
-
-  private void writeSourceInfoBegin(@Nonnull NNode node) throws IOException {
-    if (node instanceof HasSourceInfo) {
-      NSourceInfo sourceInfo = ((HasSourceInfo) node).getSourceInfos();
-      writeFileNameIfDifferentFromCurrent(sourceInfo.fileName);
-      writeLineIfDifferentFromCurrent(sourceInfo.startLine);
-    }
-  }
-
-  private void writeSourceInfoEnd(@Nonnull NNode node) throws IOException {
-    if (node instanceof HasSourceInfo) {
-      writeLineIfDifferentFromCurrent(
-          ((HasSourceInfo) node).getSourceInfos().endLine);
-    }
-  }
-
-  public void writeIds(@Nonnull List<String> list) throws IOException {
-    writeOpen();
-
-    writeTrimmedInt(list.size());
-
-    for (String id : list) {
-      writeId(id);
-    }
-
-    writeClose();
-  }
-
-  public void writeCatchBlockIds(@CheckForNull NNode node) throws IOException {
-    if (node instanceof HasCatchBlockIds) {
-      List<String> list = ((HasCatchBlockIds) node).getCatchBlockIds();
-      List<String> removedIds = new ArrayList<String>(currentCatchBlockList.size());
-      List<String> addedIds = new ArrayList<String>(list.size());
-
-      for (String s : currentCatchBlockList) {
-        removedIds.add(s);
-      }
-      for (String s : list) {
-        addedIds.add(s);
-      }
-
-      // intersection(current, list)
-      currentCatchBlockList.retainAll(list);
-      // current \ intersection(current, list)
-      removedIds.removeAll(currentCatchBlockList);
-      // list \ intersection(current, list)
-      addedIds.removeAll(currentCatchBlockList);
-
-      int addedIdsSize = addedIds.size();
-      int removedIdsSize = removedIds.size();
-
-      if (addedIdsSize > 0) {
-        writeOpenAddCatchBlockIds();
-        writeInt(addedIdsSize);
-        for (int i = 0; i < addedIdsSize; i++) {
-          writeString(addedIds.get(i));
-        }
-        writeCloseCatchBlockIds();
-      }
-
-      if (removedIdsSize > 0) {
-        writeOpenRemoveCatchBlockIds();
-        writeInt(removedIdsSize);
-        for (int i = 0; i < removedIdsSize; i++) {
-          writeString(removedIds.get(i));
-        }
-        writeCloseCatchBlockIds();
-      }
-      currentCatchBlockList.addAll(addedIds);
-    }
-  }
-
-  public void writeNodes(@Nonnull Collection<? extends NNode> nodes) throws IOException {
-    writeOpen();
-
-    writeTrimmedInt(nodes.size());
-
-    for (Iterator<? extends NNode> iterator = nodes.iterator(); iterator.hasNext();) {
-      writeNode(iterator.next());
-    }
-
-    writeClose();
-  }
-
-  public void writeInt(int value) throws IOException {
-    writeTrimmedInt(value);
-    writeSpace();
-  }
-
-  private void writeTrimmedInt(int value) throws IOException {
-    out.writeInt(value);
-  }
-
-  public void writeBoolean(boolean value)  throws IOException {
-    out.writeBoolean(value);
-  }
-
-  public void writeLong(long value) throws IOException {
-    writeTrimmedLong(value);
-    writeSpace();
-  }
-
-  private void writeTrimmedLong(long value) throws IOException {
-    out.writeLong(value);
-  }
-
-  public void writeByte(byte value) throws IOException {
-    out.writeByte(value);
-    writeSpace();
-  }
-
-  public void writeShort(short value) throws IOException {
-    out.writeShort(value);
-    writeSpace();
-  }
-
-  public void writeChar(char value) throws IOException {
-    out.writeChar(value);
-    writeSpace();
-  }
-
-  public void writeFloat(float value) throws IOException {
-    writeTrimmedInt(Float.floatToRawIntBits(value));
-    writeSpace();
-  }
-
-  public void writeDouble(double value) throws IOException {
-    writeTrimmedLong(Double.doubleToRawLongBits(value));
-    writeSpace();
-  }
-
-  public void writeId(@CheckForNull String id)  throws IOException {
-    writeString(id);
-  }
-
-  public void writeRetentionPolicyEnum(@Nonnull JRetentionPolicy enumValue) throws IOException {
-    writeByte(RetentionPolicyIdHelper.getId(enumValue));
-  }
-
-  public void writeFieldRefKindEnum(@Nonnull FieldKind enumValue) throws IOException {
-    writeByte(FieldRefKindIdHelper.getId(enumValue));
-  }
-
-  public void writeMethodKindEnum(@Nonnull MethodKind enumValue) throws IOException {
-    writeByte(MethodKindIdHelper.getId(enumValue));
-  }
-
-  public void writeReceiverKindEnum(@Nonnull ReceiverKind enumValue) throws IOException {
-    writeByte(ReceiverKindIdHelper.getId(enumValue));
-  }
-
-  public void writeDispatchKindEnum(@Nonnull DispatchKind enumValue) throws IOException {
-    writeByte(DispatchKindIdHelper.getId(enumValue));
-  }
-
-  public void writeString(@CheckForNull String string)  throws IOException {
-    out.writeUTF(string);
-  }
-
-  public void writeBuffer(@CheckForNull byte[] b)  throws IOException {
-    out.writeBuffer(b);
-  }
-
-  public void writeFileNameIfDifferentFromCurrent(@CheckForNull String fileName)
-      throws IOException {
-   if (fileName != null && !fileName.equals(currentFileName)) {
-      writeCurrentFileName(fileName);
-    }
-    // Assume that elements with unknown debug infos are in same file.
-  }
-
-  public void writeCurrentFileName(@Nonnull String fileName)  throws IOException {
-    writeOpenFileName();
-    writeString(fileName);
-    writeCloseFileName();
-    currentFileName = fileName;
-  }
-
-  public void writeLineIfDifferentFromCurrent(@Nonnegative int lineNumber)
-      throws IOException {
-    if (lineNumber != currentLineNumber) {
-      writeCurrentLine(lineNumber);
-    }
-  }
-
-  public void writeCurrentLine(@Nonnegative int lineNumber)
-      throws IOException {
-    writeOpenLineInfo();
-    writeTrimmedInt(lineNumber);
-    writeCloseLineInfo();
-    currentLineNumber = lineNumber;
-  }
-
-  private void writeNull()  throws IOException {
-    writeToken(Token.NULL);
-    writeSpace();
-  }
-
-  @SuppressWarnings("unused")
-  private void writeSpace()  throws IOException{
-  }
-
-  private void writeToken(@Nonnull Token token) throws IOException {
-    out.writeByte(token.ordinal());
-  }
-
-  @SuppressWarnings("unused")
-  private void writeOpen()  throws IOException{
-  }
-
-  private void writeClose() throws IOException {
-    writeToken(Token.RPARENTHESIS);
-  }
-
-  private void writeOpenFileName() throws IOException {
-    writeToken(Token.SHARP);
-  }
-
-  @SuppressWarnings("unused")
-  private void writeCloseFileName()  throws IOException{
-  }
-
-  private void writeOpenLineInfo() throws IOException {
-    writeToken(Token.LBRACKET);
-  }
-
-  @SuppressWarnings("unused")
-  private void writeCloseLineInfo()  throws IOException{
-  }
-
-  private void writeOpenAddCatchBlockIds() throws IOException {
-    writeToken(Token.LCURLY_ADD);
-  }
-
-  private void writeOpenRemoveCatchBlockIds() throws IOException {
-    writeToken(Token.LCURLY_REMOVE);
-  }
-
-  @SuppressWarnings("unused")
-  private void writeCloseCatchBlockIds()  throws IOException{
-  }
-
-  @Override
-  public void write(@Nonnull JNode jNode) throws IOException {
-    try (Event eventWriting = tracer.open(JackEventType.NNODE_WRITING)) {
-      ImportHelper importHelper = new ImportHelper(new NodeFactory());
-      NNode nNode;
-      try (Event eventConvert = tracer.open(JackEventType.JNODE_TO_NNODE_CONVERSION)) {
-        nNode = importHelper.load(jNode);
-      }
-
-      writeNode(nNode);
-    }
-  }
-
-  @Override
-  public int getCurrentMinor() {
-    return Version.CURRENT_MINOR;
-  }
-
-  @Override
-  public void close() throws IOException {
-    out.close();
-  }
-}
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAbsentArrayDimension.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAbsentArrayDimension.java
index 30a76fa..3d3cf8d 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAbsentArrayDimension.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAbsentArrayDimension.java
@@ -20,7 +20,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -54,11 +53,6 @@
 
   @SuppressWarnings("unused")
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-  }
-
-  @SuppressWarnings("unused")
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
   }
 
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAddOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAddOperation.java
index 34639a1..91631c8 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAddOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAddOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAlloc.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAlloc.java
index 32e4686..2118f5b 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAlloc.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAlloc.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -63,11 +62,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(instanceType);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     instanceType = in.readId();
   }
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAndOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAndOperation.java
index 626a0b8..8d71ec8 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAndOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAndOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAnnotation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAnnotation.java
index 7d5a96b..f420d0d 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAnnotation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAnnotation.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -90,15 +89,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert retentionPolicy != null;
-    out.writeRetentionPolicyEnum(retentionPolicy);
-    out.writeId(annotationType);
-    out.writeNodes(elements);
-    out.writeNodes(markers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     retentionPolicy = in.readRetentionPolicyEnum();
     annotationType = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAnnotationMethod.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAnnotationMethod.java
index a1a170f..877c5f3 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAnnotationMethod.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAnnotationMethod.java
@@ -30,7 +30,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -102,17 +101,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert annotations != null;
-    out.writeId(name);
-    out.writeId(returnType);
-    out.writeInt(modifier);
-    out.writeNodes(annotations);
-    out.writeNode(defaultValue);
-    out.writeNodes(markers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     level = in.getNodeLevel();
     name = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAnnotationType.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAnnotationType.java
index ffa52d7..4f4919c 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAnnotationType.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAnnotationType.java
@@ -29,7 +29,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.util.NamingTools;
 
@@ -121,21 +120,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert retentionPolicy != null;
-    out.writeRetentionPolicyEnum(retentionPolicy);
-    out.writeInt(modifiers);
-    out.writeId(signature);
-    out.writeIds(superInterfaces);
-    out.writeId(enclosingType);
-    out.writeIds(inners);
-    out.writeNodes(getFields());
-    out.writeNodes(getMethods());
-    out.writeNodes(annotations);
-    out.writeNodes(markers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     level = in.getNodeLevel();
     retentionPolicy = in.readRetentionPolicyEnum();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NArrayLength.java b/jack/src/com/android/jack/jayce/v0003/nodes/NArrayLength.java
index 3556483..b0171fc 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NArrayLength.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NArrayLength.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -66,11 +65,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(instance);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     instance = in.readNode(NExpression.class);
   }
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NArrayLiteral.java b/jack/src/com/android/jack/jayce/v0003/nodes/NArrayLiteral.java
index 127dddf..a486622 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NArrayLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NArrayLiteral.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -71,11 +70,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNodes(values);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     values = in.readNodes(NLiteral.class);
   }
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NArrayRef.java b/jack/src/com/android/jack/jayce/v0003/nodes/NArrayRef.java
index a830dcc..7264d8a 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NArrayRef.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NArrayRef.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -72,12 +71,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(instance);
-    out.writeNode(index);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     instance = in.readNode(NExpression.class);
     index = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgAddOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgAddOperation.java
index 59f7de3..5a20b0b 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgAddOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgAddOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgBitAndOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgBitAndOperation.java
index a8f23c2..8b5be63 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgBitAndOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgBitAndOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgBitOrOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgBitOrOperation.java
index 61108e7..63c0acf 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgBitOrOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgBitOrOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgBitXorOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgBitXorOperation.java
index 957568a..fb49da9 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgBitXorOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgBitXorOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgConcatOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgConcatOperation.java
index 868cf01..2ad1cb3 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgConcatOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgConcatOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgDivOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgDivOperation.java
index 641a0dc..fbe8a0c 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgDivOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgDivOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgModOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgModOperation.java
index b97a6f0..5d4c6ad 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgModOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgModOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgMulOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgMulOperation.java
index 8deb270..a072139 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgMulOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgMulOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgOperation.java
index f3a32fe..cae23b5 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgShlOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgShlOperation.java
index b757941..17c2706 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgShlOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgShlOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgShrOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgShrOperation.java
index d79090d..189a8c3 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgShrOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgShrOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgShruOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgShruOperation.java
index b59be5c..79108f8 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgShruOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgShruOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgSubOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgSubOperation.java
index a3d2ee6..2e38410 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAsgSubOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAsgSubOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NAssertStatement.java b/jack/src/com/android/jack/jayce/v0003/nodes/NAssertStatement.java
index 9e12967..3e835d4 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NAssertStatement.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NAssertStatement.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -84,12 +83,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(testExpression);
-    out.writeNode(arg);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     testExpression = in.readNode(NExpression.class);
     arg = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NBitAndOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NBitAndOperation.java
index 8891729..cc9554a 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NBitAndOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NBitAndOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NBitOrOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NBitOrOperation.java
index 1a9246d..63c9b1b 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NBitOrOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NBitOrOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NBitXorOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NBitXorOperation.java
index 682f191..e996036 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NBitXorOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NBitXorOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NBlock.java b/jack/src/com/android/jack/jayce/v0003/nodes/NBlock.java
index c5b2788..e8c9aa0 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NBlock.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NBlock.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -74,11 +73,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNodes(statements);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     statements = in.readNodes(NStatement.class);
 
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NBooleanLiteral.java b/jack/src/com/android/jack/jayce/v0003/nodes/NBooleanLiteral.java
index d9a529b..f1c286c 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NBooleanLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NBooleanLiteral.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -59,14 +58,8 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeBoolean(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     value = in.readBoolean();
-    
   }
 
   @Override
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NBreakStatement.java b/jack/src/com/android/jack/jayce/v0003/nodes/NBreakStatement.java
index 7fadf5d..e7cbcbe 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NBreakStatement.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NBreakStatement.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -71,11 +70,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeString(label);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     label = in.readString();
   }
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NByteLiteral.java b/jack/src/com/android/jack/jayce/v0003/nodes/NByteLiteral.java
index 5102162..f0dfa0a 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NByteLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NByteLiteral.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -59,14 +58,8 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeByte(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     value = in.readByte();
-    
   }
 
   @Override
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NCaseStatement.java b/jack/src/com/android/jack/jayce/v0003/nodes/NCaseStatement.java
index 0327351..9c1bfae 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NCaseStatement.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NCaseStatement.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -80,12 +79,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(id);
-    out.writeNode(expr);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     id = in.readId();
     expr = in.readNode(NLiteral.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NCatchBlock.java b/jack/src/com/android/jack/jayce/v0003/nodes/NCatchBlock.java
index 71bc829..c306123 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NCatchBlock.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NCatchBlock.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -103,14 +102,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(id);
-    out.writeIds(catchTypes);
-    out.writeNode(catchVar);
-    out.writeNodes(statements);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     id = in.readId();
     catchTypes = in.readIds();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NCharLiteral.java b/jack/src/com/android/jack/jayce/v0003/nodes/NCharLiteral.java
index c5d6532..b5fe707 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NCharLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NCharLiteral.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -59,14 +58,8 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeChar(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     value = in.readChar();
-    
   }
 
   @Override
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NClassLiteral.java b/jack/src/com/android/jack/jayce/v0003/nodes/NClassLiteral.java
index 203b28a..11b8fbb 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NClassLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NClassLiteral.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -64,11 +63,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(refType);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     refType = in.readId();
 
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NClassType.java b/jack/src/com/android/jack/jayce/v0003/nodes/NClassType.java
index 2780320..4f52654 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NClassType.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NClassType.java
@@ -30,7 +30,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 import com.android.jack.util.NamingTools;
@@ -169,23 +168,6 @@
  }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeInt(modifiers);
-    out.writeId(signature);
-    out.writeId(superClass);
-    out.writeIds(superInterfaces);
-    out.writeId(enclosingType);
-    out.writeId(enclosingMethodClass);
-    out.writeId(enclosingMethod);
-    out.writeIds(inners);
-    out.writeNodes(getFields());
-    out.writeNodes(getMethods());
-    out.writeNodes(annotations);
-    out.writeNodes(markers);
-
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     level = in.getNodeLevel();
     modifiers = in.readInt();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NConcatOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NConcatOperation.java
index db0952f..9d4f818 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NConcatOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NConcatOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -72,12 +71,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NConditionalExpression.java b/jack/src/com/android/jack/jayce/v0003/nodes/NConditionalExpression.java
index b22fb63..8460d2f 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NConditionalExpression.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NConditionalExpression.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -79,13 +78,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(ifTest);
-    out.writeNode(thenExpr);
-    out.writeNode(elseExpr);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     ifTest = in.readNode(NExpression.class);
     thenExpr = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NConstructor.java b/jack/src/com/android/jack/jayce/v0003/nodes/NConstructor.java
index 246159b..07cc4b4 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NConstructor.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NConstructor.java
@@ -28,7 +28,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -91,16 +90,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert annotations != null;
-    out.writeNodes(getParameters());
-    out.writeInt(modifier);
-    out.writeNodes(annotations);
-    out.writeNode(body);
-    out.writeNodes(markers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     level = in.getNodeLevel();
     setParameters(in.readNodes(NParameter.class));
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NContainerAnnotation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NContainerAnnotation.java
index 2733c88..f20e416 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NContainerAnnotation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NContainerAnnotation.java
@@ -20,7 +20,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.transformations.annotation.ContainerAnnotationMarker;
 
@@ -60,13 +59,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert retentionPolicy != null;
-    out.writeRetentionPolicyEnum(retentionPolicy);
-    out.writeId(annotationTypeSig);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     retentionPolicy = in.readRetentionPolicyEnum();
     annotationTypeSig = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NContinueStatement.java b/jack/src/com/android/jack/jayce/v0003/nodes/NContinueStatement.java
index 2341f7e..a55c83c 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NContinueStatement.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NContinueStatement.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -73,11 +72,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeString(label);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     label = in.readString();
   }
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NDivOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NDivOperation.java
index 8494864..c5e0413 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NDivOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NDivOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NDoStatement.java b/jack/src/com/android/jack/jayce/v0003/nodes/NDoStatement.java
index f884a1f..1908ce9 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NDoStatement.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NDoStatement.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -79,12 +78,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(testExpression);
-    out.writeNode(body);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     testExpression = in.readNode(NExpression.class);
     body = in.readNode(NStatement.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NDoubleLiteral.java b/jack/src/com/android/jack/jayce/v0003/nodes/NDoubleLiteral.java
index e623ed1..e7266bc 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NDoubleLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NDoubleLiteral.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -60,14 +59,8 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeDouble(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     value = in.readDouble();
-    
   }
 
   @Override
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NDynamicCastOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NDynamicCastOperation.java
index 3b6ccb4..e7abde8 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NDynamicCastOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NDynamicCastOperation.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -78,13 +77,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert castTypes != null;
-    out.writeIds(castTypes);
-    out.writeNode(expr);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     castTypes = in.readIds();
     expr = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NEnumField.java b/jack/src/com/android/jack/jayce/v0003/nodes/NEnumField.java
index ab1a4ec..71772ae 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NEnumField.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NEnumField.java
@@ -25,7 +25,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -92,17 +91,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeInt(modifiers);
-    out.writeId(type);
-    out.writeId(name);
-    out.writeNode(initialValue);
-    out.writeInt(ordinal);
-    out.writeNodes(annotations);
-    out.writeNodes(markers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     modifiers = in.readInt();
     type = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NEnumLiteral.java b/jack/src/com/android/jack/jayce/v0003/nodes/NEnumLiteral.java
index 2ead7f8..25bfef3 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NEnumLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NEnumLiteral.java
@@ -25,7 +25,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JLookup;
 
@@ -76,12 +75,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(enumFieldDeclaringType);
-    out.writeId(enumFieldName);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     enumFieldDeclaringType = in.readId();
     enumFieldName = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NEnumType.java b/jack/src/com/android/jack/jayce/v0003/nodes/NEnumType.java
index 24759b1..e531952 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NEnumType.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NEnumType.java
@@ -30,7 +30,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 import com.android.jack.util.NamingTools;
@@ -138,23 +137,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeInt(modifiers);
-    out.writeId(signature);
-    out.writeId(superClass);
-    out.writeIds(superInterfaces);
-    out.writeId(enclosingType);
-    out.writeId(enclosingMethodClass);
-    out.writeId(enclosingMethod);
-    out.writeIds(inners);
-    out.writeNodes(getFields());
-    out.writeNodes(getMethods());
-    out.writeNodes(annotations);
-    out.writeNodes(markers);
-
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     level = in.getNodeLevel();
     modifiers = in.readInt();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NEqOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NEqOperation.java
index bdf017c..1159db4 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NEqOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NEqOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NExceptionRuntimeValue.java b/jack/src/com/android/jack/jayce/v0003/nodes/NExceptionRuntimeValue.java
index abab103..d688b56 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NExceptionRuntimeValue.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NExceptionRuntimeValue.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -62,11 +61,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(catchedType);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     catchedType = in.readId();
   }
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NExpressionStatement.java b/jack/src/com/android/jack/jayce/v0003/nodes/NExpressionStatement.java
index 3e27c7a..959140f 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NExpressionStatement.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NExpressionStatement.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -75,11 +74,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(expression);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     expression = in.readNode(NExpression.class);
   }
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NField.java b/jack/src/com/android/jack/jayce/v0003/nodes/NField.java
index 807bebd..0264ffa 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NField.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NField.java
@@ -28,7 +28,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -121,16 +120,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeInt(modifiers);
-    out.writeId(type);
-    out.writeId(name);
-    out.writeNode(initialValue);
-    out.writeNodes(annotations);
-    out.writeNodes(markers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     modifiers = in.readInt();
     type = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NFieldInitializer.java b/jack/src/com/android/jack/jayce/v0003/nodes/NFieldInitializer.java
index e3b601b..b33a829 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NFieldInitializer.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NFieldInitializer.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -50,11 +49,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) {
     throw new UnsupportedOperationException();
   }
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NFieldRef.java b/jack/src/com/android/jack/jayce/v0003/nodes/NFieldRef.java
index 3b79cf4..36b7f68 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NFieldRef.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NFieldRef.java
@@ -26,7 +26,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -90,16 +89,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert kind != null;
-    out.writeId(field);
-    out.writeId(fieldType);
-    out.writeId(receiverType);
-    out.writeFieldRefKindEnum(kind);
-    out.writeNode(instance);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     field = in.readId();
     fieldType = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NFloatLiteral.java b/jack/src/com/android/jack/jayce/v0003/nodes/NFloatLiteral.java
index b7c162c..f448e92 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NFloatLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NFloatLiteral.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -60,14 +59,8 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeFloat(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     value = in.readFloat();
-    
   }
 
   @Override
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NForStatement.java b/jack/src/com/android/jack/jayce/v0003/nodes/NForStatement.java
index 4b73da0..438b79e 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NForStatement.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NForStatement.java
@@ -25,7 +25,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -101,17 +100,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert initializers != null;
-    assert increments != null;
-
-    out.writeNodes(initializers);
-    out.writeNode(testExpression);
-    out.writeNodes(increments);
-    out.writeNode(body);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     initializers = in.readNodes(NStatement.class);
     testExpression = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NGenericSignature.java b/jack/src/com/android/jack/jayce/v0003/nodes/NGenericSignature.java
index e088da7..a0df018 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NGenericSignature.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NGenericSignature.java
@@ -20,7 +20,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -53,11 +52,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeString(genericSignature);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     genericSignature = in.readString();
   }
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NGoto.java b/jack/src/com/android/jack/jayce/v0003/nodes/NGoto.java
index 2a28bdb..25b4813 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NGoto.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NGoto.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -73,11 +72,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(target);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     target = in.readId();
   }
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NGtOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NGtOperation.java
index 66b6173..c7094a5 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NGtOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NGtOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NGteOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NGteOperation.java
index f229891..4d775a5 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NGteOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NGteOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NIfStatement.java b/jack/src/com/android/jack/jayce/v0003/nodes/NIfStatement.java
index a0cd79d..26c4b69 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NIfStatement.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NIfStatement.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -88,13 +87,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(ifExpression);
-    out.writeNode(thenStatement);
-    out.writeNode(elseStatement);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     ifExpression = in.readNode(NExpression.class);
     thenStatement = in.readNode(NStatement.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NInstanceOf.java b/jack/src/com/android/jack/jayce/v0003/nodes/NInstanceOf.java
index a6ab819..95ccb09 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NInstanceOf.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NInstanceOf.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -72,12 +71,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(expr);
-    out.writeId(testType);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     expr = in.readNode(NExpression.class);
     testType = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NIntLiteral.java b/jack/src/com/android/jack/jayce/v0003/nodes/NIntLiteral.java
index 73942d0..83374ef 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NIntLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NIntLiteral.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -59,14 +58,8 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeInt(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     value = in.readInt();
-    
   }
 
   @Override
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NInterfaceType.java b/jack/src/com/android/jack/jayce/v0003/nodes/NInterfaceType.java
index 5324315..89e7f5c 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NInterfaceType.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NInterfaceType.java
@@ -28,7 +28,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.util.NamingTools;
 
@@ -137,20 +136,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeInt(modifiers);
-    out.writeId(signature);
-    out.writeIds(superInterfaces);
-    out.writeId(enclosingType);
-    out.writeIds(inners);
-    out.writeNodes(getFields());
-    out.writeNodes(getMethods());
-    out.writeNodes(annotations);
-    out.writeNodes(markers);
-
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     level = in.getNodeLevel();
     modifiers = in.readInt();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NLabeledStatement.java b/jack/src/com/android/jack/jayce/v0003/nodes/NLabeledStatement.java
index c6bc314..e3b8c3b 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NLabeledStatement.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NLabeledStatement.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -88,13 +87,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeString(label);
-    out.writeId(id);
-    out.writeNode(body);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     label = in.readString();
     id = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NLambda.java b/jack/src/com/android/jack/jayce/v0003/nodes/NLambda.java
index 9688feb..3a35b33 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NLambda.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NLambda.java
@@ -30,7 +30,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.jayce.v0003.nodes.NMethodCall.ReceiverKind;
 import com.android.jack.lookup.JMethodLookupException;
@@ -183,25 +182,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert methodRefKind != null;
-    assert receiverKind != null;
-    out.writeNodes(capturedVariables);
-    out.writeReceiverKindEnum(receiverKind);
-    out.writeId(enclosingType);
-    out.writeId(methodRefName);
-    out.writeIds(methodRefArgsType);
-    out.writeMethodKindEnum(methodRefKind);
-    out.writeId(methodRefType);
-    out.writeId(typeSig);
-    out.writeIds(boundsIds);
-    out.writeNode(mthIdWithErasure);
-    out.writeNode(mthIdWithoutErasure);
-    out.writeNodes(bridges);
-    out.writeNodes(markers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     capturedVariables = in.readNodes(NExpression.class);
     receiverKind = in.readReceiverKindEnum();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NLambdaFromJill.java b/jack/src/com/android/jack/jayce/v0003/nodes/NLambdaFromJill.java
index f4ad8b8..49d43b3 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NLambdaFromJill.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NLambdaFromJill.java
@@ -19,7 +19,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.transformations.lambda.LambdaFromJillMarker;
 
@@ -46,10 +45,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) {
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) {
   }
 
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NLocal.java b/jack/src/com/android/jack/jayce/v0003/nodes/NLocal.java
index 5684211..f592e8f 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NLocal.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NLocal.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -100,16 +99,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(id);
-    out.writeInt(modifiers);
-    out.writeId(type);
-    out.writeId(name);
-    out.writeNodes(annotationSet);
-    out.writeNodes(markers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     id = in.readId();
     modifiers = in.readInt();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NLocalRef.java b/jack/src/com/android/jack/jayce/v0003/nodes/NLocalRef.java
index d41f492..ad7de01 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NLocalRef.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NLocalRef.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -63,11 +62,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(localId);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     localId = in.readId();
   }
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NLock.java b/jack/src/com/android/jack/jayce/v0003/nodes/NLock.java
index ea5094f..0a3394a 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NLock.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NLock.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -75,11 +74,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lockExpr);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lockExpr = in.readNode(NExpression.class);
   }
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NLongLiteral.java b/jack/src/com/android/jack/jayce/v0003/nodes/NLongLiteral.java
index ed87e9c..2e8e345 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NLongLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NLongLiteral.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -59,14 +58,8 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeLong(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     value = in.readLong();
-    
   }
 
   @Override
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NLtOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NLtOperation.java
index 7cac52e..caeccf4 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NLtOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NLtOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NLteOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NLteOperation.java
index 9cc9e59..062a464 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NLteOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NLteOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NMethod.java b/jack/src/com/android/jack/jayce/v0003/nodes/NMethod.java
index dc6a112..172ca71 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NMethod.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NMethod.java
@@ -36,7 +36,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -170,19 +169,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert methodKind != null;
-    out.writeId(name);
-    out.writeId(returnType);
-    out.writeNodes(getParameters());
-    out.writeMethodKindEnum(methodKind);
-    out.writeInt(modifier);
-    out.writeNodes(annotations);
-    out.writeNode(body);
-    out.writeNodes(markers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     level = in.getNodeLevel();
     name = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NMethodBody.java b/jack/src/com/android/jack/jayce/v0003/nodes/NMethodBody.java
index 3c61873..bbb63f9 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NMethodBody.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NMethodBody.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -74,12 +73,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNodes(locals);
-    out.writeNode(block);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     locals = in.readNodes(NLocal.class);
     block = in.readNode(NBlock.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NMethodCall.java b/jack/src/com/android/jack/jayce/v0003/nodes/NMethodCall.java
index a182dfc..93fa344 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NMethodCall.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NMethodCall.java
@@ -21,7 +21,7 @@
 import com.android.jack.ir.ast.JExpression;
 import com.android.jack.ir.ast.JMethodCall;
 import com.android.jack.ir.ast.JMethodCall.DispatchKind;
-import com.android.jack.ir.ast.JMethodIdWide;
+import com.android.jack.ir.ast.JMethodId;
 import com.android.jack.ir.ast.JType;
 import com.android.jack.ir.ast.JTypeLookupException;
 import com.android.jack.ir.ast.MethodKind;
@@ -29,7 +29,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -91,9 +90,9 @@
     instance = (NExpression) loader.load(jMethodCall.getInstance());
     receiverType = ImportHelper.getSignatureName(jMethodCall.getReceiverType());
     receiverKind = getReceiverKind(jMethodCall);
-    methodName = jMethodCall.getMethodId().getName();
-    methodArgsType = ImportHelper.getMethodArgsSignature(jMethodCall.getMethodId());
-    methodKind = jMethodCall.getMethodId().getKind();
+    methodName = jMethodCall.getMethodIdWide().getName();
+    methodArgsType = ImportHelper.getMethodArgsSignature(jMethodCall.getMethodIdWide());
+    methodKind = jMethodCall.getMethodIdWide().getKind();
     returnType = ImportHelper.getSignatureName(jMethodCall.getType());
     args = loader.load(NExpression.class, jMethodCall.getArgs());
     dispatchKind = jMethodCall.getDispatchKind();
@@ -124,12 +123,12 @@
     } else {
       jReceiverType = exportSession.getLookup().getInterface(receiverType);
     }
-    JMethodIdWide methodId = jReceiverType.getOrCreateMethodIdWide(methodName,
-        exportSession.getTypeListFromSignatureList(methodArgsType), methodKind);
     JType jReturnType = exportSession.getLookup().getType(returnType);
+    JMethodId methodId = jReceiverType.getOrCreateMethodId(methodName,
+        exportSession.getTypeListFromSignatureList(methodArgsType), methodKind, jReturnType);
     SourceInfo jSourceInfo = sourceInfo.exportAsJast(exportSession);
     JMethodCall jMethodCall = new JMethodCall(jSourceInfo, jInstance, jReceiverType, methodId,
-        jReturnType, dispatchKind == DispatchKind.VIRTUAL /* isVirtualDispatch */);
+        dispatchKind == DispatchKind.VIRTUAL /* isVirtualDispatch */);
     for (NExpression arg : args) {
       jMethodCall.addArg(arg.exportAsJast(exportSession));
     }
@@ -137,26 +136,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert receiverType != null;
-    assert receiverKind != null;
-    assert methodName != null;
-    assert methodKind != null;
-    assert returnType != null;
-    assert dispatchKind != null;
-    assert sourceInfo != null;
-    out.writeNode(instance);
-    out.writeId(receiverType);
-    out.writeReceiverKindEnum(receiverKind);
-    out.writeId(methodName);
-    out.writeIds(methodArgsType);
-    out.writeMethodKindEnum(methodKind);
-    out.writeId(returnType);
-    out.writeNodes(args);
-    out.writeDispatchKindEnum(dispatchKind);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     instance = in.readNode(NExpression.class);
     receiverType = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NMethodId.java b/jack/src/com/android/jack/jayce/v0003/nodes/NMethodId.java
index 92ef0ef..d11bce2 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NMethodId.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NMethodId.java
@@ -25,7 +25,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -79,15 +78,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert methodKind != null;
-    out.writeId(name);
-    out.writeMethodKindEnum(methodKind);
-    out.writeId(returnTypeSig);
-    out.writeIds(paramTypeSigs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     name = in.readId();
     methodKind = in.readMethodKindEnum();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NMethodLiteral.java b/jack/src/com/android/jack/jayce/v0003/nodes/NMethodLiteral.java
index afa8c9e..ebbd57d 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NMethodLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NMethodLiteral.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -75,12 +74,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(method);
-    out.writeId(methodEnclosingType);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     method = in.readId();
     methodEnclosingType = in.readId();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NModOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NModOperation.java
index 8125414..000db8d 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NModOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NModOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NMulOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NMulOperation.java
index 4031a89..485b56d 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NMulOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NMulOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NMultiExpression.java b/jack/src/com/android/jack/jayce/v0003/nodes/NMultiExpression.java
index 798a593..410c826 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NMultiExpression.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NMultiExpression.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -71,11 +70,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNodes(exprs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     exprs = in.readNodes(NExpression.class);
 
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NNameValuePair.java b/jack/src/com/android/jack/jayce/v0003/nodes/NNameValuePair.java
index ed6a031..8a88b45 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NNameValuePair.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NNameValuePair.java
@@ -28,7 +28,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -87,12 +86,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeString(name);
-    out.writeNode(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     name = in.readString();
     value = in.readNode(NLiteral.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NNativeMethodBody.java b/jack/src/com/android/jack/jayce/v0003/nodes/NNativeMethodBody.java
index 53d45d5..dc626af 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NNativeMethodBody.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NNativeMethodBody.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -57,12 +56,6 @@
 
   @SuppressWarnings("unused")
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-
-  }
-
-  @SuppressWarnings("unused")
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
 
   }
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NNeqOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NNeqOperation.java
index e5f3e44..07ecfa3 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NNeqOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NNeqOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NNewArray.java b/jack/src/com/android/jack/jayce/v0003/nodes/NNewArray.java
index c9ee412..916cdb1 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NNewArray.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NNewArray.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -88,13 +87,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(type);
-    out.writeNodes(dims);
-    out.writeNodes(initializers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     type = in.readId();
     dims = in.readNodes(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NNewInstance.java b/jack/src/com/android/jack/jayce/v0003/nodes/NNewInstance.java
index 4ea5a73..3d0f822 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NNewInstance.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NNewInstance.java
@@ -17,15 +17,15 @@
 package com.android.jack.jayce.v0003.nodes;
 
 import com.android.jack.ir.ast.JClassOrInterface;
-import com.android.jack.ir.ast.JMethodIdWide;
+import com.android.jack.ir.ast.JMethodId;
 import com.android.jack.ir.ast.JNewInstance;
+import com.android.jack.ir.ast.JPrimitiveType.JPrimitiveTypeEnum;
 import com.android.jack.ir.ast.JTypeLookupException;
 import com.android.jack.ir.ast.MethodKind;
 import com.android.jack.ir.sourceinfo.SourceInfo;
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -49,7 +49,7 @@
   public void importFromJast(@Nonnull ImportHelper loader, @Nonnull Object node) {
     JNewInstance jNewInstance = (JNewInstance) node;
     receiverType = ImportHelper.getSignatureName(jNewInstance.getReceiverType());
-    methodArgsType = ImportHelper.getMethodArgsSignature(jNewInstance.getMethodId());
+    methodArgsType = ImportHelper.getMethodArgsSignature(jNewInstance.getMethodIdWide());
     args = loader.load(NExpression.class, jNewInstance.getArgs());
     sourceInfo = loader.load(jNewInstance.getSourceInfo());
   }
@@ -67,9 +67,9 @@
     assert methodArgsType != null;
     assert args != null;
     JClassOrInterface jReceiverType = exportSession.getLookup().getClass(receiverType);
-    JMethodIdWide methodId = jReceiverType.getOrCreateMethodIdWide(INIT_NAME,
+    JMethodId methodId = jReceiverType.getOrCreateMethodId(INIT_NAME,
         exportSession.getTypeListFromSignatureList(methodArgsType),
-        MethodKind.INSTANCE_NON_VIRTUAL);
+        MethodKind.INSTANCE_NON_VIRTUAL, JPrimitiveTypeEnum.VOID.getType());
     SourceInfo jSourceInfo = sourceInfo.exportAsJast(exportSession);
     JNewInstance jNewInstance = new JNewInstance(jSourceInfo, jReceiverType, methodId);
     for (NExpression arg : args) {
@@ -79,15 +79,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert instance == null;
-    assert methodKind == null;
-    out.writeId(receiverType);
-    out.writeIds(methodArgsType);
-    out.writeNodes(args);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     receiverType = in.readId();
     methodArgsType = in.readIds();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NNullLiteral.java b/jack/src/com/android/jack/jayce/v0003/nodes/NNullLiteral.java
index 19562c0..fe25d0a 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NNullLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NNullLiteral.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -57,11 +56,6 @@
 
   @SuppressWarnings("unused")
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-  }
-
-  @SuppressWarnings("unused")
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
   }
 
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NOrOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NOrOperation.java
index 4cf55d0..902731c 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NOrOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NOrOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NOriginDigest.java b/jack/src/com/android/jack/jayce/v0003/nodes/NOriginDigest.java
index b32a817..82fd49b 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NOriginDigest.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NOriginDigest.java
@@ -20,7 +20,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.jayce.v0003.util.OriginDigestDescriptorHelper;
 
@@ -70,18 +69,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert digest != null;
-
-    out.writeInt(descriptor);
-    out.writeString(algo);
-    out.writeBuffer(digest);
-    out.writeString(emitter);
-    out.writeInt(major);
-    out.writeInt(minor);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     descriptor = in.readInt();
     algo = in.readString();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NParameter.java b/jack/src/com/android/jack/jayce/v0003/nodes/NParameter.java
index 037cda4..d008056 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NParameter.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NParameter.java
@@ -26,7 +26,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -114,16 +113,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(id);
-    out.writeInt(modifiers);
-    out.writeId(type);
-    out.writeId(name);
-    out.writeNodes(annotations);
-    out.writeNodes(markers);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     id = in.readId();
     modifiers = in.readInt();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NParameterRef.java b/jack/src/com/android/jack/jayce/v0003/nodes/NParameterRef.java
index 6c6b302..42f795e 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NParameterRef.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NParameterRef.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -63,11 +62,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(localId);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     localId = in.readId();
 
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NPostfixDecOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NPostfixDecOperation.java
index a03de50..7dbd2d2 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NPostfixDecOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NPostfixDecOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -62,11 +61,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(arg);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     arg = in.readNode(NExpression.class);
 
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NPostfixIncOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NPostfixIncOperation.java
index 17b3507..96745f5 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NPostfixIncOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NPostfixIncOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -62,11 +61,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(arg);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     arg = in.readNode(NExpression.class);
 
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixBitNotOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixBitNotOperation.java
index c2d6f63..85fa6fa 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixBitNotOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixBitNotOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -62,11 +61,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(arg);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     arg = in.readNode(NExpression.class);
 
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixDecOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixDecOperation.java
index ee2fada..7e5c07f 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixDecOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixDecOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -62,11 +61,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(arg);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     arg = in.readNode(NExpression.class);
 
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixIncOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixIncOperation.java
index 4f96997..81360b2 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixIncOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixIncOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -62,11 +61,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(arg);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     arg = in.readNode(NExpression.class);
 
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixNegOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixNegOperation.java
index fc5cd67..607a973 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixNegOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixNegOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -62,11 +61,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(arg);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     arg = in.readNode(NExpression.class);
 
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixNotOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixNotOperation.java
index f7ee123..e191646 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixNotOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NPrefixNotOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -62,11 +61,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(arg);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     arg = in.readNode(NExpression.class);
 
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NReinterpretCastOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NReinterpretCastOperation.java
index ceb7afe..4d4dac7 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NReinterpretCastOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NReinterpretCastOperation.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -74,12 +73,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(castType);
-    out.writeNode(expr);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     castType = in.readId();
     expr = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NReturnStatement.java b/jack/src/com/android/jack/jayce/v0003/nodes/NReturnStatement.java
index 4632077..afd7119 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NReturnStatement.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NReturnStatement.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -74,11 +73,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(expr);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     expr = in.readNode(NExpression.class);
   }
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NShlOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NShlOperation.java
index b4db2eb..1a210df 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NShlOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NShlOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NShortLiteral.java b/jack/src/com/android/jack/jayce/v0003/nodes/NShortLiteral.java
index abeb5bb..e54a20b 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NShortLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NShortLiteral.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -59,14 +58,8 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeShort(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     value = in.readShort();
-    
   }
 
   @Override
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NShrOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NShrOperation.java
index 80ac4f1..36fc08b 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NShrOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NShrOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NShruOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NShruOperation.java
index bceb64c..2c416a9 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NShruOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NShruOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NSimpleName.java b/jack/src/com/android/jack/jayce/v0003/nodes/NSimpleName.java
index 2936ecd..1940eab 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NSimpleName.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NSimpleName.java
@@ -20,7 +20,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -54,11 +53,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeString(simpleName);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     simpleName = in.readString();
   }
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NStringLiteral.java b/jack/src/com/android/jack/jayce/v0003/nodes/NStringLiteral.java
index dd12e7d..481c75f 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NStringLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NStringLiteral.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -61,11 +60,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeString(value);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     value = in.readString();
 
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NSubOperation.java b/jack/src/com/android/jack/jayce/v0003/nodes/NSubOperation.java
index 839fe5c..c3bb3f3 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NSubOperation.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NSubOperation.java
@@ -21,7 +21,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -68,12 +67,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lhs);
-    out.writeNode(rhs);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lhs = in.readNode(NExpression.class);
     rhs = in.readNode(NExpression.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NSwitchStatement.java b/jack/src/com/android/jack/jayce/v0003/nodes/NSwitchStatement.java
index 1b2b312..cdb7cb7 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NSwitchStatement.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NSwitchStatement.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -98,13 +97,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(expr);
-    out.writeIds(cases);
-    out.writeNode(body);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     expr = in.readNode(NExpression.class);
     cases = in.readIds();
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NSynchronizedBlock.java b/jack/src/com/android/jack/jayce/v0003/nodes/NSynchronizedBlock.java
index 84cbc8f..abda178 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NSynchronizedBlock.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NSynchronizedBlock.java
@@ -25,7 +25,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -86,12 +85,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lockExpr);
-    out.writeNode(synchronizedBlock);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lockExpr = in.readNode(NExpression.class);
     synchronizedBlock = in.readNode(NBlock.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NThisRef.java b/jack/src/com/android/jack/jayce/v0003/nodes/NThisRef.java
index b7386c5..7a2334a 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NThisRef.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NThisRef.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -63,11 +62,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeId(type);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     type = in.readId();
 
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NThisRefTypeInfo.java b/jack/src/com/android/jack/jayce/v0003/nodes/NThisRefTypeInfo.java
index aa61ea5..77ab782 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NThisRefTypeInfo.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NThisRefTypeInfo.java
@@ -20,7 +20,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -56,11 +55,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeString(genericSignature);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     genericSignature = in.readString();
   }
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NThrowStatement.java b/jack/src/com/android/jack/jayce/v0003/nodes/NThrowStatement.java
index 5a8f7d1..23e4df9 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NThrowStatement.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NThrowStatement.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -75,11 +74,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(expr);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     expr = in.readNode(NExpression.class);
   }
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NThrownExceptionMarker.java b/jack/src/com/android/jack/jayce/v0003/nodes/NThrownExceptionMarker.java
index 8f6d8bd..43f519d 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NThrownExceptionMarker.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NThrownExceptionMarker.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 
 import java.io.IOException;
@@ -61,11 +60,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeIds(thrownExceptions);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     thrownExceptions = in.readIds();
   }
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NTryStatement.java b/jack/src/com/android/jack/jayce/v0003/nodes/NTryStatement.java
index a209a31..f047541 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NTryStatement.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NTryStatement.java
@@ -24,7 +24,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -96,14 +95,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNodes(resourcesDeclaration);
-    out.writeNode(tryBlock);
-    out.writeNodes(catchBlocks);
-    out.writeNode(finallyBlock);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     resourcesDeclaration = in.readNodes(NStatement.class);
     tryBlock = in.readNode(NBlock.class);
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NUnlock.java b/jack/src/com/android/jack/jayce/v0003/nodes/NUnlock.java
index 2a2e5e7..1368efe 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NUnlock.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NUnlock.java
@@ -22,7 +22,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -75,11 +74,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(lockExpr);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     lockExpr = in.readNode(NExpression.class);
   }
diff --git a/jack/src/com/android/jack/jayce/v0003/nodes/NWhileStatement.java b/jack/src/com/android/jack/jayce/v0003/nodes/NWhileStatement.java
index 30b7acf..764be05 100644
--- a/jack/src/com/android/jack/jayce/v0003/nodes/NWhileStatement.java
+++ b/jack/src/com/android/jack/jayce/v0003/nodes/NWhileStatement.java
@@ -23,7 +23,6 @@
 import com.android.jack.jayce.v0003.io.ExportSession;
 import com.android.jack.jayce.v0003.io.ImportHelper;
 import com.android.jack.jayce.v0003.io.JayceInternalReaderImpl;
-import com.android.jack.jayce.v0003.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0003.io.Token;
 import com.android.jack.lookup.JMethodLookupException;
 
@@ -79,12 +78,6 @@
   }
 
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    out.writeNode(testExpression);
-    out.writeNode(body);
-  }
-
-  @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     testExpression = in.readNode(NExpression.class);
     body = in.readNode(NStatement.class);
diff --git a/jack/src/com/android/jack/jayce/v0004/Version.java b/jack/src/com/android/jack/jayce/v0004/Version.java
index dc86d9d..7439653 100644
--- a/jack/src/com/android/jack/jayce/v0004/Version.java
+++ b/jack/src/com/android/jack/jayce/v0004/Version.java
@@ -21,7 +21,7 @@
  */
 public class Version {
 
-  public static final int MINOR_MIN = 3;
+  public static final int MINOR_MIN = 4;
 
-  public static final int CURRENT_MINOR = 3;
+  public static final int CURRENT_MINOR = 4;
 }
diff --git a/jack/src/com/android/jack/jayce/v0004/io/JayceInputStream.java b/jack/src/com/android/jack/jayce/v0004/io/JayceInputStream.java
index 5c9d909..325261e 100644
--- a/jack/src/com/android/jack/jayce/v0004/io/JayceInputStream.java
+++ b/jack/src/com/android/jack/jayce/v0004/io/JayceInputStream.java
@@ -16,6 +16,8 @@
 
 package com.android.jack.jayce.v0004.io;
 
+import com.google.common.io.ByteStreams;
+
 import com.android.jack.util.StringUtils;
 
 import java.io.DataInput;
@@ -57,31 +59,55 @@
     return in.readBoolean();
   }
 
+  public void skipBoolean() throws IOException {
+    ByteStreams.skipFully(in, 1);
+  }
+
   @Override
   public byte readByte() throws IOException {
     return in.readByte();
   }
 
+  public void skipByte() throws IOException {
+    ByteStreams.skipFully(in, 1);
+  }
+
   @Override
   public int readUnsignedByte() throws IOException {
     return in.readUnsignedByte();
   }
 
+  public void skipUnsignedByte() throws IOException {
+    ByteStreams.skipFully(in, 1);
+  }
+
   @Override
   public short readShort() throws IOException {
     return in.readShort();
   }
 
+  public void skipShort() throws IOException {
+    ByteStreams.skipFully(in, 2);
+  }
+
   @Override
   public int readUnsignedShort() throws IOException {
     return in.readUnsignedShort();
   }
 
+  public void skipUnsignedShort() throws IOException {
+    ByteStreams.skipFully(in, 2);
+  }
+
   @Override
   public char readChar() throws IOException {
     return in.readChar();
   }
 
+  public void skipChar() throws IOException {
+    ByteStreams.skipFully(in, 2);
+  }
+
   @Override
   public int readInt() throws IOException {
     int result = 0;
@@ -108,6 +134,10 @@
     return result;
   }
 
+  public void skipInt() throws IOException {
+    readInt();
+  }
+
   @Override
   public long readLong() throws IOException {
     long result = 0;
@@ -134,16 +164,28 @@
     return result;
   }
 
+  public void skipLong() throws IOException {
+    readLong();
+  }
+
   @Override
   public float readFloat() throws IOException {
     return in.readFloat();
   }
 
+  public void skipFloat() throws IOException {
+    ByteStreams.skipFully(in, 4);
+  }
+
   @Override
   public double readDouble() throws IOException {
     return in.readDouble();
   }
 
+  public void skipDouble() throws IOException {
+    ByteStreams.skipFully(in, 8);
+  }
+
   @Deprecated
   @Override
   public String readLine() throws IOException {
@@ -166,6 +208,14 @@
     }
   }
 
+  public void skipUTF() throws IOException {
+    int length = readInt();
+
+    if (length > 0) {
+      ByteStreams.skipFully(in, length);
+    }
+  }
+
   public byte[] readBuffer() throws IOException {
     int length = readInt();
 
@@ -177,4 +227,12 @@
 
     return b;
   }
+
+  public void skipBuffer() throws IOException {
+    int length = readInt();
+
+    if (length > 0) {
+      ByteStreams.skipFully(in, length);
+    }
+  }
 }
diff --git a/jack/src/com/android/jack/jayce/v0004/io/JayceInternalReaderImpl.java b/jack/src/com/android/jack/jayce/v0004/io/JayceInternalReaderImpl.java
index 69fd3d1..43601db 100644
--- a/jack/src/com/android/jack/jayce/v0004/io/JayceInternalReaderImpl.java
+++ b/jack/src/com/android/jack/jayce/v0004/io/JayceInternalReaderImpl.java
@@ -105,6 +105,10 @@
     return readString();
   }
 
+  public void skipId() throws IOException {
+    skipString();
+  }
+
   @CheckForNull
   public String readCurrentFileName() throws IOException {
     if (tokenizer.readOpenFileName()) {
@@ -119,6 +123,14 @@
     return currentFileName;
   }
 
+  public void skipCurrentFileName() throws IOException {
+    if (tokenizer.readOpenFileName()) {
+      skipString();
+      currentLine = SourceInfo.UNKNOWN_LINE_NUMBER;
+      tokenizer.readCloseFileName();
+    }
+  }
+
   @Nonnegative
   public int readCurrentLine() throws IOException {
     if (tokenizer.readOpenLineInfo()) {
@@ -128,41 +140,76 @@
     return currentLine;
   }
 
+  public void skipCurrentLine() throws IOException {
+    if (tokenizer.readOpenLineInfo()) {
+      skipInt();
+      tokenizer.readCloseLineInfo();
+    }
+  }
+
   @Nonnull
   public JRetentionPolicy readRetentionPolicyEnum() throws IOException {
     return RetentionPolicyIdHelper.getValue(readByte());
   }
 
+  public void skipRetentionPolicyEnum() throws IOException {
+    skipByte();
+  }
+
   @Nonnull
   public FieldKind readFieldRefKindEnum() throws IOException {
     return FieldRefKindIdHelper.getValue(readByte());
   }
 
+  public void skipFieldRefKindEnum() throws IOException {
+    skipByte();
+  }
+
   @Nonnull
   public MethodKind readMethodKindEnum() throws IOException {
     return MethodKindIdHelper.getValue(readByte());
   }
 
+  public void skipMethodKindEnum() throws IOException {
+    skipByte();
+  }
+
   @Nonnull
   public ReceiverKind readReceiverKindEnum() throws IOException {
     return ReceiverKindIdHelper.getValue(readByte());
   }
 
+  public void skipReceiverKindEnum() throws IOException {
+    skipByte();
+  }
+
   @Nonnull
   public DispatchKind readDispatchKindEnum() throws IOException {
     return DispatchKindIdHelper.getValue(readByte());
   }
 
+  public void skipDispatchKindEnum() throws IOException {
+    skipByte();
+  }
+
   @CheckForNull
   public String readString() throws IOException {
     return tokenizer.readString();
   }
 
+  public void skipString() throws IOException {
+    tokenizer.skipString();
+  }
+
   @CheckForNull
   public byte[] readBuffer() throws IOException {
     return tokenizer.readBuffer();
   }
 
+  public void skipBuffer() throws IOException {
+    tokenizer.skipBuffer();
+  }
+
   @Nonnull
   public List<String> readIds() throws IOException {
     tokenizer.readOpen();
@@ -175,6 +222,15 @@
     return ids;
   }
 
+  public void skipIds() throws IOException {
+    tokenizer.readOpen();
+    int length = readInt();
+    for (int i = 0; i < length; i++) {
+      skipId();
+    }
+    tokenizer.readClose();
+  }
+
   public void readCatchBlockIds() throws IOException {
     if (tokenizer.readOpenCatchBlockIdAdd()) {
       int length = tokenizer.readInt();
@@ -196,6 +252,63 @@
     }
   }
 
+  public void skipCatchBlockIds() throws IOException {
+    if (tokenizer.readOpenCatchBlockIdAdd()) {
+      int length = tokenizer.readInt();
+      for (int i = 0; i < length; i++) {
+        skipId();
+      }
+      tokenizer.readCloseCatchBlockId();
+    }
+    if (tokenizer.readOpenCatchBlockIdRemove()) {
+      int length = tokenizer.readInt();
+      for (int i = 0; i < length; i++) {
+        skipId();
+      }
+      tokenizer.readCloseCatchBlockId();
+    }
+  }
+
+  public <T extends NNode> void skipNode()
+      throws IOException, JayceFormatException {
+
+    skipCurrentFileName();
+    skipCurrentLine();
+
+    skipCatchBlockIds();
+
+    Token token = tokenizer.next();
+
+    if (token == Token.NULL) {
+      return;
+    }
+
+    tokenizer.readOpen();
+
+    skipNodeInternal(token);
+  }
+
+  private <T extends NNode> void skipNodeInternal(@Nonnull Token token)
+      throws IOException, JayceFormatException {
+
+    try {
+
+      token.skip(this);
+
+      if (nodeLevel != NodeLevel.TYPES) {
+        if (token.hasSourceInfo()) {
+          skipCurrentFileName();
+          skipCurrentLine();
+        }
+        tokenizer.readClose();
+      }
+
+    } catch (InvalidTokenException e) {
+      throw new ParseException(
+          "Unexpected token " + token.toString() + " while expecting node.", e);
+    }
+  }
+
   @SuppressWarnings("unchecked")
   @CheckForNull
   public <T extends NNode> T readNode(@Nonnull Class<T> nodeClass) throws IOException,
@@ -214,17 +327,39 @@
     tokenizer.readOpen();
     NNode node;
     try {
+
+      Percent statistic = null;
+      if (token == Token.METHOD_BODY) {
+        statistic = tracer.getStatistic(SKIPPED_BODY);
+      }
+
+      if (!nodeLevel.keep(token.getNodeLevel())) {
+
+        skipNodeInternal(token);
+
+        if (statistic != null) {
+          statistic.addTrue();
+        }
+        return null;
+      }
+
       node = token.newNode();
+
+      if (node instanceof NDeclaredType) {
+        tracer.getStatistic(SKIPPED_TYPE_STRUCTURE).add(nodeLevel == NodeLevel.TYPES);
+      }
+
+      if (statistic != null) {
+        statistic.addFalse();
+      }
+
+
     } catch (InvalidTokenException e) {
       throw new ParseException(
           "Unexpected token " + token.toString() + " while expecting node.", e);
     }
-    Percent statistic = null;
-    if (token == Token.METHOD_BODY) {
-      statistic = tracer.getStatistic(SKIPPED_BODY);
-    } else if (node instanceof NDeclaredType) {
-      tracer.getStatistic(SKIPPED_TYPE_STRUCTURE).add(nodeLevel == NodeLevel.TYPES);
-    }
+
+    assert node != null;
 
     if (!nodeClass.isAssignableFrom(node.getClass())) {
       throw new JayceFormatException("Unexpected node " + node.getClass().getSimpleName() + ", "
@@ -257,17 +392,7 @@
       tokenizer.readClose();
     }
 
-    if (nodeLevel.keep(token.getNodeLevel())) {
-      if (statistic != null) {
-        statistic.addFalse();
-      }
-      return (T) node;
-    } else {
-      if (statistic != null) {
-        statistic.addTrue();
-      }
-      return null;
-    }
+    return (T) node;
   }
 
   @Nonnull
@@ -287,38 +412,80 @@
 
   }
 
+  public <T extends NNode> void skipNodes() throws IOException,
+      JayceFormatException {
+    tokenizer.readOpen();
+    int length = readInt();
+    for (int i = 0; i < length; i++) {
+      skipNode();
+    }
+    tokenizer.readClose();
+  }
+
   public int readInt() throws IOException {
     return tokenizer.readInt();
   }
 
+  public void skipInt() throws IOException {
+    tokenizer.skipInt();
+  }
+
   public byte readByte() throws IOException {
     return tokenizer.readByte();
   }
 
+  public void skipByte() throws IOException {
+    tokenizer.skipByte();
+  }
+
   public boolean readBoolean() throws IOException {
     return tokenizer.readBoolean();
   }
 
+  public void skipBoolean() throws IOException {
+    tokenizer.skipBoolean();
+  }
+
   public long readLong() throws IOException {
     return tokenizer.readLong();
   }
 
+  public void skipLong() throws IOException {
+    tokenizer.skipLong();
+  }
+
   public short readShort() throws IOException {
     return tokenizer.readShort();
   }
 
+  public void skipShort() throws IOException {
+    tokenizer.skipShort();
+  }
+
   public char readChar() throws IOException {
     return tokenizer.readChar();
   }
 
+  public void skipChar() throws IOException {
+    tokenizer.skipChar();
+  }
+
   public float readFloat() throws IOException {
     return tokenizer.readFloat();
   }
 
+  public void skipFloat() throws IOException {
+    tokenizer.skipFloat();
+  }
+
   public double readDouble() throws IOException {
     return tokenizer.readDouble();
   }
 
+  public void skipDouble() throws IOException {
+    tokenizer.skipDouble();
+  }
+
   @Override
   @Nonnull
   public DeclaredTypeNode readType(@Nonnull NodeLevel nodeLevel) throws IOException,
diff --git a/jack/src/com/android/jack/jayce/v0004/io/JayceInternalWriterImpl.java b/jack/src/com/android/jack/jayce/v0004/io/JayceInternalWriterImpl.java
index 37df876..30291b2 100644
--- a/jack/src/com/android/jack/jayce/v0004/io/JayceInternalWriterImpl.java
+++ b/jack/src/com/android/jack/jayce/v0004/io/JayceInternalWriterImpl.java
@@ -36,6 +36,9 @@
 import com.android.jack.jayce.v0004.util.MethodKindIdHelper;
 import com.android.jack.jayce.v0004.util.ReceiverKindIdHelper;
 import com.android.jack.jayce.v0004.util.RetentionPolicyIdHelper;
+import com.android.sched.util.file.CannotCloseException;
+import com.android.sched.util.file.CannotWriteException;
+import com.android.sched.util.location.HasLocation;
 import com.android.sched.util.log.Event;
 import com.android.sched.util.log.Tracer;
 import com.android.sched.util.log.TracerFactory;
@@ -71,8 +74,12 @@
   @Nonnull
   private final  List<String> currentCatchBlockList = new ArrayList<String>();
 
-  public JayceInternalWriterImpl(@Nonnull OutputStream out) {
+  @Nonnull
+  private final HasLocation locationProvider;
+
+  public JayceInternalWriterImpl(@Nonnull OutputStream out, @Nonnull HasLocation locationProvider) {
     this.out = new JayceOutputStream(out);
+    this.locationProvider = locationProvider;
   }
 
   public void writeNode(@CheckForNull NNode node) throws IOException {
@@ -348,7 +355,7 @@
   }
 
   @Override
-  public void write(@Nonnull JNode jNode) throws IOException {
+  public void write(@Nonnull JNode jNode) throws CannotWriteException {
     try (Event eventWriting = tracer.open(JackEventType.NNODE_WRITING)) {
       ImportHelper importHelper = new ImportHelper(new NodeFactory());
       NNode nNode;
@@ -356,7 +363,11 @@
         nNode = importHelper.load(jNode);
       }
 
-      writeNode(nNode);
+      try {
+        writeNode(nNode);
+      } catch (IOException e) {
+        throw new CannotWriteException(locationProvider, e);
+      }
     }
   }
 
@@ -366,7 +377,11 @@
   }
 
   @Override
-  public void close() throws IOException {
-    out.close();
+  public void close() throws CannotCloseException {
+    try {
+      out.close();
+    } catch (IOException e) {
+      throw new CannotCloseException(locationProvider, e);
+    }
   }
 }
diff --git a/jack/src/com/android/jack/jayce/v0004/io/Token.java b/jack/src/com/android/jack/jayce/v0004/io/Token.java
index a4f9cd4..b24fc5a 100644
--- a/jack/src/com/android/jack/jayce/v0004/io/Token.java
+++ b/jack/src/com/android/jack/jayce/v0004/io/Token.java
@@ -16,9 +16,9 @@
 
 package com.android.jack.jayce.v0004.io;
 
-import com.android.jack.jayce.JayceFormatException;
 import com.android.jack.jayce.NodeLevel;
 import com.android.jack.jayce.v0004.NNode;
+import com.android.jack.jayce.v0004.nodes.HasSourceInfo;
 import com.android.jack.jayce.v0004.nodes.NAbsentArrayDimension;
 import com.android.jack.jayce.v0004.nodes.NAddOperation;
 import com.android.jack.jayce.v0004.nodes.NAlloc;
@@ -138,6 +138,8 @@
 import com.android.jack.jayce.v0004.nodes.NUnlock;
 import com.android.jack.jayce.v0004.nodes.NWhileStatement;
 
+import java.io.IOException;
+
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 
@@ -169,6 +171,17 @@
     public NNode newNode() {
       return new NAbsentArrayDimension();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAbsentArrayDimension> getNNodeClass() {
+      return NAbsentArrayDimension.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAbsentArrayDimension.skipContent(reader);
+    }
   },
   ADD_OPERATION("+") {
     @Override
@@ -176,6 +189,17 @@
     public NNode newNode() {
       return new NAddOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAddOperation> getNNodeClass() {
+      return NAddOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAddOperation.skipContent(reader);
+    }
   },
   ALLOC("alloc") {
     @Override
@@ -183,6 +207,17 @@
     public NNode newNode() {
       return new NAlloc();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAlloc> getNNodeClass() {
+      return NAlloc.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAlloc.skipContent(reader);
+    }
   },
   AND_OPERATION("&&") {
     @Override
@@ -190,6 +225,17 @@
     public NNode newNode() {
       return new NAndOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAndOperation> getNNodeClass() {
+      return NAndOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAndOperation.skipContent(reader);
+    }
   },
   ANNOTATION("annotation-literal", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -197,6 +243,17 @@
     public NNode newNode() {
       return new NAnnotation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAnnotation> getNNodeClass() {
+      return NAnnotation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAnnotation.skipContent(reader);
+    }
   },
   ANNOTATION_METHOD("annotation-method", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -204,6 +261,17 @@
     public NNode newNode() {
       return new NAnnotationMethod();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAnnotationMethod> getNNodeClass() {
+      return NAnnotationMethod.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAnnotationMethod.skipContent(reader);
+    }
   },
   ANNOTATION_TYPE("annotation", NodeLevel.TYPES) {
     @Override
@@ -211,6 +279,17 @@
     public NNode newNode() {
       return new NAnnotationType();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAnnotationType> getNNodeClass() {
+      return NAnnotationType.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAnnotationType.skipContent(reader);
+    }
   },
   ARRAY_LENGTH("array-length") {
     @Override
@@ -218,6 +297,17 @@
     public NNode newNode() {
       return new NArrayLength();
     }
+
+    @Override
+    @Nonnull
+    public Class<NArrayLength> getNNodeClass() {
+      return NArrayLength.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NArrayLength.skipContent(reader);
+    }
   },
   ARRAY_LITERAL("array-literal", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -225,6 +315,17 @@
     public NNode newNode() {
       return new NArrayLiteral();
     }
+
+    @Override
+    @Nonnull
+    public Class<NArrayLiteral> getNNodeClass() {
+      return NArrayLiteral.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NArrayLiteral.skipContent(reader);
+    }
   },
   ARRAY_REF("array-ref") {
     @Override
@@ -232,6 +333,17 @@
     public NNode newNode() {
       return new NArrayRef();
     }
+
+    @Override
+    @Nonnull
+    public Class<NArrayRef> getNNodeClass() {
+      return NArrayRef.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NArrayRef.skipContent(reader);
+    }
   },
   ASG_ADD_OPERATION("+=") {
     @Override
@@ -239,6 +351,17 @@
     public NNode newNode() {
       return new NAsgAddOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAsgAddOperation> getNNodeClass() {
+      return NAsgAddOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAsgAddOperation.skipContent(reader);
+    }
   },
   ASG_BIT_AND_OPERATION("&=") {
     @Override
@@ -246,6 +369,17 @@
     public NNode newNode() {
       return new NAsgBitAndOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAsgBitAndOperation> getNNodeClass() {
+      return NAsgBitAndOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAsgBitAndOperation.skipContent(reader);
+    }
   },
   ASG_BIT_OR_OPERATION("|=") {
     @Override
@@ -253,6 +387,17 @@
     public NNode newNode() {
       return new NAsgBitOrOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAsgBitOrOperation> getNNodeClass() {
+      return NAsgBitOrOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAsgBitOrOperation.skipContent(reader);
+    }
   },
   ASG_BIT_XOR_OPERATION("^=") {
     @Override
@@ -260,6 +405,17 @@
     public NNode newNode() {
       return new NAsgBitXorOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAsgBitXorOperation> getNNodeClass() {
+      return NAsgBitXorOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAsgBitXorOperation.skipContent(reader);
+    }
   },
   ASG_CONCAT_OPERATION("asg-concat") {
     @Override
@@ -267,6 +423,17 @@
     public NNode newNode() {
       return new NAsgConcatOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAsgConcatOperation> getNNodeClass() {
+      return NAsgConcatOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAsgConcatOperation.skipContent(reader);
+    }
   },
   ASG_DIV_OPERATION("/=") {
     @Override
@@ -274,6 +441,17 @@
     public NNode newNode() {
       return new NAsgDivOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAsgDivOperation> getNNodeClass() {
+      return NAsgDivOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAsgDivOperation.skipContent(reader);
+    }
   },
   ASG_MOD_OPERATION("%=") {
     @Override
@@ -281,6 +459,17 @@
     public NNode newNode() {
       return new NAsgModOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAsgModOperation> getNNodeClass() {
+      return NAsgModOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAsgModOperation.skipContent(reader);
+    }
   },
   ASG_MUL_OPERATION("*=") {
     @Override
@@ -288,6 +477,17 @@
     public NNode newNode() {
       return new NAsgMulOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAsgMulOperation> getNNodeClass() {
+      return NAsgMulOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAsgMulOperation.skipContent(reader);
+    }
   },
   ASG_OPERATION("=") {
     @Override
@@ -295,6 +495,17 @@
     public NNode newNode() {
       return new NAsgOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAsgOperation> getNNodeClass() {
+      return NAsgOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAsgOperation.skipContent(reader);
+    }
   },
   ASG_SHL_OPERATION("<<=") {
     @Override
@@ -302,6 +513,17 @@
     public NNode newNode() {
       return new NAsgShlOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAsgShlOperation> getNNodeClass() {
+      return NAsgShlOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAsgShlOperation.skipContent(reader);
+    }
   },
   ASG_SHR_OPERATION(">>=") {
     @Override
@@ -309,6 +531,17 @@
     public NNode newNode() {
       return new NAsgShrOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAsgShrOperation> getNNodeClass() {
+      return NAsgShrOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAsgShrOperation.skipContent(reader);
+    }
   },
   ASG_SHRU_OPERATION(">>>=") {
     @Override
@@ -316,6 +549,17 @@
     public NNode newNode() {
       return new NAsgShruOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAsgShruOperation> getNNodeClass() {
+      return NAsgShruOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAsgShruOperation.skipContent(reader);
+    }
   },
   ASG_SUB_OPERATION("-=") {
     @Override
@@ -323,6 +567,17 @@
     public NNode newNode() {
       return new NAsgSubOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAsgSubOperation> getNNodeClass() {
+      return NAsgSubOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAsgSubOperation.skipContent(reader);
+    }
   },
   ASSERT_STATEMENT("assert") {
     @Override
@@ -330,6 +585,17 @@
     public NNode newNode() {
       return new NAssertStatement();
     }
+
+    @Override
+    @Nonnull
+    public Class<NAssertStatement> getNNodeClass() {
+      return NAssertStatement.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NAssertStatement.skipContent(reader);
+    }
   },
   BIT_AND_OPERATION("&") {
     @Override
@@ -337,6 +603,17 @@
     public NNode newNode() {
       return new NBitAndOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NBitAndOperation> getNNodeClass() {
+      return NBitAndOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NBitAndOperation.skipContent(reader);
+    }
   },
   BIT_OR_OPERATION("|") {
     @Override
@@ -344,6 +621,17 @@
     public NNode newNode() {
       return new NBitOrOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NBitOrOperation> getNNodeClass() {
+      return NBitOrOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NBitOrOperation.skipContent(reader);
+    }
   },
   BIT_XOR_OPERATION("^") {
     @Override
@@ -351,6 +639,17 @@
     public NNode newNode() {
       return new NBitXorOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NBitXorOperation> getNNodeClass() {
+      return NBitXorOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NBitXorOperation.skipContent(reader);
+    }
   },
   BLOCK("block") {
     @Nonnull
@@ -358,6 +657,17 @@
     public NNode newNode() {
       return new NBlock();
     }
+
+    @Override
+    @Nonnull
+    public Class<NBlock> getNNodeClass() {
+      return NBlock.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NBlock.skipContent(reader);
+    }
   },
   BOOLEAN_LITERAL("boolean", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -365,6 +675,17 @@
     public NNode newNode() {
       return new NBooleanLiteral();
     }
+
+    @Override
+    @Nonnull
+    public Class<NBooleanLiteral> getNNodeClass() {
+      return NBooleanLiteral.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NBooleanLiteral.skipContent(reader);
+    }
   },
   BREAK_STATEMENT("break") {
     @Nonnull
@@ -372,6 +693,17 @@
     public NNode newNode() {
       return new NBreakStatement();
     }
+
+    @Override
+    @Nonnull
+    public Class<NBreakStatement> getNNodeClass() {
+      return NBreakStatement.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NBreakStatement.skipContent(reader);
+    }
   },
   BYTE_LITERAL("byte", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -379,6 +711,17 @@
     public NNode newNode() {
       return new NByteLiteral();
     }
+
+    @Override
+    @Nonnull
+    public Class<NByteLiteral> getNNodeClass() {
+      return NByteLiteral.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NByteLiteral.skipContent(reader);
+    }
   },
   CASE_STATEMENT("case") {
     @Override
@@ -386,6 +729,17 @@
     public NNode newNode() {
       return new NCaseStatement();
     }
+
+    @Override
+    @Nonnull
+    public Class<NCaseStatement> getNNodeClass() {
+      return NCaseStatement.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NCaseStatement.skipContent(reader);
+    }
   },
   CATCH_BLOCK("catch") {
     @Nonnull
@@ -393,6 +747,17 @@
     public NNode newNode() {
       return new NCatchBlock();
     }
+
+    @Override
+    @Nonnull
+    public Class<NCatchBlock> getNNodeClass() {
+      return NCatchBlock.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NCatchBlock.skipContent(reader);
+    }
   },
   CHAR_LITERAL("char", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -400,6 +765,17 @@
     public NNode newNode() {
       return new NCharLiteral();
     }
+
+    @Override
+    @Nonnull
+    public Class<NCharLiteral> getNNodeClass() {
+      return NCharLiteral.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NCharLiteral.skipContent(reader);
+    }
   },
   CLASS("class", NodeLevel.TYPES) {
     @Nonnull
@@ -407,6 +783,17 @@
     public NNode newNode() {
       return new NClassType();
     }
+
+    @Override
+    @Nonnull
+    public Class<NClassType> getNNodeClass() {
+      return NClassType.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NClassType.skipContent(reader);
+    }
   },
   CLASS_LITERAL("class-literal", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -414,6 +801,17 @@
     public NNode newNode() {
       return new NClassLiteral();
     }
+
+    @Override
+    @Nonnull
+    public Class<NClassLiteral> getNNodeClass() {
+      return NClassLiteral.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NClassLiteral.skipContent(reader);
+    }
   },
   CONCAT_OPERATION("concat") {
     @Override
@@ -421,6 +819,17 @@
     public NNode newNode() {
       return new NConcatOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NConcatOperation> getNNodeClass() {
+      return NConcatOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NConcatOperation.skipContent(reader);
+    }
   },
   CONDITIONAL_EXPRESSION ("?") {
     @Nonnull
@@ -428,6 +837,17 @@
     public NNode newNode() {
       return new NConditionalExpression();
     }
+
+    @Override
+    @Nonnull
+    public Class<NConditionalExpression> getNNodeClass() {
+      return NConditionalExpression.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NConditionalExpression.skipContent(reader);
+    }
   },
   CONSTRUCTOR ("constructor", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -435,6 +855,17 @@
     public NNode newNode() {
       return new NConstructor();
     }
+
+    @Override
+    @Nonnull
+    public Class<NConstructor> getNNodeClass() {
+      return NConstructor.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NConstructor.skipContent(reader);
+    }
   },
   CONTAINER_ANNOTATION("container-annotation", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -442,6 +873,17 @@
     public NNode newNode() {
       return new NContainerAnnotation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NContainerAnnotation> getNNodeClass() {
+      return NContainerAnnotation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NContainerAnnotation.skipContent(reader);
+    }
   },
   CONTINUE_STATEMENT("continue") {
     @Nonnull
@@ -449,13 +891,35 @@
     public NNode newNode() {
       return new NContinueStatement();
     }
+
+    @Override
+    @Nonnull
+    public Class<NContinueStatement> getNNodeClass() {
+      return NContinueStatement.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NContinueStatement.skipContent(reader);
+    }
   },
-  DEBUG_VARIABLE_INFORMATION("debug-var") {
+  DEBUG_VARIABLE_INFORMATION("debug-var", NodeLevel.STRUCTURE) {
     @Nonnull
     @Override
     public NNode newNode() {
       return new NDebugVariableInfo();
     }
+
+    @Override
+    @Nonnull
+    public Class<NDebugVariableInfo> getNNodeClass() {
+      return NDebugVariableInfo.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NDebugVariableInfo.skipContent(reader);
+    }
   },
   DIV_OPERATION("/") {
     @Nonnull
@@ -463,6 +927,17 @@
     public NNode newNode() {
       return new NDivOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NDivOperation> getNNodeClass() {
+      return NDivOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NDivOperation.skipContent(reader);
+    }
   },
   DO_STATEMENT("do") {
     @Nonnull
@@ -470,6 +945,17 @@
     public NNode newNode() {
       return new NDoStatement();
     }
+
+    @Override
+    @Nonnull
+    public Class<NDoStatement> getNNodeClass() {
+      return NDoStatement.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NDoStatement.skipContent(reader);
+    }
   },
   DOUBLE_LITERAL("double", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -477,6 +963,17 @@
     public NNode newNode() {
       return new NDoubleLiteral();
     }
+
+    @Override
+    @Nonnull
+    public Class<NDoubleLiteral> getNNodeClass() {
+      return NDoubleLiteral.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NDoubleLiteral.skipContent(reader);
+    }
   },
   DYNAMIC_CAST_OPERATION("cast") {
     @Override
@@ -484,6 +981,17 @@
     public NNode newNode() {
       return new NDynamicCastOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NDynamicCastOperation> getNNodeClass() {
+      return NDynamicCastOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NDynamicCastOperation.skipContent(reader);
+    }
   },
   ENUM("enum", NodeLevel.TYPES) {
     @Nonnull
@@ -491,6 +999,17 @@
     public NNode newNode() {
       return new NEnumType();
     }
+
+    @Override
+    @Nonnull
+    public Class<NEnumType> getNNodeClass() {
+      return NEnumType.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NEnumType.skipContent(reader);
+    }
   },
   ENUM_FIELD("enum-field", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -498,6 +1017,17 @@
     public NNode newNode() {
       return new NEnumField();
     }
+
+    @Override
+    @Nonnull
+    public Class<NEnumField> getNNodeClass() {
+      return NEnumField.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NEnumType.skipContent(reader);
+    }
   },
   ENUM_LITERAL("enum-literal", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -505,6 +1035,17 @@
     public NNode newNode() {
       return new NEnumLiteral();
     }
+
+    @Override
+    @Nonnull
+    public Class<NEnumLiteral> getNNodeClass() {
+      return NEnumLiteral.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NEnumLiteral.skipContent(reader);
+    }
   },
   EQ_OPERATION("==") {
     @Nonnull
@@ -512,6 +1053,17 @@
     public NNode newNode() {
       return new NEqOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NEqOperation> getNNodeClass() {
+      return NEqOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NEqOperation.skipContent(reader);
+    }
   },
   EXCEPTION_RUNTIME_VALUE("ex-runtime-value") {
     @Nonnull
@@ -519,6 +1071,17 @@
     public NNode newNode() {
       return new NExceptionRuntimeValue();
     }
+
+    @Override
+    @Nonnull
+    public Class<NExceptionRuntimeValue> getNNodeClass() {
+      return NExceptionRuntimeValue.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NExceptionRuntimeValue.skipContent(reader);
+    }
   },
   EXPRESSION_STATEMENT("expression-statement") {
     @Nonnull
@@ -526,6 +1089,17 @@
     public NNode newNode() {
       return new NExpressionStatement();
     }
+
+    @Override
+    @Nonnull
+    public Class<NExpressionStatement> getNNodeClass() {
+      return NExpressionStatement.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NExpressionStatement.skipContent(reader);
+    }
   },
   FIELD("field", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -533,6 +1107,17 @@
     public NNode newNode() {
       return new NField();
     }
+
+    @Override
+    @Nonnull
+    public Class<NField> getNNodeClass() {
+      return NField.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NField.skipContent(reader);
+    }
   },
   FIELD_INITIALIZER("field-intializer") {
     @Nonnull
@@ -540,6 +1125,17 @@
     public NNode newNode() {
       return new NFieldInitializer();
     }
+
+    @Override
+    @Nonnull
+    public Class<NFieldInitializer> getNNodeClass() {
+      return NFieldInitializer.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) {
+      NFieldInitializer.skipContent(reader);
+    }
   },
   FIELD_REF("field-ref") {
     @Nonnull
@@ -547,6 +1143,17 @@
     public NNode newNode() {
       return new NFieldRef();
     }
+
+    @Override
+    @Nonnull
+    public Class<NFieldRef> getNNodeClass() {
+      return NFieldRef.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NFieldRef.skipContent(reader);
+    }
   },
   FLOAT_LITERAL("float", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -554,6 +1161,17 @@
     public NNode newNode() {
       return new NFloatLiteral();
     }
+
+    @Override
+    @Nonnull
+    public Class<NFloatLiteral> getNNodeClass() {
+      return NFloatLiteral.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NFloatLiteral.skipContent(reader);
+    }
   },
   FOR_STATEMENT("for") {
     @Nonnull
@@ -561,6 +1179,17 @@
     public NNode newNode() {
       return new NForStatement();
     }
+
+    @Override
+    @Nonnull
+    public Class<NForStatement> getNNodeClass() {
+      return NForStatement.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NForStatement.skipContent(reader);
+    }
   },
   GENERIC_SIGNATURE("generic-signature", NodeLevel.TYPES) {
     @Override
@@ -568,6 +1197,17 @@
     public NNode newNode() {
       return new NGenericSignature();
     }
+
+    @Override
+    @Nonnull
+    public Class<NGenericSignature> getNNodeClass() {
+      return NGenericSignature.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NGenericSignature.skipContent(reader);
+    }
   },
   GOTO("goto") {
     @Nonnull
@@ -575,6 +1215,17 @@
     public NNode newNode() {
       return new NGoto();
     }
+
+    @Override
+    @Nonnull
+    public Class<NGoto> getNNodeClass() {
+      return NGoto.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NGoto.skipContent(reader);
+    }
   },
   GTE_OPERATION(">=") {
     @Nonnull
@@ -582,6 +1233,17 @@
     public NNode newNode() {
       return new NGteOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NGteOperation> getNNodeClass() {
+      return NGteOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NGteOperation.skipContent(reader);
+    }
   },
   GT_OPERATION(">") {
     @Nonnull
@@ -589,6 +1251,17 @@
     public NNode newNode() {
       return new NGtOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NGtOperation> getNNodeClass() {
+      return NGtOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NGtOperation.skipContent(reader);
+    }
   },
   IF_STATEMENT("if") {
     @Override
@@ -596,6 +1269,17 @@
     public NNode newNode() {
       return new NIfStatement();
     }
+
+    @Override
+    @Nonnull
+    public Class<NIfStatement> getNNodeClass() {
+      return NIfStatement.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NIfStatement.skipContent(reader);
+    }
   },
   INSTANCE_OF("instanceof") {
     @Override
@@ -603,6 +1287,17 @@
     public NNode newNode() {
       return new NInstanceOf();
     }
+
+    @Override
+    @Nonnull
+    public Class<NInstanceOf> getNNodeClass() {
+      return NInstanceOf.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NInstanceOf.skipContent(reader);
+    }
   },
   INT_LITERAL("int", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -610,6 +1305,17 @@
     public NNode newNode() {
       return new NIntLiteral();
     }
+
+    @Override
+    @Nonnull
+    public Class<NIntLiteral> getNNodeClass() {
+      return NIntLiteral.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NIntLiteral.skipContent(reader);
+    }
   },
   INTERFACE("interface", NodeLevel.TYPES) {
     @Nonnull
@@ -617,6 +1323,17 @@
     public NNode newNode() {
       return new NInterfaceType();
     }
+
+    @Override
+    @Nonnull
+    public Class<NInterfaceType> getNNodeClass() {
+      return NInterfaceType.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NInterfaceType.skipContent(reader);
+    }
   },
   LABELED_STATEMENT("label") {
     @Nonnull
@@ -624,6 +1341,17 @@
     public NNode newNode() {
       return new NLabeledStatement();
     }
+
+    @Override
+    @Nonnull
+    public Class<NLabeledStatement> getNNodeClass() {
+      return NLabeledStatement.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NLabeledStatement.skipContent(reader);
+    }
   },
   LAMBDA("lambda") {
     @Nonnull
@@ -631,6 +1359,17 @@
     public NNode newNode() {
       return new NLambda();
     }
+
+    @Override
+    @Nonnull
+    public Class<NLambda> getNNodeClass() {
+      return NLambda.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NLambda.skipContent(reader);
+    }
   },
   LAMBDA_FROM_JILL("lambda-from-jill") {
     @Nonnull
@@ -638,6 +1377,17 @@
     public NNode newNode() {
       return new NLambdaFromJill();
     }
+
+    @Override
+    @Nonnull
+    public Class<NLambdaFromJill> getNNodeClass() {
+      return NLambdaFromJill.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) {
+      NLambdaFromJill.skipContent(reader);
+    }
   },
   LOCAL("local") {
     @Nonnull
@@ -645,6 +1395,18 @@
     public NNode newNode() {
       return new NLocal();
     }
+
+    @Override
+    @Nonnull
+    public Class<NLocal> getNNodeClass() {
+      return NLocal.class;
+    }
+
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NLocal.skipContent(reader);
+    }
   },
   LOCAL_REF("local-ref") {
     @Nonnull
@@ -652,6 +1414,17 @@
     public NNode newNode() {
       return new NLocalRef();
     }
+
+    @Override
+    @Nonnull
+    public Class<NLocalRef> getNNodeClass() {
+      return NLocalRef.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NLocalRef.skipContent(reader);
+    }
   },
   LOCK("lock") {
     @Nonnull
@@ -659,6 +1432,17 @@
     public NNode newNode() {
       return new NLock();
     }
+
+    @Override
+    @Nonnull
+    public Class<NLock> getNNodeClass() {
+      return NLock.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NLock.skipContent(reader);
+    }
   },
   LONG_LITERAL("long", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -666,6 +1450,17 @@
     public NNode newNode() {
       return new NLongLiteral();
     }
+
+    @Override
+    @Nonnull
+    public Class<NLongLiteral> getNNodeClass() {
+      return NLongLiteral.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NLongLiteral.skipContent(reader);
+    }
   },
   LTE_OPERATION("<=") {
     @Nonnull
@@ -673,6 +1468,18 @@
     public NNode newNode() {
       return new NLteOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NLteOperation> getNNodeClass() {
+      return NLteOperation.class;
+    }
+
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NLteOperation.skipContent(reader);
+    }
   },
   LT_OPERATION("<") {
     @Nonnull
@@ -680,6 +1487,17 @@
     public NNode newNode() {
       return new NLtOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NLtOperation> getNNodeClass() {
+      return NLtOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NLtOperation.skipContent(reader);
+    }
   },
   METHOD("method", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -687,6 +1505,17 @@
     public NNode newNode() {
       return new NMethod();
     }
+
+    @Override
+    @Nonnull
+    public Class<NMethod> getNNodeClass() {
+      return NMethod.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NMethod.skipContent(reader);
+    }
   },
   METHOD_BODY("body") {
     @Nonnull
@@ -694,6 +1523,17 @@
     public NNode newNode() {
       return new NMethodBody();
     }
+
+    @Override
+    @Nonnull
+    public Class<NMethodBody> getNNodeClass() {
+      return NMethodBody.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NMethodBody.skipContent(reader);
+    }
   },
   METHOD_CALL("call") {
     @Nonnull
@@ -701,6 +1541,17 @@
     public NNode newNode() {
       return new NMethodCall();
     }
+
+    @Override
+    @Nonnull
+    public Class<NMethodCall> getNNodeClass() {
+      return NMethodCall.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NMethodCall.skipContent(reader);
+    }
   },
   METHODID_WITH_RETURN_TYPE("method-id-with-return-type", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -708,6 +1559,17 @@
     public NNode newNode() {
       return new NMethodId();
     }
+
+    @Override
+    @Nonnull
+    public Class<NMethodId> getNNodeClass() {
+      return NMethodId.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NMethodId.skipContent(reader);
+    }
   },
   METHOD_LITERAL("method-literal", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -715,6 +1577,17 @@
     public NNode newNode() {
       return new NMethodLiteral();
     }
+
+    @Override
+    @Nonnull
+    public Class<NMethodLiteral> getNNodeClass() {
+      return NMethodLiteral.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NMethodLiteral.skipContent(reader);
+    }
   },
   MOD_OPERATION("%") {
     @Nonnull
@@ -722,6 +1595,17 @@
     public NNode newNode() {
       return new NModOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NModOperation> getNNodeClass() {
+      return NModOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NModOperation.skipContent(reader);
+    }
   },
   MUL_OPERATION("*") {
     @Nonnull
@@ -729,6 +1613,17 @@
     public NNode newNode() {
       return new NMulOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NMulOperation> getNNodeClass() {
+      return NMulOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NMulOperation.skipContent(reader);
+    }
   },
   MULTI_EXPRESSION("multi-expression") {
     @Nonnull
@@ -736,6 +1631,17 @@
     public NNode newNode() {
       return new NMultiExpression();
     }
+
+    @Override
+    @Nonnull
+    public Class<NMultiExpression> getNNodeClass() {
+      return NMultiExpression.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NMultiExpression.skipContent(reader);
+    }
   },
   NAME_VALUE_PAIR("name-value-pair", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -743,6 +1649,17 @@
     public NNode newNode() {
       return new NNameValuePair();
     }
+
+    @Override
+    @Nonnull
+    public Class<NNameValuePair> getNNodeClass() {
+      return NNameValuePair.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NNameValuePair.skipContent(reader);
+    }
   },
   NEQ_OPERATION("!=") {
     @Nonnull
@@ -750,6 +1667,17 @@
     public NNode newNode() {
       return new NNeqOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NNeqOperation> getNNodeClass() {
+      return NNeqOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NNeqOperation.skipContent(reader);
+    }
   },
   NATIVE_METHOD_BODY("native-body") {
     @Nonnull
@@ -757,6 +1685,17 @@
     public NNode newNode() {
       return new NNativeMethodBody();
     }
+
+    @Override
+    @Nonnull
+    public Class<NNativeMethodBody> getNNodeClass() {
+      return NNativeMethodBody.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) {
+      NNativeMethodBody.skipContent(reader);
+    }
   },
   NEW_ARRAY("new-array") {
     @Nonnull
@@ -764,6 +1703,17 @@
     public NNode newNode() {
       return new NNewArray();
     }
+
+    @Override
+    @Nonnull
+    public Class<NNewArray> getNNodeClass() {
+      return NNewArray.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NNewArray.skipContent(reader);
+    }
   },
   NEW_INSTANCE("new") {
     @Nonnull
@@ -771,6 +1721,17 @@
     public NNode newNode() {
       return new NNewInstance();
     }
+
+    @Override
+    @Nonnull
+    public Class<NNewInstance> getNNodeClass() {
+      return NNewInstance.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NNewInstance.skipContent(reader);
+    }
   },
   NULL_LITERAL("null-literal", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -778,6 +1739,17 @@
     public NNode newNode() {
       return new NNullLiteral();
     }
+
+    @Override
+    @Nonnull
+    public Class<NNullLiteral> getNNodeClass() {
+      return NNullLiteral.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) {
+      NNullLiteral.skipContent(reader);
+    }
   },
   OR_OPERATION("||") {
     @Override
@@ -785,6 +1757,17 @@
     public NNode newNode() {
       return new NOrOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NOrOperation> getNNodeClass() {
+      return NOrOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NOrOperation.skipContent(reader);
+    }
   },
   ORIGIN_DIGEST("origin-digest", NodeLevel.STRUCTURE) {
     @Override
@@ -792,6 +1775,17 @@
     public NNode newNode() {
       return new NOriginDigest();
     }
+
+    @Override
+    @Nonnull
+    public Class<NOriginDigest> getNNodeClass() {
+      return NOriginDigest.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NOriginDigest.skipContent(reader);
+    }
   },
   PARAMETER("parameter", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -799,6 +1793,17 @@
     public NNode newNode() {
       return new NParameter();
     }
+
+    @Override
+    @Nonnull
+    public Class<NParameter> getNNodeClass() {
+      return NParameter.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NParameter.skipContent(reader);
+    }
   },
   PARAMETER_REF("parameter-ref") {
     @Nonnull
@@ -806,6 +1811,17 @@
     public NNode newNode() {
       return new NParameterRef();
     }
+
+    @Override
+    @Nonnull
+    public Class<NParameterRef> getNNodeClass() {
+      return NParameterRef.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NParameterRef.skipContent(reader);
+    }
   },
   POLYMORPHIC_CALL("polymorphic-call") {
     @Nonnull
@@ -813,6 +1829,17 @@
     public NNode newNode() {
       return new NPolymorphicCall();
     }
+
+    @Override
+    @Nonnull
+    public Class<NPolymorphicCall> getNNodeClass() {
+      return NPolymorphicCall.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NPolymorphicCall.skipContent(reader);
+    }
   },
   POSTFIX_DEC_OPERATION("postfix-dec") {
     @Nonnull
@@ -820,6 +1847,17 @@
     public NNode newNode() {
       return new NPostfixDecOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NPostfixDecOperation> getNNodeClass() {
+      return NPostfixDecOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NPostfixDecOperation.skipContent(reader);
+    }
   },
   POSTFIX_INC_OPERATION("postfix-inc") {
     @Nonnull
@@ -827,6 +1865,17 @@
     public NNode newNode() {
       return new NPostfixIncOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NPostfixIncOperation> getNNodeClass() {
+      return NPostfixIncOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NPostfixIncOperation.skipContent(reader);
+    }
   },
   PREFIX_BIT_NOT_OPERATION("~") {
     @Nonnull
@@ -834,6 +1883,17 @@
     public NNode newNode() {
       return new NPrefixBitNotOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NPrefixBitNotOperation> getNNodeClass() {
+      return NPrefixBitNotOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NPrefixBitNotOperation.skipContent(reader);
+    }
   },
   PREFIX_DEC_OPERATION("prefix-dec") {
     @Nonnull
@@ -841,6 +1901,17 @@
     public NNode newNode() {
       return new NPrefixDecOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NPrefixDecOperation> getNNodeClass() {
+      return NPrefixDecOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NPrefixDecOperation.skipContent(reader);
+    }
   },
   PREFIX_INC_OPERATION("prefix-inc") {
     @Nonnull
@@ -848,6 +1919,17 @@
     public NNode newNode() {
       return new NPrefixIncOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NPrefixIncOperation> getNNodeClass() {
+      return NPrefixIncOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NPrefixIncOperation.skipContent(reader);
+    }
   },
   PREFIX_NEG_OPERATION("neg") {
     @Nonnull
@@ -855,6 +1937,17 @@
     public NNode newNode() {
       return new NPrefixNegOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NPrefixNegOperation> getNNodeClass() {
+      return NPrefixNegOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NPrefixNegOperation.skipContent(reader);
+    }
   },
   PREFIX_NOT_OPERATION("not") {
     @Nonnull
@@ -862,20 +1955,36 @@
     public NNode newNode() {
       return new NPrefixNotOperation();
     }
-  },
-  RESERVED("reserved") {
-    @Nonnull
+
     @Override
-    public NNode newNode() {
-      throw new JayceFormatException("Unexpected node '" + toString() + "'");
+    @Nonnull
+    public Class<NPrefixNotOperation> getNNodeClass() {
+      return NPrefixNotOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NPrefixNotOperation.skipContent(reader);
     }
   },
+  RESERVED("reserved"),
   REINTERPRETCAST_OPERATION("reinterpret-cast") {
     @Override
     @Nonnull
     public NNode newNode() {
       return new NReinterpretCastOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NReinterpretCastOperation> getNNodeClass() {
+      return NReinterpretCastOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NReinterpretCastOperation.skipContent(reader);
+    }
   },
   RETURN_STATEMENT("return") {
     @Nonnull
@@ -883,6 +1992,17 @@
     public NNode newNode() {
       return new NReturnStatement();
     }
+
+    @Override
+    @Nonnull
+    public Class<NReturnStatement> getNNodeClass() {
+      return NReturnStatement.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NReturnStatement.skipContent(reader);
+    }
   },
   SHL_OPERATION("<<") {
     @Nonnull
@@ -890,6 +2010,17 @@
     public NNode newNode() {
       return new NShlOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NShlOperation> getNNodeClass() {
+      return NShlOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NShlOperation.skipContent(reader);
+    }
   },
   SHORT_LITERAL("short", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -897,6 +2028,17 @@
     public NNode newNode() {
       return new NShortLiteral();
     }
+
+    @Override
+    @Nonnull
+    public Class<NShortLiteral> getNNodeClass() {
+      return NShortLiteral.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NShortLiteral.skipContent(reader);
+    }
   },
   SHR_OPERATION(">>") {
     @Nonnull
@@ -904,6 +2046,17 @@
     public NNode newNode() {
       return new NShrOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NShrOperation> getNNodeClass() {
+      return NShrOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NShrOperation.skipContent(reader);
+    }
   },
   SHRU_OPERATION(">>>") {
     @Nonnull
@@ -911,6 +2064,17 @@
     public NNode newNode() {
       return new NShruOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NShruOperation> getNNodeClass() {
+      return NShruOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NShruOperation.skipContent(reader);
+    }
   },
   SIMPLE_NAME("simple-name", NodeLevel.TYPES) {
     @Override
@@ -918,6 +2082,17 @@
     public NNode newNode() {
       return new NSimpleName();
     }
+
+    @Override
+    @Nonnull
+    public Class<NSimpleName> getNNodeClass() {
+      return NSimpleName.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NSimpleName.skipContent(reader);
+    }
   },
   SUB_OPERATION("-") {
     @Nonnull
@@ -925,6 +2100,17 @@
     public NNode newNode() {
       return new NSubOperation();
     }
+
+    @Override
+    @Nonnull
+    public Class<NSubOperation> getNNodeClass() {
+      return NSubOperation.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NSubOperation.skipContent(reader);
+    }
   },
   STRING_LITERAL("string", NodeLevel.STRUCTURE) {
     @Nonnull
@@ -932,6 +2118,18 @@
     public NNode newNode() {
       return new NStringLiteral();
     }
+
+    @Override
+    @Nonnull
+    public Class<NStringLiteral> getNNodeClass() {
+      return NStringLiteral.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NStringLiteral.skipContent(reader);
+    }
+
   },
   SWITCH_STATEMENT("switch") {
     @Nonnull
@@ -939,6 +2137,17 @@
     public NNode newNode() {
       return new NSwitchStatement();
     }
+
+    @Override
+    @Nonnull
+    public Class<NSwitchStatement> getNNodeClass() {
+      return NSwitchStatement.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NSwitchStatement.skipContent(reader);
+    }
   },
   SYNCHRONIZED_BLOCK("synchronized-block") {
     @Nonnull
@@ -946,6 +2155,17 @@
     public NNode newNode() {
       return new NSynchronizedBlock();
     }
+
+    @Override
+    @Nonnull
+    public Class<NSynchronizedBlock> getNNodeClass() {
+      return NSynchronizedBlock.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NSynchronizedBlock.skipContent(reader);
+    }
   },
   THIS_REF("this") {
     @Nonnull
@@ -953,13 +2173,35 @@
     public NNode newNode() {
       return new NThisRef();
     }
+
+    @Override
+    @Nonnull
+    public Class<NThisRef> getNNodeClass() {
+      return NThisRef.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NThisRef.skipContent(reader);
+    }
   },
-  THIS_REF_TYPE_INFO("this-type-info") {
+  THIS_REF_TYPE_INFO("this-type-info", NodeLevel.STRUCTURE) {
     @Nonnull
     @Override
     public NNode newNode() {
       return new NThisRefTypeInfo();
     }
+
+    @Override
+    @Nonnull
+    public Class<NThisRefTypeInfo> getNNodeClass() {
+      return NThisRefTypeInfo.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NThisRefTypeInfo.skipContent(reader);
+    }
   },
   THROW_STATEMENT("throw") {
     @Nonnull
@@ -967,6 +2209,17 @@
     public NNode newNode() {
       return new NThrowStatement();
     }
+
+    @Override
+    @Nonnull
+    public Class<NThrowStatement> getNNodeClass() {
+      return NThrowStatement.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NThrowStatement.skipContent(reader);
+    }
   },
   THROWN_EXCEPTION("thrown-exception", NodeLevel.STRUCTURE) {
     @Override
@@ -974,6 +2227,17 @@
     public NNode newNode() {
       return new NThrownExceptionMarker();
     }
+
+    @Override
+    @Nonnull
+    public Class<NThrownExceptionMarker> getNNodeClass() {
+      return NThrownExceptionMarker.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NThrownExceptionMarker.skipContent(reader);
+    }
   },
   TRY_STATEMENT("try") {
     @Nonnull
@@ -981,6 +2245,17 @@
     public NNode newNode() {
       return new NTryStatement();
     }
+
+    @Override
+    @Nonnull
+    public Class<NTryStatement> getNNodeClass() {
+      return NTryStatement.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NTryStatement.skipContent(reader);
+    }
   },
   UNLOCK("unlock") {
     @Nonnull
@@ -988,6 +2263,17 @@
     public NNode newNode() {
       return new NUnlock();
     }
+
+    @Override
+    @Nonnull
+    public Class<NUnlock> getNNodeClass() {
+      return NUnlock.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NUnlock.skipContent(reader);
+    }
   },
   WHILE_STATEMENT("while") {
     @Nonnull
@@ -995,6 +2281,17 @@
     public NNode newNode() {
       return new NWhileStatement();
     }
+
+    @Override
+    @Nonnull
+    public Class<NWhileStatement> getNNodeClass() {
+      return NWhileStatement.class;
+    }
+
+    @Override
+    public void skip(@Nonnull JayceInternalReaderImpl reader) throws IOException {
+      NWhileStatement.skipContent(reader);
+    }
   },
   ;
 
@@ -1004,12 +2301,21 @@
   @CheckForNull
   private String label;
 
+  private final boolean hasSourceInfo;
+
   private Token(@CheckForNull String text) {
     this(text, NodeLevel.FULL);
   }
   private Token(@CheckForNull String text, NodeLevel nodeLevel) {
     this.label = text;
     this.nodeLevel = nodeLevel;
+    boolean tmpHasSourceInfo;
+    try {
+      tmpHasSourceInfo = HasSourceInfo.class.isAssignableFrom(getNNodeClass());
+    } catch (InvalidTokenException e) {
+      tmpHasSourceInfo = false;
+    }
+    hasSourceInfo = tmpHasSourceInfo;
   }
 
   public int getId() {
@@ -1023,6 +2329,21 @@
 
   @Nonnull
   public NNode newNode() throws InvalidTokenException {
+    throw new InvalidTokenException("No node corresponding to token " + this.toString());
+  }
+
+  @Nonnull
+  public Class<? extends NNode> getNNodeClass() throws InvalidTokenException  {
+    throw new InvalidTokenException("No node corresponding to token " + this.toString());
+  }
+
+  public final boolean hasSourceInfo() {
+    return hasSourceInfo;
+  }
+
+  @SuppressWarnings("unused")
+  public void skip(@Nonnull JayceInternalReaderImpl reader)
+      throws InvalidTokenException, IOException {
     throw new InvalidTokenException("No node coresponding to token " + this.toString());
   }
 
diff --git a/jack/src/com/android/jack/jayce/v0004/io/Tokenizer.java b/jack/src/com/android/jack/jayce/v0004/io/Tokenizer.java
index 05e170b..66a510b 100644
--- a/jack/src/com/android/jack/jayce/v0004/io/Tokenizer.java
+++ b/jack/src/com/android/jack/jayce/v0004/io/Tokenizer.java
@@ -72,50 +72,97 @@
     return in.readInt();
   }
 
+  public void skipInt() throws IOException {
+    currentTokenId = Token.NUMBER_VALUE;
+    in.skipInt();
+  }
+
   public byte readByte() throws IOException {
     currentTokenId = Token.NUMBER_VALUE;
     return in.readByte();
   }
 
+  public void skipByte() throws IOException {
+    currentTokenId = Token.NUMBER_VALUE;
+    in.skipByte();
+  }
+
   public boolean readBoolean() throws IOException {
     return in.readBoolean();
   }
 
+  public void skipBoolean() throws IOException {
+    in.skipBoolean();
+  }
+
   public long readLong() throws IOException {
     currentTokenId = Token.NUMBER_VALUE;
     return in.readLong();
   }
 
+  public void skipLong() throws IOException {
+    currentTokenId = Token.NUMBER_VALUE;
+    in.skipLong();
+  }
+
   public short readShort() throws IOException {
     currentTokenId = Token.NUMBER_VALUE;
     return in.readShort();
   }
 
+  public void skipShort() throws IOException {
+    currentTokenId = Token.NUMBER_VALUE;
+    in.skipShort();
+  }
+
   public char readChar() throws IOException {
     currentTokenId = Token.NUMBER_VALUE;
     return in.readChar();
   }
 
+  public void skipChar() throws IOException {
+    currentTokenId = Token.NUMBER_VALUE;
+    in.skipChar();
+  }
+
   public float readFloat() throws IOException {
     currentTokenId = Token.NUMBER_VALUE;
     return Float.intBitsToFloat(readInt());
   }
 
+  public void skipFloat() throws IOException {
+    currentTokenId = Token.NUMBER_VALUE;
+    in.skipInt();
+  }
+
   public double readDouble() throws IOException {
     currentTokenId = Token.NUMBER_VALUE;
     return Double.longBitsToDouble(readLong());
   }
 
+  public void skipDouble() throws IOException {
+    currentTokenId = Token.NUMBER_VALUE;
+    in.skipLong();
+  }
+
   @CheckForNull
   public String readString() throws IOException {
     return in.readUTF();
   }
 
+  public void skipString() throws IOException {
+    in.skipUTF();
+  }
+
   @CheckForNull
   public byte[] readBuffer() throws IOException {
     return in.readBuffer();
   }
 
+  public void skipBuffer() throws IOException {
+    in.skipBuffer();
+  }
+
   private void readToken(@Nonnull Token expected) throws IOException {
     next();
     if (currentTokenId != expected) {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAbsentArrayDimension.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAbsentArrayDimension.java
index 7db047c..d7694cb 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAbsentArrayDimension.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAbsentArrayDimension.java
@@ -58,6 +58,10 @@
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
   }
 
+  @SuppressWarnings("unused")
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAddOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAddOperation.java
index 425bba3..b030c0f 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAddOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAddOperation.java
@@ -76,6 +76,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAlloc.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAlloc.java
index 012aa0f..4c4edfd 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAlloc.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAlloc.java
@@ -67,6 +67,10 @@
     instanceType = in.readId();
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAndOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAndOperation.java
index ea30700..85bf84e 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAndOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAndOperation.java
@@ -76,6 +76,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAnnotation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAnnotation.java
index b1c6328..aef2425 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAnnotation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAnnotation.java
@@ -101,6 +101,13 @@
     markers = in.readNodes(NMarker.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipRetentionPolicyEnum();
+    in.skipId();
+    in.skipNodes();
+    in.skipNodes();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAnnotationMethod.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAnnotationMethod.java
index 1fd3113..1a033ef 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAnnotationMethod.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAnnotationMethod.java
@@ -123,6 +123,15 @@
     markers = in.readNodes(NMarker.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+    in.skipId();
+    in.skipInt();
+    in.skipNodes();
+    in.skipNode();
+    in.skipNodes();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAnnotationType.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAnnotationType.java
index 116bed3..bed6f8c 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAnnotationType.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAnnotationType.java
@@ -152,6 +152,22 @@
     }
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    NodeLevel level = in.getNodeLevel();
+    in.skipRetentionPolicyEnum();
+    in.skipInt();
+    in.skipId();
+    if (level != NodeLevel.TYPES) {
+      in.skipIds();
+      in.skipId();
+      in.skipIds();
+      in.skipNodes();
+      in.skipNodes();
+      in.skipNodes();
+      in.skipNodes();
+    }
+  }
+
   @Nonnull
   @Override
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NArrayLength.java b/jack/src/com/android/jack/jayce/v0004/nodes/NArrayLength.java
index dc54cb6..223b9c9 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NArrayLength.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NArrayLength.java
@@ -70,6 +70,10 @@
     instance = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NArrayLiteral.java b/jack/src/com/android/jack/jayce/v0004/nodes/NArrayLiteral.java
index f501add..3a72b9c 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NArrayLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NArrayLiteral.java
@@ -74,6 +74,10 @@
     values = in.readNodes(NLiteral.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNodes();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NArrayRef.java b/jack/src/com/android/jack/jayce/v0004/nodes/NArrayRef.java
index 31183f6..3388d63 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NArrayRef.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NArrayRef.java
@@ -78,6 +78,11 @@
     index = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgAddOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgAddOperation.java
index 09def26..23cc134 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgAddOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgAddOperation.java
@@ -76,6 +76,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgBitAndOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgBitAndOperation.java
index de764be..8859a8b 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgBitAndOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgBitAndOperation.java
@@ -76,6 +76,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgBitOrOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgBitOrOperation.java
index fc29f33..ae27f55 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgBitOrOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgBitOrOperation.java
@@ -76,6 +76,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgBitXorOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgBitXorOperation.java
index 696cee5..6af8985 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgBitXorOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgBitXorOperation.java
@@ -76,6 +76,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgConcatOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgConcatOperation.java
index d62176f..ebf8e24 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgConcatOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgConcatOperation.java
@@ -76,6 +76,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgDivOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgDivOperation.java
index b0bc219..22fbcaf 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgDivOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgDivOperation.java
@@ -76,6 +76,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgModOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgModOperation.java
index 14431fd..f980005 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgModOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgModOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgMulOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgMulOperation.java
index 5301fea..f6cbbb2 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgMulOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgMulOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgOperation.java
index af72b4b..e5f1b12 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgShlOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgShlOperation.java
index 9ae3860..dee5fb8 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgShlOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgShlOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgShrOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgShrOperation.java
index 317ce2b..b3f7eaa 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgShrOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgShrOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgShruOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgShruOperation.java
index 7185899..bba5720 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgShruOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgShruOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgSubOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgSubOperation.java
index 29abd39..e309a62 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAsgSubOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAsgSubOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NAssertStatement.java b/jack/src/com/android/jack/jayce/v0004/nodes/NAssertStatement.java
index 6be2deb..156943d 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NAssertStatement.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NAssertStatement.java
@@ -92,6 +92,11 @@
     arg = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.readNode(NExpression.class);
+    in.readNode(NExpression.class);
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NBitAndOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NBitAndOperation.java
index f863a65..d440903 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NBitAndOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NBitAndOperation.java
@@ -76,6 +76,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NBitOrOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NBitOrOperation.java
index 705fb11..8aef5a1 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NBitOrOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NBitOrOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NBitXorOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NBitXorOperation.java
index 34e2d4e..91d1a9f 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NBitXorOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NBitXorOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NBlock.java b/jack/src/com/android/jack/jayce/v0004/nodes/NBlock.java
index 1346104..f338a47 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NBlock.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NBlock.java
@@ -80,6 +80,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNodes();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NBooleanLiteral.java b/jack/src/com/android/jack/jayce/v0004/nodes/NBooleanLiteral.java
index 75d9ac9..f9206da 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NBooleanLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NBooleanLiteral.java
@@ -63,6 +63,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipBoolean();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NBreakStatement.java b/jack/src/com/android/jack/jayce/v0004/nodes/NBreakStatement.java
index b46667c..527a955 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NBreakStatement.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NBreakStatement.java
@@ -75,6 +75,10 @@
     label = in.readString();
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipString();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NByteLiteral.java b/jack/src/com/android/jack/jayce/v0004/nodes/NByteLiteral.java
index 2e3ef7f..945e419 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NByteLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NByteLiteral.java
@@ -64,6 +64,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipByte();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NCaseStatement.java b/jack/src/com/android/jack/jayce/v0004/nodes/NCaseStatement.java
index 3af72a0..8556f83 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NCaseStatement.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NCaseStatement.java
@@ -88,6 +88,11 @@
     expr = in.readNode(NLiteral.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NCatchBlock.java b/jack/src/com/android/jack/jayce/v0004/nodes/NCatchBlock.java
index 3083355..688ebb4 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NCatchBlock.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NCatchBlock.java
@@ -114,6 +114,13 @@
     statements = in.readNodes(NStatement.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+    in.skipIds();
+    in.skipNode();
+    in.skipNodes();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NCharLiteral.java b/jack/src/com/android/jack/jayce/v0004/nodes/NCharLiteral.java
index f85b784..a859a57 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NCharLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NCharLiteral.java
@@ -63,6 +63,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipChar();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NClassLiteral.java b/jack/src/com/android/jack/jayce/v0004/nodes/NClassLiteral.java
index 22c545c..679c0ef 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NClassLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NClassLiteral.java
@@ -70,6 +70,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NClassType.java b/jack/src/com/android/jack/jayce/v0004/nodes/NClassType.java
index b52fdb7..4e962fa 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NClassType.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NClassType.java
@@ -216,6 +216,24 @@
     }
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    NodeLevel nodeLevel = in.getNodeLevel();
+    in.skipInt();
+    in.skipId();
+    if (nodeLevel != NodeLevel.TYPES) {
+      in.skipId();
+      in.skipIds();
+      in.skipId();
+      in.skipId();
+      in.skipId();
+      in.skipIds();
+      in.skipNodes();
+      in.skipNodes();
+      in.skipNodes();
+      in.skipNodes();
+    }
+  }
+
   @Nonnull
   @Override
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NConcatOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NConcatOperation.java
index 786fe03..7541a76 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NConcatOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NConcatOperation.java
@@ -78,6 +78,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NConditionalExpression.java b/jack/src/com/android/jack/jayce/v0004/nodes/NConditionalExpression.java
index ce33747..7faf691 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NConditionalExpression.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NConditionalExpression.java
@@ -88,6 +88,12 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NConstructor.java b/jack/src/com/android/jack/jayce/v0004/nodes/NConstructor.java
index 0580754..99e6f3b 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NConstructor.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NConstructor.java
@@ -107,6 +107,14 @@
     markers = in.readNodes(NMarker.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNodes();
+    in.skipInt();
+    in.skipNodes();
+    in.skipNode();
+    in.skipNodes();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NContainerAnnotation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NContainerAnnotation.java
index 9312b54..58f5db0 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NContainerAnnotation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NContainerAnnotation.java
@@ -72,6 +72,11 @@
     annotationTypeSig = in.readId();
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipRetentionPolicyEnum();
+    in.skipId();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NContinueStatement.java b/jack/src/com/android/jack/jayce/v0004/nodes/NContinueStatement.java
index 6bfcc87..a059e63 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NContinueStatement.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NContinueStatement.java
@@ -77,6 +77,10 @@
     label = in.readString();
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipString();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NDebugVariableInfo.java b/jack/src/com/android/jack/jayce/v0004/nodes/NDebugVariableInfo.java
index 7460a32..e26dc30 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NDebugVariableInfo.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NDebugVariableInfo.java
@@ -57,17 +57,18 @@
   @Override
   @Nonnull
   public DebugVariableInfoMarker exportAsJast(@Nonnull ExportSession exportSession) {
+    if (name == null && type == null) {
+      return DebugVariableInfoMarker.NO_DEBUG_INFO;
+    }
+
     assert name != null;
     assert type != null;
-
     return new DebugVariableInfoMarker(name, exportSession.getLookup().getType(type),
         genericSignature);
   }
 
   @Override
   public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
-    assert name != null;
-    assert type != null;
     out.writeString(name);
     out.writeId(type);
     out.writeString(genericSignature);
@@ -80,6 +81,12 @@
     genericSignature = in.readString();
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipString();
+    in.skipId();
+    in.skipString();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NDivOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NDivOperation.java
index 0e0ae0c..7838b04 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NDivOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NDivOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NDoStatement.java b/jack/src/com/android/jack/jayce/v0004/nodes/NDoStatement.java
index c4bd69e..20b05fb 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NDoStatement.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NDoStatement.java
@@ -87,6 +87,11 @@
     body = in.readNode(NStatement.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NDoubleLiteral.java b/jack/src/com/android/jack/jayce/v0004/nodes/NDoubleLiteral.java
index 6bd87ab..41fdf72 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NDoubleLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NDoubleLiteral.java
@@ -64,6 +64,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipDouble();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NDynamicCastOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NDynamicCastOperation.java
index 30ea886..3f1b3eb 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NDynamicCastOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NDynamicCastOperation.java
@@ -85,6 +85,11 @@
     expr = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipIds();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NEnumField.java b/jack/src/com/android/jack/jayce/v0004/nodes/NEnumField.java
index e8a16ec..3083446 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NEnumField.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NEnumField.java
@@ -114,6 +114,16 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipInt();
+    in.skipId();
+    in.skipId();
+    in.skipNode();
+    in.skipInt();
+    in.skipNodes();
+    in.skipNodes();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NEnumLiteral.java b/jack/src/com/android/jack/jayce/v0004/nodes/NEnumLiteral.java
index bb57bf0..1af3fee 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NEnumLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NEnumLiteral.java
@@ -84,6 +84,11 @@
     enumFieldName = in.readId();
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+    in.skipId();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NEnumType.java b/jack/src/com/android/jack/jayce/v0004/nodes/NEnumType.java
index d2ff72c..149ccd2 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NEnumType.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NEnumType.java
@@ -174,6 +174,24 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    NodeLevel nodeLevel = in.getNodeLevel();
+    in.skipInt();
+    in.skipId();
+    if (nodeLevel != NodeLevel.TYPES) {
+      in.skipId();
+      in.skipIds();
+      in.skipId();
+      in.skipId();
+      in.skipId();
+      in.skipIds();
+      in.skipNodes();
+      in.skipNodes();
+      in.skipNodes();
+      in.skipNodes();
+    }
+  }
+
   @Nonnull
   @Override
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NEqOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NEqOperation.java
index b324435..bd38f9e 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NEqOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NEqOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NExceptionRuntimeValue.java b/jack/src/com/android/jack/jayce/v0004/nodes/NExceptionRuntimeValue.java
index 75c7ccc..5f8e340 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NExceptionRuntimeValue.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NExceptionRuntimeValue.java
@@ -67,6 +67,10 @@
     catchedType = in.readId();
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NExpressionStatement.java b/jack/src/com/android/jack/jayce/v0004/nodes/NExpressionStatement.java
index 01e3dac..bba18f3 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NExpressionStatement.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NExpressionStatement.java
@@ -81,6 +81,10 @@
     expression = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NField.java b/jack/src/com/android/jack/jayce/v0004/nodes/NField.java
index 174a6bb..dfb2f15 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NField.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NField.java
@@ -142,6 +142,15 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipInt();
+    in.skipId();
+    in.skipId();
+    in.skipNode();
+    in.skipNodes();
+    in.skipNodes();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NFieldInitializer.java b/jack/src/com/android/jack/jayce/v0004/nodes/NFieldInitializer.java
index 539f6d1..aedae4f 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NFieldInitializer.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NFieldInitializer.java
@@ -59,6 +59,11 @@
     throw new UnsupportedOperationException();
   }
 
+  @SuppressWarnings("unused")
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) {
+    throw new UnsupportedOperationException();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NFieldRef.java b/jack/src/com/android/jack/jayce/v0004/nodes/NFieldRef.java
index 9009afc..2f3f472 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NFieldRef.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NFieldRef.java
@@ -105,6 +105,14 @@
     instance = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+    in.skipId();
+    in.readId();
+    in.skipFieldRefKindEnum();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NFloatLiteral.java b/jack/src/com/android/jack/jayce/v0004/nodes/NFloatLiteral.java
index f2cb5a0..dc354d9 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NFloatLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NFloatLiteral.java
@@ -64,6 +64,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipFloat();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NForStatement.java b/jack/src/com/android/jack/jayce/v0004/nodes/NForStatement.java
index c746c7c..e0b8b65 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NForStatement.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NForStatement.java
@@ -116,6 +116,13 @@
     body = in.readNode(NStatement.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNodes();
+    in.skipNode();
+    in.skipNodes();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NGenericSignature.java b/jack/src/com/android/jack/jayce/v0004/nodes/NGenericSignature.java
index a352bd8..ebcfec6 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NGenericSignature.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NGenericSignature.java
@@ -62,6 +62,10 @@
     genericSignature = in.readString();
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipString();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NGoto.java b/jack/src/com/android/jack/jayce/v0004/nodes/NGoto.java
index 8845cf1..1854584 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NGoto.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NGoto.java
@@ -78,6 +78,10 @@
     target = in.readId();
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NGtOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NGtOperation.java
index 0baeb71..fb61d28 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NGtOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NGtOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NGteOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NGteOperation.java
index 45d1848..875dcb9 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NGteOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NGteOperation.java
@@ -76,6 +76,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NIfStatement.java b/jack/src/com/android/jack/jayce/v0004/nodes/NIfStatement.java
index 9e701c4..769fcef 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NIfStatement.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NIfStatement.java
@@ -98,6 +98,12 @@
     elseStatement = in.readNode(NStatement.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NInstanceOf.java b/jack/src/com/android/jack/jayce/v0004/nodes/NInstanceOf.java
index 07134d3..70b3824 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NInstanceOf.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NInstanceOf.java
@@ -79,6 +79,11 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipId();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NIntLiteral.java b/jack/src/com/android/jack/jayce/v0004/nodes/NIntLiteral.java
index a15f270..acbda0b 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NIntLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NIntLiteral.java
@@ -63,6 +63,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipInt();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NInterfaceType.java b/jack/src/com/android/jack/jayce/v0004/nodes/NInterfaceType.java
index 721e086..e779bd8 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NInterfaceType.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NInterfaceType.java
@@ -166,6 +166,21 @@
     }
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    NodeLevel nodeLevel = in.getNodeLevel();
+    in.skipInt();
+    in.skipId();
+    if (nodeLevel != NodeLevel.TYPES) {
+      in.skipIds();
+      in.skipId();
+      in.skipIds();
+      in.skipNodes();
+      in.skipNodes();
+      in.skipNodes();
+      in.skipNodes();
+    }
+  }
+
   @Nonnull
   @Override
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NLabeledStatement.java b/jack/src/com/android/jack/jayce/v0004/nodes/NLabeledStatement.java
index a462c24..c605aaf 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NLabeledStatement.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NLabeledStatement.java
@@ -97,6 +97,12 @@
     body = in.readNode(NStatement.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipString();
+    in.skipId();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NLambda.java b/jack/src/com/android/jack/jayce/v0004/nodes/NLambda.java
index 4684f08..818bbf7 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NLambda.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NLambda.java
@@ -213,6 +213,22 @@
     markers = in.readNodes(NMarker.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNodes();
+    in.skipReceiverKindEnum();
+    in.skipId();
+    in.skipId();
+    in.skipIds();
+    in.skipMethodKindEnum();
+    in.skipId();
+    in.skipId();
+    in.skipIds();
+    in.skipNode();
+    in.skipNode();
+    in.skipNodes();
+    in.skipNodes();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NLambdaFromJill.java b/jack/src/com/android/jack/jayce/v0004/nodes/NLambdaFromJill.java
index 00ad245..3cbf53f 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NLambdaFromJill.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NLambdaFromJill.java
@@ -53,6 +53,10 @@
   public void readContent(@Nonnull JayceInternalReaderImpl in) {
   }
 
+  @SuppressWarnings("unused")
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) {
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NLocal.java b/jack/src/com/android/jack/jayce/v0004/nodes/NLocal.java
index e435df2..bf7a9d8 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NLocal.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NLocal.java
@@ -113,6 +113,15 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+    in.skipInt();
+    in.skipId();
+    in.skipId();
+    in.skipNodes();
+    in.skipNodes();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NLocalRef.java b/jack/src/com/android/jack/jayce/v0004/nodes/NLocalRef.java
index 1c98dac..cd91aa7 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NLocalRef.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NLocalRef.java
@@ -16,6 +16,7 @@
 
 package com.android.jack.jayce.v0004.nodes;
 
+import com.android.jack.debug.DebugVariableInfoMarker;
 import com.android.jack.ir.ast.JLocalRef;
 import com.android.jack.ir.ast.JLocalUnresolved;
 import com.android.jack.jayce.linker.VariableRefLinker;
@@ -24,6 +25,7 @@
 import com.android.jack.jayce.v0004.io.JayceInternalReaderImpl;
 import com.android.jack.jayce.v0004.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0004.io.Token;
+import com.android.sched.marker.Marker;
 
 import java.io.IOException;
 import java.util.Collections;
@@ -62,8 +64,11 @@
     JLocalRef jLocalRef = JLocalUnresolved.INSTANCE.makeRef(sourceInfo);
     exportSession.getVariableResolver().addLink(localId, new VariableRefLinker(jLocalRef));
 
-    for (NMarker marker : markers) {
-      jLocalRef.addMarker(marker.exportAsJast(exportSession));
+    for (NMarker nmarker : markers) {
+      Marker marker = nmarker.exportAsJast(exportSession);
+      assert !(marker instanceof DebugVariableInfoMarker)
+          || marker != DebugVariableInfoMarker.NO_DEBUG_INFO;
+      jLocalRef.addMarker(marker);
     }
 
     return jLocalRef;
@@ -81,6 +86,11 @@
     markers = in.readNodes(NMarker.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+    in.skipNodes();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NLock.java b/jack/src/com/android/jack/jayce/v0004/nodes/NLock.java
index 6a5bffe..78a35c9 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NLock.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NLock.java
@@ -80,6 +80,10 @@
     lockExpr = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NLongLiteral.java b/jack/src/com/android/jack/jayce/v0004/nodes/NLongLiteral.java
index 420b639..c102938 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NLongLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NLongLiteral.java
@@ -63,6 +63,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipLong();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NLtOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NLtOperation.java
index 2372e7b..e49d635 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NLtOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NLtOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NLteOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NLteOperation.java
index 3d0b362..36b29eb 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NLteOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NLteOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NMethod.java b/jack/src/com/android/jack/jayce/v0004/nodes/NMethod.java
index dccf59b..044052e 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NMethod.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NMethod.java
@@ -196,6 +196,17 @@
     markers = in.readNodes(NMarker.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+    in.skipId();
+    in.skipNodes();
+    in.skipMethodKindEnum();
+    in.skipInt();
+    in.skipNodes();
+    in.skipNode();
+    in.skipNodes();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NMethodBody.java b/jack/src/com/android/jack/jayce/v0004/nodes/NMethodBody.java
index 251efc5..f633bab 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NMethodBody.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NMethodBody.java
@@ -81,6 +81,11 @@
     block = in.readNode(NBlock.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNodes();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NMethodCall.java b/jack/src/com/android/jack/jayce/v0004/nodes/NMethodCall.java
index dbdaf8a..89696ce 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NMethodCall.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NMethodCall.java
@@ -21,7 +21,7 @@
 import com.android.jack.ir.ast.JExpression;
 import com.android.jack.ir.ast.JMethodCall;
 import com.android.jack.ir.ast.JMethodCall.DispatchKind;
-import com.android.jack.ir.ast.JMethodIdWide;
+import com.android.jack.ir.ast.JMethodId;
 import com.android.jack.ir.ast.JType;
 import com.android.jack.ir.ast.JTypeLookupException;
 import com.android.jack.ir.ast.MethodKind;
@@ -87,9 +87,9 @@
     instance = (NExpression) loader.load(jMethodCall.getInstance());
     receiverType = ImportHelper.getSignatureName(jMethodCall.getReceiverType());
     receiverKind = getReceiverKind(jMethodCall);
-    methodName = jMethodCall.getMethodId().getName();
-    methodArgsType = ImportHelper.getMethodArgsSignature(jMethodCall.getMethodId());
-    methodKind = jMethodCall.getMethodId().getKind();
+    methodName = jMethodCall.getMethodIdWide().getName();
+    methodArgsType = ImportHelper.getMethodArgsSignature(jMethodCall.getMethodIdWide());
+    methodKind = jMethodCall.getMethodIdWide().getKind();
     returnType = ImportHelper.getSignatureName(jMethodCall.getType());
     args = loader.load(NExpression.class, jMethodCall.getArgs());
     dispatchKind = jMethodCall.getDispatchKind();
@@ -120,11 +120,11 @@
     } else {
       jReceiverType = exportSession.getLookup().getInterface(receiverType);
     }
-    JMethodIdWide methodId = jReceiverType.getOrCreateMethodIdWide(methodName,
-        exportSession.getTypeListFromSignatureList(methodArgsType), methodKind);
     JType jReturnType = exportSession.getLookup().getType(returnType);
+    JMethodId methodId = jReceiverType.getOrCreateMethodId(methodName,
+        exportSession.getTypeListFromSignatureList(methodArgsType), methodKind, jReturnType);
     JMethodCall jMethodCall = new JMethodCall(sourceInfo, jInstance, jReceiverType, methodId,
-        jReturnType, dispatchKind == DispatchKind.VIRTUAL /* isVirtualDispatch */);
+        dispatchKind == DispatchKind.VIRTUAL /* isVirtualDispatch */);
     for (NExpression arg : args) {
       jMethodCall.addArg(arg.exportAsJast(exportSession));
     }
@@ -164,6 +164,18 @@
     dispatchKind = in.readDispatchKindEnum();
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipId();
+    in.skipReceiverKindEnum();
+    in.skipId();
+    in.skipIds();
+    in.skipMethodKindEnum();
+    in.skipId();
+    in.skipNodes();
+    in.skipDispatchKindEnum();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NMethodId.java b/jack/src/com/android/jack/jayce/v0004/nodes/NMethodId.java
index 8bcfb3f..329390f 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NMethodId.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NMethodId.java
@@ -95,6 +95,13 @@
     paramTypeSigs = in.readIds();
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+    in.skipMethodKindEnum();
+    in.skipId();
+    in.skipIds();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NMethodLiteral.java b/jack/src/com/android/jack/jayce/v0004/nodes/NMethodLiteral.java
index ac4f67a..1455182 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NMethodLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NMethodLiteral.java
@@ -81,6 +81,11 @@
     methodEnclosingType = in.readId();
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+    in.skipId();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NModOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NModOperation.java
index 1a5acd2..0556021 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NModOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NModOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NMulOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NMulOperation.java
index 3875055..82dd870 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NMulOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NMulOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NMultiExpression.java b/jack/src/com/android/jack/jayce/v0004/nodes/NMultiExpression.java
index 316c3b6..d9bdf53 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NMultiExpression.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NMultiExpression.java
@@ -75,6 +75,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNodes();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NNameValuePair.java b/jack/src/com/android/jack/jayce/v0004/nodes/NNameValuePair.java
index ceac9cf..f41c5ae 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NNameValuePair.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NNameValuePair.java
@@ -98,6 +98,11 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipString();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NNativeMethodBody.java b/jack/src/com/android/jack/jayce/v0004/nodes/NNativeMethodBody.java
index 5f5a7bb..ce1a0f8 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NNativeMethodBody.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NNativeMethodBody.java
@@ -23,8 +23,6 @@
 import com.android.jack.jayce.v0004.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0004.io.Token;
 
-import java.io.IOException;
-
 import javax.annotation.Nonnull;
 
 /**
@@ -49,15 +47,18 @@
     return jNativeMethodBody;
   }
 
-  @SuppressWarnings("unused")
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
+  public void writeContent(@Nonnull JayceInternalWriterImpl out) {
+
+  }
+
+  @Override
+  public void readContent(@Nonnull JayceInternalReaderImpl in) {
 
   }
 
   @SuppressWarnings("unused")
-  @Override
-  public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) {
 
   }
 
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NNeqOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NNeqOperation.java
index 6b25e7d..2131cef 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NNeqOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NNeqOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NNewArray.java b/jack/src/com/android/jack/jayce/v0004/nodes/NNewArray.java
index 0db2fee..44e6105 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NNewArray.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NNewArray.java
@@ -97,6 +97,12 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+    in.skipNodes();
+    in.skipNodes();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NNewInstance.java b/jack/src/com/android/jack/jayce/v0004/nodes/NNewInstance.java
index befc010..450ecb8 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NNewInstance.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NNewInstance.java
@@ -17,8 +17,9 @@
 package com.android.jack.jayce.v0004.nodes;
 
 import com.android.jack.ir.ast.JClassOrInterface;
-import com.android.jack.ir.ast.JMethodIdWide;
+import com.android.jack.ir.ast.JMethodId;
 import com.android.jack.ir.ast.JNewInstance;
+import com.android.jack.ir.ast.JPrimitiveType.JPrimitiveTypeEnum;
 import com.android.jack.ir.ast.JTypeLookupException;
 import com.android.jack.ir.ast.MethodKind;
 import com.android.jack.jayce.v0004.io.ExportSession;
@@ -48,7 +49,7 @@
   public void importFromJast(@Nonnull ImportHelper loader, @Nonnull Object node) {
     JNewInstance jNewInstance = (JNewInstance) node;
     receiverType = ImportHelper.getSignatureName(jNewInstance.getReceiverType());
-    methodArgsType = ImportHelper.getMethodArgsSignature(jNewInstance.getMethodId());
+    methodArgsType = ImportHelper.getMethodArgsSignature(jNewInstance.getMethodIdWide());
     args = loader.load(NExpression.class, jNewInstance.getArgs());
     sourceInfo = jNewInstance.getSourceInfo();
   }
@@ -66,9 +67,9 @@
     assert methodArgsType != null;
     assert args != null;
     JClassOrInterface jReceiverType = exportSession.getLookup().getClass(receiverType);
-    JMethodIdWide methodId = jReceiverType.getOrCreateMethodIdWide(INIT_NAME,
+    JMethodId methodId = jReceiverType.getOrCreateMethodId(INIT_NAME,
         exportSession.getTypeListFromSignatureList(methodArgsType),
-        MethodKind.INSTANCE_NON_VIRTUAL);
+        MethodKind.INSTANCE_NON_VIRTUAL, JPrimitiveTypeEnum.VOID.getType());
     JNewInstance jNewInstance = new JNewInstance(sourceInfo, jReceiverType, methodId);
     for (NExpression arg : args) {
       jNewInstance.addArg(arg.exportAsJast(exportSession));
@@ -92,6 +93,12 @@
     args = in.readNodes(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+    in.skipIds();
+    in.skipNodes();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NNullLiteral.java b/jack/src/com/android/jack/jayce/v0004/nodes/NNullLiteral.java
index 769d0b7..e22cd0a 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NNullLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NNullLiteral.java
@@ -23,8 +23,6 @@
 import com.android.jack.jayce.v0004.io.JayceInternalWriterImpl;
 import com.android.jack.jayce.v0004.io.Token;
 
-import java.io.IOException;
-
 import javax.annotation.Nonnull;
 
 /**
@@ -49,14 +47,16 @@
     return jNullLiteral;
   }
 
-  @SuppressWarnings("unused")
   @Override
-  public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
+  public void writeContent(@Nonnull JayceInternalWriterImpl out) {
+  }
+
+  @Override
+  public void readContent(@Nonnull JayceInternalReaderImpl in) {
   }
 
   @SuppressWarnings("unused")
-  @Override
-  public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) {
   }
 
   @Override
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NOrOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NOrOperation.java
index 4bd4792..a45747b 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NOrOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NOrOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NOriginDigest.java b/jack/src/com/android/jack/jayce/v0004/nodes/NOriginDigest.java
index 1e12bdc..6e0a5d9 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NOriginDigest.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NOriginDigest.java
@@ -91,6 +91,15 @@
     minor = in.readInt();
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipInt();
+    in.skipString();
+    in.skipBuffer();
+    in.skipString();
+    in.skipInt();
+    in.skipInt();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NParameter.java b/jack/src/com/android/jack/jayce/v0004/nodes/NParameter.java
index f46a279..9f8ff0e 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NParameter.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NParameter.java
@@ -90,7 +90,6 @@
       @Nonnull JayceMethodLoader enclosingMethodLoader) throws JTypeLookupException {
     assert sourceInfo != null;
     assert type != null;
-    assert name != null;
     JParameter jParameter = new JParameter(
         sourceInfo,
         name,
@@ -127,6 +126,15 @@
     markers = in.readNodes(NMarker.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+    in.skipInt();
+    in.skipId();
+    in.skipId();
+    in.skipNodes();
+    in.skipNodes();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NParameterRef.java b/jack/src/com/android/jack/jayce/v0004/nodes/NParameterRef.java
index e5c05ed..84f1d13 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NParameterRef.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NParameterRef.java
@@ -26,6 +26,8 @@
 import com.android.jack.jayce.v0004.io.Token;
 
 import java.io.IOException;
+import java.util.Collections;
+import java.util.List;
 
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
@@ -41,11 +43,15 @@
   @CheckForNull
   public String localId;
 
+  @Nonnull
+  public List<NMarker> markers = Collections.emptyList();
+
   @Override
   public void importFromJast(@Nonnull ImportHelper loader, @Nonnull Object node) {
     JParameterRef jRef = (JParameterRef) node;
     localId = loader.getVariableSymbols().getId(jRef.getParameter());
     sourceInfo = jRef.getSourceInfo();
+    markers = loader.load(NMarker.class, jRef.getAllMarkers());
   }
 
   @Override
@@ -55,17 +61,27 @@
     assert localId != null;
     JParameterRef jRef = JParameterUnresolved.INSTANCE.makeRef(sourceInfo);
     exportSession.getVariableResolver().addLink(localId, new VariableRefLinker(jRef));
+    for (NMarker marker : markers) {
+      jRef.addMarker(marker.exportAsJast(exportSession));
+    }
     return jRef;
   }
 
   @Override
   public void writeContent(@Nonnull JayceInternalWriterImpl out) throws IOException {
     out.writeId(localId);
+    out.writeNodes(markers);
   }
 
   @Override
   public void readContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
     localId = in.readId();
+    markers = in.readNodes(NMarker.class);
+  }
+
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+    in.skipNodes();
   }
 
   @Override
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NPolymorphicCall.java b/jack/src/com/android/jack/jayce/v0004/nodes/NPolymorphicCall.java
index 5cbdc71..344ab10 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NPolymorphicCall.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NPolymorphicCall.java
@@ -84,9 +84,9 @@
     instance = (NExpression) loader.load(pmc.getInstance());
     receiverType = ImportHelper.getSignatureName(pmc.getReceiverType());
     receiverKind = getReceiverKind(pmc);
-    methodName = pmc.getMethodId().getName();
-    methodArgsType = ImportHelper.getMethodArgsSignature(pmc.getMethodId());
-    methodKind = pmc.getMethodId().getKind();
+    methodName = pmc.getMethodIdWide().getName();
+    methodArgsType = ImportHelper.getMethodArgsSignature(pmc.getMethodIdWide());
+    methodKind = pmc.getMethodIdWide().getKind();
     returnType = ImportHelper.getSignatureName(pmc.getReturnTypeOfPolymorphicMethod());
     args = loader.load(NExpression.class, pmc.getArgs());
     sourceInfo = pmc.getSourceInfo();
@@ -175,6 +175,19 @@
     callSiteParameterStrTypes = in.readIds();
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipId();
+    in.skipReceiverKindEnum();
+    in.skipId();
+    in.skipIds();
+    in.skipMethodKindEnum();
+    in.skipId();
+    in.skipNodes();
+    in.skipId();
+    in.skipIds();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NPostfixDecOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NPostfixDecOperation.java
index a0c89a7..e0b95b2 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NPostfixDecOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NPostfixDecOperation.java
@@ -68,6 +68,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NPostfixIncOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NPostfixIncOperation.java
index bcdfd51..25509fe 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NPostfixIncOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NPostfixIncOperation.java
@@ -68,6 +68,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixBitNotOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixBitNotOperation.java
index 7d3c334..02c0770 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixBitNotOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixBitNotOperation.java
@@ -68,6 +68,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixDecOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixDecOperation.java
index 832028d..6b1ab6d 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixDecOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixDecOperation.java
@@ -68,6 +68,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixIncOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixIncOperation.java
index 62703e0..29b030b 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixIncOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixIncOperation.java
@@ -68,6 +68,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixNegOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixNegOperation.java
index e79a7c3..be1f706 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixNegOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixNegOperation.java
@@ -68,6 +68,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixNotOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixNotOperation.java
index 04dc90d..c6fb7e9 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixNotOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NPrefixNotOperation.java
@@ -68,6 +68,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NReinterpretCastOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NReinterpretCastOperation.java
index 488bf0b..3a8ea08 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NReinterpretCastOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NReinterpretCastOperation.java
@@ -81,6 +81,11 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NReturnStatement.java b/jack/src/com/android/jack/jayce/v0004/nodes/NReturnStatement.java
index 1336e06..d94630a 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NReturnStatement.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NReturnStatement.java
@@ -79,6 +79,10 @@
     expr = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NShlOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NShlOperation.java
index c0d15d6..71be6ee 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NShlOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NShlOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NShortLiteral.java b/jack/src/com/android/jack/jayce/v0004/nodes/NShortLiteral.java
index b68e477..e7b93f5 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NShortLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NShortLiteral.java
@@ -63,6 +63,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipShort();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NShrOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NShrOperation.java
index 9c7786e..1ea6327 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NShrOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NShrOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NShruOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NShruOperation.java
index e52f0cb..efdc95e 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NShruOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NShruOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NSimpleName.java b/jack/src/com/android/jack/jayce/v0004/nodes/NSimpleName.java
index 011d736..12a40cb 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NSimpleName.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NSimpleName.java
@@ -63,6 +63,10 @@
     simpleName = in.readString();
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipString();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NStringLiteral.java b/jack/src/com/android/jack/jayce/v0004/nodes/NStringLiteral.java
index 83cb03d..ab6c513 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NStringLiteral.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NStringLiteral.java
@@ -67,6 +67,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipString();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NSubOperation.java b/jack/src/com/android/jack/jayce/v0004/nodes/NSubOperation.java
index 82cf998..716e043 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NSubOperation.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NSubOperation.java
@@ -75,6 +75,11 @@
     rhs = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NSwitchStatement.java b/jack/src/com/android/jack/jayce/v0004/nodes/NSwitchStatement.java
index bda2846..4e35d0e 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NSwitchStatement.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NSwitchStatement.java
@@ -108,6 +108,12 @@
     body = in.readNode(NBlock.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipIds();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NSynchronizedBlock.java b/jack/src/com/android/jack/jayce/v0004/nodes/NSynchronizedBlock.java
index 09ca751..24f2be5 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NSynchronizedBlock.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NSynchronizedBlock.java
@@ -92,6 +92,11 @@
     synchronizedBlock = in.readNode(NBlock.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.readNode(NExpression.class);
+    in.readNode(NBlock.class);
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NThisRef.java b/jack/src/com/android/jack/jayce/v0004/nodes/NThisRef.java
index faa5439..d41ede5 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NThisRef.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NThisRef.java
@@ -68,6 +68,10 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipId();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NThisRefTypeInfo.java b/jack/src/com/android/jack/jayce/v0004/nodes/NThisRefTypeInfo.java
index e35325e..9739baa 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NThisRefTypeInfo.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NThisRefTypeInfo.java
@@ -65,6 +65,10 @@
     genericSignature = in.readString();
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipString();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NThrowStatement.java b/jack/src/com/android/jack/jayce/v0004/nodes/NThrowStatement.java
index f28846f..f077a9f 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NThrowStatement.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NThrowStatement.java
@@ -80,6 +80,10 @@
     expr = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NThrownExceptionMarker.java b/jack/src/com/android/jack/jayce/v0004/nodes/NThrownExceptionMarker.java
index e6e26ad..6abc1a8 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NThrownExceptionMarker.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NThrownExceptionMarker.java
@@ -70,6 +70,10 @@
     thrownExceptions = in.readIds();
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipIds();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NTryStatement.java b/jack/src/com/android/jack/jayce/v0004/nodes/NTryStatement.java
index e86f0c9..3434822 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NTryStatement.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NTryStatement.java
@@ -109,6 +109,13 @@
 
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNodes();
+    in.skipNode();
+    in.skipNodes();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NUnlock.java b/jack/src/com/android/jack/jayce/v0004/nodes/NUnlock.java
index 335b958..cfbd394 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NUnlock.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NUnlock.java
@@ -80,6 +80,10 @@
     lockExpr = in.readNode(NExpression.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/jayce/v0004/nodes/NWhileStatement.java b/jack/src/com/android/jack/jayce/v0004/nodes/NWhileStatement.java
index 9503353..230c976 100644
--- a/jack/src/com/android/jack/jayce/v0004/nodes/NWhileStatement.java
+++ b/jack/src/com/android/jack/jayce/v0004/nodes/NWhileStatement.java
@@ -87,6 +87,11 @@
     body = in.readNode(NStatement.class);
   }
 
+  public static void skipContent(@Nonnull JayceInternalReaderImpl in) throws IOException {
+    in.skipNode();
+    in.skipNode();
+  }
+
   @Override
   @Nonnull
   public Token getToken() {
diff --git a/jack/src/com/android/jack/library/InputLibraryCodec.java b/jack/src/com/android/jack/library/InputLibraryCodec.java
index ef03159..8460be1 100644
--- a/jack/src/com/android/jack/library/InputLibraryCodec.java
+++ b/jack/src/com/android/jack/library/InputLibraryCodec.java
@@ -37,7 +37,6 @@
   @CheckForNull
   private String infoString;
 
-  @SuppressWarnings("unchecked")
   public InputLibraryCodec() {
     super(new InputJackLibraryCodec(), new JarLibraryCodec());
   }
diff --git a/jack/src/com/android/jack/library/JackLibraryFactory.java b/jack/src/com/android/jack/library/JackLibraryFactory.java
index b06d490..216066c 100644
--- a/jack/src/com/android/jack/library/JackLibraryFactory.java
+++ b/jack/src/com/android/jack/library/JackLibraryFactory.java
@@ -109,7 +109,7 @@
 
     try {
       InputVFile libProp =
-          vfs.getRootInputVDir().getInputVFile(JackLibrary.LIBRARY_PROPERTIES_VPATH);
+          vfs.getRootDir().getInputVFile(JackLibrary.LIBRARY_PROPERTIES_VPATH);
       InputStream inputStream = null;
       try {
         inputStream = libProp.getInputStream();
diff --git a/jack/src/com/android/jack/library/LibraryLocation.java b/jack/src/com/android/jack/library/LibraryLocation.java
index fd39eb7..f1bd451 100644
--- a/jack/src/com/android/jack/library/LibraryLocation.java
+++ b/jack/src/com/android/jack/library/LibraryLocation.java
@@ -51,4 +51,9 @@
   public final int hashCode() {
     return sourceLocation.hashCode();
   }
+
+  @Override
+  public String toString() {
+    return sourceLocation.toString();
+  }
 }
diff --git a/jack/src/com/android/jack/library/v0000/InputJackLibraryImpl.java b/jack/src/com/android/jack/library/v0000/InputJackLibraryImpl.java
index bbae7b4..5f46389 100644
--- a/jack/src/com/android/jack/library/v0000/InputJackLibraryImpl.java
+++ b/jack/src/com/android/jack/library/v0000/InputJackLibraryImpl.java
@@ -73,7 +73,7 @@
     // V0 libraries can have resources added by Jill but without the boolean resource property set
     // to true, thus we add the resource file type if resources exist (files others than
     // jack.properties and jayce files)
-    fillResources(inputVFS.getRootInputVDir(), resources);
+    fillResources(inputVFS.getRootDir(), resources);
     if (!resources.isEmpty()) {
       fileTypes.add(FileType.RSC);
     }
@@ -105,7 +105,7 @@
     try {
       VPath clonedPath = typePath.clone();
       clonedPath.addSuffix(getExtension(fileType));
-      return inputVFS.getRootInputVDir().getInputVFile(clonedPath);
+      return inputVFS.getRootDir().getInputVFile(clonedPath);
     } catch (NotFileOrDirectoryException e) {
       throw new FileTypeDoesNotExistException(getLocation(), typePath, fileType);
     } catch (NoSuchFileException e) {
@@ -118,7 +118,7 @@
   public InputVDir getDir(@Nonnull FileType fileType, @Nonnull VPath typePath)
       throws FileTypeDoesNotExistException {
     try {
-      return inputVFS.getRootInputVDir().getInputVDir(typePath);
+      return inputVFS.getRootDir().getInputVDir(typePath);
     } catch (NotDirectoryException e) {
       throw new FileTypeDoesNotExistException(getLocation(), typePath, fileType);
     } catch (NoSuchFileException e) {
@@ -139,7 +139,7 @@
     }
 
     List<InputVFile> inputVFiles = new ArrayList<InputVFile>();
-    fillFiles(inputVFS.getRootInputVDir(), getExtension(fileType), inputVFiles);
+    fillFiles(inputVFS.getRootDir(), getExtension(fileType), inputVFiles);
     return inputVFiles.iterator();
   }
 
diff --git a/jack/src/com/android/jack/library/v0001/InputJackLibraryImpl.java b/jack/src/com/android/jack/library/v0001/InputJackLibraryImpl.java
index a89a87d..84f1c18 100644
--- a/jack/src/com/android/jack/library/v0001/InputJackLibraryImpl.java
+++ b/jack/src/com/android/jack/library/v0001/InputJackLibraryImpl.java
@@ -32,6 +32,7 @@
 import com.android.sched.util.file.CannotCloseException;
 import com.android.sched.util.file.CannotCreateFileException;
 import com.android.sched.util.file.CannotDeleteFileException;
+import com.android.sched.util.file.FileOrDirectory.Existence;
 import com.android.sched.util.file.NoSuchFileException;
 import com.android.sched.util.file.NotDirectoryException;
 import com.android.sched.util.file.NotFileOrDirectoryException;
@@ -44,6 +45,7 @@
 import com.android.sched.vfs.PrefixedFS;
 import com.android.sched.vfs.VFS;
 import com.android.sched.vfs.VPath;
+import com.android.sched.vfs.WrongVFSTypeException;
 
 import java.util.ArrayList;
 import java.util.EnumMap;
@@ -104,7 +106,7 @@
     }
     try {
       InputVFS currentSectionVFS = getSectionVFS(fileType);
-      return currentSectionVFS.getRootInputVDir().getInputVFile(
+      return currentSectionVFS.getRootDir().getInputVFile(
           buildFileVPath(fileType, typePath));
     } catch (NotFileOrDirectoryException e) {
       throw new FileTypeDoesNotExistException(getLocation(), typePath, fileType);
@@ -120,7 +122,7 @@
       throws FileTypeDoesNotExistException {
     try {
       InputVFS currentSectionVFS = getSectionVFS(fileType);
-      return currentSectionVFS.getRootInputVDir().getInputVDir(typePath);
+      return currentSectionVFS.getRootDir().getInputVDir(typePath);
     } catch (NotDirectoryException e) {
       throw new FileTypeDoesNotExistException(getLocation(), typePath, fileType);
     } catch (NoSuchFileException e) {
@@ -136,7 +138,7 @@
     }
 
     List<InputVFile> inputVFiles = new ArrayList<InputVFile>();
-    fillFiles(getSectionVFS(fileType).getRootInputVDir(), inputVFiles);
+    fillFiles(getSectionVFS(fileType).getRootDir(), inputVFiles);
     return inputVFiles.listIterator();
   }
 
@@ -148,20 +150,23 @@
     } else {
       VFS prefixedInputVFS = null;
       try {
-        prefixedInputVFS = new PrefixedFS(vfs, getSectionPath(fileType));
+        prefixedInputVFS = new PrefixedFS(vfs, getSectionPath(fileType), Existence.MUST_EXIST);
+      } catch (WrongVFSTypeException e) {
+        // If library is well formed this exception cannot be triggered
+        throw new AssertionError(e);
       } catch (CannotCreateFileException e) {
-        // If library is well formed this exception can not be triggered
+        // If library is well formed this exception cannot be triggered
         throw new AssertionError(e);
       } catch (NotDirectoryException e) {
-        // If library is well formed this exception can not be triggered
+        // If library is well formed this exception cannot be triggered
         throw new AssertionError(e);
       }
       if (fileType == FileType.PREBUILT) {
         try {
           currentSectionVFS = new GenericInputVFS(new MessageDigestFS(prefixedInputVFS,
               ThreadConfig.get(JackLibraryFactory.MESSAGE_DIGEST_ALGO)));
-        } catch (BadVFSFormatException e) {
-          // If library is well formed this exception can not be triggered
+        } catch (BadVFSFormatException | WrongVFSTypeException e) {
+          // If library is well formed this exception cannot be triggered
           throw new AssertionError(e);
         }
       } else {
@@ -219,7 +224,7 @@
       throws CannotDeleteFileException, FileTypeDoesNotExistException {
     try {
       InputVFS currentSectionVFS = getSectionVFS(fileType);
-      currentSectionVFS.getRootInputVDir().getInputVFile(buildFileVPath(fileType, typePath))
+      currentSectionVFS.getRootDir().getInputVFile(buildFileVPath(fileType, typePath))
           .delete();
     } catch (NotFileOrDirectoryException e) {
       throw new FileTypeDoesNotExistException(getLocation(), typePath, fileType);
diff --git a/jack/src/com/android/jack/library/v0002/InputJackLibraryImpl.java b/jack/src/com/android/jack/library/v0002/InputJackLibraryImpl.java
index 3bbe5b8..52d231f 100644
--- a/jack/src/com/android/jack/library/v0002/InputJackLibraryImpl.java
+++ b/jack/src/com/android/jack/library/v0002/InputJackLibraryImpl.java
@@ -37,6 +37,7 @@
 import com.android.sched.util.file.CannotCloseException;
 import com.android.sched.util.file.CannotCreateFileException;
 import com.android.sched.util.file.CannotDeleteFileException;
+import com.android.sched.util.file.FileOrDirectory.Existence;
 import com.android.sched.util.file.NoSuchFileException;
 import com.android.sched.util.file.NotDirectoryException;
 import com.android.sched.util.file.NotFileOrDirectoryException;
@@ -49,6 +50,7 @@
 import com.android.sched.vfs.PrefixedFS;
 import com.android.sched.vfs.VFS;
 import com.android.sched.vfs.VPath;
+import com.android.sched.vfs.WrongVFSTypeException;
 
 import java.util.ArrayList;
 import java.util.EnumMap;
@@ -111,7 +113,7 @@
         throw new FileTypeDoesNotExistException(getLocation(), typePath, fileType);
       }
       InputVFS currentSectionVFS = getSectionVFS(fileType);
-      return currentSectionVFS.getRootInputVDir().getInputVFile(
+      return currentSectionVFS.getRootDir().getInputVFile(
           buildFileVPath(fileType, typePath));
     } catch (NotFileOrDirectoryException e) {
       throw new FileTypeDoesNotExistException(getLocation(), typePath, fileType);
@@ -127,7 +129,7 @@
       throws FileTypeDoesNotExistException {
     try {
       InputVFS currentSectionVFS = getSectionVFS(fileType);
-      return currentSectionVFS.getRootInputVDir().getInputVDir(typePath);
+      return currentSectionVFS.getRootDir().getInputVDir(typePath);
     } catch (NotDirectoryException e) {
       throw new FileTypeDoesNotExistException(getLocation(), typePath, fileType);
     } catch (NoSuchFileException e) {
@@ -143,7 +145,7 @@
     }
 
     List<InputVFile> inputVFiles = new ArrayList<InputVFile>();
-    fillFiles(getSectionVFS(fileType).getRootInputVDir(), inputVFiles);
+    fillFiles(getSectionVFS(fileType).getRootDir(), inputVFiles);
     return inputVFiles.listIterator();
   }
 
@@ -155,20 +157,23 @@
     } else {
       VFS prefixedInputVFS = null;
       try {
-        prefixedInputVFS = new PrefixedFS(vfs, getSectionPath(fileType));
+        prefixedInputVFS = new PrefixedFS(vfs, getSectionPath(fileType), Existence.MUST_EXIST);
+      } catch (WrongVFSTypeException e) {
+        // If library is well formed this exception cannot be triggered
+        throw new AssertionError(e);
       } catch (CannotCreateFileException e) {
-        // If library is well formed this exception can not be triggered
+        // If library is well formed this exception cannot be triggered
         throw new AssertionError(e);
       } catch (NotDirectoryException e) {
-        // If library is well formed this exception can not be triggered
+        // If library is well formed this exception cannot be triggered
         throw new AssertionError(e);
       }
       if (fileType == FileType.PREBUILT) {
         try {
           currentSectionVFS = new GenericInputVFS(new MessageDigestFS(prefixedInputVFS,
               ThreadConfig.get(JackLibraryFactory.MESSAGE_DIGEST_ALGO)));
-        } catch (BadVFSFormatException e) {
-          // If library is well formed this exception can not be triggered
+        } catch (BadVFSFormatException | WrongVFSTypeException e) {
+          // If library is well formed this exception cannot be triggered
           throw new AssertionError(e);
         }
       } else {
@@ -226,7 +231,7 @@
       throws CannotDeleteFileException, FileTypeDoesNotExistException {
     try {
       InputVFS currentSectionVFS = getSectionVFS(fileType);
-      currentSectionVFS.getRootInputVDir().getInputVFile(buildFileVPath(fileType, typePath))
+      currentSectionVFS.getRootDir().getInputVFile(buildFileVPath(fileType, typePath))
           .delete();
     } catch (NotFileOrDirectoryException e) {
       throw new FileTypeDoesNotExistException(getLocation(), typePath, fileType);
diff --git a/jack/src/com/android/jack/library/v0003/InputJackLibraryImpl.java b/jack/src/com/android/jack/library/v0003/InputJackLibraryImpl.java
index c7a498c..be416cc 100644
--- a/jack/src/com/android/jack/library/v0003/InputJackLibraryImpl.java
+++ b/jack/src/com/android/jack/library/v0003/InputJackLibraryImpl.java
@@ -37,6 +37,7 @@
 import com.android.sched.util.file.CannotCloseException;
 import com.android.sched.util.file.CannotCreateFileException;
 import com.android.sched.util.file.CannotDeleteFileException;
+import com.android.sched.util.file.FileOrDirectory.Existence;
 import com.android.sched.util.file.NoSuchFileException;
 import com.android.sched.util.file.NotDirectoryException;
 import com.android.sched.util.file.NotFileOrDirectoryException;
@@ -50,6 +51,7 @@
 import com.android.sched.vfs.PrefixedFS;
 import com.android.sched.vfs.VFS;
 import com.android.sched.vfs.VPath;
+import com.android.sched.vfs.WrongVFSTypeException;
 
 import java.util.ArrayList;
 import java.util.EnumMap;
@@ -128,7 +130,7 @@
         throw new FileTypeDoesNotExistException(getLocation(), typePath, fileType);
       }
       InputVFS currentSectionVFS = getSectionVFS(fileType);
-      return currentSectionVFS.getRootInputVDir().getInputVFile(
+      return currentSectionVFS.getRootDir().getInputVFile(
           buildFileVPath(fileType, typePath));
     } catch (NotFileOrDirectoryException e) {
       throw new FileTypeDoesNotExistException(getLocation(), typePath, fileType);
@@ -144,7 +146,7 @@
       throws FileTypeDoesNotExistException {
     try {
       InputVFS currentSectionVFS = getSectionVFS(fileType);
-      return currentSectionVFS.getRootInputVDir().getInputVDir(typePath);
+      return currentSectionVFS.getRootDir().getInputVDir(typePath);
     } catch (NotDirectoryException e) {
       throw new FileTypeDoesNotExistException(getLocation(), typePath, fileType);
     } catch (NoSuchFileException e) {
@@ -160,7 +162,7 @@
     }
 
     List<InputVFile> inputVFiles = new ArrayList<InputVFile>();
-    fillFiles(getSectionVFS(fileType).getRootInputVDir(), inputVFiles);
+    fillFiles(getSectionVFS(fileType).getRootDir(), inputVFiles);
     return inputVFiles.listIterator();
   }
 
@@ -172,12 +174,15 @@
     } else {
       VFS inputVFS = null;
       try {
-        inputVFS = new PrefixedFS(vfs, getSectionPath(fileType));
+        inputVFS = new PrefixedFS(vfs, getSectionPath(fileType), Existence.MUST_EXIST);
+      } catch (WrongVFSTypeException e) {
+        // If library is well formed this exception cannot be triggered
+        throw new AssertionError(e);
       } catch (CannotCreateFileException e) {
-        // If library is well formed this exception can not be triggered
+        // If library is well formed this exception cannot be triggered
         throw new AssertionError(e);
       } catch (NotDirectoryException e) {
-        // If library is well formed this exception can not be triggered
+        // If library is well formed this exception cannot be triggered
         throw new AssertionError(e);
       }
 
@@ -185,8 +190,8 @@
         try {
           inputVFS = new MessageDigestFS(inputVFS,
                   ThreadConfig.get(JackLibraryFactory.MESSAGE_DIGEST_ALGO));
-        } catch (BadVFSFormatException e) {
-          // If library is well formed this exception can not be triggered
+        } catch (BadVFSFormatException | WrongVFSTypeException e) {
+          // If library is well formed this exception cannot be triggered
           throw new AssertionError(e);
         }
       }
@@ -252,7 +257,7 @@
       throws CannotDeleteFileException, FileTypeDoesNotExistException {
     try {
       InputVFS currentSectionVFS = getSectionVFS(fileType);
-      currentSectionVFS.getRootInputVDir().getInputVFile(buildFileVPath(fileType, typePath))
+      currentSectionVFS.getRootDir().getInputVFile(buildFileVPath(fileType, typePath))
           .delete();
     } catch (NotFileOrDirectoryException e) {
       throw new FileTypeDoesNotExistException(getLocation(), typePath, fileType);
diff --git a/jack/src/com/android/jack/library/v0003/OutputJackLibraryImpl.java b/jack/src/com/android/jack/library/v0003/OutputJackLibraryImpl.java
index 8f522b9..4bc401c 100644
--- a/jack/src/com/android/jack/library/v0003/OutputJackLibraryImpl.java
+++ b/jack/src/com/android/jack/library/v0003/OutputJackLibraryImpl.java
@@ -32,6 +32,7 @@
 import com.android.sched.util.file.CannotCloseException;
 import com.android.sched.util.file.CannotCreateFileException;
 import com.android.sched.util.file.CannotDeleteFileException;
+import com.android.sched.util.file.FileOrDirectory.Existence;
 import com.android.sched.util.file.NoSuchFileException;
 import com.android.sched.util.file.NotDirectoryException;
 import com.android.sched.util.file.NotFileOrDirectoryException;
@@ -51,6 +52,7 @@
 import com.android.sched.vfs.PrefixedFS;
 import com.android.sched.vfs.VFS;
 import com.android.sched.vfs.VPath;
+import com.android.sched.vfs.WrongVFSTypeException;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -118,7 +120,7 @@
       throws CannotCreateFileException {
     assert !isClosed();
     addFileType(fileType);
-    return getSectionVFS(fileType).getRootOutputVDir()
+    return getSectionVFS(fileType).getRootDir()
         .createOutputVFile(buildFileVPath(fileType, typePath));
   }
 
@@ -143,18 +145,26 @@
       VPath prefixPath = InputJackLibraryImpl.getSectionPath(fileType);
       VFS outputVFS = null;
       try {
-        outputVFS = new PrefixedFS(vfs, prefixPath);
+        outputVFS = new PrefixedFS(vfs, prefixPath, Existence.MAY_EXIST);
 
         if (generateJacklibDigest && fileType == FileType.PREBUILT) {
 
-          outputVFS = new MessageDigestFS(outputVFS,
-              ThreadConfig.get(JackLibraryFactory.MESSAGE_DIGEST_ALGO));
+          try {
+            outputVFS = new MessageDigestFS(outputVFS,
+                ThreadConfig.get(JackLibraryFactory.MESSAGE_DIGEST_ALGO));
+          } catch (WrongVFSTypeException e) {
+            // we want the digest to be there;
+            throw new AssertionError(e);
+          }
         }
+      } catch (WrongVFSTypeException e) {
+        // prefix may not exist so this cannot happen
+        throw new AssertionError(e);
       } catch (BadVFSFormatException e) {
-        // if library is well formed and digest exists this exception can not be triggered
+        // if library is well formed this exception cannot be triggered
         throw new AssertionError(e);
       } catch (NotDirectoryException e) {
-        // if library is well formed this exception can not be triggered
+        // if library is well formed this exception cannot be triggered
         throw new AssertionError(e);
       }
 
@@ -203,7 +213,7 @@
     try {
       goVFS = new GenericOutputVFS(vfs);
       OutputVFile libraryPropertiesOut =
-          goVFS.getRootOutputVDir().createOutputVFile(LIBRARY_PROPERTIES_VPATH);
+          goVFS.getRootDir().createOutputVFile(LIBRARY_PROPERTIES_VPATH);
 
       OutputStream propertiesOS = null;
       try {
@@ -253,7 +263,7 @@
 
     List<InputVFile> inputVFiles = new ArrayList<InputVFile>();
     try {
-      fillFiles(getSectionVFS(fileType).getRootInputVDir(), inputVFiles);
+      fillFiles(getSectionVFS(fileType).getRootDir(), inputVFiles);
     } catch (CannotCreateFileException e) {
       // we already checked that the library contained the file type
       throw new AssertionError(e);
@@ -266,7 +276,7 @@
   public InputOutputVFile getFile(@Nonnull FileType fileType, @Nonnull VPath typePath)
       throws FileTypeDoesNotExistException {
     try {
-      return getSectionVFS(fileType).getRootInputOutputVDir()
+      return getSectionVFS(fileType).getRootDir()
           .getInputVFile(buildFileVPath(fileType, typePath));
     } catch (CannotCreateFileException | NoSuchFileException | NotFileOrDirectoryException e) {
       throw new FileTypeDoesNotExistException(getLocation(), typePath, fileType);
@@ -279,7 +289,7 @@
       throws CannotDeleteFileException, FileTypeDoesNotExistException {
     assert !isClosed();
     try {
-      getSectionVFS(fileType).getRootInputOutputVDir()
+      getSectionVFS(fileType).getRootDir()
           .getInputVFile(buildFileVPath(fileType, typePath)).delete();
     } catch (CannotCreateFileException | NoSuchFileException | NotFileOrDirectoryException e) {
       throw new FileTypeDoesNotExistException(getLocation(), typePath, fileType);
@@ -314,7 +324,7 @@
       throws NoSuchFileException {
     InputVFile libProp;
     try {
-      libProp = vfs.getRootInputVDir().getInputVFile(JackLibrary.LIBRARY_PROPERTIES_VPATH);
+      libProp = vfs.getRootDir().getInputVFile(JackLibrary.LIBRARY_PROPERTIES_VPATH);
     } catch (NotFileOrDirectoryException e) {
       throw new AssertionError(e);
     }
diff --git a/jack/src/com/android/jack/library/v0003/Version.java b/jack/src/com/android/jack/library/v0003/Version.java
index 197421a..077d1a2 100644
--- a/jack/src/com/android/jack/library/v0003/Version.java
+++ b/jack/src/com/android/jack/library/v0003/Version.java
@@ -21,9 +21,9 @@
  */
 public class Version {
 
-  public static final int MINOR_MIN = 4;
+  public static final int MINOR_MIN = 5;
 
-  public static final int MINOR = 4;
+  public static final int MINOR = 5;
 
   public static final int MAJOR = 3;
 }
diff --git a/jack/src/com/android/jack/lookup/JLookup.java b/jack/src/com/android/jack/lookup/JLookup.java
index aaf0376..a431bbc 100644
--- a/jack/src/com/android/jack/lookup/JLookup.java
+++ b/jack/src/com/android/jack/lookup/JLookup.java
@@ -262,17 +262,22 @@
     T type;
     synchronized (cache) {
       type = cache.get(signature);
+    }
 
-      if (type == null) {
-        int typeNameLength = signature.length();
-        assert typeNameLength > 1 : "Invalid signature '" + signature + "'";
-        if (signature.charAt(0) == '[') {
-          type = (T) findArrayType(signature);
-        } else {
-          type = findClassOrInterface(signature, adapter);
-        }
+    if (type == null) {
+      int typeNameLength = signature.length();
+      assert typeNameLength > 1 : "Invalid signature '" + signature + "'";
+      if (signature.charAt(0) == '[') {
+        type = (T) findArrayType(signature);
+      } else {
+        type = findClassOrInterface(signature, adapter);
+      }
+      synchronized (cache) {
+        // Model already ensures unicity of types, so the worst that could happen here would be to
+        // store the exact same type that is already stored.
+        assert cache.get(signature) == null || cache.get(signature) == type;
         cache.put(signature, type);
-     }
+      }
     }
     return type;
   }
diff --git a/jack/src/com/android/jack/optimizations/ConstantRefiner.java b/jack/src/com/android/jack/optimizations/ConstantRefiner.java
index e934085..4d59c95 100644
--- a/jack/src/com/android/jack/optimizations/ConstantRefiner.java
+++ b/jack/src/com/android/jack/optimizations/ConstantRefiner.java
@@ -157,6 +157,7 @@
 
           if (varRef.getParent() instanceof JCastOperation) {
             JCastOperation cast = (JCastOperation) varRef.getParent();
+            assert cast != null;
             if (cast.getType().isSameType(dm.getValue().getType())) {
               // Remove useless cast directly since it trigger new opportunities.
               tr.append(new Replace(cast, cloneExpr.cloneExpression(dm.getValue())));
diff --git a/jack/src/com/android/jack/optimizations/DefUsesChainsSimplifier.java b/jack/src/com/android/jack/optimizations/DefUsesChainsSimplifier.java
index ea057ce..05102fe 100644
--- a/jack/src/com/android/jack/optimizations/DefUsesChainsSimplifier.java
+++ b/jack/src/com/android/jack/optimizations/DefUsesChainsSimplifier.java
@@ -549,6 +549,9 @@
     // conditions and apply optimization if they are satisfied.
     processCandidatesWithDependencies(method, cfg, candidates, definitions);
 
-    method.removeMarker(ReachingDefsMarker.class);
+    // Remove ReachingDefsMarker on every basic block.
+    for (BasicBlock bb : cfg.getNodes()) {
+      bb.removeMarker(ReachingDefsMarker.class);
+    }
   }
 }
diff --git a/jack/src/com/android/jack/optimizations/IfWithConstantSimplifier.java b/jack/src/com/android/jack/optimizations/IfWithConstantSimplifier.java
index c2b5800..1291564 100644
--- a/jack/src/com/android/jack/optimizations/IfWithConstantSimplifier.java
+++ b/jack/src/com/android/jack/optimizations/IfWithConstantSimplifier.java
@@ -107,38 +107,43 @@
           JStatement elseStmt = ifStmt.getElseStmt();
 
           for (DefinitionMarker dm : udm.getDefs()) {
+            // Apply optimization if and only if the following is true:
+            // - the definition is 'true' or 'false' literals.
+            // - the definition is used only once.
+            // - the definition and its use (the if statement) are in different blocks.
             if (dm.hasValue() && dm.getValue() instanceof JBooleanLiteral
-                && dm.isUsedOnlyOnce()) {
-                if (((JBooleanLiteral) dm.getValue()).getValue() == true) {
-                  // Branch to then block
+                && dm.isUsedOnlyOnce()
+                && dm.getDefinition().getParent(JBlock.class) != ifStmt.getParent(JBlock.class)) {
+              if (((JBooleanLiteral) dm.getValue()).getValue() == true) {
+                // Branch to then block
 
-                  if (thenLabel == null) {
-                    thenLabel = new JLabeledStatement(
-                        si, new JLabel(si, "ifSimplierThen_" + count), new JBlock(si));
-                    tr.append(new PrependStatement((JBlock) ifStmt.getThenStmt(), thenLabel));
-                  }
-
-                  assert thenLabel != null;
-                  removeDefAndBranchToLabel(dm, si, thenLabel, tr);
-                } else {
-                  // Branch to else block
-                  if (elseStmt != null) {
-                    if (elseLabel == null) {
-                      elseLabel = new JLabeledStatement(
-                          si, new JLabel(si, "ifSimplierElse_" + count), new JBlock(si));
-                      tr.append(new PrependStatement((JBlock) elseStmt, elseLabel));
-                    }
-                  } else {
-                    if (elseLabel == null) {
-                      elseLabel = new JLabeledStatement(
-                          si, new JLabel(si, "ifSimplierEnd_" + count), new JBlock(si));
-
-                      tr.append(new PrependAfter(ifStmt, elseLabel));
-                    }
-                  }
-
-                  removeDefAndBranchToLabel(dm, si, elseLabel, tr);
+                if (thenLabel == null) {
+                  thenLabel = new JLabeledStatement(
+                      si, new JLabel(si, "ifSimplierThen_" + count), new JBlock(si));
+                  tr.append(new PrependStatement((JBlock) ifStmt.getThenStmt(), thenLabel));
                 }
+
+                assert thenLabel != null;
+                removeDefAndBranchToLabel(dm, si, thenLabel, tr);
+              } else {
+                // Branch to else block
+                if (elseStmt != null) {
+                  if (elseLabel == null) {
+                    elseLabel = new JLabeledStatement(
+                        si, new JLabel(si, "ifSimplierElse_" + count), new JBlock(si));
+                    tr.append(new PrependStatement((JBlock) elseStmt, elseLabel));
+                  }
+                } else {
+                  if (elseLabel == null) {
+                    elseLabel = new JLabeledStatement(
+                        si, new JLabel(si, "ifSimplierEnd_" + count), new JBlock(si));
+
+                    tr.append(new PrependAfter(ifStmt, elseLabel));
+                  }
+                }
+
+                removeDefAndBranchToLabel(dm, si, elseLabel, tr);
+              }
             } else {
               allDefsAreBooleanCstAndUseByIfStmt = false;
             }
diff --git a/jack/src/com/android/jack/optimizations/Optimizations.java b/jack/src/com/android/jack/optimizations/Optimizations.java
index e3eb4f8..7063f17 100644
--- a/jack/src/com/android/jack/optimizations/Optimizations.java
+++ b/jack/src/com/android/jack/optimizations/Optimizations.java
@@ -59,6 +59,14 @@
             .addDefaultValue(Boolean.TRUE)
             .addCategory(DumpInLibrary.class)
             .addCategory(PrebuiltCompatibility.class);
+
+    @Nonnull
+    public static final BooleanPropertyId OPTIMIZE_CST_DEF = BooleanPropertyId
+        .create("jack.optimization.use-def-cst-simplifier",
+            "Optimize use/def chain with constant definition")
+        .addDefaultValue(Boolean.FALSE)
+        .addCategory(DumpInLibrary.class)
+        .addCategory(PrebuiltCompatibility.class);
   }
 
   /**
diff --git a/jack/src/com/android/jack/optimizations/UnusedDefinitionRemover.java b/jack/src/com/android/jack/optimizations/UnusedDefinitionRemover.java
index 08ca778..723de0b 100644
--- a/jack/src/com/android/jack/optimizations/UnusedDefinitionRemover.java
+++ b/jack/src/com/android/jack/optimizations/UnusedDefinitionRemover.java
@@ -110,7 +110,9 @@
 
       tracer.getStatistic(UNUSED_DEFINITION_REMOVED).incValue();
 
-      tr.append(new Remove(binary.getParent()));
+      final JNode binaryParent = binary.getParent();
+      assert binaryParent != null;
+      tr.append(new Remove(binaryParent));
 
       if (binary.getRhs() instanceof JVariableRef) {
         UseDefsMarker udm = ((JVariableRef) binary.getRhs()).getMarker(UseDefsMarker.class);
diff --git a/jack/src/com/android/jack/optimizations/UseDefsChainsSimplifier.java b/jack/src/com/android/jack/optimizations/UseDefsChainsSimplifier.java
index 6026dbf..5a8cd30 100644
--- a/jack/src/com/android/jack/optimizations/UseDefsChainsSimplifier.java
+++ b/jack/src/com/android/jack/optimizations/UseDefsChainsSimplifier.java
@@ -21,9 +21,14 @@
 import com.android.jack.analysis.UseDefsMarker;
 import com.android.jack.cfg.BasicBlock;
 import com.android.jack.cfg.ControlFlowGraph;
+import com.android.jack.ir.ast.JBooleanLiteral;
+import com.android.jack.ir.ast.JExpression;
 import com.android.jack.ir.ast.JIfStatement;
 import com.android.jack.ir.ast.JLock;
 import com.android.jack.ir.ast.JMethod;
+import com.android.jack.ir.ast.JNullLiteral;
+import com.android.jack.ir.ast.JNumberValueLiteral;
+import com.android.jack.ir.ast.JReinterpretCastOperation;
 import com.android.jack.ir.ast.JStatement;
 import com.android.jack.ir.ast.JSwitchStatement;
 import com.android.jack.ir.ast.JUnlock;
@@ -34,6 +39,7 @@
 import com.android.jack.transformations.request.Replace;
 import com.android.jack.transformations.request.TransformationRequest;
 import com.android.jack.transformations.threeaddresscode.ThreeAddressCodeForm;
+import com.android.jack.util.CloneExpressionVisitor;
 import com.android.jack.util.ControlFlowHelper;
 import com.android.jack.util.DefsAndUsesChainOptimizationTools;
 import com.android.sched.item.Description;
@@ -65,12 +71,14 @@
  *
  * Optimization can be apply if the following conditions are respected:
  *  - condition (0) a into s1 must used only one definition of a
- *  - condition (1) a must have a value and b must be variable reference
- *  - condition (2) if s0 and s1 are in the same block then the variable b must not be redefine
- *  between statement s0 and s1
- *  - condition (3) if s0 and s1 are not into the same block then all definitions of b used by s0
- *  must reach the block containing s1 and all of these definitions must dominates s0. The block
- *  that contains s1 must not redefine b between the beginning of this block and s1
+ *  - condition (1) a must have a value and b must be variable reference or a literal value without
+ *  side effect
+ *  - condition (2) if b is a variable reference then if s0 and s1 are in the same block then the
+ *  variable b must not be redefine between statement s0 and s1
+ *  - condition (3) if b is a variable then if s0 and s1 are not into the same block then all
+ *  definitions of b used by s0 must reach the block containing s1 and all of these definitions
+ *  must dominates s0. The block that contains s1 must not redefine b between the beginning of
+ *  this block and s1
  *
  * Temporary restriction of condition(3)
  * if several definitions of b exists, Jack must checks that all definition statements dominate s0.
@@ -96,12 +104,20 @@
       CounterImpl.class, Counter.class);
 
   @Nonnull
+  private static final StatisticId<Counter> SIMPLIFIED_USE_DEF_WITH_CST = new StatisticId<Counter>(
+      "jack.optimization.usedef.constant", "Use def chain with constant simplified",
+      CounterImpl.class, Counter.class);
+
+  @Nonnull
   private final com.android.jack.util.filter.Filter<JMethod> filter =
       ThreadConfig.get(Options.METHOD_FILTER);
 
   @Nonnull
   private final Tracer tracer = TracerFactory.getTracer();
 
+  private final boolean optimizeCstDef =
+      ThreadConfig.get(Optimizations.UseDefSimplifier.OPTIMIZE_CST_DEF).booleanValue();
+
   private class Visitor extends JVisitor {
 
     @Override
@@ -125,21 +141,34 @@
               tracer.getStatistic(SIMPLIFIED_USE_DEF).incValue();
             }
 
-            JVariableRef varRefb = (JVariableRef) defOfa.getValue();
-            JVariableRef newVarRefb = getNewVarRef(varRefb, varRefOfa.getSourceInfo());
+            JExpression exprValueOfa = defOfa.getValue();
+            TransformationRequest tr = new TransformationRequest(s1);
 
-            UseDefsMarker udmOfNewVarRefb = new UseDefsMarker();
-            udmOfNewVarRefb.addUsedDefinitions(
-                DefsAndUsesChainOptimizationTools.getUsedDefinitions(varRefb), newVarRefb);
-            newVarRefb.addMarker(udmOfNewVarRefb);
+            if (isLiteralWithoutSideEffect(exprValueOfa)) {
+              tracer.getStatistic(SIMPLIFIED_USE_DEF_WITH_CST).incValue();
+              JExpression newExpr = new CloneExpressionVisitor().cloneExpression(exprValueOfa);
+              if (newExpr instanceof JNullLiteral) {
+                newExpr = new JReinterpretCastOperation(newExpr.getSourceInfo(),
+                    varRefOfa.getType(), newExpr);
+              }
+              tr.append(new Replace(varRefOfa, newExpr));
+            } else {
+              JVariableRef varRefb = (JVariableRef) exprValueOfa;
+              JVariableRef newVarRefb = getNewVarRef(varRefb, varRefOfa.getSourceInfo());
 
-            varsUsedBys1.add(newVarRefb);
+              UseDefsMarker udmOfNewVarRefb = new UseDefsMarker();
+              udmOfNewVarRefb.addUsedDefinitions(
+                  DefsAndUsesChainOptimizationTools.getUsedDefinitions(varRefb), newVarRefb);
+              newVarRefb.addMarker(udmOfNewVarRefb);
+
+              varsUsedBys1.add(newVarRefb);
+              tr.append(new Replace(varRefOfa, newVarRefb));
+            }
+
+            // Update use/def information.
             varsUsedBys1.remove(varRefOfa);
-
             defOfa.removeUse(varRefOfa);
 
-            TransformationRequest tr = new TransformationRequest(s1);
-            tr.append(new Replace(varRefOfa, newVarRefb));
             tr.commit();
           }
         }
@@ -148,32 +177,45 @@
       return super.visit(s1);
     }
 
+    private boolean isLiteralWithoutSideEffect(@Nonnull JExpression expr) {
+      return expr instanceof JBooleanLiteral || expr instanceof JNullLiteral
+          || expr instanceof JNumberValueLiteral;
+    }
+
     private boolean stmtCanBeOptimized(@Nonnull JStatement s1, @Nonnull DefinitionMarker defOfa) {
       // Condition (1)
-      if (!defOfa.hasValue() || !(defOfa.getValue() instanceof JVariableRef)) {
+      if (!defOfa.hasValue()) {
         return false;
       }
 
-      JVariableRef varRefb = (JVariableRef) defOfa.getValue();
-      BasicBlock bbOfs1 = ControlFlowHelper.getBasicBlock(s1);
-      JStatement s0 = defOfa.getStatement();
-      assert s0 != null;
-      BasicBlock bbOfs0 = ControlFlowHelper.getBasicBlock(s0);
-      JVariable b = varRefb.getTarget();
+      // Condition (1)
+      if (defOfa.getValue() instanceof JVariableRef) {
+        JVariableRef varRefb = (JVariableRef) defOfa.getValue();
+        BasicBlock bbOfs1 = ControlFlowHelper.getBasicBlock(s1);
+        JStatement s0 = defOfa.getStatement();
+        assert s0 != null;
+        BasicBlock bbOfs0 = ControlFlowHelper.getBasicBlock(s0);
+        JVariable b = varRefb.getTarget();
 
-      // Condition (2)
-      if (bbOfs0 == bbOfs1) {
-        if (!hasLocalDef(b, bbOfs0, s0, s1)) {
-          return true;
+        // Condition (2)
+        if (bbOfs0 == bbOfs1) {
+          if (!hasLocalDef(b, bbOfs0, s0, s1)) {
+            return true;
+          }
+        } else {
+          // Condition (3)
+          List<DefinitionMarker> defsOfbUseFroms0 =
+              DefsAndUsesChainOptimizationTools.getUsedDefinitions(varRefb);
+          if (defsOfbUseFroms0.size() == 1 && bbHasOnlyDefinitions(bbOfs1, b, defsOfbUseFroms0)
+              && !hasLocalDef(b, bbOfs1, null, s1)) {
+            return true;
+          }
         }
-      } else {
-        // Condition (3)
-        List<DefinitionMarker> defsOfbUseFroms0 =
-            DefsAndUsesChainOptimizationTools.getUsedDefinitions(varRefb);
-        if (defsOfbUseFroms0.size() == 1 && bbHasOnlyDefinitions(bbOfs1, b, defsOfbUseFroms0)
-            && !hasLocalDef(b, bbOfs1, null, s1)) {
-          return true;
-        }
+        // Condition (1)
+      } else if (optimizeCstDef && isLiteralWithoutSideEffect(defOfa.getValue())) {
+        // No more check since it is a literal value without side effect and that can not be
+        // redefined
+        return true;
       }
 
       return false;
@@ -232,6 +274,7 @@
     if (method.isNative() || method.isAbstract() || !filter.accept(this.getClass(), method)) {
       return;
     }
+
     ControlFlowGraph cfg = method.getMarker(ControlFlowGraph.class);
     assert cfg != null;
 
diff --git a/jack/src/com/android/jack/optimizations/common/JlsNullabilityChecker.java b/jack/src/com/android/jack/optimizations/common/JlsNullabilityChecker.java
index af13157..00c357e 100644
--- a/jack/src/com/android/jack/optimizations/common/JlsNullabilityChecker.java
+++ b/jack/src/com/android/jack/optimizations/common/JlsNullabilityChecker.java
@@ -24,6 +24,7 @@
 import com.android.jack.ir.ast.JIfStatement;
 import com.android.jack.ir.ast.JNewInstance;
 import com.android.jack.ir.ast.JNullLiteral;
+import com.android.jack.ir.ast.JPrimitiveType.JPrimitiveTypeEnum;
 import com.android.jack.ir.ast.JStatement;
 import com.android.jack.ir.ast.JThisRef;
 import com.android.jack.ir.ast.JThrowStatement;
@@ -40,6 +41,7 @@
 import com.android.sched.schedulable.Use;
 
 import java.util.Collections;
+
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 
@@ -105,10 +107,11 @@
         getPhantomLookup
             .getClass(CommonTypes.JAVA_LANG_NULL_POINTER_EXCEPTION);
     JNewInstance newInstance = new JNewInstance(srcInfo, exceptionType,
-        exceptionType.getOrCreateMethodIdWide(
+        exceptionType.getOrCreateMethodId(
             NamingTools.INIT_NAME,
             Collections.<JType>emptyList(),
-            MethodKind.INSTANCE_NON_VIRTUAL));
+            MethodKind.INSTANCE_NON_VIRTUAL,
+            JPrimitiveTypeEnum.VOID.getType()));
     JExpression[] expressions = SplitNewInstance.NewExpressionSplitter
         .splitNewInstance(newInstance, request, varCreator);
 
diff --git a/jack/src/com/android/jack/optimizations/common/OptimizerUtils.java b/jack/src/com/android/jack/optimizations/common/OptimizerUtils.java
index b87d9f4..65a8b46 100644
--- a/jack/src/com/android/jack/optimizations/common/OptimizerUtils.java
+++ b/jack/src/com/android/jack/optimizations/common/OptimizerUtils.java
@@ -44,6 +44,7 @@
 
 import java.util.List;
 import java.util.Set;
+
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 
@@ -65,7 +66,9 @@
   @Nonnull
   public static JExpression getAssignedValue(@Nonnull JExpression expr) {
     assert isAssigned(expr);
-    return ((JAsgOperation) expr.getParent()).getRhs();
+    JAsgOperation parent = (JAsgOperation) expr.getParent();
+    assert parent != null;
+    return parent.getRhs();
   }
 
   /**
@@ -139,7 +142,7 @@
   public static boolean isConstructorDelegation(
       @Nonnull JMethodCall call, @Nonnull JConstructor constructor) {
     // Must be a constructor call on 'this'
-    if (!call.getMethodId().isInit() ||
+    if (!call.getMethodIdWide().isInit() ||
         !(call.getInstance() instanceof JThisRef)) {
       return false;
     }
diff --git a/jack/src/com/android/jack/optimizations/inlining/InlineAnnotatedMethods.java b/jack/src/com/android/jack/optimizations/inlining/InlineAnnotatedMethods.java
index 7912eba..44f54de 100644
--- a/jack/src/com/android/jack/optimizations/inlining/InlineAnnotatedMethods.java
+++ b/jack/src/com/android/jack/optimizations/inlining/InlineAnnotatedMethods.java
@@ -78,7 +78,7 @@
   private class InlineVisitor extends JVisitor {
     @Override
     public void endVisit(@Nonnull JMethodCall call) {
-      Collection<JMethod> targets = call.getMethodId().getMethods();
+      Collection<JMethod> targets = call.getMethodIdWide().getMethods();
       if (targets.size() != 1) {
         return;
       }
diff --git a/jack/src/com/android/jack/optimizations/inlining/InlineAnnotationSanityCheck.java b/jack/src/com/android/jack/optimizations/inlining/InlineAnnotationSanityCheck.java
index eb043ea..8ff89fc 100644
--- a/jack/src/com/android/jack/optimizations/inlining/InlineAnnotationSanityCheck.java
+++ b/jack/src/com/android/jack/optimizations/inlining/InlineAnnotationSanityCheck.java
@@ -70,7 +70,7 @@
 
     @Override
     public void endVisit(@Nonnull JMethodCall call) {
-      Collection<JMethod> targets = call.getMethodId().getMethods();
+      Collection<JMethod> targets = call.getMethodIdWide().getMethods();
       if (targets.size() != 1) {
         return;
       }
diff --git a/jack/src/com/android/jack/optimizations/modifiers/FieldFinalizer.java b/jack/src/com/android/jack/optimizations/modifiers/FieldFinalizer.java
index e564fd0..b92beb2 100644
--- a/jack/src/com/android/jack/optimizations/modifiers/FieldFinalizer.java
+++ b/jack/src/com/android/jack/optimizations/modifiers/FieldFinalizer.java
@@ -284,7 +284,7 @@
 
             JMethodCall call = (JMethodCall) expr;
             // Must be a constructor call on 'this'
-            if (!call.getMethodId().isInit() ||
+            if (!call.getMethodIdWide().isInit() ||
                 !(call.getInstance() instanceof JThisRef)) {
               return;
             }
diff --git a/jack/src/com/android/jack/optimizations/tailrecursion/TailRecursionOptimizer.java b/jack/src/com/android/jack/optimizations/tailrecursion/TailRecursionOptimizer.java
index 084fa38..512205a 100644
--- a/jack/src/com/android/jack/optimizations/tailrecursion/TailRecursionOptimizer.java
+++ b/jack/src/com/android/jack/optimizations/tailrecursion/TailRecursionOptimizer.java
@@ -179,7 +179,7 @@
       if (retExpr instanceof JMethodCall) {
         JMethodCall methodCall = (JMethodCall) retExpr;
         JExpression instance = methodCall.getInstance();
-        if (methodCall.getMethodId().equals(enclosingMethod.getMethodIdWide())
+        if (methodCall.getMethodIdWide().equals(enclosingMethod.getMethodIdWide())
             && (instance == null || (instance.getType().isSameType(methodCall.getReceiverType())
             && instance instanceof JThisRef))) {
           tracer.getStatistic(TAIL_RECURSION_OPTS).incValue();
@@ -213,18 +213,18 @@
             argAssignments.add(tempToArgStmt);
           }
 
+          final JStatementList returnStmtParent = (JStatementList) returnStatement.getParent();
+          assert returnStmtParent != null;
           for (JStatement asgStmt : tmpAssignments) {
-            tr.append(
-                new AppendStatement((JStatementList) returnStatement.getParent(), asgStmt));
+            tr.append(new AppendStatement(returnStmtParent, asgStmt));
           }
           for (JStatement asgStmt : argAssignments) {
-            tr.append(
-                new AppendStatement((JStatementList) returnStatement.getParent(), asgStmt));
+            tr.append(new AppendStatement(returnStmtParent, asgStmt));
           }
 
           JGoto tailCall = new JGoto(returnStatement.getSourceInfo(), labeledFirstStatement);
           tailCall.setCatchBlocks(returnStatement.getJCatchBlocks());
-          tr.append(new AppendStatement((JStatementList) returnStatement.getParent(), tailCall));
+          tr.append(new AppendStatement(returnStmtParent, tailCall));
           tr.append(new Remove(returnStatement));
         }
       }
diff --git a/jack/src/com/android/jack/optimizations/valuepropagation/argument/AvpCollectMethodCallArguments.java b/jack/src/com/android/jack/optimizations/valuepropagation/argument/AvpCollectMethodCallArguments.java
index 6747fcb..5d04cba 100644
--- a/jack/src/com/android/jack/optimizations/valuepropagation/argument/AvpCollectMethodCallArguments.java
+++ b/jack/src/com/android/jack/optimizations/valuepropagation/argument/AvpCollectMethodCallArguments.java
@@ -61,7 +61,7 @@
           }
           if (expr instanceof JMethodCall) {
             JMethodCall call = (JMethodCall) expr;
-            JMethodIdWide methodId = call.getMethodId();
+            JMethodIdWide methodId = call.getMethodIdWide();
             // Track only method calls with at least one parameter
             if (methodId.getParamTypes().size() > 0) {
               TypeMethodCallArgumentsMarker.markCallOnReceiverType(
diff --git a/jack/src/com/android/jack/optimizations/valuepropagation/argument/TypeMethodCallArgumentsMarker.java b/jack/src/com/android/jack/optimizations/valuepropagation/argument/TypeMethodCallArgumentsMarker.java
index 525144c..09005d0 100644
--- a/jack/src/com/android/jack/optimizations/valuepropagation/argument/TypeMethodCallArgumentsMarker.java
+++ b/jack/src/com/android/jack/optimizations/valuepropagation/argument/TypeMethodCallArgumentsMarker.java
@@ -97,7 +97,7 @@
     // it's arguments if the method is tainted at this type.
     TaintedVirtualMethodsMarker taintedMarker =
         TaintedVirtualMethodsMarker.getMarker(type);
-    if (call.getMethodId().getKind() == MethodKind.INSTANCE_VIRTUAL &&
+    if (call.getMethodIdWide().getKind() == MethodKind.INSTANCE_VIRTUAL &&
         taintedMarker != null && taintedMarker.isMethodTainted(signature)) {
       return;
     }
diff --git a/jack/src/com/android/jack/optimizations/wofr/WofrRemoveFieldWrites.java b/jack/src/com/android/jack/optimizations/wofr/WofrRemoveFieldWrites.java
index 186ef94..be878d8 100644
--- a/jack/src/com/android/jack/optimizations/wofr/WofrRemoveFieldWrites.java
+++ b/jack/src/com/android/jack/optimizations/wofr/WofrRemoveFieldWrites.java
@@ -28,6 +28,7 @@
 import com.android.jack.ir.ast.JLocal;
 import com.android.jack.ir.ast.JMethod;
 import com.android.jack.ir.ast.JMethodCall;
+import com.android.jack.ir.ast.JNode;
 import com.android.jack.ir.ast.JPrimitiveType;
 import com.android.jack.ir.ast.JStatement;
 import com.android.jack.ir.ast.JThisRef;
@@ -233,7 +234,9 @@
 
         JExpressionStatement stmt =
             new JExpressionStatement(asg.getSourceInfo(), receiver);
-        request.append(new AppendBefore(asg.getParent(), stmt));
+        final JNode parent = asg.getParent();
+        assert parent != null;
+        request.append(new AppendBefore(parent, stmt));
         return local;
       }
     }
diff --git a/jack/src/com/android/jack/reporting/CommonReporter.java b/jack/src/com/android/jack/reporting/CommonReporter.java
index ac0589b..242c778 100644
--- a/jack/src/com/android/jack/reporting/CommonReporter.java
+++ b/jack/src/com/android/jack/reporting/CommonReporter.java
@@ -18,7 +18,7 @@
 
 import com.android.jack.Jack;
 import com.android.jack.Options;
-import com.android.jack.Options.VerbosityLevel;
+import com.android.jack.VerbosityLevel;
 import com.android.jack.ir.HasSourceInfo;
 import com.android.jack.reporting.Reportable.ProblemLevel;
 import com.android.sched.util.config.ThreadConfig;
diff --git a/jack/src/com/android/jack/reporting/Reportable.java b/jack/src/com/android/jack/reporting/Reportable.java
index df34c27..956e23d 100644
--- a/jack/src/com/android/jack/reporting/Reportable.java
+++ b/jack/src/com/android/jack/reporting/Reportable.java
@@ -16,7 +16,7 @@
 
 package com.android.jack.reporting;
 
-import com.android.jack.Options.VerbosityLevel;
+import com.android.jack.VerbosityLevel;
 import com.android.sched.util.codec.EnumName;
 import com.android.sched.util.codec.VariableName;
 
diff --git a/jack/src/com/android/jack/resource/ResourceOrMetaImporter.java b/jack/src/com/android/jack/resource/ResourceOrMetaImporter.java
index 51df922..c9fbd66 100644
--- a/jack/src/com/android/jack/resource/ResourceOrMetaImporter.java
+++ b/jack/src/com/android/jack/resource/ResourceOrMetaImporter.java
@@ -49,7 +49,7 @@
     List<ResourceOrMeta> resultList = new ArrayList<ResourceOrMeta>();
     try {
       for (InputVFS resourceDir : resourceDirs) {
-        importResourceDirElement(resourceDir.getRootInputVDir().list(), "",
+        importResourceDirElement(resourceDir.getRootDir().list(), "",
             resourceDir.getLocation(), resultList);
       }
     } catch (ResourceImportConflictException e) {
diff --git a/jack/src/com/android/jack/shrob/obfuscation/MappingApplier.java b/jack/src/com/android/jack/shrob/obfuscation/MappingApplier.java
index 52a4073..db255bc 100644
--- a/jack/src/com/android/jack/shrob/obfuscation/MappingApplier.java
+++ b/jack/src/com/android/jack/shrob/obfuscation/MappingApplier.java
@@ -39,6 +39,7 @@
 import com.android.jack.reporting.Reporter.Severity;
 import com.android.jack.shrob.obfuscation.key.FieldKey;
 import com.android.jack.shrob.obfuscation.key.MethodKey;
+import com.android.jack.shrob.obfuscation.key.TypeKey;
 import com.android.jack.shrob.proguard.GrammarActions;
 import com.android.jack.shrob.shrink.MappingCollisionException;
 import com.android.jack.shrob.shrink.MappingCollisionPolicy;
@@ -131,10 +132,34 @@
     throw new JackIOException(mappingFile.getPath() + ":" + lineNumber + ":" + message);
   }
 
+  private boolean isExistingTypeName(@Nonnull String newSimpleName,
+      @Nonnull JPackage enclosingPackage) {
+    try {
+      try {
+        JClassOrInterface newType = enclosingPackage.getType(newSimpleName);
+        if (!Renamer.mustBeRenamed((MarkerManager) newType)) {
+          // A type was found that must not be renamed
+          return true;
+        }
+      } catch (JTypeLookupException e) {
+        // Ignored
+      }
+      NewTypeKeyMarker marker = enclosingPackage.getMarker(NewTypeKeyMarker.class);
+      if (marker != null) {
+        if (marker.getNewKeys().contains(new TypeKey(newSimpleName))) {
+          return true;
+        }
+      }
+    } catch (JLookupException exception) {
+      // No type was found
+    }
+    return false;
+  }
+
   @CheckForNull
   private JDefinedClassOrInterface createMappingForType(@Nonnull String oldName,
       @Nonnull String newName, @Nonnull JSession session, @Nonnull File mappingFile,
-      int lineNumber) {
+      int lineNumber) throws MappingCollisionException {
     JClassOrInterface type = null;
     JNodeLookup lookup = session.getLookup();
     try {
@@ -145,7 +170,6 @@
           new Object[] {mappingFile.getPath(), Integer.valueOf(lineNumber), oldName});
     }
     if (type instanceof JDefinedClassOrInterface) {
-      JDefinedClassOrInterface clOrI = (JDefinedClassOrInterface) type;
       int indexOfNewSimpleName = newName.lastIndexOf('.');
       String newSimpleName, newPackageName;
       if (indexOfNewSimpleName == -1) {
@@ -155,18 +179,36 @@
         newPackageName = newName.substring(0, indexOfNewSimpleName).replace('.', '/');
         newSimpleName = newName.substring(indexOfNewSimpleName + 1, newName.length());
       }
-      clOrI.addMarker(new OriginalPackageMarker(clOrI.getEnclosingPackage()));
       JPackage newEnclosingPackage = lookup.getOrCreatePackage(newPackageName);
-      request.append(new ChangeEnclosingPackage(clOrI, newEnclosingPackage));
-      while (newEnclosingPackage != null) {
-        if (!newEnclosingPackage.containsMarker(KeepNameMarker.class)) {
-          newEnclosingPackage.addMarker(KeepNameMarker.INSTANCE);
-        }
-        newEnclosingPackage = newEnclosingPackage.getEnclosingPackage();
-      }
 
-      rename(clOrI, newSimpleName);
-      return clOrI;
+      if (!oldName.equals(newName)
+          && isExistingTypeName(newSimpleName, newEnclosingPackage)) {
+        throw new MappingCollisionException(
+            new ColumnAndLineLocation(new FileLocation(mappingFile), lineNumber), type, newName);
+      } else {
+        JDefinedClassOrInterface clOrI = (JDefinedClassOrInterface) type;
+
+        clOrI.addMarker(new OriginalPackageMarker(clOrI.getEnclosingPackage()));
+
+        NewTypeKeyMarker marker = newEnclosingPackage.getMarker(NewTypeKeyMarker.class);
+        if (marker == null) {
+          marker = new NewTypeKeyMarker();
+          newEnclosingPackage.addMarker(marker);
+        }
+        assert marker != null;
+        marker.add(new TypeKey(newSimpleName));
+
+        request.append(new ChangeEnclosingPackage(clOrI, newEnclosingPackage));
+        while (newEnclosingPackage != null) {
+          if (!newEnclosingPackage.containsMarker(KeepNameMarker.class)) {
+            newEnclosingPackage.addMarker(KeepNameMarker.INSTANCE);
+          }
+          newEnclosingPackage = newEnclosingPackage.getEnclosingPackage();
+        }
+
+        rename(clOrI, newSimpleName);
+        return clOrI;
+      }
     }
     return null;
   }
@@ -252,10 +294,18 @@
       return createMappingForType(
           qualifiedOldClassName, newClassName, session, mappingFile, lineNumber);
     } catch (ArrayIndexOutOfBoundsException e) {
-      throwException(
-          mappingFile, lineNumber, "The mapping file is badly formatted (class mapping expected)");
-      return null;
+      throwException(mappingFile, lineNumber,
+          "The mapping file is badly formatted (class mapping expected)");
+    } catch (MappingCollisionException e) {
+      if (collisionPolicy.equals(MappingCollisionPolicy.FAIL)) {
+        MappingContextException mappingReportableExn = new MappingContextException(e);
+        Jack.getSession().getReporter().report(Severity.FATAL, mappingReportableExn);
+        throw new JackAbortException(mappingReportableExn);
+      } else {
+        Jack.getSession().getReporter().report(Severity.NON_FATAL, new MappingContextInfo(e));
+      }
     }
+    return null;
   }
 
   @CheckForNull
diff --git a/jack/src/com/android/jack/shrob/obfuscation/MappingPrinter.java b/jack/src/com/android/jack/shrob/obfuscation/MappingPrinter.java
index 5853d9f..2285a50 100644
--- a/jack/src/com/android/jack/shrob/obfuscation/MappingPrinter.java
+++ b/jack/src/com/android/jack/shrob/obfuscation/MappingPrinter.java
@@ -16,26 +16,17 @@
 
 package com.android.jack.shrob.obfuscation;
 
-import com.google.common.base.Strings;
-
 import com.android.jack.config.id.Arzon;
-import com.android.jack.ir.ast.HasName;
-import com.android.jack.ir.ast.JArrayType;
-import com.android.jack.ir.ast.JClassOrInterface;
 import com.android.jack.ir.ast.JDefinedClassOrInterface;
 import com.android.jack.ir.ast.JField;
 import com.android.jack.ir.ast.JMethod;
-import com.android.jack.ir.ast.JNode;
-import com.android.jack.ir.ast.JPackage;
 import com.android.jack.ir.ast.JParameter;
 import com.android.jack.ir.ast.JSession;
-import com.android.jack.ir.ast.JType;
 import com.android.jack.ir.ast.JVisitor;
 import com.android.jack.reporting.ReportableIOException;
 import com.android.jack.reporting.Reporter.Severity;
 import com.android.jack.shrob.proguard.GrammarActions;
 import com.android.sched.item.Description;
-import com.android.sched.marker.LocalMarkerManager;
 import com.android.sched.schedulable.Constraint;
 import com.android.sched.schedulable.Optional;
 import com.android.sched.schedulable.Produce;
@@ -84,8 +75,6 @@
 
   private static final String SEPARATOR = " -> ";
 
-  private static final char PACKAGE_SEPARATOR = '.';
-
   private static class Visitor extends JVisitor {
     @Nonnull
     private final PrintWriter writer;
@@ -94,67 +83,11 @@
       this.writer = writer;
     }
 
-    private void appendOriginalQualifiedName(
-        @Nonnull StringBuilder nameBuilder, @Nonnull JPackage pack) {
-      JPackage enclosingPackage;
-      OriginalPackageMarker marker = pack.getMarker(OriginalPackageMarker.class);
-      if (marker != null) {
-        enclosingPackage = marker.getOriginalEnclosingPackage();
-      } else {
-        enclosingPackage = pack.getEnclosingPackage();
-      }
-      if (enclosingPackage != null && !enclosingPackage.isTopLevelPackage()) {
-        appendOriginalQualifiedName(nameBuilder, enclosingPackage);
-        nameBuilder.append(PACKAGE_SEPARATOR);
-      }
-      appendOriginalName(nameBuilder, pack);
-    }
-
-    private void appendOriginalQualifiedName(
-        @Nonnull StringBuilder nameBuilder, @Nonnull JClassOrInterface type) {
-      JPackage enclosingPackage;
-      OriginalPackageMarker marker = ((JNode) type).getMarker(OriginalPackageMarker.class);
-      if (marker != null) {
-        enclosingPackage = marker.getOriginalEnclosingPackage();
-      } else {
-        enclosingPackage = type.getEnclosingPackage();
-      }
-      assert enclosingPackage != null;
-      appendOriginalQualifiedName(nameBuilder, enclosingPackage);
-      if (!enclosingPackage.isTopLevelPackage()) {
-        nameBuilder.append(PACKAGE_SEPARATOR);
-      }
-      appendOriginalName(nameBuilder, type);
-    }
-
-    private void appendOriginalName(@Nonnull StringBuilder nameBuilder, @Nonnull HasName node) {
-      OriginalNameMarker marker = ((LocalMarkerManager) node).getMarker(OriginalNameMarker.class);
-      if (marker != null) {
-        nameBuilder.append(marker.getOriginalName());
-      } else {
-        nameBuilder.append(node.getName());
-      }
-    }
-
-    private void appendOriginalQualifiedName(
-        @Nonnull StringBuilder nameBuilder, @Nonnull HasName node) {
-      if (node instanceof JArrayType) {
-        JArrayType arrayType = (JArrayType) node;
-        appendOriginalQualifiedName(nameBuilder, arrayType.getLeafType());
-        nameBuilder.append(Strings.repeat("[]", arrayType.getDims()));
-      } else if (node instanceof JDefinedClassOrInterface) {
-        appendOriginalQualifiedName(nameBuilder, (JClassOrInterface) node);
-      } else if (node instanceof JType) {
-        nameBuilder.append(node.getName());
-      } else {
-        appendOriginalName(nameBuilder, node);
-      }
-    }
 
     @Override
     public boolean visit(@Nonnull JDefinedClassOrInterface type) {
       StringBuilder info = new StringBuilder();
-      appendOriginalQualifiedName(info, type);
+      OriginalNameTools.appendOriginalQualifiedName(info, type);
       info.append(SEPARATOR);
       info.append(GrammarActions.getSourceFormatter().getName(type));
       info.append(':');
@@ -166,9 +99,9 @@
     @Override
     public boolean visit(@Nonnull JField field) {
       StringBuilder info = new StringBuilder().append("    ");
-      appendOriginalQualifiedName(info, field.getType());
+      OriginalNameTools.appendOriginalQualifiedName(info, field.getType());
       info.append(' ');
-      appendOriginalName(info, field.getId());
+      OriginalNameTools.appendOriginalName(info, field.getId());
       info.append(SEPARATOR);
       info.append(field.getName());
       writer.println(info);
@@ -179,14 +112,14 @@
     @Override
     public boolean visit(@Nonnull JMethod method) {
       StringBuilder info = new StringBuilder().append("    ");
-      appendOriginalQualifiedName(info, method.getType());
+      OriginalNameTools.appendOriginalQualifiedName(info, method.getType());
       info.append(' ');
-      appendOriginalName(info, method.getMethodIdWide());
+      OriginalNameTools.appendOriginalName(info, method.getMethodIdWide());
       info.append('(');
       Iterator<JParameter> iterator = method.getParams().iterator();
       while (iterator.hasNext()) {
         JParameter param = iterator.next();
-        appendOriginalQualifiedName(info, param.getType());
+        OriginalNameTools.appendOriginalQualifiedName(info, param.getType());
         if (iterator.hasNext()) {
           info.append(',');
         }
diff --git a/jack/src/com/android/jack/shrob/obfuscation/NewTypeKeyMarker.java b/jack/src/com/android/jack/shrob/obfuscation/NewTypeKeyMarker.java
new file mode 100644
index 0000000..10161ea
--- /dev/null
+++ b/jack/src/com/android/jack/shrob/obfuscation/NewTypeKeyMarker.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.shrob.obfuscation;
+
+import com.android.jack.ir.ast.JPackage;
+import com.android.jack.shrob.obfuscation.key.TypeKey;
+import com.android.sched.item.Description;
+import com.android.sched.marker.ValidOn;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.annotation.Nonnull;
+
+/**
+ * {@code Marker} that represents the new names of types in a package.
+ */
+@Description("Represents the new names of types in a package.")
+@ValidOn(JPackage.class)
+public class NewTypeKeyMarker extends NewKeyMarker {
+  @Nonnull
+  private final Set<TypeKey> newTypeKeys;
+
+  public NewTypeKeyMarker() {
+    newTypeKeys = new HashSet<TypeKey>();
+  }
+
+  public NewTypeKeyMarker(@Nonnull Set<TypeKey> existingKeys) {
+    this.newTypeKeys = existingKeys;
+  }
+
+  public void add(@Nonnull TypeKey key) {
+    newTypeKeys.add(key);
+  }
+
+  @Override
+  @Nonnull
+  public Collection<TypeKey> getNewKeys() {
+    return newTypeKeys;
+  }
+
+}
\ No newline at end of file
diff --git a/jack/src/com/android/jack/shrob/obfuscation/OriginalNameTools.java b/jack/src/com/android/jack/shrob/obfuscation/OriginalNameTools.java
new file mode 100644
index 0000000..5bf282d
--- /dev/null
+++ b/jack/src/com/android/jack/shrob/obfuscation/OriginalNameTools.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.shrob.obfuscation;
+
+import com.google.common.base.Strings;
+
+import com.android.jack.ir.ast.HasName;
+import com.android.jack.ir.ast.JArrayType;
+import com.android.jack.ir.ast.JClassOrInterface;
+import com.android.jack.ir.ast.JDefinedClassOrInterface;
+import com.android.jack.ir.ast.JNode;
+import com.android.jack.ir.ast.JPackage;
+import com.android.jack.ir.ast.JType;
+import com.android.sched.marker.LocalMarkerManager;
+
+import javax.annotation.Nonnull;
+
+/**
+ * A class regrouping all the tools used to retrieve original names.
+ */
+public class OriginalNameTools {
+
+  private static final char PACKAGE_SEPARATOR = '.';
+
+  public static void appendOriginalQualifiedName(
+      @Nonnull StringBuilder nameBuilder, @Nonnull JPackage pack) {
+    JPackage enclosingPackage;
+    OriginalPackageMarker marker = pack.getMarker(OriginalPackageMarker.class);
+    if (marker != null) {
+      enclosingPackage = marker.getOriginalEnclosingPackage();
+    } else {
+      enclosingPackage = pack.getEnclosingPackage();
+    }
+    if (enclosingPackage != null && !enclosingPackage.isTopLevelPackage()) {
+      appendOriginalQualifiedName(nameBuilder, enclosingPackage);
+      nameBuilder.append(PACKAGE_SEPARATOR);
+    }
+    appendOriginalName(nameBuilder, pack);
+  }
+
+  public static void appendOriginalQualifiedName(
+      @Nonnull StringBuilder nameBuilder, @Nonnull JClassOrInterface type) {
+    JPackage enclosingPackage;
+    OriginalPackageMarker marker = ((JNode) type).getMarker(OriginalPackageMarker.class);
+    if (marker != null) {
+      enclosingPackage = marker.getOriginalEnclosingPackage();
+    } else {
+      enclosingPackage = type.getEnclosingPackage();
+    }
+    assert enclosingPackage != null;
+    appendOriginalQualifiedName(nameBuilder, enclosingPackage);
+    if (!enclosingPackage.isTopLevelPackage()) {
+      nameBuilder.append(PACKAGE_SEPARATOR);
+    }
+    appendOriginalName(nameBuilder, type);
+  }
+
+  public static void appendOriginalName(@Nonnull StringBuilder nameBuilder, @Nonnull HasName node) {
+    OriginalNameMarker marker = ((LocalMarkerManager) node).getMarker(OriginalNameMarker.class);
+    if (marker != null) {
+      nameBuilder.append(marker.getOriginalName());
+    } else {
+      nameBuilder.append(node.getName());
+    }
+  }
+
+  public static void appendOriginalQualifiedName(
+      @Nonnull StringBuilder nameBuilder, @Nonnull HasName node) {
+    if (node instanceof JArrayType) {
+      JArrayType arrayType = (JArrayType) node;
+      appendOriginalQualifiedName(nameBuilder, arrayType.getLeafType());
+      nameBuilder.append(Strings.repeat("[]", arrayType.getDims()));
+    } else if (node instanceof JDefinedClassOrInterface) {
+      appendOriginalQualifiedName(nameBuilder, (JClassOrInterface) node);
+    } else if (node instanceof JType) {
+      nameBuilder.append(node.getName());
+    } else {
+      appendOriginalName(nameBuilder, node);
+    }
+  }
+
+}
+
diff --git a/jack/src/com/android/jack/shrob/obfuscation/Renamer.java b/jack/src/com/android/jack/shrob/obfuscation/Renamer.java
index 0b7d553..346e4a1 100644
--- a/jack/src/com/android/jack/shrob/obfuscation/Renamer.java
+++ b/jack/src/com/android/jack/shrob/obfuscation/Renamer.java
@@ -20,14 +20,17 @@
 import com.android.jack.Jack;
 import com.android.jack.frontend.MethodIdDuplicateRemover.UniqMethodIds;
 import com.android.jack.ir.ast.CanBeRenamed;
+import com.android.jack.ir.ast.HasName;
 import com.android.jack.ir.ast.JClassOrInterface;
 import com.android.jack.ir.ast.JDefinedClassOrInterface;
 import com.android.jack.ir.ast.JField;
 import com.android.jack.ir.ast.JFieldId;
 import com.android.jack.ir.ast.JMethod;
+import com.android.jack.ir.ast.JMethodId;
 import com.android.jack.ir.ast.JMethodIdWide;
 import com.android.jack.ir.ast.JPackage;
 import com.android.jack.ir.ast.JSession;
+import com.android.jack.ir.ast.JType;
 import com.android.jack.ir.ast.JVisitor;
 import com.android.jack.ir.sourceinfo.SourceInfo;
 import com.android.jack.library.DumpInLibrary;
@@ -59,6 +62,7 @@
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -162,6 +166,49 @@
     }
   }
 
+  @Nonnull
+  static String getFieldKey(@Nonnull JFieldId fieldId) {
+    assert !fieldId.containsMarker(OriginalNameMarker.class);
+    StringBuilder sb = new StringBuilder();
+    sb.append(fieldId.getName());
+    sb.append(':');
+    OriginalNameTools.appendOriginalQualifiedName(sb, fieldId.getType());
+    return sb.toString();
+  }
+
+  @Nonnull
+  static String getMethodKey(@Nonnull JMethodIdWide methodId) {
+    assert !methodId.containsMarker(OriginalNameMarker.class);
+    StringBuilder sb = new StringBuilder();
+    sb.append(methodId.getName());
+    sb.append('(');
+    Iterator<JType> iterator = methodId.getParamTypes().iterator();
+    while (iterator.hasNext()) {
+      JType paramType = iterator.next();
+      OriginalNameTools.appendOriginalQualifiedName(sb, paramType);
+      if (iterator.hasNext()) {
+        sb.append(',');
+      }
+    }
+    sb.append(')');
+
+    return sb.toString();
+  }
+
+  @Nonnull
+  static String getKey(@Nonnull HasName namedElement) {
+    if (namedElement instanceof JFieldId) {
+      return getFieldKey((JFieldId) namedElement);
+    } else if (namedElement instanceof JMethodIdWide) {
+      return getMethodKey((JMethodIdWide) namedElement);
+    } else {
+      assert !(namedElement instanceof JMethod
+          || namedElement instanceof JMethodId
+          || namedElement instanceof JField);
+      return namedElement.getName();
+    }
+  }
+
   private static void rename(
       @Nonnull CanBeRenamed node, @Nonnull String newName) {
     if (mustBeRenamed((MarkerManager) node)) {
diff --git a/jack/src/com/android/jack/shrob/obfuscation/annotation/LineNumberRemover.java b/jack/src/com/android/jack/shrob/obfuscation/annotation/LocalVariableAndThisLineNumberRemover.java
similarity index 66%
copy from jack/src/com/android/jack/shrob/obfuscation/annotation/LineNumberRemover.java
copy to jack/src/com/android/jack/shrob/obfuscation/annotation/LocalVariableAndThisLineNumberRemover.java
index acb20ba..fa01e22 100644
--- a/jack/src/com/android/jack/shrob/obfuscation/annotation/LineNumberRemover.java
+++ b/jack/src/com/android/jack/shrob/obfuscation/annotation/LocalVariableAndThisLineNumberRemover.java
@@ -17,8 +17,9 @@
 package com.android.jack.shrob.obfuscation.annotation;
 
 import com.android.jack.Jack;
-import com.android.jack.ir.ast.JDefinedClassOrInterface;
-import com.android.jack.ir.ast.JNode;
+import com.android.jack.ir.ast.JLocal;
+import com.android.jack.ir.ast.JMethod;
+import com.android.jack.ir.ast.JThis;
 import com.android.jack.ir.ast.JVisitor;
 import com.android.jack.ir.sourceinfo.SourceInfo;
 import com.android.jack.ir.sourceinfo.SourceInfoFactory;
@@ -29,11 +30,12 @@
 import javax.annotation.Nonnull;
 
 /**
- * A {@link RunnableSchedulable} that removes line numbers.
+ * A {@link RunnableSchedulable} that removes line numbers for local variables and 'this'.
  */
-@Description("Removes line numbers")
-@Support(RemoveLineNumber.class)
-public class LineNumberRemover implements RunnableSchedulable<JDefinedClassOrInterface> {
+@Description("Removes line numbers for local variable and 'this'")
+@Support(RemoveLocalLineNumber.class)
+public class LocalVariableAndThisLineNumberRemover
+    implements RunnableSchedulable<JMethod> {
 
   private static class Visitor extends JVisitor {
     @Nonnull
@@ -44,19 +46,28 @@
     }
 
     @Override
-    public boolean visit(@Nonnull JNode node) {
+    public boolean visit(@Nonnull JLocal node) {
       SourceInfo info = node.getSourceInfo();
       if (info != SourceInfo.UNKNOWN) {
         node.setSourceInfo(info.getFileSourceInfo());
       }
-      return false;
+      return true;
+    }
+
+    @Override
+    public boolean visit(@Nonnull JThis node) {
+      SourceInfo info = node.getSourceInfo();
+      if (info != SourceInfo.UNKNOWN) {
+        node.setSourceInfo(info.getFileSourceInfo());
+      }
+      return true;
     }
   }
 
   @Override
-  public void run(@Nonnull JDefinedClassOrInterface type) {
+  public void run(@Nonnull JMethod method) {
     Visitor visitor = new Visitor(Jack.getSession().getSourceInfoFactory());
-    visitor.accept(type);
+    visitor.accept(method);
   }
 
 }
diff --git a/jack/src/com/android/jack/shrob/obfuscation/annotation/LocalVariableAndThisNameRemover.java b/jack/src/com/android/jack/shrob/obfuscation/annotation/LocalVariableAndThisNameRemover.java
index d1f3682..28f0a53 100644
--- a/jack/src/com/android/jack/shrob/obfuscation/annotation/LocalVariableAndThisNameRemover.java
+++ b/jack/src/com/android/jack/shrob/obfuscation/annotation/LocalVariableAndThisNameRemover.java
@@ -16,11 +16,14 @@
 
 package com.android.jack.shrob.obfuscation.annotation;
 
+import com.android.jack.debug.DebugVariableInfoMarker;
 import com.android.jack.ir.ast.JLocal;
+import com.android.jack.ir.ast.JLocalRef;
 import com.android.jack.ir.ast.JMethod;
 import com.android.jack.ir.ast.JThis;
 import com.android.jack.ir.ast.JVisitor;
 import com.android.sched.item.Description;
+import com.android.sched.schedulable.Constraint;
 import com.android.sched.schedulable.RunnableSchedulable;
 import com.android.sched.schedulable.Transform;
 
@@ -31,6 +34,7 @@
  */
 @Description("Removes local variables and 'this' names")
 @Transform(modify = {JLocal.class, JThis.class})
+@Constraint(need = DebugVariableInfoMarker.class)
 public class LocalVariableAndThisNameRemover implements RunnableSchedulable<JMethod> {
 
   private static class Visitor extends JVisitor {
@@ -42,6 +46,15 @@
     }
 
     @Override
+    public boolean visit(@Nonnull JLocalRef localRef) {
+      DebugVariableInfoMarker marker = localRef.getMarker(DebugVariableInfoMarker.class);
+      if (marker != null) {
+        marker.setName(null);
+      }
+      return false;
+    }
+
+    @Override
     public boolean visit(@Nonnull JThis node) {
       node.setName(null);
       return false;
diff --git a/jack/src/com/android/jack/shrob/obfuscation/annotation/LineNumberRemover.java b/jack/src/com/android/jack/shrob/obfuscation/annotation/ParameterLineNumberRemover.java
similarity index 73%
rename from jack/src/com/android/jack/shrob/obfuscation/annotation/LineNumberRemover.java
rename to jack/src/com/android/jack/shrob/obfuscation/annotation/ParameterLineNumberRemover.java
index acb20ba..d274403 100644
--- a/jack/src/com/android/jack/shrob/obfuscation/annotation/LineNumberRemover.java
+++ b/jack/src/com/android/jack/shrob/obfuscation/annotation/ParameterLineNumberRemover.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014 The Android Open Source Project
+ * Copyright (C) 2016 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -17,8 +17,8 @@
 package com.android.jack.shrob.obfuscation.annotation;
 
 import com.android.jack.Jack;
-import com.android.jack.ir.ast.JDefinedClassOrInterface;
-import com.android.jack.ir.ast.JNode;
+import com.android.jack.ir.ast.JMethod;
+import com.android.jack.ir.ast.JParameter;
 import com.android.jack.ir.ast.JVisitor;
 import com.android.jack.ir.sourceinfo.SourceInfo;
 import com.android.jack.ir.sourceinfo.SourceInfoFactory;
@@ -29,11 +29,11 @@
 import javax.annotation.Nonnull;
 
 /**
- * A {@link RunnableSchedulable} that removes line numbers.
+ * A {@link RunnableSchedulable} that removes line numbers of parameters.
  */
-@Description("Removes line numbers")
-@Support(RemoveLineNumber.class)
-public class LineNumberRemover implements RunnableSchedulable<JDefinedClassOrInterface> {
+@Description("Removes line numbers of parameters")
+@Support(RemoveParameterLineNumber.class)
+public class ParameterLineNumberRemover implements RunnableSchedulable<JMethod> {
 
   private static class Visitor extends JVisitor {
     @Nonnull
@@ -44,19 +44,20 @@
     }
 
     @Override
-    public boolean visit(@Nonnull JNode node) {
+    public boolean visit(@Nonnull JParameter node) {
       SourceInfo info = node.getSourceInfo();
       if (info != SourceInfo.UNKNOWN) {
         node.setSourceInfo(info.getFileSourceInfo());
       }
-      return false;
+      return true;
     }
   }
 
+
   @Override
-  public void run(@Nonnull JDefinedClassOrInterface type) {
+  public void run(@Nonnull JMethod method) {
     Visitor visitor = new Visitor(Jack.getSession().getSourceInfoFactory());
-    visitor.accept(type);
+    visitor.accept(method);
   }
 
 }
diff --git a/jack/src/com/android/jack/shrob/obfuscation/annotation/ParameterNameRemover.java b/jack/src/com/android/jack/shrob/obfuscation/annotation/ParameterNameRemover.java
index f876c36..1623c1c 100644
--- a/jack/src/com/android/jack/shrob/obfuscation/annotation/ParameterNameRemover.java
+++ b/jack/src/com/android/jack/shrob/obfuscation/annotation/ParameterNameRemover.java
@@ -16,8 +16,11 @@
 
 package com.android.jack.shrob.obfuscation.annotation;
 
+import com.android.jack.debug.DebugVariableInfoMarker;
 import com.android.jack.ir.ast.JMethod;
 import com.android.jack.ir.ast.JParameter;
+import com.android.jack.ir.ast.JParameterRef;
+import com.android.jack.ir.ast.JVisitor;
 import com.android.sched.item.Description;
 import com.android.sched.schedulable.Constraint;
 import com.android.sched.schedulable.RunnableSchedulable;
@@ -29,14 +32,30 @@
  * A {@link RunnableSchedulable} that removes parameter names.
  */
 @Description("Removes parameters names")
-@Constraint(need = JParameter.class)
+@Constraint(need = {JParameter.class, DebugVariableInfoMarker.class})
 @Transform(modify = JParameter.class)
 public class ParameterNameRemover implements RunnableSchedulable<JMethod> {
 
+  private static class Visitor extends JVisitor {
+
+    @Override
+    public boolean visit(@Nonnull JParameterRef parameterRef) {
+      DebugVariableInfoMarker marker = parameterRef.getMarker(DebugVariableInfoMarker.class);
+      if (marker != null) {
+        marker.setName(null);
+      }
+      return false;
+    }
+
+    @Override
+    public boolean visit(@Nonnull JParameter node) {
+      node.setName(null);
+      return false;
+    }
+  }
+
   @Override
   public void run(@Nonnull JMethod t) {
-    for (JParameter param : t.getParams()) {
-      param.setName(null);
-    }
+    new Visitor().accept(t);
   }
 }
diff --git a/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveLocalLineNumber.java b/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveLocalLineNumber.java
new file mode 100644
index 0000000..c89588f
--- /dev/null
+++ b/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveLocalLineNumber.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.shrob.obfuscation.annotation;
+
+import com.android.sched.item.Description;
+import com.android.sched.item.Feature;
+import com.android.sched.util.config.HasKeyId;
+import com.android.sched.util.config.id.BooleanPropertyId;
+
+import javax.annotation.Nonnull;
+
+/**
+ * Represents the removal of line numbers of local variables and 'this' in source info.
+ */
+@HasKeyId
+@Description("The removal of line numbers of local variables and 'this' in source info")
+public class RemoveLocalLineNumber implements Feature {
+
+  /**
+   * This property indicates if the line numbers of local variables and 'this' in source info must
+   * be removed.
+   * If a flags file (provided with --config-proguard) contradicts this property, the property is
+   * overridden.
+   */
+  @Nonnull
+  public static final BooleanPropertyId KEEP_LOCAL_LINE_NUMBER = BooleanPropertyId.create(
+      "jack.obfuscation.local.keep-line-number", "Keep line numbers for locals")
+      .addDefaultValue(Boolean.TRUE);
+}
diff --git a/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveLocalVariableName.java b/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveLocalVariableName.java
index b70bab2..4244912 100644
--- a/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveLocalVariableName.java
+++ b/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveLocalVariableName.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 The Android Open Source Project
+ * Copyright (C) 2016 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,11 +18,26 @@
 
 import com.android.sched.item.Description;
 import com.android.sched.item.Feature;
+import com.android.sched.util.config.HasKeyId;
+import com.android.sched.util.config.id.BooleanPropertyId;
+
+import javax.annotation.Nonnull;
 
 /**
- * A {@link Feature} that represents the removal of local variables names.
+ * A {@link Feature} that represents the removal of local variables and 'this' names.
  */
-@Description("The removal of local variables names")
+@HasKeyId
+@Description("The removal of local variables and 'this' names")
 public class RemoveLocalVariableName implements Feature {
 
+  /**
+   * This property indicates if the names of local variables and 'this' in source info must
+   * be removed.
+   * If a flags file (provided with --config-proguard) contradicts this property, the property is
+   * overridden.
+   */
+  @Nonnull
+  public static final BooleanPropertyId KEEP_LOCAL_NAME = BooleanPropertyId.create(
+      "jack.obfuscation.local.keep-name", "Keep names for locals")
+      .addDefaultValue(Boolean.TRUE);
 }
diff --git a/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveParameterLineNumber.java b/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveParameterLineNumber.java
new file mode 100644
index 0000000..1a3ccc5
--- /dev/null
+++ b/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveParameterLineNumber.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.shrob.obfuscation.annotation;
+
+import com.android.sched.item.Description;
+import com.android.sched.item.Feature;
+import com.android.sched.util.config.HasKeyId;
+import com.android.sched.util.config.id.BooleanPropertyId;
+
+import javax.annotation.Nonnull;
+
+/**
+ * Represents the removal of line numbers in source info for parameters.
+ */
+@HasKeyId
+@Description("The removal of line numbers in source info for parameters")
+public class RemoveParameterLineNumber implements Feature {
+
+  /**
+   * This property indicates if the line numbers of parameters in source info must be removed.
+   * If a flags file (provided with --config-proguard) contradicts this property, the property is
+   * overridden.
+   */
+  @Nonnull
+  public static final BooleanPropertyId KEEP_PARAMETER_LINE_NUMBER = BooleanPropertyId.create(
+      "jack.obfuscation.parameter.keep-line-number", "Keep line numbers for parameters")
+      .addDefaultValue(Boolean.TRUE);
+
+}
diff --git a/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveParameterName.java b/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveParameterName.java
index 4afd970..cf3f1ed 100644
--- a/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveParameterName.java
+++ b/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveParameterName.java
@@ -18,11 +18,25 @@
 
 import com.android.sched.item.Description;
 import com.android.sched.item.Feature;
+import com.android.sched.util.config.HasKeyId;
+import com.android.sched.util.config.id.BooleanPropertyId;
+
+import javax.annotation.Nonnull;
 
 /**
  * A {@link Feature} that represents the removal of parameter names.
  */
+@HasKeyId
 @Description("The removal of parameter names")
 public class RemoveParameterName implements Feature {
 
+  /**
+   * This property indicates if the names of parameters in source info must be removed.
+   * If a flags file (provided with --config-proguard) contradicts this property, the property is
+   * overridden.
+   */
+  @Nonnull
+  public static final BooleanPropertyId KEEP_PARAMETER_NAME = BooleanPropertyId.create(
+      "jack.obfuscation.parameter.keep-name", "Keep names for parameters")
+      .addDefaultValue(Boolean.TRUE);
 }
diff --git a/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveLineNumber.java b/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveVariableGenericSignature.java
similarity index 79%
rename from jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveLineNumber.java
rename to jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveVariableGenericSignature.java
index 4d63713..3bab585 100644
--- a/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveLineNumber.java
+++ b/jack/src/com/android/jack/shrob/obfuscation/annotation/RemoveVariableGenericSignature.java
@@ -20,9 +20,9 @@
 import com.android.sched.item.Feature;
 
 /**
- * Represents the removal of line numbers in source info.
+ * Represents the removal of the generic signatures of a variable
  */
-@Description("The removal of line numbers in source info")
-public class RemoveLineNumber implements Feature {
+@Description("The removal of the generic signatures of a variable")
+public class RemoveVariableGenericSignature implements Feature {
 
 }
diff --git a/jack/src/com/android/jack/shrob/obfuscation/annotation/LocalVariableGenericSignatureRemover.java b/jack/src/com/android/jack/shrob/obfuscation/annotation/VariableGenericSignatureRemover.java
similarity index 86%
rename from jack/src/com/android/jack/shrob/obfuscation/annotation/LocalVariableGenericSignatureRemover.java
rename to jack/src/com/android/jack/shrob/obfuscation/annotation/VariableGenericSignatureRemover.java
index a3fd7d6..1cf7a7f 100644
--- a/jack/src/com/android/jack/shrob/obfuscation/annotation/LocalVariableGenericSignatureRemover.java
+++ b/jack/src/com/android/jack/shrob/obfuscation/annotation/VariableGenericSignatureRemover.java
@@ -29,12 +29,11 @@
 import javax.annotation.Nonnull;
 
 /**
- * A {@link RunnableSchedulable} that removes signatures from local variables.
+ * A {@link RunnableSchedulable} that removes signatures from variables.
  */
-@Description("Removes signatures from local variables")
-@Support(RemoveLocalVariableGenericSignature.class)
-public class LocalVariableGenericSignatureRemover implements
-    RunnableSchedulable<JMethod> {
+@Description("Removes signatures from variables")
+@Support(RemoveVariableGenericSignature.class)
+public class VariableGenericSignatureRemover implements RunnableSchedulable<JMethod> {
 
   private static class Visitor extends JVisitor {
 
diff --git a/jack/src/com/android/jack/shrob/proguard/GrammarActions.java b/jack/src/com/android/jack/shrob/proguard/GrammarActions.java
index 0382273..3c917b8 100644
--- a/jack/src/com/android/jack/shrob/proguard/GrammarActions.java
+++ b/jack/src/com/android/jack/shrob/proguard/GrammarActions.java
@@ -79,10 +79,10 @@
       SourceFormatter.getFormatter();
 
   enum FilterSeparator {
-    GENERAL(".", "[^./]*"),
-    FILE(".", "[^/]*"),
-    CLASS("[^.]", "[^.]*"),
-    ATTRIBUTE(".", ".*");
+    GENERAL(".", "[^./]*", ".*"),
+    FILE(".", "[^/]*", ".*"),
+    CLASS("[^.]", "[^.]*", "[^\\[\\]]*"),
+    ATTRIBUTE(".", ".*", ".*");
 
     /**
      * Represents the pattern equivalent to Proguard's "?"
@@ -96,9 +96,17 @@
     @Nonnull
     private final String multipleCharWildcard;
 
-    FilterSeparator(@Nonnull String singleCharWilcard, @Nonnull String multipleCharWildcard) {
+    /**
+     * Represents the pattern equivalent to Proguard's "**"
+     */
+    @Nonnull
+    private final String multipleCharWildcardWithSeparator;
+
+    FilterSeparator(@Nonnull String singleCharWilcard, @Nonnull String multipleCharWildcard,
+        @Nonnull String multipleCharWildcardWithSeparator) {
       this.singleCharWilcard = singleCharWilcard;
       this.multipleCharWildcard = multipleCharWildcard;
+      this.multipleCharWildcardWithSeparator = multipleCharWildcardWithSeparator;
     }
   }
 
@@ -117,30 +125,30 @@
 
   @Nonnull
   public static String getSignature(@Nonnull String name) {
-    assert name != null;
-    if (name.contains("[")) {
-      String nameWithoutArray = name.substring(0, name.lastIndexOf('['));
+    int lastOpeningBracketPos = name.lastIndexOf('[');
+    if (lastOpeningBracketPos != -1) {
+      String nameWithoutArray = name.substring(0, lastOpeningBracketPos);
       return '[' + getSignature(nameWithoutArray);
     }
     StringBuilder sig = new StringBuilder();
     if (name.equals("boolean")) {
-      sig.append("Z");
+      sig.append('Z');
     } else if (name.equals("byte")) {
-      sig.append("B");
+      sig.append('B');
     } else if (name.equals("char")) {
-      sig.append("C");
+      sig.append('C');
     } else if (name.equals("short")) {
-      sig.append("S");
+      sig.append('S');
     } else if (name.equals("int")) {
-      sig.append("I");
+      sig.append('I');
     } else if (name.equals("float")) {
-      sig.append("F");
+      sig.append('F');
     } else if (name.equals("double")) {
-      sig.append("D");
+      sig.append('D');
     } else if (name.equals("long")) {
-      sig.append("J");
+      sig.append('J');
     } else if (name.equals("void")) {
-      sig.append("V");
+      sig.append('V');
     } else {
       sig.append(NamingTools.getTypeSignatureName(name));
     }
@@ -148,16 +156,15 @@
     return sig.toString();
   }
 
+  private static final String PRIMITIVE_TYPE_NON_VOID =
+      "(boolean|byte|char|short|int|float|double|long)";
+
   @Nonnull
-  static String getSignature(@Nonnull String name, int dim) {
+  static String getSourceNamePattern(@Nonnull String name, int dim) {
     assert name != null;
 
     StringBuilder sig = new StringBuilder();
 
-    for (int i = 0; i < dim; i++) {
-      sig.append("\\[");
-    }
-
     // ... matches any number of arguments of any type
     if (name.equals("...")) {
       sig.append(".*");
@@ -166,35 +173,23 @@
       sig.append(".*");
       // % matches any primitive type ("boolean", "int", etc, but not "void")
     } else if (name.equals("%")) {
-      sig.append("(B|C|D|F|I|J|S|Z)");
-    } else if (name.equals("boolean")) {
-      sig.append("Z");
-    } else if (name.equals("byte")) {
-      sig.append("B");
-    } else if (name.equals("char")) {
-      sig.append("C");
-    } else if (name.equals("short")) {
-      sig.append("S");
-    } else if (name.equals("int")) {
-      sig.append("I");
-    } else if (name.equals("float")) {
-      sig.append("F");
-    } else if (name.equals("double")) {
-      sig.append("D");
-    } else if (name.equals("long")) {
-      sig.append("J");
-    } else if (name.equals("void")) {
-      sig.append("V");
+      sig.append(PRIMITIVE_TYPE_NON_VOID);
+    } else if (name.equals("**")) {
+      sig.append("[^\\[\\[]*(?<!" + PRIMITIVE_TYPE_NON_VOID + ")");
     } else {
       sig.append(
-          convertNameToPattern(NamingTools.getTypeSignatureName(name), FilterSeparator.CLASS));
+          convertNameToRegex(name, FilterSeparator.CLASS));
+    }
+
+    for (int i = 0; i < dim; i++) {
+      sig.append("\\[\\]");
     }
 
     return sig.toString();
   }
 
   @Nonnull
-  private static String convertNameToPattern(
+  private static String convertNameToRegex(
       @Nonnull String name, @Nonnull FilterSeparator separator) {
     StringBuilder sb = new StringBuilder();
     for (int i = 0; i < name.length(); i++) {
@@ -208,7 +203,7 @@
           if (j < name.length() && name.charAt(j) == '*') {
             // ** matches any part of a name, possibly containing
             // any number of package separators or directory separators
-            sb.append(".*");
+            sb.append(separator.multipleCharWildcardWithSeparator);
             i++;
           } else {
             // * matches any part of a name not containing
@@ -231,7 +226,7 @@
   static NameSpecification name(/*@Nonnull*/ String name, @Nonnull FilterSeparator separator) {
     assert name != null;
     String transformedName = "^" +
-        convertNameToPattern(name, separator) + "$";
+        convertNameToRegex(name, separator) + "$";
 
     Pattern pattern = Pattern.compile(transformedName);
     return new NameSpecification(pattern);
@@ -296,48 +291,55 @@
 
   static void method(@Nonnull ClassSpecification classSpec,
       @CheckForNull AnnotationSpecification annotationType,
-      @CheckForNull String typeSig, /*@Nonnull*/ String name, @Nonnull String signature,
+      @CheckForNull String typeSigRegex, /*@Nonnull*/ String name, @Nonnull String signature,
       @CheckForNull ModifierSpecification modifier) {
     assert name != null;
-    String fullName = "^" + convertNameToPattern(name, FilterSeparator.CLASS);
+    String fullName = "^" + convertNameToRegex(name, FilterSeparator.CLASS);
     fullName += signature;
-    if (typeSig != null) {
-      fullName += typeSig;
-    } else {
-      fullName += "V";
+    NameSpecification typeSignature = null;
+    if (typeSigRegex != null) {
+      Pattern pattern = Pattern.compile("^" + typeSigRegex + "$");
+      typeSignature = new NameSpecification(pattern);
     }
     fullName += "$";
     Pattern pattern = Pattern.compile(fullName);
     classSpec.add(new MethodSpecification(new NameSpecification(pattern),
-        modifier, annotationType));
+        modifier, typeSignature, annotationType));
   }
 
   static void fieldOrAnyMember(@Nonnull ClassSpecification classSpec,
       @CheckForNull AnnotationSpecification annotationType, @CheckForNull String typeSig,
-      /*@Nonnull*/ String name, @Nonnull ModifierSpecification modifier) {
+      /* @Nonnull */ String name, @Nonnull ModifierSpecification modifier,
+      @Nonnull CharStream inputStream) throws RecognitionException {
     assert name != null;
     if (typeSig == null) {
-      assert name.equals("*");
+      if (!name.equals("*")) {
+        throw new RecognitionException(inputStream);
+      }
       // This is the "any member" case, we have to handle methods as well.
       method(classSpec,
           annotationType,
-          getSignature("***", 0),
+          getSourceNamePattern("***", 0),
           "*",
-          "\\(" + getSignature("...", 0) + "\\)",
+          "\\(" + getSourceNamePattern("...", 0) + "\\)",
           modifier);
     }
-    field(classSpec, annotationType, typeSig, name, modifier);
+    field(classSpec, annotationType, typeSig, name, modifier, inputStream);
   }
 
   static void field(@Nonnull ClassSpecification classSpec,
-      @CheckForNull AnnotationSpecification annotationType, @CheckForNull String typeSig,
-      /*@Nonnull*/ String name, @Nonnull ModifierSpecification modifier) {
+      @CheckForNull AnnotationSpecification annotationType, @CheckForNull String typeSigRegex,
+      /* @Nonnull */ String name, @Nonnull ModifierSpecification modifier,
+      @Nonnull CharStream inputStream) throws RecognitionException {
     assert name != null;
     NameSpecification typeSignature = null;
-    if (typeSig != null) {
-      typeSignature = name(typeSig, FilterSeparator.CLASS);
+    if (typeSigRegex != null) {
+      Pattern pattern = Pattern.compile("^" + typeSigRegex + "$");
+      typeSignature = new NameSpecification(pattern);
     } else {
-      assert name.equals("*");
+      if (!name.equals("*")) {
+        throw new RecognitionException(inputStream);
+      }
     }
     classSpec.add(
         new FieldSpecification(
diff --git a/jack/src/com/android/jack/shrob/proguard/Proguard.g b/jack/src/com/android/jack/shrob/proguard/Proguard.g
index bdd4a89..e045dec 100644
--- a/jack/src/com/android/jack/shrob/proguard/Proguard.g
+++ b/jack/src/com/android/jack/shrob/proguard/Proguard.g
@@ -202,11 +202,11 @@
     annotation? modifiers
     (
       (typeSig=type)? name=(NAME|'<init>') (signature=arguments {GrammarActions.method(classSpec, $annotation.annotSpec, typeSig, $name.text, signature, $modifiers.modifiers);}
-                  | {GrammarActions.fieldOrAnyMember(classSpec, $annotation.annotSpec, typeSig, $name.text, $modifiers.modifiers);})
+                  | {assert $name != null; GrammarActions.fieldOrAnyMember(classSpec, $annotation.annotSpec, typeSig, $name.text, $modifiers.modifiers, $name.getInputStream());})
       | '<methods>' {GrammarActions.method(classSpec, $annotation.annotSpec,
-          GrammarActions.getSignature("***", 0), "*", "\\("+ GrammarActions.getSignature("...", 0) + "\\)",
+          GrammarActions.getSourceNamePattern("***", 0), "*", "\\("+ GrammarActions.getSourceNamePattern("...", 0) + "\\)",
           $modifiers.modifiers);}
-      | '<fields>' {GrammarActions.field(classSpec, $annotation.annotSpec, null, "*", $modifiers.modifiers);}
+      | fields='<fields>' {GrammarActions.field(classSpec, $annotation.annotSpec, null, "*", $modifiers.modifiers, $fields.getInputStream());}
     ) ';'
   ;
 
@@ -261,20 +261,20 @@
   '(' {signature = "\\(";}
     (
       (
-        parameterSig=type {signature += parameterSig;}
-        (',' parameterSig=type {signature += parameterSig;})*
+        parameterSig=type {signature += $parameterSig.typeSourceNamePattern;}
+        (',' parameterSig=type {signature += ", " + $parameterSig.typeSourceNamePattern;})*
         )?
       )
     ')' {signature += "\\)";}
   ;
 
-private type returns [String signature]
+private type returns [String typeSourceNamePattern]
 @init {
   int dim = 0;
 }
   :
   (
-    typeName=('%' | NAME) ('[]' {dim++;})*  {String sig = $typeName.text; signature = GrammarActions.getSignature(sig == null ? "" : sig, dim);}
+    typeName=('%' | NAME) ('[]' {dim++;})*  {String sig = $typeName.text; typeSourceNamePattern = GrammarActions.getSourceNamePattern(sig == null ? "" : sig, dim);}
   )
   ;
 
diff --git a/jack/src/com/android/jack/shrob/proguard/ProguardFileParsingException.java b/jack/src/com/android/jack/shrob/proguard/ProguardFileParsingException.java
index 981ef07..47b559f 100644
--- a/jack/src/com/android/jack/shrob/proguard/ProguardFileParsingException.java
+++ b/jack/src/com/android/jack/shrob/proguard/ProguardFileParsingException.java
@@ -21,7 +21,7 @@
 import javax.annotation.Nonnull;
 
 /**
- * This exception is thrown if a problem occured when attempting to parse
+ * This exception is thrown if a problem occurred when attempting to parse
  * a proguard flags file.
  */
 public class ProguardFileParsingException extends ConfigurationException {
diff --git a/jack/src/com/android/jack/shrob/spec/ClassSpecification.java b/jack/src/com/android/jack/shrob/spec/ClassSpecification.java
index b5b9b8e..2678a07 100644
--- a/jack/src/com/android/jack/shrob/spec/ClassSpecification.java
+++ b/jack/src/com/android/jack/shrob/spec/ClassSpecification.java
@@ -185,7 +185,7 @@
       sb.append('\n');
     }
 
-    sb.append("}");
+    sb.append('}');
 
     return sb.toString();
   }
diff --git a/jack/src/com/android/jack/shrob/spec/FieldSpecification.java b/jack/src/com/android/jack/shrob/spec/FieldSpecification.java
index 3b01752..5fc8427 100644
--- a/jack/src/com/android/jack/shrob/spec/FieldSpecification.java
+++ b/jack/src/com/android/jack/shrob/spec/FieldSpecification.java
@@ -65,7 +65,7 @@
     }
 
     if (type != null
-        && !type.matches(GrammarActions.getSignatureFormatter().getName(f.getType()))) {
+        && !type.matches(GrammarActions.getSourceFormatter().getName(f.getType()))) {
       return false;
     }
 
diff --git a/jack/src/com/android/jack/shrob/spec/Flags.java b/jack/src/com/android/jack/shrob/spec/Flags.java
index 969adfd..b654c51 100644
--- a/jack/src/com/android/jack/shrob/spec/Flags.java
+++ b/jack/src/com/android/jack/shrob/spec/Flags.java
@@ -16,6 +16,9 @@
 
 package com.android.jack.shrob.spec;
 
+import com.android.jack.ir.ast.JClassOrInterface;
+import com.android.jack.shrob.proguard.GrammarActions;
+
 import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
@@ -391,4 +394,10 @@
   public List<FilterSpecification> getAdaptResourceFileContents() {
     return adaptResourceFileContents;
   }
+
+  public static boolean acceptClass(@Nonnull JClassOrInterface type,
+      @Nonnull List<FilterSpecification> specs) {
+    return specs.stream()
+        .anyMatch(x -> x.matches(GrammarActions.getSourceFormatter().getName(type)));
+  }
 }
\ No newline at end of file
diff --git a/jack/src/com/android/jack/shrob/spec/MethodSpecification.java b/jack/src/com/android/jack/shrob/spec/MethodSpecification.java
index 63d2c29..9ad6790 100644
--- a/jack/src/com/android/jack/shrob/spec/MethodSpecification.java
+++ b/jack/src/com/android/jack/shrob/spec/MethodSpecification.java
@@ -34,16 +34,21 @@
   @CheckForNull
   private final ModifierSpecification modifier;
 
+  @CheckForNull
+  private final NameSpecification type;
+
   @Nonnull
-  private final NameSpecification sigPattern;
+  private final NameSpecification fullSourceName;
 
   public MethodSpecification(
       @Nonnull NameSpecification sigPattern,
       @CheckForNull ModifierSpecification modifier,
+      @CheckForNull NameSpecification type,
       @CheckForNull AnnotationSpecification annotationType) {
-    this.sigPattern = sigPattern;
+    this.fullSourceName = sigPattern;
     this.modifier = modifier;
     this.annotationType = annotationType;
+    this.type = type;
   }
 
   @Override
@@ -56,20 +61,26 @@
       return false;
     }
 
-    String signature = GrammarActions.getSignatureFormatter().getName(t);
+    if (type != null
+        && !type.matches(GrammarActions.getSourceFormatter().getName(t.getType()))) {
+      return false;
+    }
+
+    String signature =
+        GrammarActions.getSourceFormatter().getNameWithoutReturnType(t.getMethodIdWide());
     if (t instanceof JConstructor) {
       String methodName = signature.replace(NamingTools.INIT_NAME, t.getEnclosingType().getName());
-      if (sigPattern.matches(methodName)) {
+      if (fullSourceName.matches(methodName)) {
         return true;
       }
       methodName = signature.replace(NamingTools.INIT_NAME,
           GrammarActions.getSourceFormatter().getName(t.getEnclosingType()));
-      if (sigPattern.matches(methodName)) {
+      if (fullSourceName.matches(methodName)) {
         return true;
       }
     }
 
-    return sigPattern.matches(signature);
+    return fullSourceName.matches(signature);
   }
 
   @Override
@@ -87,7 +98,12 @@
       sb.append(' ');
     }
 
-    sb.append(sigPattern);
+    if (type != null) {
+      sb.append(type);
+      sb.append(' ');
+    }
+
+    sb.append(fullSourceName);
     sb.append(';');
 
     return sb.toString();
diff --git a/jack/src/com/android/jack/tools/merger/AnnotationMerger.java b/jack/src/com/android/jack/tools/merger/AnnotationMerger.java
index b097494..e647f5b 100644
--- a/jack/src/com/android/jack/tools/merger/AnnotationMerger.java
+++ b/jack/src/com/android/jack/tools/merger/AnnotationMerger.java
@@ -37,9 +37,8 @@
 import com.android.jack.dx.rop.cst.CstIndexMap;
 import com.android.jack.dx.rop.cst.CstKnownNull;
 import com.android.jack.dx.rop.cst.CstMethodRef;
-import com.android.jack.dx.rop.cst.CstNat;
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
+import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.util.ByteInput;
 import com.android.jack.dx.util.Leb128Utils;
 
@@ -125,7 +124,7 @@
     Section annotationItemIn = dex.open(annotationItemOffset);
     Annotation ioAnnotation = annotationItemIn.readAnnotation();
     assert cstIndexMap != null;
-    CstType annotationType = cstIndexMap.getCstType(ioAnnotation.getTypeIndex());
+    Type annotationType = cstIndexMap.getType(ioAnnotation.getTypeIndex());
     com.android.jack.dx.rop.annotation.Annotation a =
         new com.android.jack.dx.rop.annotation.Annotation(annotationType,
             AnnotationItem.getAnnotationVisibility(ioAnnotation.getVisibility()));
@@ -181,7 +180,7 @@
       assert cstIndexMap != null;
       com.android.jack.dx.rop.annotation.Annotation embeddedAnnotation =
           new com.android.jack.dx.rop.annotation.Annotation(
-              cstIndexMap.getCstType(typeIndex), AnnotationVisibility.EMBEDDED);
+              cstIndexMap.getType(typeIndex), AnnotationVisibility.EMBEDDED);
 
 
       for (int i = 0; i < size; i++) {
@@ -243,9 +242,8 @@
       } else {
         assert type == ValueType.VALUE_ENUM.getValue();
         FieldId fieldId = dexBuffer.fieldIds().get(index);
-        CstNat fieldNat = new CstNat(cstIndexMap.getCstString(fieldId.getNameIndex()),
-            new CstString(dexBuffer.typeNames().get(fieldId.getTypeIndex())));
-        constantValue = new CstEnumRef(fieldNat);
+        constantValue = new CstEnumRef(cstIndexMap.getCstString(fieldId.getNameIndex()),
+            cstIndexMap.getType(fieldId.getTypeIndex()));
       }
     }
 
@@ -259,7 +257,7 @@
     @Override
     protected void visitType(int index) {
       assert cstIndexMap != null;
-      constantValue = cstIndexMap.getCstType(index);
+      constantValue = cstIndexMap.getType(index);
     }
 
     @Override
diff --git a/jack/src/com/android/jack/tools/merger/ConstantManager.java b/jack/src/com/android/jack/tools/merger/ConstantManager.java
index 3b7fedb..a8e08f5 100644
--- a/jack/src/com/android/jack/tools/merger/ConstantManager.java
+++ b/jack/src/com/android/jack/tools/merger/ConstantManager.java
@@ -23,16 +23,16 @@
 import com.android.jack.dx.io.MethodHandleId;
 import com.android.jack.dx.io.MethodId;
 import com.android.jack.dx.io.ProtoId;
+import com.android.jack.dx.io.TypeList;
 import com.android.jack.dx.rop.cst.CstFieldRef;
 import com.android.jack.dx.rop.cst.CstIndexMap;
 import com.android.jack.dx.rop.cst.CstMethodHandleRef;
 import com.android.jack.dx.rop.cst.CstMethodHandleRef.MethodHandleKind;
 import com.android.jack.dx.rop.cst.CstMethodRef;
-import com.android.jack.dx.rop.cst.CstNat;
 import com.android.jack.dx.rop.cst.CstPrototypeRef;
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
 import com.android.jack.dx.rop.type.Prototype;
+import com.android.jack.dx.rop.type.StdTypeList;
 import com.android.jack.dx.rop.type.Type;
 
 import java.util.ArrayList;
@@ -62,10 +62,7 @@
   private final HashSet<CstMethodRef> cstMethodRefs = new HashSet<CstMethodRef>();
 
   @Nonnull
-  private final HashSet<CstType> cstTypes = new HashSet<CstType>();
-
-  @Nonnull
-  private final Map<String, CstString> protoStr2CstString = new HashMap<String, CstString>();
+  private final HashSet<Type> types = new HashSet<Type>();
 
   @Nonnull
   private final HashSet<CstMethodHandleRef> cstMethodHandleRefs = new HashSet<CstMethodHandleRef>();
@@ -86,8 +83,8 @@
   }
 
   @Nonnull
-  public Collection<CstType> getCstTypes() {
-    return Jack.getUnmodifiableCollections().getUnmodifiableCollection(cstTypes);
+  public Collection<Type> getTypes() {
+    return Jack.getUnmodifiableCollections().getUnmodifiableCollection(types);
   }
 
   @Nonnull
@@ -103,7 +100,7 @@
     List<CstPrototypeRef> cstPrototypeRefsNewlyAdded = new ArrayList<>();
     List<CstFieldRef> cstFieldRefsNewlyAdded = new ArrayList<CstFieldRef>();
     List<CstMethodRef> cstMethodRefsNewlyAdded = new ArrayList<CstMethodRef>();
-    List<CstType> cstTypesNewlyAdded = new ArrayList<CstType>();
+    List<Type> typesNewlyAdded = new ArrayList<Type>();
     List<CstMethodHandleRef> cstMethodHandleRefsNewlyAdded = new ArrayList<CstMethodHandleRef>();
 
     int idx = 0;
@@ -124,27 +121,28 @@
        * Note: VOID isn't put in the intern table of type, since it's special and shouldn't be found
        * by a normal call to intern() from Type.
        */
-      CstType cstType = null;
-      if (typeNameDesc.equals(Type.VOID.getDescriptor())) {
-        cstType = CstType.intern(Type.VOID);
+      Type type = null;
+      if (typeNameDesc.equals(Type.VOID.getDescriptor().getString())) {
+        type = Type.VOID;
       } else {
-        cstType = CstType.intern(Type.intern(typeNameDesc));
+        type = Type.intern(typeNameDesc);
       }
 
-      if (cstTypes.add(cstType)) {
-        cstTypesNewlyAdded.add(cstType);
+      if (types.add(type)) {
+        typesNewlyAdded.add(type);
       }
 
-      cstIndexMap.addTypeMapping(idx++, cstType);
+      cstIndexMap.addTypeMapping(idx++, type);
     }
 
 
     idx = 0;
     for (FieldId fieldId : dexBuffer.fieldIds()) {
-      CstNat fieldNat = new CstNat(cstIndexMap.getCstString(fieldId.getNameIndex()),
-          cstIndexMap.getCstType(fieldId.getTypeIndex()).getDescriptor());
       CstFieldRef cstFieldRef =
-          new CstFieldRef(cstIndexMap.getCstType(fieldId.getDeclaringClassIndex()), fieldNat);
+          new CstFieldRef(cstIndexMap.getType(fieldId.getDeclaringClassIndex()),
+              cstIndexMap.getCstString(fieldId.getNameIndex()),
+              cstIndexMap.getType(fieldId.getTypeIndex()));
+
       if (cstFieldRefs.add(cstFieldRef)) {
         cstFieldRefsNewlyAdded.add(cstFieldRef);
       }
@@ -153,13 +151,10 @@
 
     idx = 0;
     List<ProtoId> protoIds = dexBuffer.protoIds();
-    String[] protoIdx2String = new String[protoIds.size()];
-
     for (ProtoId protoId : protoIds) {
-      String protoStr = dexBuffer.readTypeList(protoId.getParametersOffset()).toString();
-      protoStr += typeNames.get(protoId.getReturnTypeIndex());
-      protoIdx2String[idx] = protoStr;
-      Prototype prototype = Prototype.intern(protoStr);
+      Prototype prototype = Prototype.intern(
+          getStdTypeList(cstIndexMap, dexBuffer.readTypeList(protoId.getParametersOffset())),
+          cstIndexMap.getType(protoId.getReturnTypeIndex()));
       CstPrototypeRef cstProtoRef = new CstPrototypeRef(prototype);
       if (cstPrototypeRefs.add(cstProtoRef)) {
         cstPrototypeRefsNewlyAdded.add(cstProtoRef);
@@ -171,19 +166,12 @@
 
     for (MethodId methodId : dexBuffer.methodIds()) {
       int protoIdx = methodId.getProtoIndex();
-      String protoStr = protoIdx2String[protoIdx];
-      assert protoStr != null;
 
-      CstString protoCstString = protoStr2CstString.get(protoStr);
-      if (protoCstString == null) {
-        protoCstString = new CstString(protoStr);
-        protoStr2CstString.put(protoStr, protoCstString);
-      }
-
-      CstNat methNat =
-          new CstNat(cstIndexMap.getCstString(methodId.getNameIndex()), protoCstString);
       CstMethodRef cstMethodRef =
-          new CstMethodRef(cstIndexMap.getCstType(methodId.getDeclaringClassIndex()), methNat);
+          new CstMethodRef(cstIndexMap.getType(methodId.getDeclaringClassIndex()),
+              cstIndexMap.getCstString(methodId.getNameIndex()),
+              cstIndexMap.getCstPrototype(protoIdx).getPrototype());
+
       if (cstMethodRefs.add(cstMethodRef)) {
         cstMethodRefsNewlyAdded.add(cstMethodRef);
       }
@@ -230,31 +218,31 @@
 
     if ((cstMethodHandleRefs.size()) > DexFormat.MAX_MEMBER_IDX + 1) {
       removeItems(cstStringsNewlyAdded, cstFieldRefsNewlyAdded, cstMethodRefsNewlyAdded,
-          cstTypesNewlyAdded, cstPrototypeRefsNewlyAdded, cstMethodHandleRefsNewlyAdded);
+          typesNewlyAdded, cstPrototypeRefsNewlyAdded, cstMethodHandleRefsNewlyAdded);
       throw new MethodHandleIdOverflowException();
     }
 
     if ((cstFieldRefs.size()) > DexFormat.MAX_MEMBER_IDX + 1) {
       removeItems(cstStringsNewlyAdded, cstFieldRefsNewlyAdded, cstMethodRefsNewlyAdded,
-          cstTypesNewlyAdded, cstPrototypeRefsNewlyAdded, cstMethodHandleRefsNewlyAdded);
+          typesNewlyAdded, cstPrototypeRefsNewlyAdded, cstMethodHandleRefsNewlyAdded);
       throw new FieldIdOverflowException();
     }
 
     if ((cstMethodRefs.size()) > DexFormat.MAX_MEMBER_IDX + 1) {
       removeItems(cstStringsNewlyAdded, cstFieldRefsNewlyAdded, cstMethodRefsNewlyAdded,
-          cstTypesNewlyAdded, cstPrototypeRefsNewlyAdded, cstMethodHandleRefsNewlyAdded);
+          typesNewlyAdded, cstPrototypeRefsNewlyAdded, cstMethodHandleRefsNewlyAdded);
       throw new MethodIdOverflowException();
     }
 
-    if ((cstTypes.size()) > DexFormat.MAX_TYPE_IDX + 1) {
+    if ((types.size()) > DexFormat.MAX_TYPE_IDX + 1) {
       removeItems(cstStringsNewlyAdded, cstFieldRefsNewlyAdded, cstMethodRefsNewlyAdded,
-          cstTypesNewlyAdded, cstPrototypeRefsNewlyAdded, cstMethodHandleRefsNewlyAdded);
+          typesNewlyAdded, cstPrototypeRefsNewlyAdded, cstMethodHandleRefsNewlyAdded);
       throw new TypeIdOverflowException();
     }
 
     if ((cstPrototypeRefs.size()) > DexFormat.MAX_PROTOTYPE_IDX + 1) {
       removeItems(cstStringsNewlyAdded, cstFieldRefsNewlyAdded, cstMethodRefsNewlyAdded,
-          cstTypesNewlyAdded, cstPrototypeRefsNewlyAdded, cstMethodHandleRefsNewlyAdded);
+          typesNewlyAdded, cstPrototypeRefsNewlyAdded, cstMethodHandleRefsNewlyAdded);
       throw new PrototypedOverflowException();
     }
 
@@ -263,21 +251,33 @@
 
   private void removeItems(@Nonnull List<String> cstStringsToRemove,
       @Nonnull List<CstFieldRef> cstFieldRefsToRemove,
-      @Nonnull List<CstMethodRef> cstMethodRefsToRemove, @Nonnull List<CstType> cstTypesToRemove,
+      @Nonnull List<CstMethodRef> cstMethodRefsToRemove, @Nonnull List<Type> cstTypesToRemove,
       @Nonnull List<CstPrototypeRef> cstPrototypeRefsToRemove,
       @Nonnull List<CstMethodHandleRef> cstMethodHandleRefsToRemove) {
     string2CstStrings.keySet().removeAll(cstStringsToRemove);
     cstFieldRefs.removeAll(cstFieldRefsToRemove);
     cstMethodRefs.removeAll(cstMethodRefsToRemove);
-    cstTypes.removeAll(cstTypesToRemove);
+    types.removeAll(cstTypesToRemove);
     cstPrototypeRefs.removeAll(cstPrototypeRefsToRemove);
     cstMethodHandleRefs.removeAll(cstMethodHandleRefsToRemove);
   }
 
+  @Nonnull
+  private StdTypeList getStdTypeList(@Nonnull CstIndexMap cstIndexMap, @Nonnull TypeList typeList) {
+    short[] type = typeList.getTypes();
+    int typesLength = type.length;
+    StdTypeList stdTypeList = new StdTypeList(typesLength);
+    for (int i = 0; i < typesLength; i++) {
+      stdTypeList.set(i, cstIndexMap.getType(type[i]));
+    }
+    stdTypeList.setImmutable();
+    return stdTypeList;
+  }
+
   public boolean validate(@Nonnull DexFile dexFile) {
     return ((dexFile.getStringIds().items().size() == string2CstStrings.size())
         && (dexFile.getFieldIds().items().size() == cstFieldRefs.size())
         && (dexFile.getMethodIds().items().size() == cstMethodRefs.size())
-        && (dexFile.getTypeIds().items().size() == cstTypes.size()));
+        && (dexFile.getTypeIds().items().size() == types.size()));
   }
 }
diff --git a/jack/src/com/android/jack/tools/merger/JackMerger.java b/jack/src/com/android/jack/tools/merger/JackMerger.java
index 42e04a8..5da082f 100644
--- a/jack/src/com/android/jack/tools/merger/JackMerger.java
+++ b/jack/src/com/android/jack/tools/merger/JackMerger.java
@@ -31,9 +31,11 @@
 import com.android.jack.dx.rop.cst.CstIndexMap;
 import com.android.jack.dx.rop.cst.CstMethodRef;
 import com.android.jack.dx.rop.cst.CstString;
-import com.android.jack.dx.rop.cst.CstType;
 import com.android.jack.dx.rop.type.StdTypeList;
+import com.android.jack.dx.rop.type.Type;
 import com.android.jack.dx.rop.type.TypeList;
+import com.android.sched.util.file.CannotWriteException;
+import com.android.sched.util.location.HasLocation;
 
 import java.io.IOException;
 import java.io.OutputStream;
@@ -68,10 +70,10 @@
     CstIndexMap cstIndexMap = cstManager.addDexFile(dexToMerge);
 
     for (ClassDef classDefToMerge : dexToMerge.classDefs()) {
-      CstType superType = null;
+      Type superType = null;
       int supertypeIndex = classDefToMerge.getSupertypeIndex();
       if (supertypeIndex != ClassDef.NO_INDEX) {
-        superType = cstIndexMap.getCstType(supertypeIndex);
+        superType = cstIndexMap.getType(supertypeIndex);
       }
       CstString sourceFilename = null;
       int sourceFileIndex = classDefToMerge.getSourceFileIndex();
@@ -80,7 +82,7 @@
       }
 
       ClassDefItem newClassDef = new ClassDefItem(
-          cstIndexMap.getCstType(classDefToMerge.getTypeIndex()), classDefToMerge.getAccessFlags(),
+          cstIndexMap.getType(classDefToMerge.getTypeIndex()), classDefToMerge.getAccessFlags(),
           superType, getInterfacesList(classDefToMerge, cstIndexMap), sourceFilename);
 
       dexResult.add(newClassDef);
@@ -142,13 +144,18 @@
     }
   }
 
-  public void finish(@Nonnull OutputStream out) throws IOException {
+  public void finish(@Nonnull OutputStream out, @Nonnull HasLocation locationProvider)
+      throws CannotWriteException {
     dexResult.prepare(cstManager.getCstStrings(), cstManager.getCstFieldRefs(),
-        cstManager.getCstMethodRefs(), cstManager.getCstTypes(), cstManager.getCstPrototypeRefs());
+        cstManager.getCstMethodRefs(), cstManager.getTypes(), cstManager.getCstPrototypeRefs());
     if (!cstManager.validate(dexResult)) {
       throw new AssertionError();
     }
-    dexResult.writeTo(out, null /* humanOut */, false /* verbose */);
+    try {
+      dexResult.writeTo(out, null /* humanOut */, false /* verbose */);
+    } catch (IOException e) {
+      throw new CannotWriteException(locationProvider);
+    }
     finished = true;
   }
 
@@ -171,7 +178,7 @@
     StdTypeList interfaceList = new StdTypeList(interfaceCount);
     int idx = 0;
     for (int interfaceIdx : classDefToMerge.getInterfaces()) {
-      interfaceList.set(idx++, cstIndexMap.getCstType(interfaceIdx).getClassType());
+      interfaceList.set(idx++, cstIndexMap.getType(interfaceIdx));
     }
 
     return (interfaceList);
diff --git a/jack/src/com/android/jack/transformations/VisibilityBridgeAdder.java b/jack/src/com/android/jack/transformations/VisibilityBridgeAdder.java
index a87c906..8b6b5d2 100644
--- a/jack/src/com/android/jack/transformations/VisibilityBridgeAdder.java
+++ b/jack/src/com/android/jack/transformations/VisibilityBridgeAdder.java
@@ -91,8 +91,7 @@
         if (method.isPublic() && !(method instanceof JConstructor) && !method.isStatic()
             && !method.isFinal()) {
           try {
-            declaredType.getMethod(method.getName(), method.getType(),
-                method.getMethodIdWide().getParamTypes());
+            declaredType.getMethod(method.getMethodId());
           } catch (JMethodLookupException e) {
             // the method is not declared in class, a bridge is required
             synthesizeBridge((JDefinedClass) declaredType, method);
@@ -117,7 +116,7 @@
     CloneExpressionVisitor cloner = new CloneExpressionVisitor();
     for (JParameter param : method.getParams()) {
       JParameter bridgeParam = new JParameter(sourceInfo, param.getName(), param.getType(),
-          param.getModifier(), bridge);
+          param.getModifier() | JModifier.SYNTHETIC, bridge);
       for (JAnnotation annotation : param.getAnnotations()) {
         bridgeParam.addAnnotation(cloner.cloneExpression(annotation));
       }
@@ -135,7 +134,7 @@
     JThis jThis = bridge.getThis();
     assert jThis != null;
     JMethodCall callToSuper = new JMethodCall(sourceInfo, jThis.makeRef(sourceInfo), superClass,
-        methodId.getMethodIdWide(), method.getType(), false /* isVirtualDispatch */);
+        methodId, false /* isVirtualDispatch */);
     for (JParameter param : bridge.getParams()) {
       callToSuper.addArg(param.makeRef(sourceInfo));
     }
diff --git a/jack/src/com/android/jack/transformations/assertion/DynamicAssertionTransformer.java b/jack/src/com/android/jack/transformations/assertion/DynamicAssertionTransformer.java
index 9a6b074..f62eb4b 100644
--- a/jack/src/com/android/jack/transformations/assertion/DynamicAssertionTransformer.java
+++ b/jack/src/com/android/jack/transformations/assertion/DynamicAssertionTransformer.java
@@ -153,9 +153,10 @@
       JFieldRef lhs = new JFieldRef(sourceInfo, null, assertionStatusId, type);
       JExpression rhs = new JPrefixNotOperation(sourceInfo,
           new JMethodCall(sourceInfo, thisClass, javaLangClass,
-              javaLangClass.getOrCreateMethodIdWide("desiredAssertionStatus",
-                  Collections.<JType>emptyList(), MethodKind.INSTANCE_VIRTUAL),
-              JPrimitiveTypeEnum.BOOLEAN.getType(), true /* isVirtualDispatch */));
+              javaLangClass.getOrCreateMethodId("desiredAssertionStatus",
+                  Collections.<JType>emptyList(), MethodKind.INSTANCE_VIRTUAL,
+                  JPrimitiveTypeEnum.BOOLEAN.getType()),
+              true /* isVirtualDispatch */));
       JAsgOperation asg = new JAsgOperation(SourceInfo.UNKNOWN, lhs, rhs);
 
       assertionStatus.addMarker(new InitializationExpression(asg.makeStatement()));
@@ -190,10 +191,9 @@
       JClass assertionError =
           Jack.getSession().getPhantomLookup()
               .getClass(CommonTypes.JAVA_LANG_ASSERTION_ERROR);
-      JNewInstance newAssertionError = new JNewInstance(assertSt.getSourceInfo(),
-          assertionError,
-          assertionError.getOrCreateMethodIdWide(NamingTools.INIT_NAME, ctorDescriptor,
-              MethodKind.INSTANCE_NON_VIRTUAL));
+      JNewInstance newAssertionError = new JNewInstance(assertSt.getSourceInfo(), assertionError,
+          assertionError.getOrCreateMethodId(NamingTools.INIT_NAME, ctorDescriptor,
+              MethodKind.INSTANCE_NON_VIRTUAL, JPrimitiveTypeEnum.VOID.getType()));
 
       if (arg != null) {
         newAssertionError.addArg(arg);
diff --git a/jack/src/com/android/jack/transformations/assertion/EnabledAssertionTransformer.java b/jack/src/com/android/jack/transformations/assertion/EnabledAssertionTransformer.java
index 3df133f..9986673 100644
--- a/jack/src/com/android/jack/transformations/assertion/EnabledAssertionTransformer.java
+++ b/jack/src/com/android/jack/transformations/assertion/EnabledAssertionTransformer.java
@@ -28,6 +28,7 @@
 import com.android.jack.ir.ast.JMethodCall;
 import com.android.jack.ir.ast.JNewInstance;
 import com.android.jack.ir.ast.JPrefixNotOperation;
+import com.android.jack.ir.ast.JPrimitiveType.JPrimitiveTypeEnum;
 import com.android.jack.ir.ast.JThrowStatement;
 import com.android.jack.ir.ast.JType;
 import com.android.jack.ir.ast.JVisitor;
@@ -105,10 +106,9 @@
         ctorDescriptor.add(jlo);
       }
 
-      JNewInstance newAssertionError = new JNewInstance(assertSt.getSourceInfo(),
-          assertionError,
-          assertionError.getOrCreateMethodIdWide(NamingTools.INIT_NAME, ctorDescriptor,
-              MethodKind.INSTANCE_NON_VIRTUAL));
+      JNewInstance newAssertionError = new JNewInstance(assertSt.getSourceInfo(), assertionError,
+          assertionError.getOrCreateMethodId(NamingTools.INIT_NAME, ctorDescriptor,
+              MethodKind.INSTANCE_NON_VIRTUAL, JPrimitiveTypeEnum.VOID.getType()));
 
       if (arg != null) {
         newAssertionError.addArg(arg);
diff --git a/jack/src/com/android/jack/transformations/ast/BoostLockedRegionPriority.java b/jack/src/com/android/jack/transformations/ast/BoostLockedRegionPriority.java
index f2c7d32..a42d235 100644
--- a/jack/src/com/android/jack/transformations/ast/BoostLockedRegionPriority.java
+++ b/jack/src/com/android/jack/transformations/ast/BoostLockedRegionPriority.java
@@ -24,7 +24,7 @@
 import com.android.jack.ir.ast.JLock;
 import com.android.jack.ir.ast.JMethod;
 import com.android.jack.ir.ast.JMethodCall;
-import com.android.jack.ir.ast.JMethodIdWide;
+import com.android.jack.ir.ast.JMethodId;
 import com.android.jack.ir.ast.JPrimitiveType.JPrimitiveTypeEnum;
 import com.android.jack.ir.ast.JStatement;
 import com.android.jack.ir.ast.JStatementList;
@@ -111,8 +111,8 @@
   @CheckForNull private final JClass lockClass;
   @CheckForNull private final JClass requestClass;
   @CheckForNull private final JClass resetClass;
-  @CheckForNull private final JMethodIdWide requestMethodId;
-  @CheckForNull private final JMethodIdWide resetMethodId;
+  @CheckForNull private final JMethodId requestMethodId;
+  @CheckForNull private final JMethodId resetMethodId;
   @Nonnull private final Filter<JMethod> filter = ThreadConfig.get(Options.METHOD_FILTER);
 
   public BoostLockedRegionPriority() {
@@ -162,10 +162,11 @@
     }
   }
 
-  private static JMethodIdWide getStaticMethodOrReportFailure(
+  private static JMethodId getStaticMethodOrReportFailure(
       JClass cls, String name, String prop) {
     try {
-      return cls.getMethodIdWide(name, Collections.<JType>emptyList(), MethodKind.STATIC);
+      return cls.getMethodId(name, Collections.<JType>emptyList(), MethodKind.STATIC,
+          JPrimitiveTypeEnum.VOID.getType());
     } catch (Throwable e) {
       Jack.getSession()
           .getReporter()
@@ -212,6 +213,7 @@
       }
 
       JStatementList list = (JStatementList) jLock.getParent();
+      assert list != null;
       int index = list.getStatements().indexOf(jLock) + 1;
       if (index >= list.getStatements().size()) {
         abortPass();
@@ -240,16 +242,14 @@
       return new JExpressionStatement(
           info,
           new JMethodCall(
-              info, null, requestClass, requestMethodId, JPrimitiveTypeEnum.VOID.getType(), false));
+              info, null, requestClass, requestMethodId, false));
     }
 
     @Nonnull
     private JExpressionStatement makeResetCall(SourceInfo info) {
       assert lockClass != null && resetClass != null && resetMethodId != null;
-      return new JExpressionStatement(
-          info,
-          new JMethodCall(
-              info, null, resetClass, resetMethodId, JPrimitiveTypeEnum.VOID.getType(), false));
+      return new JExpressionStatement(info,
+          new JMethodCall(info, null, resetClass, resetMethodId, false));
     }
   }
 
diff --git a/jack/src/com/android/jack/transformations/ast/ConcatRemover.java b/jack/src/com/android/jack/transformations/ast/ConcatRemover.java
index 1059b83..2edb69e 100644
--- a/jack/src/com/android/jack/transformations/ast/ConcatRemover.java
+++ b/jack/src/com/android/jack/transformations/ast/ConcatRemover.java
@@ -27,7 +27,7 @@
 import com.android.jack.ir.ast.JExpression;
 import com.android.jack.ir.ast.JMethod;
 import com.android.jack.ir.ast.JMethodCall;
-import com.android.jack.ir.ast.JMethodIdWide;
+import com.android.jack.ir.ast.JMethodId;
 import com.android.jack.ir.ast.JNewInstance;
 import com.android.jack.ir.ast.JNode;
 import com.android.jack.ir.ast.JPrimitiveType;
@@ -116,9 +116,10 @@
       if (binary instanceof JConcatOperation) {
         TransformationRequest tr = new TransformationRequest(method);
         SourceInfo sourceInfo = binary.getSourceInfo();
-        JNode parent = binary.getParent();
-        if (isReplaceableAppend(parent)) {
-          JMethodCall toReplace = (JMethodCall) parent;
+        final JNode binaryParent = binary.getParent();
+        assert binaryParent != null;
+        if (isReplaceableAppend(binaryParent)) {
+          JMethodCall toReplace = (JMethodCall) binaryParent;
 
           JExpression instance = toReplace.getInstance();
           assert instance != null;
@@ -131,23 +132,22 @@
         } else {
           JClassOrInterface stringBuilder = getStringBuilder();
           JNewInstance instance = new JNewInstance(sourceInfo, stringBuilder,
-              stringBuilder.getOrCreateMethodIdWide(STRING_BUILDER_CONSTRUCTOR_NAME,
-                  Lists.<JType>create(), MethodKind.INSTANCE_NON_VIRTUAL));
+              stringBuilder.getOrCreateMethodId(STRING_BUILDER_CONSTRUCTOR_NAME,
+                  Lists.<JType>create(), MethodKind.INSTANCE_NON_VIRTUAL,
+                  JPrimitiveTypeEnum.VOID.getType()));
 
           JMethodCall appendLhs = getCallToAppend(sourceInfo, instance, binary.getLhs());
 
           JMethodCall appendRhs = getCallToAppend(sourceInfo, appendLhs, binary.getRhs());
 
-          JMethodIdWide stringBuilderToString =
-              stringBuilder.getOrCreateMethodIdWide(TO_STRING, Lists.<JType>create(),
-                  MethodKind.INSTANCE_VIRTUAL);
+          JMethodId stringBuilderToString = stringBuilder.getOrCreateMethodId(TO_STRING,
+              Lists.<JType>create(), MethodKind.INSTANCE_VIRTUAL, jls);
           assert session != null;
           JMethodCall toString = new JMethodCall(sourceInfo,
               appendRhs,
               stringBuilder,
               stringBuilderToString,
-              jls,
-              stringBuilderToString.canBeVirtual());
+              stringBuilderToString.getMethodIdWide().canBeVirtual());
 
           tr.append(new Replace(binary, toString));
         }
@@ -245,14 +245,13 @@
     }
 
     JClassOrInterface stringBuilder = getStringBuilder();
-    JMethodIdWide stringBuilderAppend =
-        stringBuilder.getOrCreateMethodIdWide(APPEND_METHOD_NAME, Lists.create(appendArgType),
-        MethodKind.INSTANCE_VIRTUAL);
+    JMethodId stringBuilderAppend =
+        stringBuilder.getOrCreateMethodId(APPEND_METHOD_NAME, Lists.create(appendArgType),
+        MethodKind.INSTANCE_VIRTUAL, stringBuilder);
     JMethodCall call = new JMethodCall(sourceInfo,
         stringBuilderInstance,
         stringBuilder,
         stringBuilderAppend,
-        stringBuilder,
         true /* isVirtualDispatch */);
     call.addArg(toAppend);
     return call;
diff --git a/jack/src/com/android/jack/transformations/ast/ImplicitBlocks.java b/jack/src/com/android/jack/transformations/ast/ImplicitBlocks.java
index 87b8246..b2df7db 100644
--- a/jack/src/com/android/jack/transformations/ast/ImplicitBlocks.java
+++ b/jack/src/com/android/jack/transformations/ast/ImplicitBlocks.java
@@ -64,7 +64,7 @@
     @Override
     public boolean visit(@Nonnull JIfStatement ifStmt) {
       JStatement thenStmt = ifStmt.getThenStmt();
-      if (thenStmt != null && !(thenStmt instanceof JBlock)) {
+      if (!(thenStmt instanceof JBlock)) {
         moveIntoBLock(thenStmt);
       }
 
diff --git a/jack/src/com/android/jack/transformations/ast/ImplicitBlocksChecker.java b/jack/src/com/android/jack/transformations/ast/ImplicitBlocksChecker.java
index aaaaeba..d528dfc 100644
--- a/jack/src/com/android/jack/transformations/ast/ImplicitBlocksChecker.java
+++ b/jack/src/com/android/jack/transformations/ast/ImplicitBlocksChecker.java
@@ -60,7 +60,7 @@
       JStatement thenStmt = ifStmt.getThenStmt();
       JStatement elseStmt = ifStmt.getElseStmt();
 
-      if ((thenStmt != null && !(thenStmt instanceof JBlock)) ||
+      if ((!(thenStmt instanceof JBlock)) ||
           (elseStmt != null && !(elseStmt instanceof JBlock))) {
         throw new AssertionError("If statement with stand-alone statement.");
       }
diff --git a/jack/src/com/android/jack/transformations/ast/MultiDimensionNewArrayRemover.java b/jack/src/com/android/jack/transformations/ast/MultiDimensionNewArrayRemover.java
index 90cbff6..3bc0c25 100644
--- a/jack/src/com/android/jack/transformations/ast/MultiDimensionNewArrayRemover.java
+++ b/jack/src/com/android/jack/transformations/ast/MultiDimensionNewArrayRemover.java
@@ -26,7 +26,7 @@
 import com.android.jack.ir.ast.JExpression;
 import com.android.jack.ir.ast.JMethod;
 import com.android.jack.ir.ast.JMethodCall;
-import com.android.jack.ir.ast.JMethodIdWide;
+import com.android.jack.ir.ast.JMethodId;
 import com.android.jack.ir.ast.JNewArray;
 import com.android.jack.ir.ast.JPrimitiveType.JPrimitiveTypeEnum;
 import com.android.jack.ir.ast.JType;
@@ -81,7 +81,7 @@
   private final JArrayType intArrayType =
       Jack.getSession().getLookup().getArrayType(JPrimitiveTypeEnum.INT.getType(), 1);
   @Nonnull
-  private final JMethodIdWide newInstance;
+  private final JMethodId newInstance;
 
   private class Visitor extends JVisitor {
 
@@ -105,8 +105,7 @@
               null,
               reflectArrayType,
               newInstance,
-              jlo,
-              newInstance.canBeVirtual());
+              newInstance.getMethodIdWide().canBeVirtual());
           call.addArg(new JClassLiteral(sourceInfo,
               getComponentTypeForNewInstance(newArray, nbPresentDimensions)));
          call.addArg(JNewArray.createWithInits(sourceInfo, intArrayType, presentDimensions));
@@ -155,8 +154,8 @@
     List<JType> argsType = new ArrayList<JType>(2);
     argsType.add(jlc);
     argsType.add(intArrayType);
-    newInstance = reflectArrayType.getOrCreateMethodIdWide("newInstance", argsType,
-        MethodKind.STATIC);
+    newInstance = reflectArrayType.getOrCreateMethodId("newInstance", argsType,
+        MethodKind.STATIC, jlo);
   }
 
   @Override
diff --git a/jack/src/com/android/jack/transformations/ast/NumericConversionChecker.java b/jack/src/com/android/jack/transformations/ast/NumericConversionChecker.java
index e173ef5..ba93d37 100644
--- a/jack/src/com/android/jack/transformations/ast/NumericConversionChecker.java
+++ b/jack/src/com/android/jack/transformations/ast/NumericConversionChecker.java
@@ -249,7 +249,7 @@
     @Override
     public void endVisit(@Nonnull JMethodCall call) {
       List<JExpression> args = call.getArgs();
-      List<JType> parameterTypes = call.getMethodId().getParamTypes();
+      List<JType> parameterTypes = call.getMethodIdWide().getParamTypes();
       assert args.size() == parameterTypes.size();
       Iterator<JType> paramTypeIterator = parameterTypes.iterator();
       for (JExpression jExpression : args) {
diff --git a/jack/src/com/android/jack/transformations/ast/SideEffectExtractor.java b/jack/src/com/android/jack/transformations/ast/SideEffectExtractor.java
index 88050e5..b89bdb8 100644
--- a/jack/src/com/android/jack/transformations/ast/SideEffectExtractor.java
+++ b/jack/src/com/android/jack/transformations/ast/SideEffectExtractor.java
@@ -23,6 +23,7 @@
 import com.android.jack.ir.ast.JLocal;
 import com.android.jack.ir.ast.JLocalRef;
 import com.android.jack.ir.ast.JMultiExpression;
+import com.android.jack.ir.ast.JNode;
 import com.android.jack.ir.ast.JParameter;
 import com.android.jack.ir.ast.JParameterRef;
 import com.android.jack.ir.sourceinfo.SourceInfo;
@@ -87,7 +88,9 @@
     if (!extracted.isEmpty()) {
       extracted.add((JExpression) ref.getParent());
       JMultiExpression multiExpression = new JMultiExpression(sourceInfo, extracted);
-      tr.append(new Replace(ref.getParent(), multiExpression));
+      final JNode parent = ref.getParent();
+      assert parent != null;
+      tr.append(new Replace(parent, multiExpression));
     }
 
     return new JFieldRef(sourceInfo, newInstance, ref.getFieldId(), ref.getReceiverType());
@@ -105,7 +108,9 @@
     if (!extracted.isEmpty()) {
       extracted.add((JExpression) ref.getParent());
       JMultiExpression multiExpression = new JMultiExpression(sourceInfo, extracted);
-      tr.append(new Replace(ref.getParent(), multiExpression));
+      final JNode parent = ref.getParent();
+      assert parent != null;
+      tr.append(new Replace(parent, multiExpression));
     }
 
     assert newInstance != null;
diff --git a/jack/src/com/android/jack/transformations/ast/SynchronizeTransformer.java b/jack/src/com/android/jack/transformations/ast/SynchronizeTransformer.java
index 0a7cf3f..3b33935 100644
--- a/jack/src/com/android/jack/transformations/ast/SynchronizeTransformer.java
+++ b/jack/src/com/android/jack/transformations/ast/SynchronizeTransformer.java
@@ -74,6 +74,7 @@
 @Constraint(need = {NoImplicitBlock.class})
 @Transform(remove = {JSynchronizedBlock.class, ThreeAddressCodeForm.class}, add = {JBlock.class,
     JTryStatement.class,
+    JTryStatement.FinallyBlock.class,
     JLock.class,
     JUnlock.class,
     JLocalRef.class,
diff --git a/jack/src/com/android/jack/transformations/ast/TryWithResourcesTransformer.java b/jack/src/com/android/jack/transformations/ast/TryWithResourcesTransformer.java
index 4ac6d7c..ec736c4 100644
--- a/jack/src/com/android/jack/transformations/ast/TryWithResourcesTransformer.java
+++ b/jack/src/com/android/jack/transformations/ast/TryWithResourcesTransformer.java
@@ -35,7 +35,7 @@
 import com.android.jack.ir.ast.JMethod;
 import com.android.jack.ir.ast.JMethodBody;
 import com.android.jack.ir.ast.JMethodCall;
-import com.android.jack.ir.ast.JMethodIdWide;
+import com.android.jack.ir.ast.JMethodId;
 import com.android.jack.ir.ast.JModifier;
 import com.android.jack.ir.ast.JNeqOperation;
 import com.android.jack.ir.ast.JNullLiteral;
@@ -249,18 +249,20 @@
             Collections.singletonList(catchBlock),
             finallyBlock);
 
-        JMethodIdWide closeMethodId;
-        JMethodIdWide addSuppressedMethodId;
+        JMethodId closeMethodId;
+        JMethodId addSuppressedMethodId;
         try {
           // Lookup AutoCloseable.close() method
           JInterface autoCloseableInterface =
               Jack.getSession().getPhantomLookup().getInterface(AUTO_CLOSEABLE_SIGNATURE);
-          closeMethodId = autoCloseableInterface.getMethodIdWide(
-              CLOSE_METHOD_NAME, Collections.<JType>emptyList(), MethodKind.INSTANCE_VIRTUAL);
+          closeMethodId =
+              autoCloseableInterface.getMethodId(CLOSE_METHOD_NAME, Collections.<JType>emptyList(),
+                  MethodKind.INSTANCE_VIRTUAL, JPrimitiveTypeEnum.VOID.getType());
 
           // Lookup Throwable.addSuppressed(Throwable t) method
-          addSuppressedMethodId = throwableClass.getMethodIdWide(ADD_SUPPRESSED_METHOD_NAME,
-              Collections.singletonList(throwableClass), MethodKind.INSTANCE_VIRTUAL);
+          addSuppressedMethodId = throwableClass.getMethodId(ADD_SUPPRESSED_METHOD_NAME,
+              Collections.singletonList(throwableClass), MethodKind.INSTANCE_VIRTUAL,
+              JPrimitiveTypeEnum.VOID.getType());
         } catch (JMethodLookupException e) {
           TransformationException transformationException =
               new TransformationException(new MissingJavaSupportException(JavaVersion.JAVA_7, e));
@@ -284,7 +286,6 @@
               resourceLocal.makeRef(endOfTrySourceInfos),
               (JClassOrInterface) resourceLocal.getType(),
               closeMethodId,
-              JPrimitiveTypeEnum.VOID.getType(),
               true);
 
           JBlock thenBlock = new JBlock(endOfTrySourceInfos);
@@ -331,8 +332,7 @@
               exceptionToThrow.makeRef(endOfTrySourceInfos),
               throwableClass,
               addSuppressedMethodId,
-              JPrimitiveTypeEnum.VOID.getType(),
-              closeMethodId.canBeVirtual());
+              closeMethodId.getMethodIdWide().canBeVirtual());
           addSuppressCall.addArg(exceptionThrownByClose.makeRef(endOfTrySourceInfos));
           callSuppressBlock.addStmt(new JExpressionStatement(endOfTrySourceInfos, addSuppressCall));
 
diff --git a/jack/src/com/android/jack/transformations/ast/TypeLegalizer.java b/jack/src/com/android/jack/transformations/ast/TypeLegalizer.java
index e5875ea..0ad888d 100644
--- a/jack/src/com/android/jack/transformations/ast/TypeLegalizer.java
+++ b/jack/src/com/android/jack/transformations/ast/TypeLegalizer.java
@@ -33,7 +33,7 @@
 import com.android.jack.ir.ast.JIfStatement;
 import com.android.jack.ir.ast.JMethod;
 import com.android.jack.ir.ast.JMethodCall;
-import com.android.jack.ir.ast.JMethodIdWide;
+import com.android.jack.ir.ast.JMethodId;
 import com.android.jack.ir.ast.JNewArray;
 import com.android.jack.ir.ast.JPolymorphicMethodCall;
 import com.android.jack.ir.ast.JPrimitiveType;
@@ -279,7 +279,7 @@
     @Override
     public void endVisit(@Nonnull JMethodCall call) {
       List<JExpression> args = call.getArgs();
-      List<JType> parameterTypes = call.getMethodId().getParamTypes();
+      List<JType> parameterTypes = call.getMethodIdWide().getParamTypes();
       assert args.size() == parameterTypes.size();
       Iterator<JType> paramTypeIterator = parameterTypes.iterator();
       for (JExpression jExpression : args) {
@@ -436,12 +436,10 @@
     }
 
 
-    JMethodIdWide unboxMethod =
-        typeToUnbox.getOrCreateMethodIdWide(methodName, Lists.<JType>create(),
-    MethodKind.INSTANCE_VIRTUAL);
-    JMethodCall unboxMethodCall = new JMethodCall(
-        exprToUnbox.getSourceInfo(), exprToUnbox, typeToUnbox,
-        unboxMethod, returnType, unboxMethod.canBeVirtual());
+    JMethodId unboxMethod = typeToUnbox.getOrCreateMethodId(methodName, Lists.<JType>create(),
+        MethodKind.INSTANCE_VIRTUAL, returnType);
+    JMethodCall unboxMethodCall = new JMethodCall(exprToUnbox.getSourceInfo(), exprToUnbox,
+        typeToUnbox, unboxMethod, unboxMethod.getMethodIdWide().canBeVirtual());
 
     return unboxMethodCall;
   }
@@ -521,12 +519,12 @@
     }
 
 
-    JMethodIdWide methodId = wrapperType.getOrCreateMethodIdWide("valueOf", Lists.create(argType),
-        MethodKind.STATIC);
+    JMethodId methodId = wrapperType.getOrCreateMethodId("valueOf", Lists.create(argType),
+        MethodKind.STATIC, wrapperType);
     JMethodCall boxMethodCall = new JMethodCall(
-        exprToBox.getSourceInfo(), null, wrapperType, methodId, wrapperType,
-        methodId.canBeVirtual());
-    List<JType> paramTypes = methodId.getParamTypes();
+        exprToBox.getSourceInfo(), null, wrapperType, methodId,
+        methodId.getMethodIdWide().canBeVirtual());
+    List<JType> paramTypes = methodId.getMethodIdWide().getParamTypes();
     assert paramTypes.size() == 1;
     JType paramType = paramTypes.get(0);
     JType exprToBoxType = exprToBox.getType();
diff --git a/jack/src/com/android/jack/transformations/ast/inner/GetterMarker.java b/jack/src/com/android/jack/transformations/ast/inner/GetterMarker.java
index 533e6e2..7203e4b 100644
--- a/jack/src/com/android/jack/transformations/ast/inner/GetterMarker.java
+++ b/jack/src/com/android/jack/transformations/ast/inner/GetterMarker.java
@@ -107,7 +107,7 @@
       JExpression instance = null;
       if (!field.isStatic()) {
         JParameter thisParam = new JParameter(
-            sourceInfo, InnerAccessorGenerator.THIS_PARAM_NAME, accessorClass, JModifier.SYNTHETIC,
+            sourceInfo, InnerAccessorGenerator.THIS_PARAM_NAME, accessorClass, JModifier.DEFAULT,
             getter);
         tr.append(new AppendMethodParam(getter, thisParam));
         instance = thisParam.makeRef(sourceInfo);
diff --git a/jack/src/com/android/jack/transformations/ast/inner/InnerAccessorGenerator.java b/jack/src/com/android/jack/transformations/ast/inner/InnerAccessorGenerator.java
index 9797ef6..101cbbf 100644
--- a/jack/src/com/android/jack/transformations/ast/inner/InnerAccessorGenerator.java
+++ b/jack/src/com/android/jack/transformations/ast/inner/InnerAccessorGenerator.java
@@ -36,6 +36,7 @@
 import com.android.jack.ir.ast.JMethod;
 import com.android.jack.ir.ast.JMethodCall;
 import com.android.jack.ir.ast.JMethodCall.DispatchKind;
+import com.android.jack.ir.ast.JMethodId;
 import com.android.jack.ir.ast.JMethodIdWide;
 import com.android.jack.ir.ast.JModifier;
 import com.android.jack.ir.ast.JNewInstance;
@@ -211,7 +212,7 @@
         JType returnType =
             x instanceof JNewInstance ? JPrimitiveTypeEnum.VOID.getType() : x.getType();
         JMethod method = getMethod((JDefinedClassOrInterface) receiverType,
-            (JDefinedClassOrInterface) receiverType, returnType, x.getMethodId());
+            (JDefinedClassOrInterface) receiverType, returnType, x.getMethodIdWide());
         // Method can be null when an interface method is implemented by a sub type of the receiver
         // type, but in this case accessors are not needed
         if (method != null) {
@@ -303,11 +304,11 @@
 
     // this.this$0.field = $value => $set<id>(this.this$0, $value)
     JBinaryOperation binOp = (JBinaryOperation) fieldRef.getParent();
+    assert binOp != null;
 
-    JMethodIdWide setterId = setter.getMethodIdWide();
-    JMethodCall setterCall =
-        new JMethodCall(binOp.getSourceInfo(), null, accessorClass, setterId,
-            setter.getType(), setterId.canBeVirtual());
+    JMethodId setterId = setter.getMethodId();
+    JMethodCall setterCall = new JMethodCall(binOp.getSourceInfo(), null, accessorClass, setterId,
+        setterId.getMethodIdWide().canBeVirtual());
 
     if (!field.isStatic()) {
       JExpression instance = fieldRef.getInstance();
@@ -334,9 +335,9 @@
     JMethod getter = marker.getOrCreateGetter(field, (JDefinedClass) accessorClass, tr);
 
     // this.this$0.field => $get<id>(this.this$0)
-    JMethodIdWide getterId = getter.getMethodIdWide();
+    JMethodId getterId = getter.getMethodId();
     JMethodCall getterCall = new JMethodCall(fieldRef.getSourceInfo(), null, accessorClass,
-        getterId, getter.getType(), getterId.canBeVirtual());
+        getterId, getterId.getMethodIdWide().canBeVirtual());
 
     if (!field.isStatic()) {
       JExpression instance = fieldRef.getInstance();
@@ -366,22 +367,21 @@
     SourceInfo sourceInfo = methodCall.getSourceInfo();
     if (methodCall instanceof JNewInstance) {
       assert wrapper instanceof JConstructor;
-      wrapperCall =
-          new JNewInstance(sourceInfo, wrapper.getEnclosingType(), wrapper.getMethodIdWide());
+      wrapperCall = new JNewInstance(sourceInfo, wrapper.getEnclosingType(), wrapper.getMethodId());
     } else {
 
-      JMethodIdWide wrapperId = wrapper.getMethodIdWide();
+      JMethodId wrapperId = wrapper.getMethodId();
 
       // this.this$0.method(param) => $wrap<id>(this.this$0, param)
       if (!method.isStatic() && !(wrapper instanceof JConstructor)) {
         wrapperCall = new JMethodCall(sourceInfo, null, accessorClass, wrapperId,
-            wrapper.getType(), wrapperId.canBeVirtual());
+            wrapperId.getMethodIdWide().canBeVirtual());
         JExpression instance = methodCall.getInstance();
         assert instance != null;
         wrapperCall.addArg(instance);
       } else {
         wrapperCall = new JMethodCall(sourceInfo, methodCall.getInstance(), accessorClass,
-            wrapperId, wrapper.getType(), wrapperId.canBeVirtual());
+            wrapperId, wrapperId.getMethodIdWide().canBeVirtual());
       }
     }
 
diff --git a/jack/src/com/android/jack/transformations/ast/inner/MethodCallDispatchAdjuster.java b/jack/src/com/android/jack/transformations/ast/inner/MethodCallDispatchAdjuster.java
index 9b8e4a6..886b3fc 100644
--- a/jack/src/com/android/jack/transformations/ast/inner/MethodCallDispatchAdjuster.java
+++ b/jack/src/com/android/jack/transformations/ast/inner/MethodCallDispatchAdjuster.java
@@ -73,7 +73,7 @@
 
     @Override
     public boolean visit(@Nonnull JMethodCall methodCall) {
-      JMethodIdWide id = methodCall.getMethodId();
+      JMethodIdWide id = methodCall.getMethodIdWide();
       if (id.containsMarker(NeedsDispatchAdjustment.class)) {
         JExpression instance = methodCall.getInstance();
         if (instance != null) {
diff --git a/jack/src/com/android/jack/transformations/ast/inner/SetterMarker.java b/jack/src/com/android/jack/transformations/ast/inner/SetterMarker.java
index 7428638..7e55233 100644
--- a/jack/src/com/android/jack/transformations/ast/inner/SetterMarker.java
+++ b/jack/src/com/android/jack/transformations/ast/inner/SetterMarker.java
@@ -117,13 +117,13 @@
       if (!field.isStatic()) {
         JParameter thisParam =
             new JParameter(sourceInfo, InnerAccessorGenerator.THIS_PARAM_NAME, accessorClass,
-                JModifier.FINAL | JModifier.SYNTHETIC, setter);
+                JModifier.DEFAULT, setter);
         tr.append(new AppendMethodParam(setter, thisParam));
         instance = thisParam.makeRef(sourceInfo);
       }
 
       JParameter value = new JParameter(sourceInfo, VALUE_PARAM_NAME, fieldType,
-          JModifier.FINAL | JModifier.SYNTHETIC, setter);
+          JModifier.DEFAULT, setter);
       tr.append(new AppendMethodParam(setter, value));
       JFieldRef lhs = new JFieldRef(sourceInfo, instance, field.getId(), accessorClass);
 
diff --git a/jack/src/com/android/jack/transformations/ast/inner/WrapperMarker.java b/jack/src/com/android/jack/transformations/ast/inner/WrapperMarker.java
index 1c401d9..d7ef123 100644
--- a/jack/src/com/android/jack/transformations/ast/inner/WrapperMarker.java
+++ b/jack/src/com/android/jack/transformations/ast/inner/WrapperMarker.java
@@ -197,20 +197,21 @@
       } else if (!method.isStatic()){
         JParameter thisParam =
             new JParameter(sourceInfo, InnerAccessorGenerator.THIS_PARAM_NAME, accessorClass,
-                JModifier.FINAL | JModifier.SYNTHETIC, wrapper);
+                JModifier.DEFAULT, wrapper);
         wrapper.addParam(thisParam);
         id.addParam(accessorClass);
         instance = thisParam.makeRef(sourceInfo);
       }
 
-      JMethodIdWide calledMethodId = method.getMethodIdWide();
-      JMethodCall methodCall = new JMethodCall(sourceInfo, instance, mthCallReceiverType,
-          calledMethodId,
-          method.getType(), calledMethodId.canBeVirtual() && !isSuper /* isVirtualDispatch */);
+      JMethodId calledMethodId = method.getMethodId();
+      JMethodCall methodCall =
+          new JMethodCall(sourceInfo, instance, mthCallReceiverType, calledMethodId,
+              calledMethodId.getMethodIdWide().canBeVirtual() && !isSuper /* isVirtualDispatch */);
       for (JParameter param : method.getParams()) {
         JType paramType = param.getType();
+        // Do not propagate modifier from called method to the wrapper method
         JParameter newParam = new JParameter(sourceInfo, param.getName(), paramType,
-            param.getModifier(), wrapper);
+            JModifier.DEFAULT, wrapper);
         wrapper.addParam(newParam);
         id.addParam(paramType);
         methodCall.addArg(newParam.makeRef(sourceInfo));
@@ -220,7 +221,7 @@
         while (constructorExists((JConstructor) wrapper, accessorClass)) {
           JParameter newParam = new JParameter(
               sourceInfo, InnerAccessorGenerator.THIS_PARAM_NAME + wrapper.getParams().size(),
-              accessorClass, JModifier.SYNTHETIC, wrapper);
+              accessorClass, JModifier.DEFAULT, wrapper);
           wrapper.addParam(newParam);
           id.addParam(accessorClass);
         }
@@ -229,7 +230,7 @@
       JBlock bodyBlock = new JBlock(sourceInfo);
       JMethodBody body = new JMethodBody(sourceInfo, bodyBlock);
 
-      assert methodCall.getArgs().size() == methodCall.getMethodId().getParamTypes().size();
+      assert methodCall.getArgs().size() == methodCall.getMethodIdWide().getParamTypes().size();
 
       if (method.getType() == JPrimitiveTypeEnum.VOID.getType()) {
         bodyBlock.addStmt(methodCall.makeStatement());
diff --git a/jack/src/com/android/jack/transformations/ast/removeinit/FieldInitMethodCallRemover.java b/jack/src/com/android/jack/transformations/ast/removeinit/FieldInitMethodCallRemover.java
index d19223b..b9feea0 100644
--- a/jack/src/com/android/jack/transformations/ast/removeinit/FieldInitMethodCallRemover.java
+++ b/jack/src/com/android/jack/transformations/ast/removeinit/FieldInitMethodCallRemover.java
@@ -25,6 +25,7 @@
 import com.android.jack.ir.ast.JMethod;
 import com.android.jack.ir.ast.JMethodBody;
 import com.android.jack.ir.ast.JMethodCall;
+import com.android.jack.ir.ast.JNode;
 import com.android.jack.ir.ast.JPrimitiveType.JPrimitiveTypeEnum;
 import com.android.jack.ir.ast.JVisitor;
 import com.android.jack.lookup.JMethodLookupException;
@@ -92,12 +93,14 @@
         assert body instanceof JMethodBody;
         JBlock varInitMethodBLock = ((JMethodBody) body).getBlock();
 
+        final JNode methodCallParent = methodCall.getParent();
+        assert methodCallParent != null;
         if (varInitMethodBLock.getStatements().isEmpty()) {
-          tr.append(new Remove(methodCall.getParent()));
+          tr.append(new Remove(methodCallParent));
         } else {
           CloneStatementVisitor csv = new CloneStatementVisitor(tr,
               methodCall.getParent(JMethod.class));
-          tr.append(new Replace(methodCall.getParent(), csv.cloneStatement(varInitMethodBLock)));
+          tr.append(new Replace(methodCallParent, csv.cloneStatement(varInitMethodBLock)));
         }
       }
       super.endVisit(methodCall);
diff --git a/jack/src/com/android/jack/transformations/ast/splitnew/SplitNewInstance.java b/jack/src/com/android/jack/transformations/ast/splitnew/SplitNewInstance.java
index 2cf6b20..219a584 100644
--- a/jack/src/com/android/jack/transformations/ast/splitnew/SplitNewInstance.java
+++ b/jack/src/com/android/jack/transformations/ast/splitnew/SplitNewInstance.java
@@ -25,7 +25,7 @@
 import com.android.jack.ir.ast.JLocalRef;
 import com.android.jack.ir.ast.JMethod;
 import com.android.jack.ir.ast.JMethodCall;
-import com.android.jack.ir.ast.JMethodIdWide;
+import com.android.jack.ir.ast.JMethodId;
 import com.android.jack.ir.ast.JMultiExpression;
 import com.android.jack.ir.ast.JNewInstance;
 import com.android.jack.ir.ast.JPrimitiveType.JPrimitiveTypeEnum;
@@ -117,10 +117,11 @@
           new JAsgOperation(srcInfos, tmp.makeRef(srcInfos), alloc);
 
       // tmp.init(args)
-      JMethodIdWide methodId = newInstance.getMethodId();
-      JMethodCall initCall = new JMethodCall(
-          srcInfos, tmp.makeRef(srcInfos), type, methodId,
-          JPrimitiveTypeEnum.VOID.getType(), methodId.canBeVirtual());
+      JMethodId methodId =
+          newInstance.getMethodIdWide().getMethodId(JPrimitiveTypeEnum.VOID.getType());
+      assert methodId != null;
+      JMethodCall initCall = new JMethodCall(srcInfos, tmp.makeRef(srcInfos), type, methodId,
+          methodId.getMethodIdWide().canBeVirtual());
       initCall.addArgs(newInstance.getArgs());
 
       // tmp
diff --git a/jack/src/com/android/jack/transformations/ast/string/FieldStringLiteralRefiner.java b/jack/src/com/android/jack/transformations/ast/string/FieldStringLiteralRefiner.java
index 7a7aab0..c60f8b9 100644
--- a/jack/src/com/android/jack/transformations/ast/string/FieldStringLiteralRefiner.java
+++ b/jack/src/com/android/jack/transformations/ast/string/FieldStringLiteralRefiner.java
@@ -16,14 +16,20 @@
 
 package com.android.jack.transformations.ast.string;
 
+import com.android.jack.Options;
 import com.android.jack.ir.ast.JField;
 import com.android.jack.ir.ast.JSession;
+import com.android.jack.shrob.spec.FilterSpecification;
+import com.android.jack.shrob.spec.Flags;
 import com.android.jack.transformations.request.TransformationRequest;
 import com.android.sched.item.Description;
 import com.android.sched.schedulable.Access;
 import com.android.sched.schedulable.RunnableSchedulable;
 import com.android.sched.schedulable.Transform;
 import com.android.sched.schedulable.Use;
+import com.android.sched.util.config.ThreadConfig;
+
+import java.util.List;
 
 import javax.annotation.Nonnull;
 
@@ -33,16 +39,22 @@
 @Description("Refine JStringLiteral in fields into more specific string literals.")
 @Use(StringLiteralRefinerVisitor.class)
 @Transform(add = StringLiteralRefined.Field.class)
-// Uses StringLiteralRefinerVisitor which lookup types.
+// Uses StringLiteralRefinerVisitor which looks up types.
 @Access(JSession.class)
 public class FieldStringLiteralRefiner implements RunnableSchedulable<JField> {
 
+  @Nonnull
+  private final List<FilterSpecification> adaptClassStrings =
+      ThreadConfig.get(Options.FLAGS).getAdaptClassStrings();
+
   @Override
   public void run(@Nonnull JField field) {
-    TransformationRequest tr = new TransformationRequest(field);
-    StringLiteralRefinerVisitor visitor = new StringLiteralRefinerVisitor(tr);
-    visitor.accept(field);
-    tr.commit();
+    if (Flags.acceptClass(field.getEnclosingType(), adaptClassStrings)) {
+      TransformationRequest tr = new TransformationRequest(field);
+      StringLiteralRefinerVisitor visitor = new StringLiteralRefinerVisitor(tr);
+      visitor.accept(field);
+      tr.commit();
+    }
   }
 
 }
diff --git a/jack/src/com/android/jack/transformations/ast/string/MethodStringLiteralRefiner.java b/jack/src/com/android/jack/transformations/ast/string/MethodStringLiteralRefiner.java
index 0cc57c2..f3c02ed 100644
--- a/jack/src/com/android/jack/transformations/ast/string/MethodStringLiteralRefiner.java
+++ b/jack/src/com/android/jack/transformations/ast/string/MethodStringLiteralRefiner.java
@@ -16,14 +16,20 @@
 
 package com.android.jack.transformations.ast.string;
 
+import com.android.jack.Options;
 import com.android.jack.ir.ast.JMethod;
 import com.android.jack.ir.ast.JSession;
+import com.android.jack.shrob.spec.FilterSpecification;
+import com.android.jack.shrob.spec.Flags;
 import com.android.jack.transformations.request.TransformationRequest;
 import com.android.sched.item.Description;
 import com.android.sched.schedulable.Access;
 import com.android.sched.schedulable.RunnableSchedulable;
 import com.android.sched.schedulable.Transform;
 import com.android.sched.schedulable.Use;
+import com.android.sched.util.config.ThreadConfig;
+
+import java.util.List;
 
 import javax.annotation.Nonnull;
 
@@ -32,16 +38,23 @@
  */
 @Description("Refine JStringLiteral in methods into more specific string literals.")
 @Use(StringLiteralRefinerVisitor.class)
+// Uses StringLiteralRefinerVisitor which looks up types.
 @Access(JSession.class)
 @Transform(add = StringLiteralRefined.Method.class)
 public class MethodStringLiteralRefiner implements RunnableSchedulable<JMethod> {
 
+  @Nonnull
+  private final List<FilterSpecification> adaptClassStrings =
+      ThreadConfig.get(Options.FLAGS).getAdaptClassStrings();
+
   @Override
   public void run(@Nonnull JMethod method) {
-    TransformationRequest tr = new TransformationRequest(method);
-    StringLiteralRefinerVisitor visitor = new StringLiteralRefinerVisitor(tr);
-    visitor.accept(method);
-    tr.commit();
+    if (Flags.acceptClass(method.getEnclosingType(), adaptClassStrings)) {
+      TransformationRequest tr = new TransformationRequest(method);
+      StringLiteralRefinerVisitor visitor = new StringLiteralRefinerVisitor(tr);
+      visitor.accept(method);
+      tr.commit();
+    }
   }
 
 }
diff --git a/jack/src/com/android/jack/transformations/ast/string/ReflectionStringLiteralRefiner.java b/jack/src/com/android/jack/transformations/ast/string/ReflectionStringLiteralRefiner.java
index 5c2f03d..cbefc39 100644
--- a/jack/src/com/android/jack/transformations/ast/string/ReflectionStringLiteralRefiner.java
+++ b/jack/src/com/android/jack/transformations/ast/string/ReflectionStringLiteralRefiner.java
@@ -65,6 +65,7 @@
     AtomicReferenceUpdaterParameterRefiner.class,
     GetMethodParameterRefiner.class,
     GetDeclaredMethodParameterRefiner.class})
+// Uses refiners which look up types.
 @Access(JSession.class)
 public class ReflectionStringLiteralRefiner implements RunnableSchedulable<JMethod> {
 
diff --git a/jack/src/com/android/jack/transformations/ast/string/StringLiteralRefinerVisitor.java b/jack/src/com/android/jack/transformations/ast/string/StringLiteralRefinerVisitor.java
index 7761df3..c9c493b 100644
--- a/jack/src/com/android/jack/transformations/ast/string/StringLiteralRefinerVisitor.java
+++ b/jack/src/com/android/jack/transformations/ast/string/StringLiteralRefinerVisitor.java
@@ -62,16 +62,16 @@
   @Override
   public boolean visit(@Nonnull JStringLiteral stringLiteral) {
     String strValue = stringLiteral.getValue();
-    boolean hasDot = strValue.contains(".");
-    boolean hasSlash = strValue.contains("/");
+    boolean hasDot = strValue.indexOf('.') != -1;
+    boolean hasSlash = strValue.indexOf('/') != -1;
 
     if (hasDot && hasSlash) {
       // String mixing '.' and '/' is not considered as type.
       return false;
     }
 
-
-    JType type = getTypeFromString(strValue);
+    String signatureName = getSignatureName(strValue);
+    JType type = getTypeFromSignature(signatureName);
     if (type != null) {
       tr.append(new Replace(stringLiteral, new JTypeStringLiteral(stringLiteral.getSourceInfo(),
           hasDot ? Kind.SRC_QN : Kind.BINARY_QN, type)));
@@ -80,8 +80,7 @@
   }
 
   @CheckForNull
-  private JType getTypeFromString(@Nonnull String str) {
-    String signatureName = getSignatureName(str);
+  private JType getTypeFromSignature(@Nonnull String signatureName) {
     if (NamingTools.isTypeDescriptor(signatureName)) {
       try {
         JType type = lookup.getType(signatureName);
diff --git a/jack/src/com/android/jack/transformations/ast/string/TypeStringLiteralRefiner.java b/jack/src/com/android/jack/transformations/ast/string/TypeStringLiteralRefiner.java
index 81ea40c..107e691 100644
--- a/jack/src/com/android/jack/transformations/ast/string/TypeStringLiteralRefiner.java
+++ b/jack/src/com/android/jack/transformations/ast/string/TypeStringLiteralRefiner.java
@@ -16,14 +16,20 @@
 
 package com.android.jack.transformations.ast.string;
 
+import com.android.jack.Options;
 import com.android.jack.ir.ast.JDefinedClassOrInterface;
 import com.android.jack.ir.ast.JSession;
+import com.android.jack.shrob.spec.FilterSpecification;
+import com.android.jack.shrob.spec.Flags;
 import com.android.jack.transformations.request.TransformationRequest;
 import com.android.sched.item.Description;
 import com.android.sched.schedulable.Access;
 import com.android.sched.schedulable.RunnableSchedulable;
 import com.android.sched.schedulable.Transform;
 import com.android.sched.schedulable.Use;
+import com.android.sched.util.config.ThreadConfig;
+
+import java.util.List;
 
 import javax.annotation.Nonnull;
 
@@ -32,16 +38,23 @@
  */
 @Description("Refine JStringLiteral in types into more specific string literals.")
 @Use(StringLiteralRefinerVisitor.class)
+// Uses StringLiteralRefinerVisitor which looks up types.
 @Access(JSession.class)
 @Transform(add = StringLiteralRefined.Type.class)
 public class TypeStringLiteralRefiner implements RunnableSchedulable<JDefinedClassOrInterface> {
 
+  @Nonnull
+  private final List<FilterSpecification> adaptClassStrings =
+      ThreadConfig.get(Options.FLAGS).getAdaptClassStrings();
+
   @Override
   public void run(@Nonnull JDefinedClassOrInterface type) {
-    TransformationRequest tr = new TransformationRequest(type);
-    StringLiteralRefinerVisitor visitor = new StringLiteralRefinerVisitor(tr);
-    visitor.accept(type);
-    tr.commit();
+    if (Flags.acceptClass(type, adaptClassStrings)) {
+      TransformationRequest tr = new TransformationRequest(type);
+      StringLiteralRefinerVisitor visitor = new StringLiteralRefinerVisitor(tr);
+      visitor.accept(type.getAnnotations());
+      tr.commit();
+    }
   }
 
 }
diff --git a/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/CommonStringParameterRefiner.java b/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/CommonStringParameterRefiner.java
index 78de47c..8e1c463 100644
--- a/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/CommonStringParameterRefiner.java
+++ b/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/CommonStringParameterRefiner.java
@@ -25,6 +25,7 @@
 import com.android.jack.ir.ast.JExpression;
 import com.android.jack.ir.ast.JMethodCall;
 import com.android.jack.ir.ast.JReferenceType;
+import com.android.jack.ir.ast.JReinterpretCastOperation;
 import com.android.jack.ir.ast.JStringLiteral;
 import com.android.jack.ir.ast.JType;
 import com.android.jack.ir.formatter.BinarySignatureFormatter;
@@ -81,6 +82,9 @@
 
     if (arg instanceof JStringLiteral) {
       return (JStringLiteral) arg;
+    } else if (arg instanceof JReinterpretCastOperation
+        && ((JReinterpretCastOperation) arg).getExpr() instanceof JStringLiteral) {
+      return (JStringLiteral) ((JReinterpretCastOperation) arg).getExpr();
     }
 
     return null;
diff --git a/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/ForNameParameterRefiner.java b/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/ForNameParameterRefiner.java
index 1dfad29..91ec8f1 100644
--- a/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/ForNameParameterRefiner.java
+++ b/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/ForNameParameterRefiner.java
@@ -56,7 +56,7 @@
   @Override
   public boolean isApplicable(@Nonnull JMethodCall call) throws JMethodLookupException {
     if (call.getReceiverType().isSameType(javaLangClass)
-        && call.getMethodId().equals(forNameMethodId)) {
+        && call.getMethodIdWide().equals(forNameMethodId)) {
       assert call.getType().isSameType(javaLangClass);
       return true;
     }
@@ -79,11 +79,11 @@
     JType type;
     JTypeStringLiteral strTypeLiteral = null;
 
-    if (typeName.contains("/")) {
+    if (typeName.indexOf('/') != -1) {
       return null;
     }
 
-    if (typeName.startsWith("[")) {
+    if (typeName.charAt(0) == '[') {
       typeSignature = NamingTools.getBinaryName(typeName);
     } else {
       typeSignature = NamingTools.getTypeSignatureName(typeName);
diff --git a/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/GetDeclaredFieldsParameterRefiner.java b/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/GetDeclaredFieldsParameterRefiner.java
index 6588356..b4f1a04 100644
--- a/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/GetDeclaredFieldsParameterRefiner.java
+++ b/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/GetDeclaredFieldsParameterRefiner.java
@@ -50,7 +50,7 @@
   @Override
   public boolean isApplicable(@Nonnull JMethodCall call) throws JMethodLookupException {
     if (call.getReceiverType().isSameType(javaLangClass)
-        && call.getMethodId().equals(getFieldMethodId)) {
+        && call.getMethodIdWide().equals(getFieldMethodId)) {
       assert formatter.getName(call.getType()).equals(FIELD_CLASS_SIGNATURE);
       return true;
     }
diff --git a/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/GetDeclaredMethodParameterRefiner.java b/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/GetDeclaredMethodParameterRefiner.java
index a79731a..c01e695 100644
--- a/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/GetDeclaredMethodParameterRefiner.java
+++ b/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/GetDeclaredMethodParameterRefiner.java
@@ -61,7 +61,7 @@
   @Override
   public boolean isApplicable(@Nonnull JMethodCall call) throws JMethodLookupException {
     if (call.getReceiverType().isSameType(javaLangClass)
-        && call.getMethodId().equals(getDeclaredMethodMethodId)) {
+        && call.getMethodIdWide().equals(getDeclaredMethodMethodId)) {
       assert formatter.getName(call.getType()).equals(METHOD_CLASS_SIGNATURE);
       return true;
     }
diff --git a/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/GetFieldParameterRefiner.java b/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/GetFieldParameterRefiner.java
index ffb6841..9887454 100644
--- a/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/GetFieldParameterRefiner.java
+++ b/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/GetFieldParameterRefiner.java
@@ -56,7 +56,7 @@
   @Override
   public boolean isApplicable(@Nonnull JMethodCall call) throws JMethodLookupException {
     if (call.getReceiverType().isSameType(javaLangClass)
-        && call.getMethodId().equals(getFieldMethodId)) {
+        && call.getMethodIdWide().equals(getFieldMethodId)) {
       assert formatter.getName(call.getType()).equals(FIELD_CLASS_SIGNATURE);
       return true;
     }
diff --git a/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/GetMethodParameterRefiner.java b/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/GetMethodParameterRefiner.java
index 6b0d258..236c28b 100644
--- a/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/GetMethodParameterRefiner.java
+++ b/jack/src/com/android/jack/transformations/ast/string/parameterrefiners/GetMethodParameterRefiner.java
@@ -72,7 +72,7 @@
   @Override
   public boolean isApplicable(@Nonnull JMethodCall call) throws JMethodLookupException {
     if (call.getReceiverType().isSameType(javaLangClass)
-        && call.getMethodId().equals(getMethodMethodId)) {
+        && call.getMethodIdWide().equals(getMethodMethodId)) {
       assert formatter.getName(call.getType()).equals(METHOD_CLASS_SIGNATURE);
       return true;
     }
@@ -93,7 +93,7 @@
     JMethodNameLiteral strMethodLiteral = null;
     String methodName = paramToRefine.getValue();
     JDefinedClassOrInterface type = getTypeFromClassLiteralExpression(call.getInstance());
-    String methodSignature = getMethodSignature(call);
+    String methodSignature = getMethodSignature(methodName, call);
 
     if (type != null && methodSignature != null) {
       JMethod method = lookupMethod(type, methodSignature);
@@ -120,18 +120,17 @@
   }
 
   @CheckForNull
-  private String getMethodSignature(@Nonnull JMethodCall call) {
+  private String getMethodSignature(@Nonnull String methodName, @Nonnull JMethodCall call) {
     JExpression instance = call.getInstance();
     assert instance != null;
 
     List<JExpression> args = call.getArgs();
     assert args.size() == 2;
-    JExpression methodName = args.get(0);
     JExpression parameters = args.get(1);
 
-    if (methodName instanceof JStringLiteral && parameters instanceof JNewArray) {
-      StringBuilder sb = new StringBuilder(((JStringLiteral) methodName).getValue());
-      sb.append("(");
+    if (parameters instanceof JNewArray) {
+      StringBuilder sb = new StringBuilder(methodName);
+      sb.append('(');
       for (JExpression param : ((JNewArray) parameters).getInitializers()) {
         if (param instanceof JClassLiteral) {
           sb.append(Jack.getLookupFormatter().getName(((JClassLiteral) param).getRefType()));
@@ -140,7 +139,7 @@
         }
       }
 
-      sb.append(")");
+      sb.append(')');
       return sb.toString();
     }
 
diff --git a/jack/src/com/android/jack/transformations/ast/switches/SwitchStringSupport.java b/jack/src/com/android/jack/transformations/ast/switches/SwitchStringSupport.java
index 4217e4d..816ca7c 100644
--- a/jack/src/com/android/jack/transformations/ast/switches/SwitchStringSupport.java
+++ b/jack/src/com/android/jack/transformations/ast/switches/SwitchStringSupport.java
@@ -34,7 +34,7 @@
 import com.android.jack.ir.ast.JLocalRef;
 import com.android.jack.ir.ast.JMethod;
 import com.android.jack.ir.ast.JMethodCall;
-import com.android.jack.ir.ast.JMethodIdWide;
+import com.android.jack.ir.ast.JMethodId;
 import com.android.jack.ir.ast.JPrimitiveType.JPrimitiveTypeEnum;
 import com.android.jack.ir.ast.JSession;
 import com.android.jack.ir.ast.JStatement;
@@ -86,16 +86,15 @@
       ThreadConfig.get(Options.METHOD_FILTER);
 
   @Nonnull
-  private final JMethodIdWide equalsMethodId;
+  private final JMethodId equalsMethodId;
 
   {
     JSession session = Jack.getSession();
     JPhantomLookup lookup = session.getPhantomLookup();
     JClass jlo = lookup.getClass(CommonTypes.JAVA_LANG_OBJECT);
     JClass jls = lookup.getClass(CommonTypes.JAVA_LANG_STRING);
-    equalsMethodId =
-        jls.getMethodIdWide("equals", Collections.singletonList((JType) jlo),
-            MethodKind.INSTANCE_VIRTUAL);
+    equalsMethodId = jls.getMethodId("equals", Collections.singletonList((JType) jlo),
+        MethodKind.INSTANCE_VIRTUAL, JPrimitiveTypeEnum.BOOLEAN.getType());
 
   }
 
@@ -147,8 +146,7 @@
           tr.append(new Replace(caseStmt, labelStmt));
 
           JMethodCall equalsCall = new JMethodCall(dbgInfo, tempLocal.makeRef(dbgInfo),
-              (JClassOrInterface) switchStmt.getExpr().getType(), equalsMethodId,
-              JPrimitiveTypeEnum.BOOLEAN.getType(), true);
+              (JClassOrInterface) switchStmt.getExpr().getType(), equalsMethodId, true);
           equalsCall.addArg(caseExpr);
           JBlock thenBlock = new JBlock(dbgInfo);
           thenBlock.addStmt(new JGoto(dbgInfo, labelStmt));
diff --git a/jack/src/com/android/jack/transformations/enums/SwitchEnumSupport.java b/jack/src/com/android/jack/transformations/enums/SwitchEnumSupport.java
index 2fff026..bb88a5b 100644
--- a/jack/src/com/android/jack/transformations/enums/SwitchEnumSupport.java
+++ b/jack/src/com/android/jack/transformations/enums/SwitchEnumSupport.java
@@ -199,18 +199,19 @@
           JMethod getEnumSwitchValues = getSwitchValuesMethod(enumType);
 
           // Replace enum access by $SwitchesValues[x.ordinal()]
-          JMethodIdWide methodId = getEnumSwitchValues.getMethodIdWide();
-          JExpression callSwitchValues = new JMethodCall(
-              switchStmt.getSourceInfo(), null, getEnumSwitchValues.getEnclosingType(),
-              methodId, getEnumSwitchValues.getType(),
-              methodId.canBeVirtual());
+          JMethodId methodId = getEnumSwitchValues.getMethodId();
+        JExpression callSwitchValues = new JMethodCall(switchStmt.getSourceInfo(), null,
+            getEnumSwitchValues.getEnclosingType(), methodId,
+            methodId.getMethodIdWide().canBeVirtual());
 
-        JMethodIdWide ordinalMethodId = enumType.getOrCreateMethodIdWide(
-            ORDINAL, Collections.<JType>emptyList(), MethodKind.INSTANCE_VIRTUAL);
+        JMethodId ordinalMethodId =
+            enumType.getOrCreateMethodId(ORDINAL, Collections.<JType>emptyList(),
+                MethodKind.INSTANCE_VIRTUAL, JPrimitiveTypeEnum.INT.getType());
 
-          tr.append(new Replace(expr, new JArrayRef(SourceInfo.UNKNOWN, callSwitchValues,
-            new JMethodCall(SourceInfo.UNKNOWN, expr, enumType, ordinalMethodId,
-                JPrimitiveTypeEnum.INT.getType(), ordinalMethodId.canBeVirtual()))));
+        tr.append(new Replace(expr,
+            new JArrayRef(SourceInfo.UNKNOWN, callSwitchValues,
+                new JMethodCall(SourceInfo.UNKNOWN, expr, enumType, ordinalMethodId,
+                    ordinalMethodId.getMethodIdWide().canBeVirtual()))));
       }
       return super.visit(switchStmt);
     }
@@ -302,10 +303,9 @@
         }
 
         // int[] array = new int[enum.values().length]
-        JMethodIdWide valuesId = valuesMethod.getMethodIdWide();
+        JMethodId valuesId = valuesMethod.getMethodId();
         JExpression valuesLength = new JArrayLength(dbgInfo, new JMethodCall(dbgInfo,
-            null /* instance */, enumType, valuesId, valuesMethod.getType(),
-            valuesId.canBeVirtual()));
+            null /* instance */, enumType, valuesId, valuesId.getMethodIdWide().canBeVirtual()));
         List<JExpression> dimensions = new ArrayList<JExpression>();
         dimensions.add(valuesLength);
         bodyBlock.addStmt(new JAsgOperation(dbgInfo, arrayVar.makeRef(dbgInfo),
@@ -353,12 +353,11 @@
           JFieldId enumFieldId = enumField.getId();
           JExpression enumFieldAccess =
               new JFieldRef(dbgInfo, null /* instance */, enumFieldId, enumType);
-          JMethodIdWide ordinalMethodId = enumType.getOrCreateMethodIdWide(
-              ORDINAL, Collections.<JType>emptyList(), MethodKind.INSTANCE_VIRTUAL);
-          JExpression callOrdinal =
-              new JMethodCall(dbgInfo, enumFieldAccess, enumType, ordinalMethodId,
-                  JPrimitiveTypeEnum.INT.getType(),
-                  ordinalMethodId.canBeVirtual());
+          JMethodId ordinalMethodId =
+              enumType.getOrCreateMethodId(ORDINAL, Collections.<JType>emptyList(),
+                  MethodKind.INSTANCE_VIRTUAL, JPrimitiveTypeEnum.INT.getType());
+          JExpression callOrdinal = new JMethodCall(dbgInfo, enumFieldAccess, enumType,
+              ordinalMethodId, ordinalMethodId.getMethodIdWide().canBeVirtual());
 
           int constant;
           assert usedEnumFields != null;
diff --git a/jack/src/com/android/jack/transformations/OptimizedSwitchEnumFeedbackFeature.java b/jack/src/com/android/jack/transformations/enums/opt/OptimizedSwitchEnumFeedbackFeature.java
similarity index 89%
rename from jack/src/com/android/jack/transformations/OptimizedSwitchEnumFeedbackFeature.java
rename to jack/src/com/android/jack/transformations/enums/opt/OptimizedSwitchEnumFeedbackFeature.java
index 7bc01ea..f740a1c 100644
--- a/jack/src/com/android/jack/transformations/OptimizedSwitchEnumFeedbackFeature.java
+++ b/jack/src/com/android/jack/transformations/enums/opt/OptimizedSwitchEnumFeedbackFeature.java
@@ -14,9 +14,8 @@
  * limitations under the License.
  */
 
-package com.android.jack.transformations;
+package com.android.jack.transformations.enums.opt;
 
-import com.android.jack.transformations.enums.opt.OptimizedSwitchEnumSupport;
 import com.android.sched.item.Description;
 import com.android.sched.item.Feature;
 import com.android.sched.item.Name;
diff --git a/jack/src/com/android/jack/transformations/OptimizedSwitchEnumNonFeedbackFeature.java b/jack/src/com/android/jack/transformations/enums/opt/OptimizedSwitchEnumNonFeedbackFeature.java
similarity index 89%
rename from jack/src/com/android/jack/transformations/OptimizedSwitchEnumNonFeedbackFeature.java
rename to jack/src/com/android/jack/transformations/enums/opt/OptimizedSwitchEnumNonFeedbackFeature.java
index dda415c..6a2cb06 100644
--- a/jack/src/com/android/jack/transformations/OptimizedSwitchEnumNonFeedbackFeature.java
+++ b/jack/src/com/android/jack/transformations/enums/opt/OptimizedSwitchEnumNonFeedbackFeature.java
@@ -14,9 +14,8 @@
  * limitations under the License.
  */
 
-package com.android.jack.transformations;
+package com.android.jack.transformations.enums.opt;
 
-import com.android.jack.transformations.enums.opt.OptimizedSwitchEnumSupport;
 import com.android.sched.item.Description;
 import com.android.sched.item.Feature;
 import com.android.sched.item.Name;
diff --git a/jack/src/com/android/jack/transformations/enums/opt/OptimizedSwitchEnumSupport.java b/jack/src/com/android/jack/transformations/enums/opt/OptimizedSwitchEnumSupport.java
index c7b2f76..00decd8 100644
--- a/jack/src/com/android/jack/transformations/enums/opt/OptimizedSwitchEnumSupport.java
+++ b/jack/src/com/android/jack/transformations/enums/opt/OptimizedSwitchEnumSupport.java
@@ -50,6 +50,8 @@
 import com.android.jack.ir.ast.JTryStatement;
 import com.android.jack.ir.ast.JType;
 import com.android.jack.ir.ast.JVisitor;
+import com.android.jack.library.DumpInLibrary;
+import com.android.jack.library.PrebuiltCompatibility;
 import com.android.jack.scheduling.filter.SourceTypeFilter;
 import com.android.jack.shrob.obfuscation.OriginalNames;
 import com.android.jack.transformations.LocalVarCreator;
@@ -67,8 +69,9 @@
 import com.android.sched.schedulable.RunnableSchedulable;
 import com.android.sched.schedulable.Transform;
 import com.android.sched.schedulable.Use;
+import com.android.sched.util.config.HasKeyId;
+import com.android.sched.util.config.id.EnumPropertyId;
 
-import java.util.Collections;
 import java.util.Map;
 
 import javax.annotation.CheckForNull;
@@ -99,7 +102,22 @@
 @Filter(SourceTypeFilter.class)
 // This schedulable modifies a class (that it added in a previous run) that it is not visiting.
 @ExclusiveAccess(JSession.class)
+@HasKeyId
 public class OptimizedSwitchEnumSupport implements RunnableSchedulable<JMethod> {
+
+  /**
+   * property used to specify the kind of switch enum optimization that is enabled. See(@link
+   * SwitchEnumOptStrategy)
+   */
+  @Nonnull
+  public static final EnumPropertyId<SwitchEnumOptStrategy> OPTIMIZED_ENUM_SWITCH =
+      EnumPropertyId.create(
+              "jack.optimization.enum.switch", "Optimize enum switch", SwitchEnumOptStrategy.class)
+          .addDefaultValue(SwitchEnumOptStrategy.NEVER)
+          .ignoreCase()
+          .addCategory(DumpInLibrary.class)
+          .addCategory(PrebuiltCompatibility.class);
+
   // switch map filler which will fills synthetic switch map field and initializer
   @Nonnull
   private final SwitchMapClassFiller classFiller = new SwitchMapClassFiller();
@@ -187,17 +205,16 @@
         // create expression representing call to synthetic switch map initializer
         JExpression getSwitchMapInvocExpr =
             new JMethodCall(switchStmt.getSourceInfo(), null /*static method*/, switchMapClass,
-                syntheticInitializer.getMethodIdWide(), syntheticInitializer.getType(),
+                syntheticInitializer.getMethodId(),
                 syntheticInitializer.canBeVirtual());
 
-        JMethod ordinalMethod =
-            Jack.getSession().getLookup().getClass("Ljava/lang/Enum;").
-            getMethod("ordinal", JPrimitiveTypeEnum.INT.getType(), Collections.<JType>emptyList());
+        JMethod ordinalMethod = Jack.getSession().getLookup().getClass("Ljava/lang/Enum;")
+            .getMethod("ordinal", JPrimitiveTypeEnum.INT.getType());
 
         transformRequest.append(
             new Replace(switchExpr, new JArrayRef(switchStmt.getSourceInfo(), getSwitchMapInvocExpr,
                     new JMethodCall(switchStmt.getSourceInfo(), switchExpr, enumType,
-                        ordinalMethod.getMethodIdWide(), ordinalMethod.getType(),
+                        ordinalMethod.getMethodId(),
                         ordinalMethod.canBeVirtual()))));
       }
       // keep traversing because case statement needs transformation as well
diff --git a/jack/src/com/android/jack/transformations/enums/opt/SwitchEnumOptStrategy.java b/jack/src/com/android/jack/transformations/enums/opt/SwitchEnumOptStrategy.java
new file mode 100644
index 0000000..1e06882
--- /dev/null
+++ b/jack/src/com/android/jack/transformations/enums/opt/SwitchEnumOptStrategy.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.jack.transformations.enums.opt;
+
+import com.android.sched.util.codec.EnumName;
+import com.android.sched.util.codec.VariableName;
+
+/**
+ * Types of switch enum optimization strategies.
+ * 1. feedback (set on by default)
+ * 2. always
+ * 3. never
+ */
+@VariableName("strategy")
+public enum SwitchEnumOptStrategy {
+  // feedback-based optimization: this strategy will be enabled/disabled based on the
+  // compile time information collected, e.g., if it is detected that an enum is only
+  // used in one/few switch statements, it is useless to optimize it. Potentially enable
+  // this strategy will cost more compilation time, but save more dex code
+  @EnumName(name = "feedback")
+  FEEDBACK(),
+  // different from feedback-based optimization, always strategy doesn't collect compile-
+  // time information to guide switch enum optimization. It will always enable switch enum
+  // optimization no matter the enum is rarely/frequently used. Ideally this strategy will
+  // compile code quicker than feedback-based strategy does, but the generated dex may be
+  // larger than feedback strategy
+  @EnumName(name = "always")
+  ALWAYS(),
+  // this actually is not real strategy, but we still need it because switch enum
+  // optimization is disabled when incremental compilation is triggered
+  @EnumName(name = "never")
+  NEVER();
+}
\ No newline at end of file
diff --git a/jack/src/com/android/jack/transformations/enums/opt/SwitchMapClassFiller.java b/jack/src/com/android/jack/transformations/enums/opt/SwitchMapClassFiller.java
index f20a486..ece9c20 100644
--- a/jack/src/com/android/jack/transformations/enums/opt/SwitchMapClassFiller.java
+++ b/jack/src/com/android/jack/transformations/enums/opt/SwitchMapClassFiller.java
@@ -202,8 +202,7 @@
       JMethodCall superCall = new JMethodCall(SourceInfo.UNKNOWN,
           thisRef,
           objectClass,
-          superConstruct.getMethodIdWide(),
-          JPrimitiveTypeEnum.VOID.getType(),
+          superConstruct.getMethodId(),
           superConstruct.canBeVirtual());
       transformRequest.append(new AppendStatement(block, superCall.makeStatement()));
 
@@ -389,8 +388,7 @@
         new JMethodCall(SourceInfo.UNKNOWN,
             null /* instance */,
             enumType,
-            valuesMethod.getMethodIdWide(),
-            valuesMethod.getType(),
+            valuesMethod.getMethodId(),
             valuesMethod.canBeVirtual()));
 
     JLocal switchmapLocal = createSwitchmapArrayStatement(
@@ -461,8 +459,7 @@
           SourceInfo.UNKNOWN,
           enumFieldExpr,
           enumType,
-          ordinalMethod.getMethodIdWide(),
-          JPrimitiveTypeEnum.INT.getType(),
+          ordinalMethod.getMethodId(),
           ordinalMethod.canBeVirtual());
 
       transformRequest.append(new AppendStatement(tryBlock,
diff --git a/jack/src/com/android/jack/transformations/enums/opt/SyntheticClassManager.java b/jack/src/com/android/jack/transformations/enums/opt/SyntheticClassManager.java
index 3ab512f..be6bba0 100644
--- a/jack/src/com/android/jack/transformations/enums/opt/SyntheticClassManager.java
+++ b/jack/src/com/android/jack/transformations/enums/opt/SyntheticClassManager.java
@@ -21,8 +21,6 @@
 import com.google.common.collect.Sets;
 
 import com.android.jack.Jack;
-import com.android.jack.Options;
-import com.android.jack.Options.SwitchEnumOptStrategy;
 import com.android.jack.ir.ast.JDefinedClass;
 import com.android.jack.ir.ast.JDefinedClassOrInterface;
 import com.android.jack.ir.ast.JDefinedEnum;
@@ -79,7 +77,7 @@
 
   @Nonnull
   private final SwitchEnumOptStrategy optimizationStrategy =
-    ThreadConfig.get(Options.OPTIMIZED_ENUM_SWITCH);
+    ThreadConfig.get(OptimizedSwitchEnumSupport.OPTIMIZED_ENUM_SWITCH);
 
   // this map represents relationship from the package to synthetic class. There should only be
   // one synthetic class at most per package. Synthetic class cannot be located anywhere because
@@ -366,14 +364,14 @@
           sortedEnumType.getMarker(EnumFieldMarker.class);
       assert enumFieldMarker != null;
       sb.append(Jack.getLookupFormatter().getName(sortedEnumType));
-      sb.append(":");
+      sb.append(':');
       enumFieldMarker.sortEnumFields();
       List<JEnumField> sortedEnumFields = enumFieldMarker.getEnumFields();
       for (JEnumField enumField : sortedEnumFields) {
         sb.append(enumField.getName());
-        sb.append(",");
+        sb.append(',');
       }
-      sb.append(".");
+      sb.append('.');
     }
     String sig = sb.toString();
     sb.delete(0, sb.length());
diff --git a/jack/src/com/android/jack/transformations/finallyblock/FinallyRemover.java b/jack/src/com/android/jack/transformations/finallyblock/FinallyRemover.java
index 0e253c5..6367c0c 100644
--- a/jack/src/com/android/jack/transformations/finallyblock/FinallyRemover.java
+++ b/jack/src/com/android/jack/transformations/finallyblock/FinallyRemover.java
@@ -268,6 +268,7 @@
 
         // Find the previous try statement which will catch exceptions.
         while (!(stmt instanceof JTryStatement) && !(stmt instanceof JMethodBody)) {
+          assert stmt != null;
           previous = stmt;
           stmt = stmt.getParent();
         }
@@ -402,6 +403,7 @@
     private boolean isBranchingOutsideOfTryStatement(@Nonnull JGoto gotoStatement) {
       JNode parent = gotoStatement.getTargetBlock().getParent();
       while (parent != tryStmt && !(parent instanceof JMethodBody)) {
+        assert parent != null;
         parent = parent.getParent();
       }
       if (parent == tryStmt) {
diff --git a/jack/src/com/android/jack/transformations/lambda/LambdaCollection.java b/jack/src/com/android/jack/transformations/lambda/LambdaCollection.java
index b1e3e4e..1882659 100644
--- a/jack/src/com/android/jack/transformations/lambda/LambdaCollection.java
+++ b/jack/src/com/android/jack/transformations/lambda/LambdaCollection.java
@@ -45,11 +45,11 @@
 import java.nio.charset.StandardCharsets;
 import java.security.MessageDigest;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.TreeMap;
 import java.util.TreeSet;
 import java.util.concurrent.ConcurrentHashMap;
-import javax.annotation.Nonnegative;
 import javax.annotation.Nonnull;
 
 /**
@@ -214,14 +214,14 @@
    * </pre>
    */
   void createLambdaClassGroups(@Nonnull JSession session) {
-    int nextId = 0;
     // Create a map sorted by key to ensure a stable order
     // of the created lambda group classes
+    Map<String, Integer> typeHashConflicts = new HashMap<>();
     TreeMap<Key, ConcurrentHashMap<String, JLambda>> sorted = new TreeMap<>(lambdaClassSets);
     for (Map.Entry<Key, ConcurrentHashMap<String, JLambda>> entry : sorted.entrySet()) {
       // Create a group class to represent lambda group
-      JDefinedClass groupClass = createGroupClass(
-          nextId++, session, entry.getKey().pkg, getLambdaTypesHash(entry.getValue().values()));
+      JDefinedClass groupClass = createGroupClass(session, entry.getKey().pkg,
+          getLambdaTypesHash(entry.getValue().values()), typeHashConflicts);
 
       LambdaGroup lambdaGroup = new LambdaGroup(
           entry.getValue(), groupClass, entry.getKey().captureSignature);
@@ -248,16 +248,28 @@
       digest.update(name.getBytes(StandardCharsets.UTF_8));
       digest.update((byte) 0);
     }
-    return BaseEncoding.base64Url().omitPadding().encode(digest.digest());
+    String encode = BaseEncoding.base64Url().omitPadding().encode(digest.digest());
+    assert encode != null;
+    return encode;
   }
 
   @Nonnull
-  private JDefinedClass createGroupClass(@Nonnegative int id,
-      @Nonnull JSession session, @Nonnull JPackage pkg, @Nonnull String typesHash) {
+  private JDefinedClass createGroupClass(@Nonnull JSession session, @Nonnull JPackage pkg,
+      @Nonnull String typesHash, @Nonnull Map<String, Integer> typeHashConflicts) {
+    String lambdaClassName =
+        NamingTools.getNonSourceConflictingName(LAMBDA_GROUP_CLASS_NAME_PREFIX + typesHash);
+    Integer count = typeHashConflicts.get(typesHash);
+    if (count == null) {
+      typeHashConflicts.put(typesHash, Integer.valueOf(0));
+    } else {
+      int nextId = count.intValue() + 1;
+      lambdaClassName += "$" + nextId;
+      typeHashConflicts.put(typesHash, Integer.valueOf(nextId));
+    }
+
     // Create a class
-    JDefinedClass groupClass = new JDefinedClass(SourceInfo.UNKNOWN,
-        NamingTools.getNonSourceConflictingName(
-            LAMBDA_GROUP_CLASS_NAME_PREFIX + id + "$" + typesHash),
+    JDefinedClass groupClass = new JDefinedClass(
+        SourceInfo.UNKNOWN, lambdaClassName,
         JModifier.FINAL | JModifier.SYNTHETIC,
         pkg, NopClassOrInterfaceLoader.INSTANCE);
     groupClass.setSuperClass(javaLangObject);
diff --git a/jack/src/com/android/jack/transformations/lambda/LambdaGroupClassFinalizer.java b/jack/src/com/android/jack/transformations/lambda/LambdaGroupClassFinalizer.java
index 3b70569..e306dc9 100644
--- a/jack/src/com/android/jack/transformations/lambda/LambdaGroupClassFinalizer.java
+++ b/jack/src/com/android/jack/transformations/lambda/LambdaGroupClassFinalizer.java
@@ -46,6 +46,7 @@
 import com.android.jack.ir.ast.JParameter;
 import com.android.jack.ir.ast.JParameterRef;
 import com.android.jack.ir.ast.JPrimitiveType;
+import com.android.jack.ir.ast.JPrimitiveType.JPrimitiveTypeEnum;
 import com.android.jack.ir.ast.JReturnStatement;
 import com.android.jack.ir.ast.JSession;
 import com.android.jack.ir.ast.JShortLiteral;
@@ -60,6 +61,8 @@
 import com.android.jack.ir.types.JIntegralType32;
 import com.android.jack.lookup.CommonTypes;
 import com.android.jack.lookup.JPhantomLookup;
+import com.android.jack.scheduling.filter.TypeWithoutPrebuiltFilter;
+import com.android.jack.transformations.ast.NewInstanceRemoved;
 import com.android.jack.transformations.request.AppendField;
 import com.android.jack.transformations.request.AppendMethod;
 import com.android.jack.transformations.request.AppendStatement;
@@ -68,6 +71,7 @@
 import com.android.sched.item.Description;
 import com.android.sched.schedulable.Constraint;
 import com.android.sched.schedulable.ExclusiveAccess;
+import com.android.sched.schedulable.Filter;
 import com.android.sched.schedulable.RunnableSchedulable;
 import com.android.sched.schedulable.Support;
 import com.android.sched.schedulable.Transform;
@@ -78,6 +82,7 @@
 import java.util.Collections;
 import java.util.List;
 import java.util.TreeMap;
+
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnegative;
 import javax.annotation.Nonnull;
@@ -85,14 +90,16 @@
 /** Finishing lambda group classes construction */
 @Description("Lambdas optimization, finishing lambda group classes construction")
 @Constraint(need = LambdaGroupMarker.class)
-@Transform(add = { JAsgOperation.class, JBlock.class, JByteLiteral.class, JConstructor.class,
-                   JDynamicCastOperation.class, JField.class, JFieldRef.class, JIntLiteral.class,
-                   JMethod.class, JMethodBody.class, JMethodCall.class, JNewInstance.class,
-                   JParameter.class, JParameterRef.class, JReturnStatement.class,
-                   JShortLiteral.class, JSwitchStatement.class, JThisRef.class,
-                   JThrowStatement.class, LambdaInfoMarker.class })
+@Transform(
+    add = {JAsgOperation.class, JBlock.class, JByteLiteral.class, JConstructor.class,
+           JDynamicCastOperation.class, JField.class, JFieldRef.class, JIntLiteral.class,
+           JMethod.class, JMethodBody.class, JMethodCall.class, JNewInstance.class,
+           JParameter.class, JParameterRef.class, JReturnStatement.class, JShortLiteral.class,
+           JSwitchStatement.class, JThisRef.class, JThrowStatement.class, LambdaInfoMarker.class},
+    remove = {NewInstanceRemoved.class})
 @ExclusiveAccess(JSession.class)
 @Support(LambdaToAnonymousConverter.class)
+@Filter(TypeWithoutPrebuiltFilter.class)
 public final class LambdaGroupClassFinalizer
     implements RunnableSchedulable<JDefinedClassOrInterface> {
 
@@ -426,11 +433,11 @@
       assert thisLocal != null;
 
       // super()
-      JMethodIdWide superConstructor = javaLangObject.getOrCreateMethodIdWide(
-          NamingTools.INIT_NAME, Collections.<JType>emptyList(), MethodKind.INSTANCE_NON_VIRTUAL);
+      JMethodId superConstructor =
+          javaLangObject.getOrCreateMethodId(NamingTools.INIT_NAME, Collections.<JType>emptyList(),
+              MethodKind.INSTANCE_NON_VIRTUAL, JPrimitiveType.JPrimitiveTypeEnum.VOID.getType());
       JMethodCall superCall = new JMethodCall(SourceInfo.UNKNOWN,
-          thisLocal.makeRef(SourceInfo.UNKNOWN), javaLangObject,
-          superConstructor, JPrimitiveType.JPrimitiveTypeEnum.VOID.getType(), false);
+          thisLocal.makeRef(SourceInfo.UNKNOWN), javaLangObject, superConstructor, false);
       request.append(new AppendStatement(block, superCall.makeStatement()));
 
       // Add $id assignment if needed
@@ -510,9 +517,7 @@
         // Generate a body of the main method
         JMethodIdRef lambdaMethodIdRef = lambda.getMethodIdRef();
         JMethodId methodId = lambdaMethodIdRef.getMethodId();
-        JMethod lambdaMethod = lambdaMethodIdRef.getEnclosingType()
-            .getMethod(methodId.getMethodIdWide().getName(), methodId.getType(),
-                methodId.getMethodIdWide().getParamTypes());
+        JMethod lambdaMethod = lambdaMethodIdRef.getEnclosingType().getMethod(methodId);
 
         LambdaInfoMarker marker = lambda.getMarker(LambdaInfoMarker.class);
         assert marker != null;
@@ -590,10 +595,9 @@
       JBlock bodyBlock = new JBlock(SourceInfo.UNKNOWN);
       JMethodBody body = new JMethodBody(SourceInfo.UNKNOWN, bodyBlock);
 
-      JMethodCall call = new JMethodCall(SourceInfo.UNKNOWN,
-          calleeThisRef, callee.getEnclosingType(),
-          callee.getMethodId().getMethodIdWide(), callee.getType(),
-          !callee.isStatic() && !callee.isPrivate());
+      JMethodCall call =
+          new JMethodCall(SourceInfo.UNKNOWN, calleeThisRef, callee.getEnclosingType(),
+              callee.getMethodId(), !callee.isStatic() && !callee.isPrivate());
 
       // Build call arguments, reshuffled captures first, then arguments
       List<JParameter> callerParams = caller.getParams();
@@ -777,11 +781,10 @@
       request.append(new AppendStatement(mainSwitchBlock, defaultCase));
       JBlock next = new JBlock(SourceInfo.UNKNOWN);
       request.append(new AppendStatement(mainSwitchBlock, next));
-      JNewInstance newAssertionError = new JNewInstance(
-          SourceInfo.UNKNOWN, javaLangAssertionError,
-          javaLangAssertionError.getOrCreateMethodIdWide(
-              NamingTools.INIT_NAME, Collections.<JType>emptyList(),
-              MethodKind.INSTANCE_NON_VIRTUAL));
+      JNewInstance newAssertionError = new JNewInstance(SourceInfo.UNKNOWN, javaLangAssertionError,
+          javaLangAssertionError.getOrCreateMethodId(NamingTools.INIT_NAME,
+              Collections.<JType>emptyList(), MethodKind.INSTANCE_NON_VIRTUAL,
+              JPrimitiveTypeEnum.VOID.getType()));
       JThrowStatement throwStmt =
           new JThrowStatement(SourceInfo.UNKNOWN, newAssertionError);
       request.append(new AppendStatement(next, throwStmt));
@@ -810,7 +813,7 @@
       JType returnType = method.getType();
       JMethodCall call = new JMethodCall(SourceInfo.UNKNOWN,
           self.makeRef(SourceInfo.UNKNOWN), this.group.getGroupClass(),
-          method.getMethodIdWide(), returnType, false /* method is private */);
+          method.getMethodId(), false /* method is private */);
 
       for (JParameter param : params) {
         call.addArg(param.makeRef(SourceInfo.UNKNOWN));
diff --git a/jack/src/com/android/jack/transformations/lambda/LambdaInfoMarker.java b/jack/src/com/android/jack/transformations/lambda/LambdaInfoMarker.java
index 2b1420d..2225f0f 100644
--- a/jack/src/com/android/jack/transformations/lambda/LambdaInfoMarker.java
+++ b/jack/src/com/android/jack/transformations/lambda/LambdaInfoMarker.java
@@ -24,7 +24,7 @@
 import com.android.jack.ir.ast.JIntLiteral;
 import com.android.jack.ir.ast.JLambda;
 import com.android.jack.ir.ast.JMethod;
-import com.android.jack.ir.ast.JMethodIdWide;
+import com.android.jack.ir.ast.JMethodId;
 import com.android.jack.ir.ast.JNewInstance;
 import com.android.jack.ir.ast.JShortLiteral;
 import com.android.jack.ir.ast.JType;
@@ -39,6 +39,7 @@
 import com.android.sched.schedulable.Transform;
 
 import java.util.List;
+
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnegative;
 import javax.annotation.Nonnull;
@@ -58,9 +59,9 @@
   @CheckForNull
   private final JField instanceField;
   /** Lambda class id or NO_LAMBDA_ID */
-  private int lambdaId;
+  private final int lambdaId;
   @Nonnull
-  private int[] captureMapping;
+  private final int[] captureMapping;
 
   LambdaInfoMarker(@Nonnull JDefinedClass groupClass,
       @CheckForNull JField instanceField, int lambdaId, @Nonnull int[] captureMapping) {
@@ -119,8 +120,8 @@
       @Nonnull TransformationRequest request, @Nonnull JConstructor constructor,
       @Nonnull List<JExpression> args, @Nonnull SourceInfo sourceInfo) {
 
-    JMethodIdWide constructorIdWide = constructor.getMethodIdWide();
-    List<JType> paramTypes = constructorIdWide.getParamTypes();
+    JMethodId constructorId = constructor.getMethodId();
+    List<JType> paramTypes = constructorId.getMethodIdWide().getParamTypes();
     JExpression[] newArgs = new JExpression[paramTypes.size()];
     int offset = 0;
 
@@ -147,7 +148,7 @@
 
     // Create instance creation
     JNewInstance newNode = new JNewInstance(
-        sourceInfo, this.groupClass, constructorIdWide);
+        sourceInfo, this.groupClass, constructorId);
     for (JExpression newArg : newArgs) {
       assert newArg != null;
       request.append(new AppendArgument(newNode, newArg));
diff --git a/jack/src/com/android/jack/transformations/request/AddNameValuePair.java b/jack/src/com/android/jack/transformations/request/AddNameValuePair.java
index 3c6fafd..cfa97d4 100644
--- a/jack/src/com/android/jack/transformations/request/AddNameValuePair.java
+++ b/jack/src/com/android/jack/transformations/request/AddNameValuePair.java
@@ -18,6 +18,7 @@
 
 import com.android.jack.ir.ast.JAnnotation;
 import com.android.jack.ir.ast.JNameValuePair;
+import com.android.jack.ir.ast.JNode;
 import com.android.sched.transform.TransformStep;
 
 import javax.annotation.Nonnull;
@@ -54,12 +55,14 @@
   @Override
   @Nonnull
   public String toString() {
+    JNode annotationParent = annotation.getParent();
+    assert annotationParent != null;
     StringBuilder sb = new StringBuilder("Add ");
     sb.append(pair.toSource());
     sb.append(" in ");
     sb.append(annotation.toSource());
     sb.append(" on ");
-    sb.append(annotation.getParent().toSource());
+    sb.append(annotationParent.toSource());
     return sb.toString();
   }
 }
diff --git a/jack/src/com/android/jack/transformations/request/AppendBefore.java b/jack/src/com/android/jack/transformations/request/AppendBefore.java
index 43969cd..25f6184 100644
--- a/jack/src/com/android/jack/transformations/request/AppendBefore.java
+++ b/jack/src/com/android/jack/transformations/request/AppendBefore.java
@@ -50,21 +50,24 @@
 
   @Override
   public void apply() throws UnsupportedOperationException {
-    if (existingNode.getParent() == null) {
+    final JNode existingNodeParent = existingNode.getParent();
+    if (existingNodeParent == null) {
       throw new UnsupportedOperationException();
     }
-    existingNode.getParent().insertBefore(existingNode, newNode);
+    existingNodeParent.insertBefore(existingNode, newNode);
   }
 
   @Override
   @Nonnull
   public String toString() {
+    final JNode existingNodeParent = existingNode.getParent();
+    assert existingNodeParent != null;
     StringBuilder sb = new StringBuilder("Append ");
     sb.append(newNode.toSource());
     sb.append(" before ");
     sb.append(existingNode.toSource());
     sb.append(" in ");
-    sb.append(existingNode.getParent().toSource());
+    sb.append(existingNodeParent.toSource());
     return sb.toString();
   }
 
diff --git a/jack/src/com/android/jack/transformations/request/PrependAfter.java b/jack/src/com/android/jack/transformations/request/PrependAfter.java
index 1b49e46..32b7903 100644
--- a/jack/src/com/android/jack/transformations/request/PrependAfter.java
+++ b/jack/src/com/android/jack/transformations/request/PrependAfter.java
@@ -50,21 +50,24 @@
 
   @Override
   public void apply() throws UnsupportedOperationException {
-    if (existingNode.getParent() == null) {
+    final JNode existingNodeParent = existingNode.getParent();
+    if (existingNodeParent == null) {
       throw new UnsupportedOperationException();
     }
-    existingNode.getParent().insertAfter(existingNode, newNode);
+    existingNodeParent.insertAfter(existingNode, newNode);
   }
 
   @Override
   @Nonnull
   public String toString() {
+    final JNode existingNodeParent = existingNode.getParent();
+    assert existingNodeParent != null;
     StringBuilder sb = new StringBuilder("Prepend ");
     sb.append(newNode.toSource());
     sb.append(" after ");
     sb.append(existingNode.toSource());
     sb.append(" in ");
-    sb.append(existingNode.getParent().toSource());
+    sb.append(existingNodeParent.toSource());
     return sb.toString();
   }
 
diff --git a/jack/src/com/android/jack/transformations/request/PutNameValuePair.java b/jack/src/com/android/jack/transformations/request/PutNameValuePair.java
index 5c98e49..aef0557 100644
--- a/jack/src/com/android/jack/transformations/request/PutNameValuePair.java
+++ b/jack/src/com/android/jack/transformations/request/PutNameValuePair.java
@@ -18,6 +18,7 @@
 
 import com.android.jack.ir.ast.JAnnotation;
 import com.android.jack.ir.ast.JNameValuePair;
+import com.android.jack.ir.ast.JNode;
 
 import javax.annotation.Nonnull;
 
@@ -54,12 +55,14 @@
   @Override
   @Nonnull
   public String toString() {
+    final JNode annotationParent = annotation.getParent();
+    assert annotationParent != null;
     StringBuilder sb = new StringBuilder("Put ");
     sb.append(pair.toSource());
     sb.append(" in ");
     sb.append(annotation.toSource());
     sb.append(" on ");
-    sb.append(annotation.getParent().toSource());
+    sb.append(annotationParent.toSource());
     return sb.toString();
   }
 }
diff --git a/jack/src/com/android/jack/transformations/request/Remove.java b/jack/src/com/android/jack/transformations/request/Remove.java
index 6dd2ccb..61b9941 100644
--- a/jack/src/com/android/jack/transformations/request/Remove.java
+++ b/jack/src/com/android/jack/transformations/request/Remove.java
@@ -41,18 +41,21 @@
 
   @Override
   public void apply() throws UnsupportedOperationException {
-    if (node.getParent() == null) {
+    final JNode parent = node.getParent();
+    if (parent == null) {
       throw new UnsupportedOperationException();
     }
-    node.getParent().remove(node);
+    parent.remove(node);
   }
 
   @Override
   public String toString() {
+    final JNode parent = node.getParent();
+    assert parent != null;
     StringBuilder sb = new StringBuilder("Remove ");
     sb.append(node.toSource());
     sb.append(" in ");
-    sb.append(node.getParent().toSource());
+    sb.append(parent.toSource());
     return sb.toString();
   }
 
diff --git a/jack/src/com/android/jack/transformations/request/Replace.java b/jack/src/com/android/jack/transformations/request/Replace.java
index 57a2e4f..d766999 100644
--- a/jack/src/com/android/jack/transformations/request/Replace.java
+++ b/jack/src/com/android/jack/transformations/request/Replace.java
@@ -48,21 +48,24 @@
 
   @Override
   public void apply() throws UnsupportedOperationException {
-    if (existingNode.getParent() == null) {
+    final JNode existingNodeParent = existingNode.getParent();
+    if (existingNodeParent == null) {
       throw new UnsupportedOperationException();
     }
-    existingNode.getParent().replace(existingNode, newNode);
+    existingNodeParent.replace(existingNode, newNode);
   }
 
   @Override
   @Nonnull
   public String toString() {
+    final JNode existingNodeParent = existingNode.getParent();
+    assert existingNodeParent != null;
     StringBuilder sb = new StringBuilder("Replace ");
     sb.append(existingNode.toSource());
     sb.append(" with ");
     sb.append(newNode.toSource());
     sb.append(" in ");
-    sb.append(existingNode.getParent().toSource());
+    sb.append(existingNodeParent.toSource());
     return sb.toString();
   }
 }
diff --git a/jack/src/com/android/jack/transformations/threeaddresscode/ThreeAddressCodeBuilder.java b/jack/src/com/android/jack/transformations/threeaddresscode/ThreeAddressCodeBuilder.java
index 62931b0..8ed5513 100644
--- a/jack/src/com/android/jack/transformations/threeaddresscode/ThreeAddressCodeBuilder.java
+++ b/jack/src/com/android/jack/transformations/threeaddresscode/ThreeAddressCodeBuilder.java
@@ -87,7 +87,8 @@
  */
 @Description("Transform body of a JMethod to into a three address form.")
 @Name("ThreeAddressCodeBuilder")
-@Constraint(need = {NoImplicitBlock.class, SourceCast.class}, no = {BooleanTestOutsideIf.class,
+@Constraint(need = {NoImplicitBlock.class, SourceCast.class, DefinitionMarker.class},
+  no = {BooleanTestOutsideIf.class,
     InitInNewArray.class, JAssertStatement.class, JAsgOperation.class, JFieldInitializer.class,
     JConditionalOperation.class, JLoop.class, JCastOperation.WithIntersectionType.class})
 @Transform(add = {ThreeAddressCodeForm.class,
diff --git a/jack/src/com/android/jack/transformations/threeaddresscode/ThreeAddressCodeChecker.java b/jack/src/com/android/jack/transformations/threeaddresscode/ThreeAddressCodeChecker.java
index e138738..cff840f 100644
--- a/jack/src/com/android/jack/transformations/threeaddresscode/ThreeAddressCodeChecker.java
+++ b/jack/src/com/android/jack/transformations/threeaddresscode/ThreeAddressCodeChecker.java
@@ -26,6 +26,7 @@
 import com.android.jack.ir.ast.JLocalRef;
 import com.android.jack.ir.ast.JMethod;
 import com.android.jack.ir.ast.JMethodCall;
+import com.android.jack.ir.ast.JNode;
 import com.android.jack.ir.ast.JParameterRef;
 import com.android.jack.ir.ast.JVisitor;
 import com.android.jack.transformations.SanityChecks;
@@ -74,7 +75,9 @@
     }
 
     private static void throwError(@Nonnull JExpression expr) {
-      throw new AssertionError(expr.getParent().toSource() + " is not three address code.");
+      final JNode parent = expr.getParent();
+      assert parent != null;
+      throw new AssertionError(parent.toSource() + " is not three address code.");
     }
 
     private boolean isValidExpressionForTac(@Nonnull JExpression expr) {
diff --git a/jack/src/com/android/jack/transformations/uselessif/UselessIfRemover.java b/jack/src/com/android/jack/transformations/uselessif/UselessIfRemover.java
index 63aaeaf..7a4baed 100644
--- a/jack/src/com/android/jack/transformations/uselessif/UselessIfRemover.java
+++ b/jack/src/com/android/jack/transformations/uselessif/UselessIfRemover.java
@@ -75,13 +75,8 @@
         tracer.getStatistic(REMOVED_IF).incValue();
         if (cond.getValue()) {
           JStatement thenStmt = ifStmt.getThenStmt();
-          if (thenStmt != null) {
-            // if (true) A else B => A
-            request.append(new Replace(ifStmt, thenStmt));
-          } else {
-            // if (true) else B => []
-            request.append(new Remove(ifStmt));
-          }
+          // if (true) A else B => A
+          request.append(new Replace(ifStmt, thenStmt));
         } else {
           JStatement elseStmt = ifStmt.getElseStmt();
           if (elseStmt != null) {
diff --git a/jack/tests/com/android/jack/AllUnitTests.java b/jack/tests/com/android/jack/AllUnitTests.java
index 9042487..b0af5fb 100644
--- a/jack/tests/com/android/jack/AllUnitTests.java
+++ b/jack/tests/com/android/jack/AllUnitTests.java
@@ -20,7 +20,7 @@
 import com.android.jack.ir.ast.JDefinedInterfaceTest;
 import com.android.jack.ir.ast.MarkerCollectorTest;
 import com.android.jack.ir.impl.ReferenceMapperTest;
-import com.android.jack.jayce.v0002.io.EscapeStringTest;
+import com.android.jack.jayce.v0004.io.EscapeStringTest;
 import com.android.jack.optimizations.ExpressionSimplifierTest;
 import com.android.jack.optimizations.tailrecursion.TailRecursionTest;
 import com.android.jack.preprocessor.PreProcessorTest;
diff --git a/jack/tests/com/android/jack/LongLastingUnitTests.java b/jack/tests/com/android/jack/LongLastingUnitTests.java
index fdb76ac..4539d88 100644
--- a/jack/tests/com/android/jack/LongLastingUnitTests.java
+++ b/jack/tests/com/android/jack/LongLastingUnitTests.java
@@ -18,7 +18,7 @@
 
 
 import com.android.jack.category.KnownBugs;
-import com.android.jack.category.SlowTests;
+import com.android.jack.category.FunctionalNonPreSubmitTests;
 
 import org.junit.experimental.categories.Categories;
 import org.junit.experimental.categories.Categories.ExcludeCategory;
@@ -31,7 +31,7 @@
  * CL.
  */
 @RunWith(Categories.class)
-@IncludeCategory(SlowTests.class)
+@IncludeCategory(FunctionalNonPreSubmitTests.class)
 @ExcludeCategory(KnownBugs.class)
 @SuiteClasses(value = {AllUnitTests.class})
 public class LongLastingUnitTests {
diff --git a/jack/tests/com/android/jack/category/ExtraTests.java b/jack/tests/com/android/jack/category/ExtraTests.java
index bf0e5ad..6c85158 100644
--- a/jack/tests/com/android/jack/category/ExtraTests.java
+++ b/jack/tests/com/android/jack/category/ExtraTests.java
@@ -19,6 +19,6 @@
 /**
  * Tests that are not critical, so that we do not want to run them each time we submit a CL.
  */
-public interface ExtraTests extends NonPreSubmitTests {
+public interface ExtraTests extends FunctionalNonPreSubmitTests {
 
 }
diff --git a/jack-tests/tests/com/android/jack/clinit/jack/ClInitWithVariableInit.java b/jack/tests/com/android/jack/category/FunctionalNonPreSubmitTests.java
similarity index 73%
copy from jack-tests/tests/com/android/jack/clinit/jack/ClInitWithVariableInit.java
copy to jack/tests/com/android/jack/category/FunctionalNonPreSubmitTests.java
index 8c344dd..d832449 100644
--- a/jack-tests/tests/com/android/jack/clinit/jack/ClInitWithVariableInit.java
+++ b/jack/tests/com/android/jack/category/FunctionalNonPreSubmitTests.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2017 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,11 +14,11 @@
  * limitations under the License.
  */
 
-package com.android.jack.clinit.jack;
+package com.android.jack.category;
 
-public class ClInitWithVariableInit {
+/**
+ * Tests that we do not need to run before submitting a CL.
+ */
+public interface FunctionalNonPreSubmitTests {
 
-  static {
-    int lv = 5;
-  }
 }
diff --git a/jack/tests/com/android/jack/category/NonPreSubmitTests.java b/jack/tests/com/android/jack/category/NonPreSubmitTests.java
index 9c4d07a..5221203 100644
--- a/jack/tests/com/android/jack/category/NonPreSubmitTests.java
+++ b/jack/tests/com/android/jack/category/NonPreSubmitTests.java
@@ -17,7 +17,8 @@
 package com.android.jack.category;
 
 /**
- * Tests that we do not need to run before submitting a CL.
+ * This category is aimed at grouping functional non-pre-submit tests
+ * along with tests that fail due to non bugs.
  */
 public interface NonPreSubmitTests {
 
diff --git a/jack/tests/com/android/jack/category/RedundantTests.java b/jack/tests/com/android/jack/category/RedundantTests.java
index 02e7410..75c5483 100644
--- a/jack/tests/com/android/jack/category/RedundantTests.java
+++ b/jack/tests/com/android/jack/category/RedundantTests.java
@@ -20,6 +20,6 @@
  * Tests that are already covered by another test. They may be interesting on their own, but do not
  * need to be included in a pre-submit test suite.
  */
-public interface RedundantTests extends NonPreSubmitTests {
+public interface RedundantTests extends FunctionalNonPreSubmitTests {
 
 }
diff --git a/jack/tests/com/android/jack/category/SlowTests.java b/jack/tests/com/android/jack/category/SlowTests.java
index 78dff67..16d0c43 100644
--- a/jack/tests/com/android/jack/category/SlowTests.java
+++ b/jack/tests/com/android/jack/category/SlowTests.java
@@ -19,6 +19,6 @@
 /**
  * Tests that are time-consuming, so that we do not want to run them each time we submit a CL.
  */
-public interface SlowTests extends NonPreSubmitTests {
+public interface SlowTests extends FunctionalNonPreSubmitTests {
 
 }
diff --git a/jack/tests/com/android/jack/frontend/ClinitTest.java b/jack/tests/com/android/jack/frontend/ClinitTest.java
index 7f4fac0..f88725e 100644
--- a/jack/tests/com/android/jack/frontend/ClinitTest.java
+++ b/jack/tests/com/android/jack/frontend/ClinitTest.java
@@ -36,9 +36,9 @@
 public class ClinitTest {
 
   public static final String CLASS_WITH_VARIABLE_INIT_BINARY_NAME
-    = "com/android/jack/clinit/jack/ClInitWithVariableInit";
+    = "com/android/jack/clinit/test001/jack/ClInitWithVariableInit";
   public static final String CLASS_BINARY_NAME
-    = "com/android/jack/clinit/jack/ClInit";
+    = "com/android/jack/clinit/test001/jack/ClInit";
 
   @After
   public void tearDown() {
diff --git a/jack/tests/com/android/jack/jayce/v0003/io/EscapeStringTest.java b/jack/tests/com/android/jack/jayce/v0003/io/EscapeStringTest.java
deleted file mode 100644
index 8ee4e46..0000000
--- a/jack/tests/com/android/jack/jayce/v0003/io/EscapeStringTest.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.jack.jayce.v0003.io;
-
-import com.android.jack.IllegalOptionsException;
-import com.android.jack.Options;
-import com.android.jack.TestTools;
-import com.android.sched.util.RunnableHooks;
-import com.android.sched.util.config.ConfigurationException;
-import com.android.sched.util.config.ThreadConfig;
-import com.android.sched.util.file.CannotChangePermissionException;
-import com.android.sched.util.file.CannotCreateFileException;
-
-import junit.framework.Assert;
-
-import org.junit.Test;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-import javax.annotation.Nonnull;
-
-public class EscapeStringTest {
-
-  @Test
-  public void test001() throws Exception {
-    String string = "abcd";
-    Assert.assertEquals(string, writeStringAndReadItAfter(string));
-  }
-
-  @Test
-  public void test002() throws Exception {
-    String string = "ab\"cd\"";
-    Assert.assertEquals(string, writeStringAndReadItAfter(string));
-  }
-
-  @Test
-  public void test003() throws Exception {
-    String string = "ab'cd'";
-    Assert.assertEquals(string, writeStringAndReadItAfter(string));
-  }
-
-  @Test
-  public void test004() throws Exception {
-    String string = "ab\tcd";
-    Assert.assertEquals(string, writeStringAndReadItAfter(string));
-  }
-
-  @Test
-  public void test005() throws Exception {
-    String string = "ab\rcd";
-    Assert.assertEquals(string, writeStringAndReadItAfter(string));
-  }
-
-  @Test
-  public void test006() throws Exception {
-    String string = "ab\ncd";
-    Assert.assertEquals(string, writeStringAndReadItAfter(string));
-  }
-
-  @Test
-  public void test007() throws Exception {
-    String string = "ab\bcd";
-    Assert.assertEquals(string, writeStringAndReadItAfter(string));
-  }
-
-  @Test
-  public void test008() throws Exception {
-    String string = "ab\fcd";
-    Assert.assertEquals(string, writeStringAndReadItAfter(string));
-  }
-
-  @Test
-  public void test009() throws Exception {
-    String string = "\"'\\";
-    Assert.assertEquals(string, writeStringAndReadItAfter(string));
-  }
-
-  @Test
-  public void test010() throws Exception {
-    String string = "[ab]\\b\\\\o5\\xF9\\u1E7B\\t\\n\\f\\r\\a\\e[yz]";
-    Assert.assertEquals(string, writeStringAndReadItAfter(string));
-  }
-
-  @Test
-  public void test011() throws Exception {
-    String string = "\uD9A0\uDE81*abc";
-    Assert.assertEquals(string, writeStringAndReadItAfter(string));
-  }
-
-  @Test
-  public void test012() throws Exception {
-    String string = "\uDE81|\uD9A0\uDE81|\uD9A0";
-    Assert.assertEquals(string, writeStringAndReadItAfter(string));
-  }
-
-  @Nonnull
-  private String writeStringAndReadItAfter(@Nonnull String stringToWrite) throws IOException,
-      IllegalOptionsException, CannotCreateFileException, CannotChangePermissionException {
-    File tmp = TestTools.createTempFile("tmp", "");
-    RunnableHooks hooks = new RunnableHooks();
-    try {
-      Options options = new Options();
-      options.checkValidity(hooks);
-      options.getConfigBuilder(hooks).getCodecContext().setDebug();
-      ThreadConfig.setConfig(options.getConfig());
-      FileOutputStream fos = new FileOutputStream(tmp);
-      JayceInternalWriterImpl jw = new JayceInternalWriterImpl(fos);
-      jw.writeString(stringToWrite);
-      jw.close();
-      FileInputStream fis = new FileInputStream(tmp);
-      Tokenizer t = new Tokenizer(fis);
-      String result = t.readString();
-      fis.close();
-      assert result != null;
-      return result;
-    } catch (ConfigurationException e) {
-      throw new AssertionError(e);
-    } finally {
-      ThreadConfig.unsetConfig();
-      hooks.runHooks();
-    }
-  }
-}
diff --git a/jack/tests/com/android/jack/jayce/v0002/io/EscapeStringTest.java b/jack/tests/com/android/jack/jayce/v0004/io/EscapeStringTest.java
similarity index 90%
rename from jack/tests/com/android/jack/jayce/v0002/io/EscapeStringTest.java
rename to jack/tests/com/android/jack/jayce/v0004/io/EscapeStringTest.java
index 4900be2..011b30f 100644
--- a/jack/tests/com/android/jack/jayce/v0002/io/EscapeStringTest.java
+++ b/jack/tests/com/android/jack/jayce/v0004/io/EscapeStringTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.jack.jayce.v0002.io;
+package com.android.jack.jayce.v0004.io;
 
 import com.android.jack.IllegalOptionsException;
 import com.android.jack.Options;
@@ -23,7 +23,11 @@
 import com.android.sched.util.config.ConfigurationException;
 import com.android.sched.util.config.ThreadConfig;
 import com.android.sched.util.file.CannotChangePermissionException;
+import com.android.sched.util.file.CannotCloseException;
 import com.android.sched.util.file.CannotCreateFileException;
+import com.android.sched.util.location.FileLocation;
+import com.android.sched.util.location.HasLocation;
+import com.android.sched.util.location.Location;
 
 import junit.framework.Assert;
 
@@ -113,7 +117,7 @@
   @Nonnull
   private String writeStringAndReadItAfter(@Nonnull String stringToWrite)
       throws CannotCreateFileException, CannotChangePermissionException, IllegalOptionsException,
-      IOException {
+      CannotCloseException, IOException {
     File tmp = TestTools.createTempFile("tmp", "");
     RunnableHooks hooks = new RunnableHooks();
     try {
@@ -122,7 +126,13 @@
       options.getConfigBuilder(hooks).getCodecContext().setDebug();
       ThreadConfig.setConfig(options.getConfig());
       FileOutputStream fos = new FileOutputStream(tmp);
-      JayceInternalWriterImpl jw = new JayceInternalWriterImpl(fos);
+      JayceInternalWriterImpl jw = new JayceInternalWriterImpl(fos, new HasLocation(){
+        @Override
+        @Nonnull
+        public Location getLocation() {
+          return new FileLocation(tmp);
+        }
+      });
       jw.writeString(stringToWrite);
       jw.close();
       FileInputStream fis = new FileInputStream(tmp);
diff --git a/jack/tests/com/android/jack/reporting/ProblemLevelTest.java b/jack/tests/com/android/jack/reporting/ProblemLevelTest.java
index 0b5eb5f..5551c5c 100644
--- a/jack/tests/com/android/jack/reporting/ProblemLevelTest.java
+++ b/jack/tests/com/android/jack/reporting/ProblemLevelTest.java
@@ -16,7 +16,7 @@
 
 package com.android.jack.reporting;
 
-import com.android.jack.Options.VerbosityLevel;
+import com.android.jack.VerbosityLevel;
 import com.android.jack.reporting.Reportable.ProblemLevel;
 
 import junit.framework.Assert;
diff --git a/jack/tests/com/android/jack/shrob/obfuscation/nameprovider/DictionaryNameProviderTest.java b/jack/tests/com/android/jack/shrob/obfuscation/nameprovider/DictionaryNameProviderTest.java
index c31c4bc..e4af15f 100644
--- a/jack/tests/com/android/jack/shrob/obfuscation/nameprovider/DictionaryNameProviderTest.java
+++ b/jack/tests/com/android/jack/shrob/obfuscation/nameprovider/DictionaryNameProviderTest.java
@@ -16,12 +16,14 @@
 
 package com.android.jack.shrob.obfuscation.nameprovider;
 
+import com.android.jack.category.KnownBugs;
 import com.android.jack.shrob.obfuscation.key.TypeKey;
 import com.android.jack.test.TestsProperties;
 
 import junit.framework.Assert;
 
 import org.junit.Test;
+import org.junit.experimental.categories.Category;
 
 import java.io.File;
 
@@ -43,6 +45,28 @@
     Assert.assertEquals("stu", dnp.getNewName(oldKey));
     Assert.assertEquals("vw$", dnp.getNewName(oldKey));
     Assert.assertEquals("xyz_", dnp.getNewName(oldKey));
+    Assert.assertEquals("ea", dnp.getNewName(oldKey));
+    Assert.assertEquals("abc", dnp.getNewName(oldKey));
+    Assert.assertEquals("a", dnp.getNewName(oldKey));
+  }
+
+  @Test
+  @Category(KnownBugs.class)
+  public void dictionaryNameProviderTestUTF8() throws Exception {
+    TypeKey oldKey = new TypeKey("old");
+    File dictionaryFile = new File(TestsProperties.getJackRootDir(),
+        "jack/tests/com/android/jack/shrob/obfuscation/nameprovider/dictionary-utf8.txt");
+    DictionaryNameProvider dnp =
+        new DictionaryNameProvider(dictionaryFile, new LowerCaseAlphabeticalNameProvider());
+    Assert.assertEquals("abc", dnp.getNewName(oldKey));
+    Assert.assertEquals("def", dnp.getNewName(oldKey));
+    Assert.assertEquals("ghi", dnp.getNewName(oldKey));
+    Assert.assertEquals("jkl", dnp.getNewName(oldKey));
+    Assert.assertEquals("mno", dnp.getNewName(oldKey));
+    Assert.assertEquals("pqr", dnp.getNewName(oldKey));
+    Assert.assertEquals("stu", dnp.getNewName(oldKey));
+    Assert.assertEquals("vw$", dnp.getNewName(oldKey));
+    Assert.assertEquals("xyz_", dnp.getNewName(oldKey));
     Assert.assertEquals("éà", dnp.getNewName(oldKey));
     Assert.assertEquals("abc", dnp.getNewName(oldKey));
     Assert.assertEquals("a", dnp.getNewName(oldKey));
diff --git a/jack/tests/com/android/jack/shrob/obfuscation/nameprovider/dictionary-utf8.txt b/jack/tests/com/android/jack/shrob/obfuscation/nameprovider/dictionary-utf8.txt
new file mode 100644
index 0000000..7be866d
--- /dev/null
+++ b/jack/tests/com/android/jack/shrob/obfuscation/nameprovider/dictionary-utf8.txt
@@ -0,0 +1,14 @@
+# this is a comment
+abc# this is another comment
+def # this is again another comment after an ignored character
+ghi
+jkl
+mno pqr
+stu!vw$[
+
+/*-+&~"'
+xyz_
+
+    éà
+1abc
+!
\ No newline at end of file
diff --git a/jack/tests/com/android/jack/shrob/obfuscation/nameprovider/dictionary.txt b/jack/tests/com/android/jack/shrob/obfuscation/nameprovider/dictionary.txt
index 7be866d..b7c9f2f 100644
--- a/jack/tests/com/android/jack/shrob/obfuscation/nameprovider/dictionary.txt
+++ b/jack/tests/com/android/jack/shrob/obfuscation/nameprovider/dictionary.txt
@@ -9,6 +9,6 @@
 /*-+&~"'
 xyz_
 
-    éà
+    ea
 1abc
 !
\ No newline at end of file
diff --git a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java b/jarjar/build.gradle
similarity index 77%
copy from jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
copy to jarjar/build.gradle
index 0b9fd92..3e323b0 100644
--- a/jack-coverage/tests/com/android/jack/coverage/test002/Interface.java
+++ b/jarjar/build.gradle
@@ -14,7 +14,11 @@
  * limitations under the License.
  */
 
-package com.android.jack.coverage.test002;
+apply plugin: 'java'
 
-public interface Interface {}
-
+jar {
+    from zipTree("jarjar.jar")
+    manifest {
+      attributes ("Main-Class":"com.tonicsystems.jarjar.Main", "Implementation-Version":"1.4")
+    }
+}
diff --git a/jill-api/.classpath b/jill-api/.classpath
index 6a74d2e..dcc207a 100644
--- a/jill-api/.classpath
+++ b/jill-api/.classpath
@@ -2,7 +2,7 @@
 <classpath>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="lib" path="libs/jsr305-lib.jar"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry kind="src" path=".apt_generated">
 		<attributes>
 			<attribute name="optional" value="true"/>
diff --git a/jill-api/.settings/org.eclipse.jdt.core.prefs b/jill-api/.settings/org.eclipse.jdt.core.prefs
index f6e5ff1..7eb95e1 100644
--- a/jill-api/.settings/org.eclipse.jdt.core.prefs
+++ b/jill-api/.settings/org.eclipse.jdt.core.prefs
@@ -6,9 +6,9 @@
 org.eclipse.jdt.core.compiler.annotation.nullable=javax.annotation.CheckForNull
 org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.compliance=1.8
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -97,7 +97,7 @@
 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
 org.eclipse.jdt.core.compiler.processAnnotations=enabled
-org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.source=1.8
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
 org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=1585
 org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field.count_dependent=1585|-1|1585
diff --git a/jill-api/build.gradle b/jill-api/build.gradle
new file mode 100644
index 0000000..f746453
--- /dev/null
+++ b/jill-api/build.gradle
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+apply plugin: 'java'
+apply plugin: 'com.github.johnrengelman.shadow'
+
+sourceCompatibility = 1.8
+targetCompatibility = 1.8
+
+apply from: "$rootDir/gradle-script/checkstyle.gradle"
+apply from: "$rootDir/gradle-script/findbugs.gradle"
+
+sourceSets {
+    main {
+        java {
+            srcDirs = ['src']
+        }
+    }
+}
+
+dependencies {
+  compileOnly libs.jsr305
+}
+
+javadoc {
+  failOnError false
+  destinationDir = file("${rootDir}/gradle-dist/doc/jack/jack-external/jill")
+}
+
+
+apply from: "$rootDir/gradle-script/versionfile.gradle"
+
+jar {
+  classifier 'lib'
+}
+
+shadowJar {
+    dependsOn createJackVersionFile
+    classifier ''
+    from ("${project.buildDir}") {
+      include "jill-api-version.properties"
+    }
+}
+
+task dist (type: Copy, dependsOn: shadowJar) {
+  from shadowJar.archivePath
+  into file("${rootDir}/gradle-dist/")
+}
diff --git a/jill/.classpath b/jill/.classpath
index d583854..e82e9f7 100644
--- a/jill/.classpath
+++ b/jill/.classpath
@@ -8,6 +8,6 @@
 	<classpathentry kind="lib" path="libs/jsr305-lib.jar"/>
 	<classpathentry combineaccessrules="false" kind="src" path="/jill-api"/>
 	<classpathentry combineaccessrules="false" kind="src" path="/Scheduler"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/jill/.settings/org.eclipse.jdt.core.prefs b/jill/.settings/org.eclipse.jdt.core.prefs
index 1e8b72f..9ca25ee 100644
--- a/jill/.settings/org.eclipse.jdt.core.prefs
+++ b/jill/.settings/org.eclipse.jdt.core.prefs
@@ -7,9 +7,9 @@
 org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.compliance=1.8
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -97,7 +97,7 @@
 org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.7
+org.eclipse.jdt.core.compiler.source=1.8
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
 org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=1585
 org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field.count_dependent=1585|-1|1585
diff --git a/jill/build.gradle b/jill/build.gradle
new file mode 100644
index 0000000..fbce8a7
--- /dev/null
+++ b/jill/build.gradle
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+apply plugin: 'java'
+apply plugin: 'com.github.johnrengelman.shadow'
+
+sourceCompatibility = 1.8
+targetCompatibility = 1.8
+
+apply from: "$rootDir/gradle-script/checkstyle.gradle"
+apply from: "$rootDir/gradle-script/findbugs.gradle"
+
+sourceSets {
+    main {
+        java {
+            srcDirs = ['src']
+        }
+        resources {
+          srcDirs = ['rsc']
+          exclude "jill-version.properties"
+        }
+    }
+}
+
+configurations {
+  jarjar
+}
+
+dependencies {
+  compile project(':args4j')
+  compile libs.asm_all
+  compile project(':jill-api')
+  compileOnly libs.jsr305
+  compile libs.guava
+  compile project(':sched')
+
+  jarjar project(':jarjar').configurations.archives.artifacts.files
+
+}
+
+apply from: "$rootDir/gradle-script/versionfile.gradle"
+
+jar {
+  classifier "lib"
+  dependsOn createJackVersionFile
+  from ("${project.buildDir}") {
+     include "jill-version.properties"
+  }
+}
+
+shadowJar {
+  classifier "no-jarjar"
+  manifest {
+    from 'etc/manifest.txt'
+  }
+  dependsOn createJackVersionFile
+  from ("${project.buildDir}") {
+    include "jill-version.properties"
+  }
+}
+
+task jarjar(type:Exec, dependsOn: [':jarjar:jar', shadowJar]) {
+  inputs.files 'jarjar-rules.txt', 'shadowJar.archivePath'
+  outputs.file "${buildDir}/libs/jill.jar"
+  commandLine 'java', '-jar', configurations.jarjar.singleFile, 'process', "jarjar-rules.txt", shadowJar.archivePath, file("${buildDir}/libs/jill.jar")
+}
+
+task dist (type: Copy, dependsOn: jarjar) {
+  from file("${buildDir}/libs/jill.jar")
+  into file("${rootDir}/gradle-dist/")
+}
+
+assemble.dependsOn jarjar
+
+javadoc {
+  failOnError false
+}
diff --git a/jill/jarjar-rules.txt b/jill/jarjar-rules.txt
index ee6f403..b797a5d 100644
--- a/jill/jarjar-rules.txt
+++ b/jill/jarjar-rules.txt
@@ -1 +1,7 @@
-rule org.objectweb.** com.android.jill.@0
\ No newline at end of file
+rule org.objectweb.** com.android.jill.objectweb.@1
+rule org.kohsuke.** com.android.jill.kohsuke.@1
+rule javax.annotation.** com.android.jill.javax.annotation.@1
+rule com.google.** com.android.jill.google.@1
+rule org.uncommons.** com.android.jill.uncommons.@1
+rule freemarker.** com.android.jill.freemarker.@1
+
diff --git a/jill/src/com/android/jill/frontend/java/ClassNodeWriter.java b/jill/src/com/android/jill/frontend/java/ClassNodeWriter.java
index 60d56ba..1114df4 100644
--- a/jill/src/com/android/jill/frontend/java/ClassNodeWriter.java
+++ b/jill/src/com/android/jill/frontend/java/ClassNodeWriter.java
@@ -154,7 +154,6 @@
     writeAnnotationMethods(cn);
     annotWriter.writeAnnotations(cn);
     writer.writeOpenNodeList(); // Markers
-    writeGenericSignatureMarker(cn);
     writeSourceNameMarker(cn);
     writer.writeCloseNodeList();
     sourceInfoWriter.writeDebugEnd(cn);
diff --git a/jill/src/com/android/jill/frontend/java/JavaTransformer.java b/jill/src/com/android/jill/frontend/java/JavaTransformer.java
index 8bc85b0..5fe7cec 100644
--- a/jill/src/com/android/jill/frontend/java/JavaTransformer.java
+++ b/jill/src/com/android/jill/frontend/java/JavaTransformer.java
@@ -50,6 +50,7 @@
 import com.android.sched.vfs.VFS;
 import com.android.sched.vfs.VPath;
 import com.android.sched.vfs.WriteZipFS;
+import com.android.sched.vfs.WrongVFSTypeException;
 
 import org.objectweb.asm.ClassReader;
 import org.objectweb.asm.tree.ClassNode;
@@ -77,13 +78,13 @@
   private static final String LIB_MAJOR_VERSION = "3";
 
   @Nonnull
-  private static final String LIB_MINOR_VERSION = "4";
+  private static final String LIB_MINOR_VERSION = "5";
 
   @Nonnull
   private static final String JAYCE_MAJOR_VERSION = "4";
 
   @Nonnull
-  private static final String JAYCE_MINOR_VERSION = "3";
+  private static final String JAYCE_MINOR_VERSION = "4";
 
   @Nonnull
   private static final String KEY_LIB_MAJOR_VERSION = "lib.version.major";
@@ -200,9 +201,15 @@
     Service service = mdCodec.parseString(new CodecContext(), "SHA");
 
     try {
-      return new GenericOutputVFS(new DeflateFS(new MessageDigestFS(
-          new PrefixedFS(baseVFS, new VPath("jayce", '/')), new MessageDigestFactory(service))));
-    } catch (NotDirectoryException | CannotCreateFileException | BadVFSFormatException e) {
+      return new GenericOutputVFS(
+          new DeflateFS(
+              new MessageDigestFS(
+                  new PrefixedFS(baseVFS, new VPath("jayce", '/'), Existence.MAY_EXIST),
+                  new MessageDigestFactory(service))));
+    } catch (NotDirectoryException
+        | CannotCreateFileException
+        | BadVFSFormatException
+        | WrongVFSTypeException e) {
       throw new JillException(e);
     }
   }
@@ -212,7 +219,7 @@
       @SuppressWarnings("resource")
       OutputVFS goVFS = new GenericOutputVFS(baseVFS);
       OutputVFile libraryPropertiesOut =
-          goVFS.getRootOutputVDir().createOutputVFile(new VPath(JACK_LIBRARY_PROPERTIES, '/'));
+          goVFS.getRootDir().createOutputVFile(new VPath(JACK_LIBRARY_PROPERTIES, '/'));
       try (OutputStream os = libraryPropertiesOut.getOutputStream()) {
         jackLibraryProperties.store(os, "Library Properties");
       } catch (IOException e) {
@@ -244,7 +251,7 @@
     ClassNode cn = getClassNode(is);
     VPath outputPath = getVPath(cn.name);
     try {
-      OutputVFile vFile = outputVFS.getRootOutputVDir().createOutputVFile(outputPath);
+      OutputVFile vFile = outputVFS.getRootDir().createOutputVFile(outputPath);
       try (OutputStream os = vFile.getOutputStream()) {
         transform(cn, os, vFile.getLocation());
       } catch (IOException e) {
diff --git a/jill/src/com/android/jill/frontend/java/JillWriter.java b/jill/src/com/android/jill/frontend/java/JillWriter.java
index 8c9efa2..5da7fb8 100644
--- a/jill/src/com/android/jill/frontend/java/JillWriter.java
+++ b/jill/src/com/android/jill/frontend/java/JillWriter.java
@@ -51,7 +51,7 @@
   protected void writeValue(Object value, @CheckForNull ClassNode classNode,
       @Nonnegative int currentLine)  throws IOException{
     if (value == null) {
-      writer.writeNull();
+      writeValue(classNode, currentLine);
     } else if (value instanceof Boolean) {
       writeValue(((Boolean) value).booleanValue(), classNode, currentLine);
     } else if (value instanceof Integer) {
diff --git a/jill/src/com/android/jill/frontend/java/MethodBodyWriter.java b/jill/src/com/android/jill/frontend/java/MethodBodyWriter.java
index 32cb758..c4203ac 100644
--- a/jill/src/com/android/jill/frontend/java/MethodBodyWriter.java
+++ b/jill/src/com/android/jill/frontend/java/MethodBodyWriter.java
@@ -66,6 +66,7 @@
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Set;
 
 import javax.annotation.CheckForNull;
@@ -95,6 +96,8 @@
   private static final String LAMBDA_MTH_PREFIX = "lambda$";
   @Nonnegative
   public static final int LAMBDA_METHOD = 0x200000;
+  @Nonnegative
+  public static final int NAME_PRESENT = 0x400000;
 
   @Nonnull
   private final Map<String, Variable> nameToVar = new HashMap<String, Variable>();
@@ -157,14 +160,19 @@
     @Nonnegative
     int opcode;
     @Nonnull
-    Variable lhs;
+    Frame<BasicValue> lhsFrame;
+    int lhsStackIdx;
     @Nonnull
-    Variable rhs;
+    Frame<BasicValue> rhsFrame;
+    int rhsStackIdx;
 
-    public CmpOperands(@Nonnegative int opcode, @Nonnull Variable lhs, @Nonnull Variable rhs) {
+    public CmpOperands(@Nonnegative int opcode, @Nonnull Frame<BasicValue> lhsFrame,
+        int lhsStackIdx, @Nonnull Frame<BasicValue> rhsFrame, int rhsStackIdx) {
       this.opcode = opcode;
-      this.lhs = lhs;
-      this.rhs = rhs;
+      this.lhsFrame = lhsFrame;
+      this.lhsStackIdx = lhsStackIdx;
+      this.rhsFrame = rhsFrame;
+      this.rhsStackIdx = rhsStackIdx;
     }
   }
 
@@ -173,6 +181,9 @@
       new HashMap<Variable, MethodBodyWriter.CmpOperands>();
 
   @Nonnull
+  private final HashMap<Variable, Object> varWithCstValue = new HashMap<>();
+
+  @Nonnull
   private final AnnotationWriter annotWriter;
 
   @Nonnegative
@@ -251,7 +262,9 @@
   }
 
   public void write() throws IOException {
-    if (AsmHelper.isAnnotation(currentClass)) {
+    if (AsmHelper.isAnnotation(currentClass)
+        && AsmHelper.isAbstract(currentMethod)
+        && (currentMethod.parameters == null || currentMethod.parameters.isEmpty())) {
       writeAnnotationMethod();
     } else if (AsmHelper.isConstructor(currentMethod)) {
       writeConstructor();
@@ -270,7 +283,7 @@
     annotWriter.writeAnnotations(currentMethod);
     writeMethodBody();
     writer.writeOpenNodeList(); // Markers
-    writeOriginalTypeInfoMarker();
+    writeGenericSignatureMarker();
     writeThrownExceptionMarker();
     writer.writeCloseNodeList();
     sourceInfoWriter.writeDebugEnd(currentClass, endLine);
@@ -331,7 +344,7 @@
     annotWriter.writeAnnotations(currentMethod);
     writeMethodBody();
     writer.writeOpenNodeList(); // Markers
-    writeOriginalTypeInfoMarker();
+    writeGenericSignatureMarker();
     writeThrownExceptionMarker();
     writer.writeCloseNodeList();
     sourceInfoWriter.writeDebugEnd(currentClass, endLine);
@@ -353,20 +366,18 @@
       writer.writeNull();
     }
     writer.writeOpenNodeList(); // Markers
-    writeOriginalTypeInfoMarker();
+    writeGenericSignatureMarker();
     writer.writeCloseNodeList();
     sourceInfoWriter.writeDebugEnd(currentClass, endLine);
     writer.writeClose();
   }
 
-  private void writeOriginalTypeInfoMarker() throws IOException {
+  private void writeGenericSignatureMarker() throws IOException {
     if (AsmHelper.hasValidGenericSignature(currentMethod)) {
       writer.writeKeyword(Token.GENERIC_SIGNATURE);
       writer.writeOpen();
       writer.writeString(currentMethod.signature);
       writer.writeClose();
-    } else {
-      writer.writeNull();
     }
   }
 
@@ -442,7 +453,7 @@
         caughtType = Type.getType(Throwable.class);
       }
       String id = "-e_" + (unusedVarCount++);
-      declaringCatchVariable = new Variable(id, id, caughtType, null);
+      declaringCatchVariable = new Variable(id, id, caughtType);
       catchBlockToCatchedVariable.put(tryCatchNode, declaringCatchVariable);
     }
   }
@@ -526,6 +537,7 @@
         Frame<BasicValue> nextFrame = (insnIdx < frames.length - 1) ? frames[insnIdx + 1] : null;
 
         if (insn instanceof JumpInsnNode) {
+          forceToUseCstThroughVariable();
           writeInsn(currentFrame, (JumpInsnNode) insn, insnIdx);
         } else if (insn instanceof LdcInsnNode) {
           assert nextFrame != null;
@@ -536,6 +548,7 @@
           assert nextFrame != null;
           writeInsn(currentFrame, nextFrame, (VarInsnNode) insn);
         } else if (insn instanceof LabelNode) {
+          forceToUseCstThroughVariable();
           computeCatchList((LabelNode) insn);
           writeCatchBlock((LabelNode) insn, insnIdx, frames);
           writeLabelInsn(insnIdx);
@@ -594,6 +607,33 @@
     writer.writeClose();
   }
 
+
+  // Stack variable is produced before a branch instruction and was not yet consumed,
+  // generated it on this branch because another branch can produce another value and Jill
+  // do not know which value used since it depend on a runtime behavior.
+  // In the same way, if we reach a label, generate stack variable with constant because
+  // several path can produce different values.
+  private void forceToUseCstThroughVariable() throws IOException {
+    if (!varWithCstValue.isEmpty()) {
+      for (Entry<Variable, Object> entry : varWithCstValue.entrySet()) {
+        writeDebugBegin(currentClass, currentLine);
+        writer.writeCatchBlockIds(currentCatchList);
+        writer.writeKeyword(Token.EXPRESSION_STATEMENT);
+        writer.writeOpen();
+        writeDebugBegin(currentClass, currentLine);
+        writer.writeKeyword(Token.ASG_OPERATION);
+        writer.writeOpen();
+        writeLocalRef(entry.getKey());
+        writeValue(entry.getValue(), currentClass, currentLine);
+        writeDebugEnd(currentClass, currentLine);
+        writer.writeClose();
+        writeDebugEnd(currentClass, currentLine);
+        writer.writeClose();
+      }
+      varWithCstValue.clear();
+    }
+  }
+
   private void writeLambda(@Nonnull Frame<BasicValue> frame, @Nonnull Frame<BasicValue> nextFrame,
       @Nonnull InvokeDynamicInsnNode iDyn) throws IOException {
     Handle mthImplementingLambda = (Handle) iDyn.bsmArgs[1];
@@ -606,7 +646,7 @@
     writeDebugBegin(currentClass, currentLine);
     writer.writeKeyword(Token.ASG_OPERATION);
     writer.writeOpen();
-    writeStackAccess(nextFrame, TOP_OF_STACK);
+    writeStack(nextFrame, TOP_OF_STACK);
 
     writeDebugBegin(currentClass, currentLine);
     writer.writeKeyword(Token.LAMBDA);
@@ -988,7 +1028,7 @@
           writeDebugBegin(currentClass, currentLine);
           writer.writeKeyword(Token.ASG_OPERATION);
           writer.writeOpen();
-          writeStackAccess(frames[labelIdx], TOP_OF_STACK);
+          writeStack(frames[labelIdx], TOP_OF_STACK);
           writeLocalRef(declaringCatchVariable);
           writeDebugEnd(currentClass, currentLine);
           writer.writeClose();
@@ -1076,6 +1116,12 @@
 
   private void writeInsn(@Nonnull Frame<BasicValue> frame, @Nonnull Frame<BasicValue> nextFrame,
       @Nonnull IntInsnNode intInsn) throws IOException {
+    if (intInsn.getOpcode() == BIPUSH || intInsn.getOpcode() == SIPUSH) {
+      varWithCstValue.put(getStackVariable(nextFrame, TOP_OF_STACK),
+          Integer.valueOf(intInsn.operand));
+      return;
+    }
+
     writeDebugBegin(currentClass, currentLine);
     writer.writeCatchBlockIds(currentCatchList);
     writer.writeKeyword(Token.EXPRESSION_STATEMENT);
@@ -1083,17 +1129,9 @@
     writeDebugBegin(currentClass, currentLine);
     writer.writeKeyword(Token.ASG_OPERATION);
     writer.writeOpen();
-    writeStackAccess(nextFrame, TOP_OF_STACK);
+    writeStack(nextFrame, TOP_OF_STACK);
 
     switch (intInsn.getOpcode()) {
-      case BIPUSH: {
-        writeValue(intInsn.operand, currentClass, currentLine);
-        break;
-      }
-      case SIPUSH: {
-        writeValue(intInsn.operand, currentClass, currentLine);
-        break;
-      }
       case NEWARRAY: {
 
         switch (intInsn.operand) {
@@ -1155,7 +1193,7 @@
     writeDebugBegin(currentClass, currentLine);
     writer.writeKeyword(Token.ASG_OPERATION);
     writer.writeOpen();
-    writeStackAccess(nextFrame, TOP_OF_STACK);
+    writeStack(nextFrame, TOP_OF_STACK);
     writeNewArray(frame, manaIns.desc, manaIns.dims);
     writeDebugEnd(currentClass, currentLine);
     writer.writeClose();
@@ -1172,7 +1210,7 @@
     writer.writeId(typeDesc);
     writer.writeOpenNodeList();
     for (int i = (dims - 1); i >= 0; i--) {
-      writeStackAccess(frame, TOP_OF_STACK - i);
+      readStack(frame, TOP_OF_STACK - i);
     }
     writer.writeCloseNodeList();
     writer.writeOpenNodeList(); // Empty initializers list.
@@ -1245,11 +1283,11 @@
         throw new JillException("Not yet supported " + Printer.OPCODES[opcode]);
       }
     }
-    writeStackAccess(frame, startIdx);
+    readStack(frame, startIdx);
     writeDebugEnd(currentClass, currentLine);
     writer.writeClose();
 
-    writeStackAccess(frame, startIdx + 1);
+    readStack(frame, startIdx + 1);
     writeDebugEnd(currentClass, currentLine);
     writer.writeClose();
   }
@@ -1293,7 +1331,7 @@
     writer.writeCatchBlockIds(currentCatchList);
     writer.writeKeyword(Token.SWITCH_STATEMENT);
     writer.writeOpen();
-    writeStackAccess(frame, TOP_OF_STACK);
+    readStack(frame, TOP_OF_STACK);
     writer.writeIds(cases);
     writeDebugBegin(currentClass, currentLine);
     writer.writeCatchBlockIds(currentCatchList);
@@ -1306,7 +1344,11 @@
       writer.writeKeyword(Token.CASE_STATEMENT);
       writer.writeOpen();
       writer.writeId(c.caseId);
-      writeValue(c.key, currentClass, currentLine);
+      if (c.key == null) {
+        writer.writeNull();
+      } else {
+        writeValue(c.key, currentClass, currentLine);
+      }
       writeDebugEnd(currentClass, currentLine);
       writer.writeClose();
       writeGoto(c.labelNode);
@@ -1328,7 +1370,7 @@
     writeDebugBegin(currentClass, currentLine);
     writer.writeKeyword(Token.ASG_OPERATION);
     writer.writeOpen();
-    writeStackAccess(nextFrame, TOP_OF_STACK);
+    writeStack(nextFrame, TOP_OF_STACK);
 
     String descriptor = Type.getObjectType(typeInsn.desc).getDescriptor();
 
@@ -1354,7 +1396,7 @@
         writeDebugBegin(currentClass, currentLine);
         writer.writeKeyword(Token.INSTANCE_OF);
         writer.writeOpen();
-        writeStackAccess(frame, TOP_OF_STACK);
+        readStack(frame, TOP_OF_STACK);
         writer.writeId(descriptor);
         writeDebugEnd(currentClass, currentLine);
         writer.writeClose();
@@ -1394,7 +1436,7 @@
           writeCastOperation(Token.REINTERPRETCAST_OPERATION, frame,
               Type.BOOLEAN_TYPE.getDescriptor(), TOP_OF_STACK);
         } else {
-          writeStackAccess(frame, TOP_OF_STACK);
+          readStack(frame, TOP_OF_STACK);
         }
         break;
       }
@@ -1404,12 +1446,12 @@
           writeCastOperation(Token.REINTERPRETCAST_OPERATION, frame,
               Type.BOOLEAN_TYPE.getDescriptor(), TOP_OF_STACK);
         } else {
-          writeStackAccess(frame, TOP_OF_STACK);
+          readStack(frame, TOP_OF_STACK);
         }
         break;
       }
       case GETFIELD: {
-        writeStackAccess(nextFrame, TOP_OF_STACK);
+        writeStack(nextFrame, TOP_OF_STACK);
         if (Type.getType(fldInsn.desc) == Type.BOOLEAN_TYPE) {
           writeDebugBegin(currentClass, currentLine);
           writer.writeKeyword(Token.REINTERPRETCAST_OPERATION);
@@ -1424,7 +1466,7 @@
         break;
       }
       case GETSTATIC: {
-        writeStackAccess(nextFrame, TOP_OF_STACK);
+        writeStack(nextFrame, TOP_OF_STACK);
         if (Type.getType(fldInsn.desc) == Type.BOOLEAN_TYPE) {
           writeDebugBegin(currentClass, currentLine);
           writer.writeKeyword(Token.REINTERPRETCAST_OPERATION);
@@ -1471,7 +1513,7 @@
           writeDebugBegin(currentClass, currentLine);
           writer.writeKeyword(Token.ASG_OPERATION);
           writer.writeOpen();
-          writeStackAccess(nextFrame, TOP_OF_STACK);
+          writeStack(nextFrame, TOP_OF_STACK);
           if (returnType == Type.BOOLEAN_TYPE) {
             writeDebugBegin(currentClass, currentLine);
             writer.writeKeyword(Token.REINTERPRETCAST_OPERATION);
@@ -1537,7 +1579,7 @@
           if ((receiverType.equals(frame.getStack(frame.getStackSize() - stackArgIndex).getType())
               && !isCallToPolymorphicMethod) || mthInsn.name.equals("<init>")) {
             // It is not possible to add cast on object before call to init
-            writeStackAccess(frame, -stackArgIndex);
+            readStack(frame, -stackArgIndex);
           } else {
             writeCastOperation(Token.REINTERPRETCAST_OPERATION, frame, receiverType.getDescriptor(),
                 -stackArgIndex);
@@ -1586,7 +1628,7 @@
             writeCastOperation(Token.REINTERPRETCAST_OPERATION, frame, argType.getDescriptor(),
                 -stackArgIndex);
           } else {
-            writeStackAccess(frame, -stackArgIndex);
+            readStack(frame, -stackArgIndex);
           }
           stackArgIndex--;
         }
@@ -1636,7 +1678,7 @@
         writeDebugBegin(currentClass, currentLine);
         writer.writeKeyword(Token.ASG_OPERATION);
         writer.writeOpen();
-        writeStackAccess(nextFrame, TOP_OF_STACK);
+        writeStack(nextFrame, TOP_OF_STACK);
         if (getLocalVariable(frame, varInsn.var).getType() == Type.BOOLEAN_TYPE) {
           writeCastOperation(Token.REINTERPRETCAST_OPERATION, getLocalVariable(frame, varInsn.var),
               Type.INT_TYPE.getDescriptor());
@@ -1672,7 +1714,7 @@
             writeCastOperation(Token.REINTERPRETCAST_OPERATION, frame, destType.getDescriptor(),
                 TOP_OF_STACK);
           } else {
-            writeStackAccess(frame, TOP_OF_STACK);
+            readStack(frame, TOP_OF_STACK);
           }
           writeDebugEnd(currentClass, currentLine);
           writer.writeClose();
@@ -1698,91 +1740,35 @@
       case ICONST_4:
       case ICONST_5: {
         assert nextFrame != null;
-        writeDebugBegin(currentClass, currentLine);
-        writer.writeCatchBlockIds(currentCatchList);
-        writer.writeKeyword(Token.EXPRESSION_STATEMENT);
-        writer.writeOpen();
-        writeDebugBegin(currentClass, currentLine);
-        writer.writeKeyword(Token.ASG_OPERATION);
-        writer.writeOpen();
-        writeStackAccess(nextFrame, TOP_OF_STACK);
-        writeValue(insn.getOpcode() - ICONST_0, currentClass, currentLine);
-        writeDebugEnd(currentClass, currentLine);
-        writer.writeClose();
-        writeDebugEnd(currentClass, currentLine);
-        writer.writeClose();
+        varWithCstValue.put(getStackVariable(nextFrame, TOP_OF_STACK),
+            Integer.valueOf(insn.getOpcode() - ICONST_0));
         break;
       }
       case ACONST_NULL: {
         assert nextFrame != null;
-        writeDebugBegin(currentClass, currentLine);
-        writer.writeCatchBlockIds(currentCatchList);
-        writer.writeKeyword(Token.EXPRESSION_STATEMENT);
-        writer.writeOpen();
-        writeDebugBegin(currentClass, currentLine);
-        writer.writeKeyword(Token.ASG_OPERATION);
-        writer.writeOpen();
-        writeStackAccess(nextFrame, TOP_OF_STACK);
-        writeValue(currentClass, currentLine);
-        writeDebugEnd(currentClass, currentLine);
-        writer.writeClose();
-        writeDebugEnd(currentClass, currentLine);
-        writer.writeClose();
+        varWithCstValue.put(getStackVariable(nextFrame, TOP_OF_STACK), null);
         break;
       }
       case LCONST_0:
       case LCONST_1: {
         assert nextFrame != null;
-        writeDebugBegin(currentClass, currentLine);
-        writer.writeCatchBlockIds(currentCatchList);
-        writer.writeKeyword(Token.EXPRESSION_STATEMENT);
-        writer.writeOpen();
-        writeDebugBegin(currentClass, currentLine);
-        writer.writeKeyword(Token.ASG_OPERATION);
-        writer.writeOpen();
-        writeStackAccess(nextFrame, TOP_OF_STACK);
-        writeValue((long) (insn.getOpcode() - LCONST_0), currentClass, currentLine);
-        writeDebugEnd(currentClass, currentLine);
-        writer.writeClose();
-        writeDebugEnd(currentClass, currentLine);
-        writer.writeClose();
+        varWithCstValue.put(getStackVariable(nextFrame, TOP_OF_STACK),
+            Long.valueOf(insn.getOpcode() - LCONST_0));
         break;
       }
       case FCONST_0:
       case FCONST_1:
       case FCONST_2: {
         assert nextFrame != null;
-        writeDebugBegin(currentClass, currentLine);
-        writer.writeCatchBlockIds(currentCatchList);
-        writer.writeKeyword(Token.EXPRESSION_STATEMENT);
-        writer.writeOpen();
-        writeDebugBegin(currentClass, currentLine);
-        writer.writeKeyword(Token.ASG_OPERATION);
-        writer.writeOpen();
-        writeStackAccess(nextFrame, TOP_OF_STACK);
-        writeValue((float) (insn.getOpcode() - FCONST_0), currentClass, currentLine);
-        writeDebugEnd(currentClass, currentLine);
-        writer.writeClose();
-        writeDebugEnd(currentClass, currentLine);
-        writer.writeClose();
+        varWithCstValue.put(getStackVariable(nextFrame, TOP_OF_STACK),
+            new Float(insn.getOpcode() - FCONST_0));
         break;
       }
       case DCONST_0:
       case DCONST_1: {
         assert nextFrame != null;
-        writeDebugBegin(currentClass, currentLine);
-        writer.writeCatchBlockIds(currentCatchList);
-        writer.writeKeyword(Token.EXPRESSION_STATEMENT);
-        writer.writeOpen();
-        writeDebugBegin(currentClass, currentLine);
-        writer.writeKeyword(Token.ASG_OPERATION);
-        writer.writeOpen();
-        writeStackAccess(nextFrame, TOP_OF_STACK);
-        writeValue((double) (insn.getOpcode() - DCONST_0), currentClass, currentLine);
-        writeDebugEnd(currentClass, currentLine);
-        writer.writeClose();
-        writeDebugEnd(currentClass, currentLine);
-        writer.writeClose();
+        varWithCstValue.put(getStackVariable(nextFrame, TOP_OF_STACK),
+            new Double(insn.getOpcode() - DCONST_0));
         break;
       }
       case D2L:
@@ -1865,10 +1851,9 @@
       case DCMPL:
       case DCMPG: {
         assert nextFrame != null;
-        Variable lhs = getStackVariable(frame, TOP_OF_STACK - 1);
-        Variable rhs = getStackVariable(frame, TOP_OF_STACK);
         Variable result = getStackVariable(nextFrame, TOP_OF_STACK);
-        cmpOperands.put(result, new CmpOperands(insn.getOpcode(), lhs, rhs));
+        cmpOperands.put(result,
+            new CmpOperands(insn.getOpcode(), frame, TOP_OF_STACK - 1, frame, TOP_OF_STACK));
         break;
       }
       case DSUB:
@@ -1915,11 +1900,11 @@
         writeDebugBegin(currentClass, currentLine);
         writer.writeKeyword(Token.ASG_OPERATION);
         writer.writeOpen();
-        writeStackAccess(nextFrame, TOP_OF_STACK);
+        writeStack(nextFrame, TOP_OF_STACK);
         writeDebugBegin(currentClass, currentLine);
         writer.writeKeyword(Token.PREFIX_NEG_OPERATION);
         writer.writeOpen();
-        writeStackAccess(frame, TOP_OF_STACK);
+        readStack(frame, TOP_OF_STACK);
         writeDebugEnd(currentClass, currentLine);
         writer.writeClose();
         writeDebugEnd(currentClass, currentLine);
@@ -1973,11 +1958,11 @@
         writeDebugBegin(currentClass, currentLine);
         writer.writeKeyword(Token.ASG_OPERATION);
         writer.writeOpen();
-        writeStackAccess(nextFrame, TOP_OF_STACK);
+        writeStack(nextFrame, TOP_OF_STACK);
         writeDebugBegin(currentClass, currentLine);
         writer.writeKeyword(Token.ARRAY_LENGTH);
         writer.writeOpen();
-        writeStackAccess(frame, TOP_OF_STACK);
+        readStack(frame, TOP_OF_STACK);
         writeDebugEnd(currentClass, currentLine);
         writer.writeClose();
         writeDebugEnd(currentClass, currentLine);
@@ -2003,7 +1988,7 @@
         writeDebugBegin(currentClass, currentLine);
         writer.writeKeyword(Token.ASG_OPERATION);
         writer.writeOpen();
-        writeStackAccess(nextFrame, TOP_OF_STACK);
+        writeStack(nextFrame, TOP_OF_STACK);
         writeArrayRef(frame, TOP_OF_STACK - 1, insn.getOpcode());
         writeDebugEnd(currentClass, currentLine);
         writer.writeClose();
@@ -2027,7 +2012,7 @@
         writer.writeKeyword(Token.ASG_OPERATION);
         writer.writeOpen();
         writeArrayRef(frame, TOP_OF_STACK - 2, insn.getOpcode());
-        writeStackAccess(frame, TOP_OF_STACK);
+        readStack(frame, TOP_OF_STACK);
         writeDebugEnd(currentClass, currentLine);
         writer.writeClose();
         writeDebugEnd(currentClass, currentLine);
@@ -2039,7 +2024,7 @@
         writer.writeCatchBlockIds(currentCatchList);
         writer.writeKeyword(Token.LOCK);
         writer.writeOpen();
-        writeStackAccess(frame, TOP_OF_STACK);
+        readStack(frame, TOP_OF_STACK);
         writeDebugEnd(currentClass, currentLine);
         writer.writeClose();
         break;
@@ -2049,7 +2034,7 @@
         writer.writeCatchBlockIds(currentCatchList);
         writer.writeKeyword(Token.UNLOCK);
         writer.writeOpen();
-        writeStackAccess(frame, TOP_OF_STACK);
+        readStack(frame, TOP_OF_STACK);
         writeDebugEnd(currentClass, currentLine);
         writer.writeClose();
         break;
@@ -2079,7 +2064,7 @@
           writer.writeKeyword(Token.ASG_OPERATION);
           writer.writeOpen();
           writeLocalRef(tmpVar);
-          writeStackAccess(frame, TOP_OF_STACK - 1);
+          readStack(frame, TOP_OF_STACK - 1);
           writeDebugEnd(currentClass, currentLine);
           writer.writeClose();
           writeDebugEnd(currentClass, currentLine);
@@ -2109,7 +2094,7 @@
           writeDebugBegin(currentClass, currentLine);
           writer.writeKeyword(Token.ASG_OPERATION);
           writer.writeOpen();
-          writeStackAccess(nextFrame, TOP_OF_STACK);
+          writeStack(nextFrame, TOP_OF_STACK);
           writeLocalRef(tmpVar);
           writeDebugEnd(currentClass, currentLine);
           writer.writeClose();
@@ -2197,6 +2182,7 @@
           // Result of comparison must be pop
           cmpOperands.remove(getStackVariable(frame, TOP_OF_STACK));
         }
+        removeStackVariableConstant(frame, TOP_OF_STACK);
         break;
       }
       case NOP:
@@ -2212,6 +2198,10 @@
             // Result of comparison must be pop
             cmpOperands.remove(getStackVariable(frame, TOP_OF_STACK - 1));
           }
+          removeStackVariableConstant(frame, TOP_OF_STACK);
+          removeStackVariableConstant(frame, TOP_OF_STACK - 1);
+        } else {
+          removeStackVariableConstant(frame, TOP_OF_STACK);
         }
         break;
       }
@@ -2220,7 +2210,7 @@
         writer.writeCatchBlockIds(currentCatchList);
         writer.writeKeyword(Token.THROW_STATEMENT);
         writer.writeOpen();
-        writeStackAccess(frame, TOP_OF_STACK);
+        readStack(frame, TOP_OF_STACK);
         writeDebugEnd(currentClass, currentLine);
         writer.writeClose();
         break;
@@ -2236,21 +2226,8 @@
     return cmpOperands.containsKey(stackVar);
   }
 
-  private void writeInsn(@Nonnull Frame<BasicValue> nextFrame, @Nonnull LdcInsnNode ldcInsn)
-      throws IOException {
-    writeDebugBegin(currentClass, currentLine);
-    writer.writeCatchBlockIds(currentCatchList);
-    writer.writeKeyword(Token.EXPRESSION_STATEMENT);
-    writer.writeOpen();
-    writeDebugBegin(currentClass, currentLine);
-    writer.writeKeyword(Token.ASG_OPERATION);
-    writer.writeOpen();
-    writeStackAccess(nextFrame, TOP_OF_STACK);
-    writeValue(ldcInsn.cst, currentClass, currentLine);
-    writeDebugEnd(currentClass, currentLine);
-    writer.writeClose();
-    writeDebugEnd(currentClass, currentLine);
-    writer.writeClose();
+  private void writeInsn(@Nonnull Frame<BasicValue> nextFrame, @Nonnull LdcInsnNode ldcInsn) {
+    varWithCstValue.put(getStackVariable(nextFrame, TOP_OF_STACK), ldcInsn.cst);
   }
 
   private void writeInsn(
@@ -2292,8 +2269,8 @@
           writeDebugBegin(currentClass, currentLine);
           writer.writeKeyword(comparisonToken);
           writer.writeOpen();
-          writeLocalRef(cmpOps.lhs);
-          writeLocalRef(cmpOps.rhs);
+          readStack(cmpOps.lhsFrame, cmpOps.lhsStackIdx);
+          readStack(cmpOps.rhsFrame, cmpOps.rhsStackIdx);
           writeDebugEnd(currentClass, currentLine);
           writer.writeClose();
 
@@ -2334,7 +2311,7 @@
           writeDebugBegin(currentClass, currentLine);
           writer.writeKeyword(conditionalToken);
           writer.writeOpen();
-          writeStackAccess(frame, TOP_OF_STACK);
+          readStack(frame, TOP_OF_STACK);
           Variable v = getStackVariable(frame, TOP_OF_STACK);
           if (v.getType().equals(Type.BOOLEAN_TYPE)) {
             writeValue(false, currentClass, currentLine);
@@ -2379,8 +2356,8 @@
         writeDebugBegin(currentClass, currentLine);
         writer.writeKeyword(conditionalToken);
         writer.writeOpen();
-        writeStackAccess(frame, TOP_OF_STACK - 1);
-        writeStackAccess(frame, TOP_OF_STACK);
+        readStack(frame, TOP_OF_STACK - 1);
+        readStack(frame, TOP_OF_STACK);
         writeDebugEnd(currentClass, currentLine);
         writer.writeClose();
         // Then block
@@ -2522,17 +2499,27 @@
     if (stackIdx == 0) {
       writer.writeNull();
     } else {
-      writeStackAccess(frame, stackIdx);
+      readStack(frame, stackIdx);
     }
     writeDebugEnd(currentClass, currentLine);
     writer.writeClose();
   }
 
-  private void writeStackAccess(@Nonnull Frame<BasicValue> frame, int stackIdx)
+  private void writeStack(@Nonnull Frame<BasicValue> frame, int stackIdx)
       throws IndexOutOfBoundsException, IOException {
     writeLocalRef(getStackVariable(frame, stackIdx));
   }
 
+  private void readStack(@Nonnull Frame<BasicValue> frame, int stackIdx)
+      throws IndexOutOfBoundsException, IOException {
+    Variable stackVariable = getStackVariable(frame, stackIdx);
+    if (varWithCstValue.containsKey(stackVariable)) {
+      writeValue(varWithCstValue.remove(stackVariable), currentClass, currentLine);
+    } else {
+      writeLocalRef(stackVariable);
+    }
+  }
+
   private void writeLocalAccess(@Nonnull Frame<BasicValue> frame, @Nonnegative int localIdx)
       throws IndexOutOfBoundsException, IOException {
     writeLocalRef(getLocalVariable(frame, localIdx));
@@ -2553,11 +2540,9 @@
       writer.writeOpen();
       writer.writeId(v.getId());
 
-      if (!v.isParameter()) {
-        writer.writeOpenNodeList();
-        writeDebugInformation(v);
-        writer.writeCloseNodeList();
-      }
+      writer.writeOpenNodeList();
+      writeDebugInformation(v);
+      writer.writeCloseNodeList();
 
       writeDebugEnd(currentClass, currentLine);
       writer.writeClose();
@@ -2579,6 +2564,16 @@
       writer.writeId(lvn.desc);
       writer.writeString(lvn.signature);
       writer.writeClose();
+    } else if (v.isParameter()) {
+      // Even if there is no debug information, generate the marker with null information to inform
+      // Jack do not use name from JParameter since it is not a debug information but the parameter
+      // name information.
+      writer.writeKeyword(Token.DEBUG_VARIABLE_INFORMATION);
+      writer.writeOpen();
+      writer.writeString(null);
+      writer.writeId(null);
+      writer.writeString(null);
+      writer.writeClose();
     }
   }
 
@@ -2591,7 +2586,7 @@
     writer.writeId(fldInsn.desc);
     writer.writeId(Type.getObjectType(fldInsn.owner).getDescriptor());
     writer.writeFieldRefKindEnum(FieldRefKind.INSTANCE);
-    writeStackAccess(frame, offset);
+    readStack(frame, offset);
     writeDebugEnd(currentClass, currentLine);
     writer.writeClose();
   }
@@ -2655,7 +2650,7 @@
     writer.writeKeyword(Token.LOCAL);
     writer.writeOpen();
     writer.writeId(v.getId());
-    writer.writeInt(v.isSynthetic() ? Opcodes.ACC_SYNTHETIC : NO_MODIFIER);
+    writer.writeInt(v.getModifier());
     writer.writeId(v.getType().getDescriptor());
     writer.writeId(v.getName());
     writer.writeOpenNodeList(); // Empty annotation set, annotations on locals are not kept
@@ -2676,7 +2671,7 @@
     writeDebugBegin(currentClass, currentLine);
     writer.writeKeyword(Token.ASG_OPERATION);
     writer.writeOpen();
-    writeStackAccess(nextFrame, TOP_OF_STACK);
+    writeStack(nextFrame, TOP_OF_STACK);
     writeCastOperation(Token.DYNAMIC_CAST_OPERATION, frame, Type.getDescriptor(targetType),
         TOP_OF_STACK);
     writeDebugEnd(currentClass, currentLine);
@@ -2705,7 +2700,20 @@
 
   private void writeCastOperation(@Nonnull Token cast, @Nonnull Frame<BasicValue> frame,
       @Nonnull String typeDesc, int stackIdx) throws IOException {
-    writeCastOperation(cast, getStackVariable(frame, stackIdx), typeDesc);
+    assert cast == Token.DYNAMIC_CAST_OPERATION || cast == Token.REINTERPRETCAST_OPERATION;
+    writeDebugBegin(currentClass, currentLine);
+    writer.writeKeyword(cast);
+    writer.writeOpen();
+    if (cast == Token.DYNAMIC_CAST_OPERATION) {
+      ArrayList<String> types = new ArrayList<String>(1);
+      types.add(typeDesc);
+      writer.writeIds(types);
+    } else {
+      writer.writeId(typeDesc);
+    }
+    readStack(frame, stackIdx);
+    writeDebugEnd(currentClass, currentLine);
+    writer.writeClose();
   }
 
   private void writeDup(@Nonnull Frame<BasicValue> frame, @Nonnull Frame<BasicValue> nextFrame)
@@ -2725,15 +2733,26 @@
   private void writeDupX1(@Nonnull Frame<BasicValue> frame, @Nonnull Frame<BasicValue> nextFrame)
       throws IOException {
     writeAssign(frame, TOP_OF_STACK, nextFrame, TOP_OF_STACK);
+    removeStackVariableConstant(frame, TOP_OF_STACK);
     writeAssign(frame, TOP_OF_STACK - 1, nextFrame, TOP_OF_STACK - 1);
+    removeStackVariableConstant(frame, TOP_OF_STACK - 1);
     writeAssign(nextFrame, TOP_OF_STACK, nextFrame, TOP_OF_STACK - 2);
   }
 
+  private void removeStackVariableConstant(@Nonnull Frame<BasicValue> frame, int stackIdx) {
+    // Stack level will be erased by an assignment thus it is no longer a constant, it could become
+    // one again if the stack variable read is a constant
+    varWithCstValue.remove(getStackVariable(frame, stackIdx));
+  }
+
   private void writeDupX2(@Nonnull Frame<BasicValue> frame, @Nonnull Frame<BasicValue> nextFrame)
       throws IOException {
     writeAssign(frame, TOP_OF_STACK, nextFrame, TOP_OF_STACK);
+    removeStackVariableConstant(frame, TOP_OF_STACK);
     writeAssign(frame, TOP_OF_STACK - 1, nextFrame, TOP_OF_STACK - 1);
+    removeStackVariableConstant(frame, TOP_OF_STACK - 1);
     writeAssign(frame, TOP_OF_STACK - 2, nextFrame, TOP_OF_STACK - 2);
+    removeStackVariableConstant(frame, TOP_OF_STACK - 2);
     writeAssign(nextFrame, TOP_OF_STACK, nextFrame, TOP_OF_STACK - 3);
   }
 
@@ -2764,8 +2783,11 @@
   private void writeDup2X1(@Nonnull Frame<BasicValue> frame, @Nonnull Frame<BasicValue> nextFrame)
       throws IOException {
     writeAssign(frame, TOP_OF_STACK, nextFrame, TOP_OF_STACK);
+    removeStackVariableConstant(frame, TOP_OF_STACK);
     writeAssign(frame, TOP_OF_STACK - 1, nextFrame, TOP_OF_STACK - 1);
+    removeStackVariableConstant(frame, TOP_OF_STACK - 1);
     writeAssign(frame, TOP_OF_STACK - 2, nextFrame, TOP_OF_STACK - 2);
+    removeStackVariableConstant(frame, TOP_OF_STACK - 2);
     writeAssign(nextFrame, TOP_OF_STACK, nextFrame, TOP_OF_STACK - 3);
     writeAssign(nextFrame, TOP_OF_STACK - 1, nextFrame, TOP_OF_STACK - 4);
   }
@@ -2773,15 +2795,20 @@
   private void writeDup2X2(@Nonnull Frame<BasicValue> frame, @Nonnull Frame<BasicValue> nextFrame)
       throws IOException {
     writeAssign(frame, TOP_OF_STACK, nextFrame, TOP_OF_STACK);
+    removeStackVariableConstant(frame, TOP_OF_STACK);
     writeAssign(frame, TOP_OF_STACK - 1, nextFrame, TOP_OF_STACK - 1);
+    removeStackVariableConstant(frame, TOP_OF_STACK - 1);
     writeAssign(frame, TOP_OF_STACK - 2, nextFrame, TOP_OF_STACK - 2);
+    removeStackVariableConstant(frame, TOP_OF_STACK - 2);
     writeAssign(frame, TOP_OF_STACK - 3, nextFrame, TOP_OF_STACK - 3);
+    removeStackVariableConstant(frame, TOP_OF_STACK - 3);
     writeAssign(nextFrame, TOP_OF_STACK, nextFrame, TOP_OF_STACK - 4);
     writeAssign(nextFrame, TOP_OF_STACK - 1, nextFrame, TOP_OF_STACK - 5);
   }
 
   /**
    * writes frame2.stack[frame.stack.size() + offset2] = frame1.stack[frame.stack.size() + offset1]
+   * This method is used to simulate stack operations such swap, dup and so on.
    *
    * @throws IOException
    */
@@ -2790,19 +2817,27 @@
     assert !isBooleanAssignIssue(
         getStackVariable(frame2, offset2),
         getStackVariable(frame1, offset1));
-    writeDebugBegin(currentClass, currentLine);
-    writer.writeCatchBlockIds(currentCatchList);
-    writer.writeKeyword(Token.EXPRESSION_STATEMENT);
-    writer.writeOpen();
-    writeDebugBegin(currentClass, currentLine);
-    writer.writeKeyword(Token.ASG_OPERATION);
-    writer.writeOpen();
-    writeStackAccess(frame2, offset2);
-    writeStackAccess(frame1, offset1);
-    writeDebugEnd(currentClass, currentLine);
-    writer.writeClose();
-    writeDebugEnd(currentClass, currentLine);
-    writer.writeClose();
+    Variable stackVariableRead = getStackVariable(frame1, offset1);
+    if (varWithCstValue.containsKey(stackVariableRead)) {
+      // The read variable is a constant, thus do not write the constant into the stack but
+      // associate this stack variable with the same constant.
+      varWithCstValue.put(getStackVariable(frame2, offset2),
+          varWithCstValue.get(stackVariableRead));
+    } else {
+      writeDebugBegin(currentClass, currentLine);
+      writer.writeCatchBlockIds(currentCatchList);
+      writer.writeKeyword(Token.EXPRESSION_STATEMENT);
+      writer.writeOpen();
+      writeDebugBegin(currentClass, currentLine);
+      writer.writeKeyword(Token.ASG_OPERATION);
+      writer.writeOpen();
+      writeStack(frame2, offset2);
+      readStack(frame1, offset1);
+      writeDebugEnd(currentClass, currentLine);
+      writer.writeClose();
+      writeDebugEnd(currentClass, currentLine);
+      writer.writeClose();
+    }
   }
 
   private void writeBinaryOperation(
@@ -2818,12 +2853,12 @@
     writeDebugBegin(currentClass, currentLine);
     writer.writeKeyword(Token.ASG_OPERATION);
     writer.writeOpen();
-    writeStackAccess(nextFrame, TOP_OF_STACK);
+    writeStack(nextFrame, TOP_OF_STACK);
     writeDebugBegin(currentClass, currentLine);
     writer.writeKeyword(op);
     writer.writeOpen();
-    writeStackAccess(frame, TOP_OF_STACK - 1);
-    writeStackAccess(frame, TOP_OF_STACK);
+    readStack(frame, TOP_OF_STACK - 1);
+    readStack(frame, TOP_OF_STACK);
     writeDebugEnd(currentClass, currentLine);
     writer.writeClose();
     writeDebugEnd(currentClass, currentLine);
@@ -2851,6 +2886,9 @@
           }
         }
         for (int stackIdx = 0; stackIdx < frame.getStackSize(); stackIdx++) {
+          // Useless local variables can be created by Jill, indeed all stack variables are created
+          // but some of them will be never used, for instance constant will be put directly on
+          // their usage and will not used stack variable.
           Variable v = getStackVariable(frame, -stackIdx - 1);
           locals.add(v);
         }
@@ -2872,48 +2910,72 @@
   private Variable getTempVarFromTopOfStackMinus1(@Nonnull Frame<BasicValue> frame) {
     Variable topOfStackBeforeInst = getStackVariable(frame, TOP_OF_STACK - 1);
     String tmpVarId = "-swap_tmp_" + typeToUntypedDesc(topOfStackBeforeInst.getType());
-    Variable tmpVariable = getVariable(tmpVarId, tmpVarId, topOfStackBeforeInst.getType(), null);
+    Variable tmpVariable = getVariable(tmpVarId, tmpVarId, topOfStackBeforeInst.getType());
     return tmpVariable;
   }
 
+  @CheckForNull
+  private String getParameterName(@Nonnegative int parameterIdx) {
+    if (currentMethod.parameters != null) {
+      return currentMethod.parameters.get(parameterIdx).name;
+    }
+    return null;
+  }
+
+  private int getParameterModifier(@Nonnegative int parameterIdx,
+      @CheckForNull LocalVariableNode lvn) {
+    if (currentMethod.parameters != null) {
+      return currentMethod.parameters.get(parameterIdx).access | NAME_PRESENT;
+    } else if (lvn == null) {
+      return ACC_SYNTHETIC;
+    }
+    return NO_MODIFIER;
+  }
+
   private void writeParameters()
       throws IOException {
     writer.writeOpenNodeList();
 
-    int parameterIdx = 0;
+    int parameterLocalIdx = 0;
     int parameterAnnotationIdx = 0;
     currentPc = 0;
 
     if (!AsmHelper.isStatic(currentMethod)) {
       Type parameterType = Type.getObjectType(currentClass.name);
-      LocalVariableNode lvn = getLocalVariableNode(parameterIdx);
-      String pid = getUnnamedParameterId(parameterIdx, parameterType);
-      Variable p = getVariableWithLocalIndex(parameterIdx, pid, lvn != null ? lvn.name : pid,
-          parameterType, lvn != null ? lvn.signature : null);
+      LocalVariableNode lvn = getLocalVariableNode(parameterLocalIdx);
+      String pid = getUnnamedParameterId(parameterLocalIdx, parameterType);
+      Variable p = getVariableWithLocalIndex(parameterLocalIdx, pid, lvn != null ? lvn.name : pid,
+          parameterType, lvn != null ? lvn.signature : null,
+          lvn == null ? ACC_SYNTHETIC : NO_MODIFIER);
       p.setThis();
 
       Type untypedParameter = typeToUntyped(parameterType);
-      String lid = getUnnamedLocalId(parameterIdx, untypedParameter);
-      Variable local = getVariableWithLocalIndex(parameterIdx, lid, lid, untypedParameter, null);
+      String lid = getUnnamedLocalId(parameterLocalIdx, untypedParameter);
+      Variable local = getVariableWithLocalIndex(parameterLocalIdx, lid, lid, untypedParameter,
+          null, lvn == null ? ACC_SYNTHETIC : NO_MODIFIER);
 
       parameter2Var.put(p, local);
-      parameterIdx++;
+      parameterLocalIdx++;
     }
 
+    int parameterIdx = 0;
     for (Type paramType : Type.getArgumentTypes(currentMethod.desc)) {
-      LocalVariableNode lvn = getLocalVariableNode(parameterIdx);
-      String pid = getUnnamedParameterId(parameterIdx, paramType);
-      Variable p = getVariableWithLocalIndex(parameterIdx, pid, lvn != null ? lvn.name : pid,
-          paramType, lvn != null ? lvn.signature : null);
+      LocalVariableNode lvn = getLocalVariableNode(parameterLocalIdx);
+      String pid = getUnnamedParameterId(parameterLocalIdx, paramType);
+      Variable p = getVariableWithLocalIndex(parameterLocalIdx, pid,
+          getParameterName(parameterIdx), paramType, lvn != null ? lvn.signature : null,
+          getParameterModifier(parameterIdx, lvn));
       p.setParameter();
-      writeParameter(paramType, parameterIdx, p, parameterAnnotationIdx++);
+      writeParameter(paramType, parameterLocalIdx, p, parameterAnnotationIdx++);
 
       Type untypedParameter = typeToUntyped(paramType);
-      String lid = getUnnamedLocalId(parameterIdx, untypedParameter);
-      Variable local = getVariableWithLocalIndex(parameterIdx, lid, lid, untypedParameter, null);
+      String lid = getUnnamedLocalId(parameterLocalIdx, untypedParameter);
+      Variable local = getVariableWithLocalIndex(parameterLocalIdx, lid, lid, untypedParameter,
+          null, lvn == null ? ACC_SYNTHETIC : NO_MODIFIER);
 
       parameter2Var.put(p, local);
-      parameterIdx += paramType.getSize();
+      parameterLocalIdx += paramType.getSize();
+      parameterIdx++;
     }
 
     writer.writeCloseNodeList();
@@ -2925,7 +2987,7 @@
     writer.writeKeyword(Token.PARAMETER);
     writer.writeOpen();
     writer.writeId(param.getId());
-    writer.writeInt(param.isSynthetic() ? Opcodes.ACC_SYNTHETIC : NO_MODIFIER);
+    writer.writeInt(param.getModifier());
     writer.writeId(paramType.getDescriptor());
     writer.writeString(param.getName());
     annotWriter.writeAnnotations(currentMethod, parameterAnnotationIdx);
@@ -2991,7 +3053,7 @@
     String id = getUnnamedLocalId(localIdx, bv.getType());
     String localName = id;
     Type localType = typeToUntyped(bv.getType());
-    v = getVariableWithLocalIndex(localIdx, id, localName, localType, null);
+    v = getVariableWithLocalIndex(localIdx, id, localName, localType, null, NO_MODIFIER);
     return v;
   }
 
@@ -3017,17 +3079,16 @@
     BasicValue bv = frame.getStack(stackHeight);
     assert bv != BasicValue.UNINITIALIZED_VALUE;
     String id = "-s_" + stackHeight + "_" + typeToUntypedDesc(bv.getType());
-    Variable variable = getVariable(id, id, typeToUntyped(bv.getType()), null);
+    Variable variable = getVariable(id, id, typeToUntyped(bv.getType()));
     return variable;
   }
 
   @Nonnull
-  private Variable getVariable(@Nonnull String id, @Nonnull String name, @Nonnull Type type,
-      @CheckForNull String signature) {
+  private Variable getVariable(@Nonnull String id, @Nonnull String name, @Nonnull Type type) {
     Variable var = nameToVar.get(id);
 
     if (var == null) {
-      var = new Variable(id, name, type, signature);
+      var = new Variable(id, name, type);
       nameToVar.put(id, var);
     }
 
@@ -3036,13 +3097,11 @@
 
   @Nonnull
   private Variable getVariableWithLocalIndex(@Nonnegative int localIdx, @Nonnull String id,
-      @Nonnull String name, @Nonnull Type type, @CheckForNull String signature) {
+      @CheckForNull String name, @Nonnull Type type, @CheckForNull String signature, int modifier) {
     Variable var = nameToVar.get(id);
 
     if (var == null) {
-      // All variables which do no have LocalVariableNode are marked synthetic
-      var =
-          new Variable(id, name, type, signature, localIdx, getLocalVariableNode(localIdx) == null);
+      var = new Variable(id, name, type, signature, localIdx, modifier);
       nameToVar.put(id, var);
     }
 
diff --git a/jill/src/com/android/jill/frontend/java/Variable.java b/jill/src/com/android/jill/frontend/java/Variable.java
index 0725adc..1bad9a1 100644
--- a/jill/src/com/android/jill/frontend/java/Variable.java
+++ b/jill/src/com/android/jill/frontend/java/Variable.java
@@ -16,6 +16,7 @@
 
 package com.android.jill.frontend.java;
 
+import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.Type;
 
 import javax.annotation.CheckForNull;
@@ -38,25 +39,24 @@
   @CheckForNull
   private final String signature;
 
-  @Nonnull
+  @CheckForNull
   private String name;
 
   private boolean isThis;
 
   private boolean isParameter;
 
-  private final boolean isSynthetic;
+  private final int modifier;
 
   /* Index of local variable, -1 means the variable does not represent a local variable. */
   private final int localIdx;
 
-  public Variable(@Nonnull String id, @Nonnull String name, @Nonnull Type type,
-      @CheckForNull String signature) {
-    this(id, name, type, signature, NO_LOCAL_IDX, true);
+  public Variable(@Nonnull String id, @CheckForNull String name, @Nonnull Type type) {
+    this(id, name, type, null, NO_LOCAL_IDX, Opcodes.ACC_SYNTHETIC);
   }
 
-  public Variable(@Nonnull String id, @Nonnull String name, @Nonnull Type type,
-      @CheckForNull String signature, int localIdx, boolean isSynthetic) {
+  public Variable(@Nonnull String id, @CheckForNull String name, @Nonnull Type type,
+      @CheckForNull String signature, int localIdx, int modifier) {
     this.id = id;
     this.name = name;
     this.type = type;
@@ -64,7 +64,7 @@
     this.localIdx = localIdx;
     isThis = false;
     isParameter = false;
-    this.isSynthetic = isSynthetic;
+    this.modifier = modifier;
   }
 
   public boolean hasLocalIndex() {
@@ -96,7 +96,7 @@
     return signature;
   }
 
-  @Nonnull
+  @CheckForNull
   public String getName() {
     return name;
   }
@@ -122,7 +122,7 @@
     this.isParameter = true;
   }
 
-  public boolean isSynthetic() {
-    return isSynthetic;
+  public int getModifier() {
+    return modifier;
   }
 }
diff --git a/project-settings/jackstyle.xml b/project-settings/jackstyle.xml
new file mode 100644
index 0000000..3f69799
--- /dev/null
+++ b/project-settings/jackstyle.xml
@@ -0,0 +1,317 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC
+    "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
+    "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
+
+<!-- This is a checkstyle configuration file. For descriptions of
+what the following rules do, please see the checkstyle configuration
+page at http://checkstyle.sourceforge.net/config.html -->
+
+<!-- Checks with numbered comments refer to recommendations made
+by Joshua Bloch in his book Effective Java -->
+
+<module name="Checker">
+  <property name="charset" value="UTF-8"/>
+  <module name="FileTabCharacter">
+    <!-- Checks that there are no tab characters in the file.
+    -->
+  </module>
+
+  <module name="RegexpSingleline">
+    <!-- Checks that FIXME is not used in comments.  TODO is preferred.
+    -->
+    <property name="format" value="((//.*)|(\*.*))FIXME" />
+    <property name="message" value='TODO is preferred to FIXME.  e.g. "TODO(johndoe): Refactor when v2 is released."' />
+  </module>
+
+  <module name="RegexpSingleline">
+    <!-- Checks that TODOs are properly formatted.
+
+         The (?&lt;!TODO\(.{0,100}) makes the regex ignore any secondary TODO's on the line
+         so that things like //TODO(bob): remove this TODO on 1/1/2020 don't trigger a warning
+         because of the second TODO.  (The {0,100} is because java doesn't recoginize arbitrary
+         length look backs, but we know each java line should be < 100 chars.)
+    -->
+    <property name="format" value="((//.*)|(\*.*))(?&lt;!TODO\(.{0,100})(TODO[^(])|(TODO\([^)]*$)" />
+    <property name="message" value='All TODOs should be named.  e.g. "TODO(johndoe): Refactor when v2 is released."' />
+  </module>
+
+
+  <!-- All Java AST specific tests live under TreeWalker module. -->
+  <module name="TreeWalker">
+
+    <!--
+
+    IMPORT CHECKS
+
+    -->
+
+    <module name="RedundantImport">
+      <property name="severity" value="error"/>
+    </module>
+
+    <module name="AvoidStarImport">
+      <property name="severity" value="error"/>
+    </module>
+
+    <module name="UnusedImports">
+      <!-- DPL is a notable violator of this rule. -->
+      <property name="severity" value="error"/>
+      <!-- Imports used only in Javadoc are tolerated. -->
+      <property name="processJavadoc" value="true"/>
+      <message
+          key="import.unused"
+          value="Unused import: {0}." />
+    </module>
+
+    <module name="ImportOrder">
+      <!-- Checks for out of order import statements. -->
+      <property name="severity" value="warning"/>
+      <property name="groups" value="com.google,*,java,javax"/>
+      <!-- This ensures that static imports go first. -->
+      <property name="option" value="top"/>
+      <property name="tokens" value="STATIC_IMPORT, IMPORT"/>
+    </module>
+
+    <!--
+
+    JAVADOC CHECKS
+
+    -->
+
+    <module name="JavadocType">
+      <!-- Item 28 - Write doc comments for all exposed API elements. -->
+      <!-- Ensure all classes with visability greater than or equal to
+        protected have class level documentation. -->
+      <property name="scope" value="protected"/>
+      <property name="severity" value="error"/>
+      <!-- Style guide doesn't prohibit custom tags. Typos will be caught by other tools. -->
+      <property name="allowUnknownTags" value="true"/>
+      <property name="allowMissingParamTags" value="true"/>
+      <message key="javadoc.missing"
+               value="Missing a Javadoc comment."/>
+    </module>
+
+    <!--
+
+    NAMING CHECKS
+
+    -->
+
+    <!-- Item 38 - Adhere to generally accepted naming conventions -->
+
+    <module name="PackageName">
+      <!-- Validates identifiers for package names against the
+        supplied expression. -->
+      <!-- Here the default checkstyle rule restricts package name parts to
+        seven characters, this is not in line with common practice at Google.
+      -->
+      <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]{1,})*$"/>
+      <property name="severity" value="warning"/>
+    </module>
+
+    <module name="TypeNameCheck">
+      <metadata name="altname" value="TypeName"/>
+      <property name="severity" value="warning"/>
+    </module>
+
+    <module name="StaticVariableNameCheck">
+      <!-- Validates static, non-final fields against the supplied
+      expression "^[a-z][a-zA-Z0-9]*?$". -->
+      <metadata name="altname" value="StaticVariableName"/>
+      <property name="applyToPublic" value="true"/>
+      <property name="applyToProtected" value="true"/>
+      <property name="applyToPackage" value="true"/>
+      <property name="applyToPrivate" value="true"/>
+      <property name="format" value="^[a-z][a-zA-Z0-9]*?$"/>
+      <property name="severity" value="warning"/>
+    </module>
+
+    <module name="MemberNameCheck">
+      <!-- Validates non-static members against the supplied expression. -->
+      <metadata name="altname" value="MemberName"/>
+      <property name="applyToPublic" value="true"/>
+      <property name="applyToProtected" value="true"/>
+      <property name="applyToPackage" value="true"/>
+      <property name="applyToPrivate" value="true"/>
+      <property name="format" value="^[a-z][a-zA-Z0-9]*?$"/>
+      <property name="severity" value="warning"/>
+    </module>
+
+    <module name="MethodNameCheck">
+      <!-- Validates identifiers for method names. -->
+      <metadata name="altname" value="MethodName"/>
+      <property name="format" value="^[a-z][a-zA-Z0-9]*([a-zA-Z0-9]+)*$"/>
+      <property name="severity" value="warning"/>
+    </module>
+
+    <module name="ParameterName">
+      <!-- Validates identifiers for method parameters against the
+        expression "^[a-z][a-zA-Z0-9]*$". -->
+      <property name="severity" value="warning"/>
+    </module>
+
+    <module name="LocalFinalVariableName">
+      <!-- Validates identifiers for local final variables against the
+        expression "^[a-z][a-zA-Z0-9]*$". -->
+      <property name="severity" value="warning"/>
+    </module>
+
+    <module name="LocalVariableName">
+      <!-- Validates identifiers for local variables against the
+        expression "^[a-z][a-zA-Z0-9]*$". -->
+      <property name="severity" value="warning"/>
+    </module>
+
+
+    <!--
+
+    LENGTH and CODING CHECKS
+
+    -->
+
+    <module name="LineLength">
+      <!-- Checks if a line is too long. -->
+      <property name="max" value="${com.puppycrawl.tools.checkstyle.checks.sizes.LineLength.max}" default="100"/>
+      <property name="severity" value="error"/>
+
+      <!--
+        The default ignore pattern exempts the following elements:
+          - import statements
+          - long URLs inside comments
+      -->
+
+      <property name="ignorePattern"
+          value="${com.puppycrawl.tools.checkstyle.checks.sizes.LineLength.ignorePattern}"
+          default="^(package .*;\s*)|(import .*;\s*)|( *\* *https?://.*)|(\s*@[\w\.\$]+::\w+(?:\([^\(]*\)|\(\)\(\))?[,;]?)|(\s+\* \{@(link|see) [^\s][^\}]*\}[\.,;]?)$"/>
+    </module>
+
+    <module name="LeftCurly">
+      <!-- Checks for placement of the left curly brace ('{'). -->
+      <property name="severity" value="warning"/>
+    </module>
+
+    <module name="RightCurly">
+      <!-- Checks right curlies on CATCH, ELSE, and TRY blocks are on
+      the same line. e.g., the following example is fine:
+      <pre>
+        if {
+          ...
+        } else
+      </pre>
+      -->
+      <!-- This next example is not fine:
+      <pre>
+        if {
+          ...
+        }
+        else
+      </pre>
+      -->
+      <property name="option" value="same"/>
+      <property name="severity" value="warning"/>
+    </module>
+
+    <!-- Checks for braces around if and else blocks -->
+    <module name="NeedBraces">
+      <property name="severity" value="warning"/>
+      <property name="tokens" value="LITERAL_IF, LITERAL_ELSE, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO"/>
+    </module>
+
+    <module name="UpperEll">
+      <!-- Checks that long constants are defined with an upper ell.-->
+      <property name="severity" value="error"/>
+    </module>
+
+    <module name="FallThrough">
+      <!-- Warn about falling through to the next case statement.  Similar to
+      javac -Xlint:fallthrough, but the check is suppressed if there is a single-line comment
+      on the last non-blank line preceding the fallen-into case.
+      -->
+      <property name="reliefPattern"
+       value=".*"/>
+      <property name="severity" value="error"/>
+    </module>
+
+
+    <!--
+
+    MODIFIERS CHECKS
+
+    -->
+
+    <module name="ModifierOrder">
+      <!-- Warn if modifier order is inconsistent with JLS3 8.1.1, 8.3.1, and
+           8.4.3.  The prescribed order is:
+           public, protected, private, abstract, static, final, transient, volatile,
+           synchronized, native, strictfp
+        -->
+    </module>
+
+
+    <!--
+
+    WHITESPACE CHECKS
+
+    -->
+
+    <module name="WhitespaceAround">
+      <!-- Checks that various tokens are surrounded by whitespace.
+           This includes most binary operators and keywords followed
+           by regular or curly braces.
+      -->
+      <property name="tokens" value="ASSIGN, BAND, BAND_ASSIGN, BOR,
+        BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN,
+        EQUAL, GE, GT, LAND, LE, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,
+        LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,
+        LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS,
+        MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION,
+        SL, SL_ASSIGN, SR_ASSIGN, STAR, STAR_ASSIGN"/>
+      <property name="severity" value="error"/>
+    </module>
+
+    <module name="WhitespaceAfter">
+      <!-- Checks that commas, semicolons and typecasts are followed by
+           whitespace.
+      -->
+      <property name="tokens" value="COMMA, SEMI, TYPECAST"/>
+    </module>
+
+    <module name="NoWhitespaceAfter">
+      <!-- Checks that there is no whitespace after various unary operators.
+           Linebreaks are allowed.
+      -->
+      <property name="tokens" value="BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS,
+        UNARY_PLUS"/>
+      <property name="allowLineBreaks" value="true"/>
+      <property name="severity" value="error"/>
+    </module>
+
+    <module name="NoWhitespaceBefore">
+      <!-- Checks that there is no whitespace before various unary operators.
+           Linebreaks are allowed.
+      -->
+      <property name="tokens" value="SEMI, DOT, POST_DEC, POST_INC"/>
+      <property name="allowLineBreaks" value="true"/>
+      <property name="severity" value="error"/>
+    </module>
+
+    <module name="ParenPad">
+      <!-- Checks that there is no whitespace before close parens or after
+           open parens.
+      -->
+      <property name="severity" value="warning"/>
+    </module>
+
+    <!--
+
+    MISC CHECKS
+
+    -->
+
+  </module>
+
+  <module name="SuppressionFilter">
+    <property name="file" value="jack/jackstyleSuppressions.xml"/>
+  </module>
+</module>
diff --git a/sched/.classpath b/sched/.classpath
index b7f9d32..28dfb36 100644
--- a/sched/.classpath
+++ b/sched/.classpath
@@ -3,7 +3,7 @@
 	<classpathentry excluding="com/android/sched/util/log/tracer/SpeedTracer.java" kind="src" path="src"/>
 	<classpathentry kind="src" path="tests"/>
 	<classpathentry kind="src" path="rsc"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry kind="src" path=".apt_generated">
 		<attributes>
 			<attribute name="optional" value="true"/>
diff --git a/sched/.settings/org.eclipse.jdt.core.prefs b/sched/.settings/org.eclipse.jdt.core.prefs
index ffb197c..0a1d86d 100644
--- a/sched/.settings/org.eclipse.jdt.core.prefs
+++ b/sched/.settings/org.eclipse.jdt.core.prefs
@@ -7,9 +7,9 @@
 org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.compliance=1.8
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@@ -98,7 +98,7 @@
 org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
 org.eclipse.jdt.core.compiler.processAnnotations=enabled
-org.eclipse.jdt.core.compiler.source=1.7
+org.eclipse.jdt.core.compiler.source=1.8
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
 org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field=1585
 org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field.count_dependent=1585|-1|1585
diff --git a/sched/build.gradle b/sched/build.gradle
new file mode 100644
index 0000000..691558c
--- /dev/null
+++ b/sched/build.gradle
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+project(':sched') {
+
+  apply plugin: 'java'
+  apply plugin: "org.inferred.processors"
+  apply from: "$rootDir/gradle-script/checkstyle.gradle"
+  apply from: "$rootDir/gradle-script/findbugs.gradle"
+
+  sourceCompatibility = 1.8
+  targetCompatibility = 1.8
+
+  sourceSets {
+      main {
+          java {
+              srcDirs = ['src']
+          }
+          resources {
+              srcDirs = ['rsc']
+          }
+      }
+
+      test {
+          java {
+              srcDirs = ['tests']
+          }
+      }
+  }
+
+  dependencies {
+    testCompile libs.junit
+    testCompileOnly libs.jsr305
+    compileOnly libs.java_allocation_intrumenter
+    compileOnly libs.jsr305
+    compile libs.guava
+    compile libs.freemarker
+    compile libs.maths
+    compile (libs.watchmaker) {
+      // Avoid duplication and use com.google.guava version instead.
+      exclude group: 'com.google.collections', module: 'google-collections'
+      exclude group: 'org.uncommons.maths', module: 'uncommons-maths'
+    }
+    processor project(':sched:sched-ap')
+    // testProcessor  project(':sched:sched-ap')
+  }
+}
+
+javadoc {
+  failOnError false
+  destinationDir = file("${rootDir}/gradle-dist/doc/jack/jack-internal/sched")
+}
+
+project(':sched:schedtests') {
+
+  apply plugin: 'java'
+  apply plugin: "org.inferred.processors"
+
+  sourceSets {
+      main {
+          java {
+              srcDirs = ['../tests']
+          }
+      }
+  }
+    dependencies {
+    compile project(':sched')
+    compile libs.junit
+    compileOnly libs.jsr305
+    compile libs.guava
+    processor project(':sched:sched-ap')
+  }
+}
+
+project(':sched:sched-ap') {
+  apply plugin: 'java'
+
+  sourceCompatibility = 1.6
+  targetCompatibility = 1.6
+
+  sourceSets {
+      main {
+          java {
+              srcDirs = ['../src']
+              include 'com/android/sched/build/*'
+              include 'com/android/sched/util/findbugs/*'
+          }
+          resources {
+              srcDir '../rsc-ap'
+          }
+      }
+  }
+
+  dependencies {
+    compileOnly libs.jsr305
+  }
+
+  jar {
+      manifest {
+          from '../etc/manifest.txt'
+      }
+  }
+
+  // Until something better is found
+  task deployToJack (type: Copy) {
+    from jar.archivePath
+    into "${rootDir}/jack/tools/"
+  }
+  task deployToSched (type: Copy) {
+    from jar.archivePath
+    into "${rootDir}/sched/tools/"
+  }
+
+  assemble.dependsOn deployToJack
+  assemble.dependsOn deployToSched
+
+}
diff --git a/sched/src/com/android/sched/build/SchedAnnotationProcessor.java b/sched/src/com/android/sched/build/SchedAnnotationProcessor.java
index dc4437a..64802a0 100644
--- a/sched/src/com/android/sched/build/SchedAnnotationProcessor.java
+++ b/sched/src/com/android/sched/build/SchedAnnotationProcessor.java
@@ -16,6 +16,8 @@
 
 package com.android.sched.build;
 
+import com.android.sched.util.findbugs.SuppressFBWarnings;
+
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
@@ -99,9 +101,10 @@
     FILTER("com.android.sched.schedulable.ComponentFilter") {
       @Override
       @Nonnull
+      @SuppressFBWarnings("NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE") // probably a FindBugs bug
       public TypeMirror getTypeMirror() throws AbortException {
         return env.getTypeUtils().getDeclaredType(getTypeElement(),
-               env.getTypeUtils().getWildcardType(null, null));
+            env.getTypeUtils().getWildcardType(null, null));
       }
     },
     PRODUCTION("com.android.sched.item.Production"),
@@ -143,8 +146,9 @@
       assert env != null;
 
       if (typeElement == null) {
-        typeElement = env.getElementUtils().getTypeElement(fqName);
+        typeElement = env.getElementUtils().getTypeElement(getCanonicalName(fqName));
         if (typeElement == null) {
+          assert env != null;
           env.getMessager().printMessage(Kind.ERROR, "Can not get element type '" + fqName + "'");
           throw new AbortException();
         }
@@ -195,7 +199,7 @@
         while (iter.hasNext()) {
           String name = iter.next().getName();
 
-          TypeElement te = env.getElementUtils().getTypeElement(name);
+          TypeElement te = env.getElementUtils().getTypeElement(getCanonicalName(name));
           if (te == null) {
             iter.remove();
           }
@@ -209,6 +213,10 @@
     }
   }
 
+  private static String getCanonicalName(@Nonnull String name) {
+    return name.replace('$', '.');
+  }
+
   @Override
   public synchronized void init(ProcessingEnvironment env) {
     this.env = env;
diff --git a/sched/src/com/android/sched/marker/LocalMarkerManager.java b/sched/src/com/android/sched/marker/LocalMarkerManager.java
index 6e1ac32..586e333 100644
--- a/sched/src/com/android/sched/marker/LocalMarkerManager.java
+++ b/sched/src/com/android/sched/marker/LocalMarkerManager.java
@@ -20,7 +20,7 @@
 
 import java.util.Collection;
 import java.util.Collections;
-import java.util.concurrent.ConcurrentHashMap;
+import java.util.HashMap;
 
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
@@ -34,7 +34,7 @@
   private static final Collection<Marker> EMPTY_MARKER = Collections.emptyList();
 
   @CheckForNull
-  private ConcurrentHashMap<Class<? extends Marker>, Marker> markers;
+  private HashMap<Class<? extends Marker>, Marker> markers;
 
   @Nonnull
   private final Object lock = new Object();
@@ -43,25 +43,29 @@
   @Override
   @CheckForNull
   public <T extends Marker> T addMarker(@Nonnull T marker) {
-    assert isValidMarker(marker) : "Marker '" + Items.getName(marker.getClass())
-        + "' is not supported for class '" + this.getClass().getName() + "'";
+    synchronized (lock) {
+      assert isValidMarker(marker) : "Marker '" + Items.getName(marker.getClass())
+          + "' is not supported for class '" + this.getClass().getName() + "'";
 
-    ensureMap();
-    assert markers != null;
+      ensureMap();
+      assert markers != null;
 
-    return (T) markers.put(marker.getClass(), marker);
+      return (T) markers.put(marker.getClass(), marker);
+    }
   }
 
   @Override
   public void addAllMarkers(@Nonnull Collection<Marker> collection) {
-    ensureMap();
+    synchronized (lock) {
+      ensureMap();
 
-    for (Marker marker : collection) {
-      assert isValidMarker(marker) : "Marker '" + Items.getName(marker.getClass())
-          + "' is not supported for class '" + this.getClass().getName() + "'";
-      assert markers != null;
+      for (Marker marker : collection) {
+        assert isValidMarker(marker) : "Marker '" + Items.getName(marker.getClass())
+            + "' is not supported for class '" + this.getClass().getName() + "'";
+        assert markers != null;
 
-      markers.put(marker.getClass(), marker);
+        markers.put(marker.getClass(), marker);
+      }
     }
   }
 
@@ -72,14 +76,14 @@
       if (markers == null) {
         return EMPTY_MARKER;
       }
-    }
 
-    for (Marker marker : markers.values()) {
-      assert checkGetAccess(marker.getClass());
-    }
+      for (Marker marker : markers.values()) {
+        assert checkGetAccess(marker.getClass());
+      }
 
-    assert markers != null;
-    return markers.values();
+      assert markers != null;
+      return markers.values();
+    }
   }
 
   @Override
@@ -90,44 +94,43 @@
       if (markers == null) {
         return null;
       }
-    }
 
-    return (T) markers.get(cls);
+      return (T) markers.get(cls);
+    }
   }
 
   @Override
   public <T extends Marker> boolean containsMarker(@Nonnull Class<T> cls) {
-    assert isValidMarker(cls) : "Marker '" + Items.getName(cls) + "' is not supported for class '"
-        + this.getClass().getName() + "'";
-
     synchronized (lock) {
+      assert isValidMarker(cls) : "Marker '" + Items.getName(cls) + "' is not supported for class '"
+          + this.getClass().getName() + "'";
+
       if (markers == null) {
         return false;
       }
-    }
 
-    return markers.containsKey(cls);
+      return markers.containsKey(cls);
+    }
   }
 
   @Override
   @Nonnull
   public <T extends Marker> T getMarkerOrDefault(@Nonnull T defaultMarker) {
-    assert isValidMarker(defaultMarker) : "Marker '"
-        + Items.getName(defaultMarker.getClass()) + "' is not supported for class '"
-        + this.getClass().getName() + "'";
-
     synchronized (lock) {
+      assert isValidMarker(defaultMarker) : "Marker '" + Items.getName(defaultMarker.getClass())
+          + "' is not supported for class '" + this.getClass().getName() + "'";
+
       if (markers == null) {
         return defaultMarker;
       }
-    }
 
-    @SuppressWarnings("unchecked")
-    T marker = (T) markers.get(defaultMarker.getClass());
-    if (marker == null) {
-      return defaultMarker;
-    } else {
-      return marker;
+      @SuppressWarnings("unchecked")
+      T marker = (T) markers.get(defaultMarker.getClass());
+      if (marker == null) {
+        return defaultMarker;
+      } else {
+        return marker;
+      }
     }
   }
 
@@ -135,13 +138,20 @@
   @Override
   @CheckForNull
   public <T extends Marker> T addMarkerIfAbsent(@Nonnull T newMarker) {
-    assert isValidMarker(newMarker) : "Marker '" + Items.getName(newMarker.getClass())
-        + "' is not supported for class '" + this.getClass().getName() + "'";
+    synchronized (lock) {
+      assert isValidMarker(newMarker) : "Marker '" + Items.getName(newMarker.getClass())
+          + "' is not supported for class '" + this.getClass().getName() + "'";
 
-    ensureMap();
-    assert markers != null;
+      ensureMap();
+      assert markers != null;
 
-    return (T) markers.putIfAbsent(newMarker.getClass(), newMarker);
+      T existingMarker = (T) markers.get(newMarker.getClass());
+      if (existingMarker != null) {
+        return existingMarker;
+      }
+
+      return (T) markers.put(newMarker.getClass(), newMarker);
+    }
   }
 
   @Override
@@ -152,16 +162,20 @@
       if (markers == null) {
         return null;
       }
-    }
 
-    return (T) markers.remove(cls);
+      T result = (T) markers.remove(cls);
+
+      if (markers.isEmpty()) {
+        markers = null;
+      }
+
+      return result;
+    }
   }
 
   private void ensureMap() {
-    synchronized (lock) {
-      if (markers == null) {
-        markers = new ConcurrentHashMap<Class<? extends Marker>, Marker>();
-      }
+    if (markers == null) {
+      markers = new HashMap<Class<? extends Marker>, Marker>();
     }
   }
 }
diff --git a/sched/src/com/android/sched/util/VFSClassLoader.java b/sched/src/com/android/sched/util/VFSClassLoader.java
index adcbcf7..83d4c34 100644
--- a/sched/src/com/android/sched/util/VFSClassLoader.java
+++ b/sched/src/com/android/sched/util/VFSClassLoader.java
@@ -70,7 +70,7 @@
     VPath path = new VPath(name, '/');
     InputVFile vFile;
     try {
-      vFile = vfs.getRootInputVDir().getInputVFile(path);
+      vFile = vfs.getRootDir().getInputVFile(path);
       return vFile.getInputStream();
     } catch (WrongPermissionException e) {
       logger.log(Level.INFO, "Failed to open resource '" + name + "' from "
@@ -88,7 +88,7 @@
     path.addSuffix(".class");
     InputVFile vFile;
     try {
-      vFile = vfs.getRootInputVDir().getInputVFile(path);
+      vFile = vfs.getRootDir().getInputVFile(path);
     } catch (NotFileOrDirectoryException | NoSuchFileException e) {
       throw new ClassNotFoundException(name, e);
     }
@@ -124,7 +124,7 @@
     VPath path = new VPath(name, '/');
     final InputVFile vFile;
     try {
-      vFile = vfs.getRootInputVDir().getInputVFile(path);
+      vFile = vfs.getRootDir().getInputVFile(path);
       try {
         return new URL("jack-vfs", "", -1,
             vfs.getPath().replace(File.separatorChar, '/') + "/"
diff --git a/sched/src/com/android/sched/util/file/AbstractStreamFile.java b/sched/src/com/android/sched/util/file/AbstractStreamFile.java
index 580e6c9..93f9096 100644
--- a/sched/src/com/android/sched/util/file/AbstractStreamFile.java
+++ b/sched/src/com/android/sched/util/file/AbstractStreamFile.java
@@ -33,7 +33,7 @@
 /**
  * Abstract class representing a stream from a file path or a standard input/output.
  */
-public abstract class AbstractStreamFile extends FileOrDirectory {
+public abstract class AbstractStreamFile extends FileOrDirectory implements Statusful {
   @Nonnull
   private static final Logger  logger = LoggerFactory.getLogger();
   @CheckForNull
@@ -141,6 +141,7 @@
   }
 
   @Nonnull
+  @Override
   public final synchronized StreamFileStatus getStatus() {
     if (!wasUsed) {
       return StreamFileStatus.NOT_USED;
diff --git a/sched/src/com/android/sched/util/file/FileUtils.java b/sched/src/com/android/sched/util/file/FileUtils.java
index aeeacbc..a6345eb 100644
--- a/sched/src/com/android/sched/util/file/FileUtils.java
+++ b/sched/src/com/android/sched/util/file/FileUtils.java
@@ -37,40 +37,6 @@
 
   }
 
-  /**
-   * Returns the file separator.
-   */
-  @Nonnull
-  public static String getFileSeparator() {
-    String fileSeparator = System.getProperty("file.separator", "/");
-    return fileSeparator;
-  }
-
-  /**
-   * Returns the working directory as a {@code File}.
-   */
-  @Nonnull
-  public static File getWorkingDirectory() {
-    String workingDirectoryPath = System.getProperty("user.dir");
-    return new File(workingDirectoryPath);
-  }
-
-  /**
-   * Creates the given {@code directory} if it does not exist.
-   *
-   * @param directory the non-null directory to create if it does not exist.
-   * @throws NullPointerException if {@code directory} is null.
-   * @throws IOException if the {@code directory} cannot be created.
-   */
-  public static void createIfNotExists(@Nonnull File directory) throws IOException {
-    if (!directory.exists()) {
-      if (!directory.mkdirs()) {
-        throw new IOException("Could not create directory \"" +
-            directory.getPath() + "\"");
-      }
-    }
-  }
-
   public static void deleteDir(@Nonnull File dir) throws IOException {
     if (!dir.isDirectory()) {
       throw new AssertionError();
diff --git a/sched/src/com/android/sched/util/file/OutputZipFile.java b/sched/src/com/android/sched/util/file/OutputZipFile.java
index 0707e66..489c8d3 100644
--- a/sched/src/com/android/sched/util/file/OutputZipFile.java
+++ b/sched/src/com/android/sched/util/file/OutputZipFile.java
@@ -28,8 +28,6 @@
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.zip.Deflater;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipException;
 import java.util.zip.ZipOutputStream;
 
 import javax.annotation.CheckForNull;
@@ -121,13 +119,12 @@
   }
 
   /**
-   * A {@link ZipOutputStream} that is not directly closed to avoid getting a {@link ZipException}
-   * when the zip has no entry (with a JRE 6) and implements {@link QueryableStream}.
+   * A {@link ZipOutputStream} that is created with a {@link Compression} and implements
+   * {@link QueryableStream}.
    */
   private static class CustomZipOutputStream extends ZipOutputStream implements QueryableStream {
 
-    private boolean hasEntries = false;
-    private boolean isClosed = false;
+    private boolean closed = false;
 
     public CustomZipOutputStream(@Nonnull OutputStream out, @Nonnull Compression compression) {
       super(out);
@@ -145,24 +142,14 @@
     }
 
     @Override
-    public void putNextEntry(@Nonnull ZipEntry e) throws IOException {
-      hasEntries = true;
-      super.putNextEntry(e);
-    }
-
-    @Override
     public synchronized void close() throws IOException {
-      if (hasEntries) {
-        super.close();
-      } else {
-        out.close();
-      }
-      isClosed = true;
+      super.close();
+      closed = true;
     }
 
     @Override
     public synchronized boolean isClosed() {
-      return isClosed;
+      return closed;
     }
   }
-}
\ No newline at end of file
+}
diff --git a/sched/tests/com/android/sched/util/file/AllTests.java b/sched/src/com/android/sched/util/file/Statusful.java
similarity index 70%
copy from sched/tests/com/android/sched/util/file/AllTests.java
copy to sched/src/com/android/sched/util/file/Statusful.java
index 1f2ce79..d782913 100644
--- a/sched/tests/com/android/sched/util/file/AllTests.java
+++ b/sched/src/com/android/sched/util/file/Statusful.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2017 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,11 +16,13 @@
 
 package com.android.sched.util.file;
 
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
+import javax.annotation.Nonnull;
 
-@RunWith(Suite.class)
-@SuiteClasses(value = {FileUtilsTest.class})
-public class AllTests {
-}
\ No newline at end of file
+/**
+ * An object that can return a {@link StreamFileStatus}.
+ */
+public interface Statusful {
+
+  @Nonnull
+  StreamFileStatus getStatus();
+}
diff --git a/sched/src/com/android/sched/util/location/FileLocation.java b/sched/src/com/android/sched/util/location/FileLocation.java
index 058f3f1..07c9c42 100644
--- a/sched/src/com/android/sched/util/location/FileLocation.java
+++ b/sched/src/com/android/sched/util/location/FileLocation.java
@@ -47,4 +47,9 @@
   public String getDescription() {
     return "file '" + getPath() + "'";
   }
+
+  @Override
+  public String toString() {
+    return "_" + getDescription() + "_";
+  }
 }
diff --git a/sched/src/com/android/sched/vfs/AbstractInputOutputVFS.java b/sched/src/com/android/sched/vfs/AbstractInputOutputVFS.java
index 94770d2..9c41730 100644
--- a/sched/src/com/android/sched/vfs/AbstractInputOutputVFS.java
+++ b/sched/src/com/android/sched/vfs/AbstractInputOutputVFS.java
@@ -32,23 +32,7 @@
 
   @Override
   @Nonnull
-  public InputOutputVDir getRootInputOutputVDir() {
-    assert root != null;
-
-    return root;
-  }
-
-  @Override
-  @Nonnull
-  public InputVDir getRootInputVDir() {
-    assert root != null;
-
-    return root;
-  }
-
-  @Override
-  @Nonnull
-  public OutputVDir getRootOutputVDir() {
+  public InputOutputVDir getRootDir() {
     assert root != null;
 
     return root;
diff --git a/sched/src/com/android/sched/vfs/AbstractInputVFS.java b/sched/src/com/android/sched/vfs/AbstractInputVFS.java
index c484a5e..e8979ea 100644
--- a/sched/src/com/android/sched/vfs/AbstractInputVFS.java
+++ b/sched/src/com/android/sched/vfs/AbstractInputVFS.java
@@ -32,7 +32,7 @@
 
   @Override
   @Nonnull
-  public InputVDir getRootInputVDir() {
+  public InputVDir getRootDir() {
     assert root != null;
 
     return root;
diff --git a/sched/src/com/android/sched/vfs/AbstractOutputVFS.java b/sched/src/com/android/sched/vfs/AbstractOutputVFS.java
index 8174282..6fc672a 100644
--- a/sched/src/com/android/sched/vfs/AbstractOutputVFS.java
+++ b/sched/src/com/android/sched/vfs/AbstractOutputVFS.java
@@ -32,7 +32,7 @@
 
   @Override
   @Nonnull
-  public OutputVDir getRootOutputVDir() {
+  public OutputVDir getRootDir() {
     assert root != null;
 
     return root;
diff --git a/sched/src/com/android/sched/vfs/BadVFSFormatException.java b/sched/src/com/android/sched/vfs/BadVFSFormatException.java
index 0b9e650..bf3192c 100644
--- a/sched/src/com/android/sched/vfs/BadVFSFormatException.java
+++ b/sched/src/com/android/sched/vfs/BadVFSFormatException.java
@@ -22,7 +22,8 @@
 import javax.annotation.Nonnull;
 
 /**
- * Exception when a {@link VFS} has a bad format, i.e. it does not match the expected format.
+ * {@link Exception} when a {@link VFS} has a bad format, i.e. it does not match the expected
+ * format.
  */
 public class BadVFSFormatException extends SchedIOException {
   private static final long serialVersionUID = 1L;
diff --git a/sched/src/com/android/sched/vfs/CachedDirectFS.java b/sched/src/com/android/sched/vfs/CachedDirectFS.java
index 6ec09b6..8a27c35 100644
--- a/sched/src/com/android/sched/vfs/CachedDirectFS.java
+++ b/sched/src/com/android/sched/vfs/CachedDirectFS.java
@@ -26,6 +26,8 @@
 import com.android.sched.util.file.NoSuchFileException;
 import com.android.sched.util.file.NotDirectoryException;
 import com.android.sched.util.file.NotFileException;
+import com.android.sched.util.file.Statusful;
+import com.android.sched.util.file.StreamFileStatus;
 import com.android.sched.util.file.WrongPermissionException;
 import com.android.sched.util.location.DirectoryLocation;
 import com.android.sched.util.location.FileLocation;
@@ -63,7 +65,8 @@
  * A {@link VFS} implementation backed by a real file system, but where directories are cached in
  * memory.
  */
-public class CachedDirectFS extends BaseVFS<CachedParentVDir, CachedParentVFile> implements VFS {
+public class CachedDirectFS extends BaseVFS<CachedParentVDir, CachedParentVFile>
+    implements VFS, Statusful {
 
   static class CachedParentVDir extends InMemoryVDir {
 
@@ -160,6 +163,8 @@
   @CheckForNull
   private String infoString;
 
+  private boolean used = false;
+
 
   public CachedDirectFS(@Nonnull Directory dir, int permissions) {
     this.dir = dir;
@@ -253,6 +258,9 @@
 
   @Override
   public CachedParentVDir getRootDir() {
+
+    used = true;
+
     return root;
   }
 
@@ -566,6 +574,18 @@
   }
 
   @Override
+  @Nonnull
+  public StreamFileStatus getStatus() {
+    if (!used) {
+      return StreamFileStatus.NOT_USED;
+    } else if (closed) {
+      return StreamFileStatus.CLOSED;
+    } else {
+      return StreamFileStatus.OPEN;
+    }
+  }
+
+  @Override
   @CheckForNull
   public String getInfoString() {
     return infoString;
diff --git a/sched/src/com/android/sched/vfs/CaseInsensitiveFS.java b/sched/src/com/android/sched/vfs/CaseInsensitiveFS.java
index 98aa6d4..01ff002 100644
--- a/sched/src/com/android/sched/vfs/CaseInsensitiveFS.java
+++ b/sched/src/com/android/sched/vfs/CaseInsensitiveFS.java
@@ -16,6 +16,8 @@
 
 package com.android.sched.vfs;
 
+import com.google.common.base.Splitter;
+
 import com.android.sched.util.config.HasKeyId;
 import com.android.sched.util.config.MessageDigestFactory;
 import com.android.sched.util.config.ThreadConfig;
@@ -30,6 +32,8 @@
 import com.android.sched.util.file.NoSuchFileException;
 import com.android.sched.util.file.NotDirectoryException;
 import com.android.sched.util.file.NotFileException;
+import com.android.sched.util.file.Statusful;
+import com.android.sched.util.file.StreamFileStatus;
 import com.android.sched.util.file.WrongPermissionException;
 import com.android.sched.util.location.ColumnAndLineLocation;
 import com.android.sched.util.location.Location;
@@ -47,6 +51,7 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.EnumSet;
+import java.util.Iterator;
 import java.util.Set;
 
 import javax.annotation.CheckForNull;
@@ -61,7 +66,7 @@
  */
 @HasKeyId
 public class CaseInsensitiveFS extends BaseVFS<CaseInsensitiveVDir, CaseInsensitiveVFile> implements
-    VFS {
+    VFS, Statusful {
   static final String INDEX_NAME = "index";
   static final String DEBUG_NAME = "index.dbg";
 
@@ -85,6 +90,12 @@
       "sched.vfs.case-insensitive.debug",
       "generate an index file '" + DEBUG_NAME + "' for debugging purpose").addDefaultValue(false);
 
+  @Nonnull
+  private static final char INDEX_SEPARATOR = '/';
+
+  @Nonnull
+  private static final Splitter splitter = Splitter.on(INDEX_SEPARATOR);
+
   @Nonnegative
   private final int numGroups;
   @Nonnegative
@@ -174,14 +185,12 @@
       super(vfs, parent, name);
     }
 
-    void setEncodedFile(@Nonnull BaseVFile encodedFile) {
+    private void setEncodedFile(@Nonnull BaseVFile encodedFile) {
       this.encodedFile = encodedFile;
     }
 
-    @Nonnull
-    BaseVFile getEncodedFile() {
-      assert encodedFile != null;
-
+    @CheckForNull
+    private BaseVFile getEncodedFile() {
       return encodedFile;
     }
 
@@ -190,7 +199,7 @@
       vfs.delete(this);
     }
 
-    public void deleteFromCache() {
+    private void deleteFromCache() {
       ((InMemoryVDir) parent).internalDelete(name);
     }
   }
@@ -198,6 +207,8 @@
   @Nonnull
   private final BaseVFS<BaseVDir, BaseVFile> vfs;
 
+  private boolean used = false;
+
   public CaseInsensitiveFS(@Nonnull VFS vfs) throws BadVFSFormatException {
     this(vfs, ThreadConfig.get(NB_GROUP).intValue(), ThreadConfig.get(SZ_GROUP).intValue(),
         ThreadConfig.get(ALGO), ThreadConfig.get(DEBUG).booleanValue());
@@ -257,10 +268,10 @@
           char type = line.charAt(0);
           switch (type) {
             case 'd':
-              root.createVDir(new VPath(line.substring(2), '/'));
+              loadVDir(line.substring(2));
               break;
             case 'f':
-              root.createVFile(new VPath(line.substring(2), '/'));
+              loadVFile(line.substring(2));
               break;
             default:
               throw new BadVFSFormatException(this, vfs.getLocation(),
@@ -268,7 +279,7 @@
                       reader.getLineNumber())));
           }
         }
-      } catch (CannotCreateFileException e) {
+      } catch (NotDirectoryException | NotFileException e) {
         throw new BadVFSFormatException(this, vfs.getLocation(), e);
       } catch (IOException e) {
         throw new BadVFSFormatException(this, vfs.getLocation(), e);
@@ -286,6 +297,33 @@
     }
   }
 
+  private void loadVDir(@Nonnull String path) throws NotDirectoryException {
+    CaseInsensitiveVDir currentDir = getRootDir();
+    Iterator<String> pathElementIterator = splitter.split(path).iterator();
+    String pathElement = null;
+    while (pathElementIterator.hasNext()) {
+      pathElement = pathElementIterator.next();
+      assert !pathElement.isEmpty();
+      currentDir = loadVDir(currentDir, pathElement);
+    }
+  }
+
+  private void loadVFile(@Nonnull String path)
+      throws NotDirectoryException, NotFileException {
+    CaseInsensitiveVDir currentDir = getRootDir();
+    Iterator<String> pathElementIterator = splitter.split(path).iterator();
+    String pathElement = null;
+    while (pathElementIterator.hasNext()) {
+      pathElement = pathElementIterator.next();
+      assert !pathElement.isEmpty();
+      if (pathElementIterator.hasNext()) {
+        // simpleName is a dir name
+        currentDir = loadVDir(currentDir, pathElement);
+      }
+    }
+    loadVFile(currentDir, pathElement);
+  }
+
   @Override
   @Nonnull
   public Set<Capabilities> getCapabilities() {
@@ -307,6 +345,8 @@
   @Override
   @Nonnull
   public CaseInsensitiveVDir getRootDir() {
+    used = true;
+
     return root;
   }
 
@@ -347,13 +387,13 @@
           CaseInsensitiveVFile file = (CaseInsensitiveVFile) element;
 
           printer.print("f:");
-          printer.print(file.getPath().getPathAsString('/'));
+          printer.print(file.getPath().getPathAsString(INDEX_SEPARATOR));
           printer.println();
         }
       }
     } else {
       printer.print("d:");
-      printer.print(dir.getPath().getPathAsString('/'));
+      printer.print(dir.getPath().getPathAsString(INDEX_SEPARATOR));
       printer.println();
     }
   }
@@ -372,7 +412,7 @@
         CaseInsensitiveVFile file = (CaseInsensitiveVFile) element;
 
         printer.print("f:");
-        printer.print(file.getEncodedFile().getPath().getPathAsString(File.separatorChar));
+        printer.print(loadAndGetEncodedFile(file).getPath().getPathAsString(File.separatorChar));
         printer.print(":");
         printer.print(file.getPath().getPathAsString(File.separatorChar));
         printer.println();
@@ -384,12 +424,27 @@
   // Stream
   //
 
+  @Nonnull
+  private BaseVFile loadAndGetEncodedFile(@Nonnull CaseInsensitiveVFile file) {
+
+    BaseVFile encodedFile = file.getEncodedFile();
+    if (encodedFile == null) {
+      try {
+        encodedFile = vfs.getRootDir().getVFile(encode(file.getPath()));
+        file.setEncodedFile(encodedFile);
+      } catch (NotDirectoryException | NotFileException | NoSuchFileException e) {
+        throw new RuntimeBadVFSFormatException(vfs, vfs.getLocation(), e);
+      }
+    }
+    return encodedFile;
+  }
+
   @Override
   @Nonnull
   InputStream openRead(@Nonnull CaseInsensitiveVFile file) throws WrongPermissionException {
     assert !isClosed();
 
-    return file.getEncodedFile().getInputStream();
+    return loadAndGetEncodedFile(file).getInputStream();
   }
 
   @Override
@@ -404,7 +459,7 @@
       throws WrongPermissionException {
     assert !isClosed();
 
-    return file.getEncodedFile().getOutputStream(append);
+    return loadAndGetEncodedFile(file).getOutputStream(append);
   }
 
   //
@@ -415,13 +470,9 @@
   @Nonnull
   CaseInsensitiveVDir getVDir(@Nonnull CaseInsensitiveVDir parent, @Nonnull String name)
       throws NotDirectoryException, NoSuchFileException {
-    BaseVElement element = parent.getFromCache(name);
-    if (element != null) {
-      if (element.isVDir()) {
-        return (CaseInsensitiveVDir) element;
-      } else {
-        throw new NotDirectoryException(getVDirLocation(parent, name));
-      }
+    CaseInsensitiveVDir vDir = getVDirFromCache(parent, name);
+    if (vDir != null) {
+      return vDir;
     } else {
       throw new NoSuchFileException(getVDirLocation(parent, name));
     }
@@ -431,31 +482,48 @@
   @Nonnull
   CaseInsensitiveVFile getVFile(@Nonnull CaseInsensitiveVDir parent, @Nonnull String name)
       throws NotFileException, NoSuchFileException {
-    BaseVElement element = parent.getFromCache(name);
-    if (element != null) {
-      if (!element.isVDir()) {
-        return (CaseInsensitiveVFile) element;
-      } else {
-        throw new NotFileException(getVFileLocation(parent, name));
-      }
+    CaseInsensitiveVFile vFile = getVFileFromCache(parent, name);
+    if (vFile != null) {
+      return vFile;
     } else {
       throw new NoSuchFileException(getVFileLocation(parent, name));
     }
   }
 
+  @CheckForNull
+  CaseInsensitiveVFile getVFileFromCache(@Nonnull CaseInsensitiveVDir parent, @Nonnull String name)
+      throws NotFileException {
+    BaseVElement element = parent.getFromCache(name);
+    if (element == null) {
+      return null;
+    } else if (!element.isVDir()) {
+      return (CaseInsensitiveVFile) element;
+    } else {
+      throw new NotFileException(getVFileLocation(parent, name));
+    }
+  }
+
+  @CheckForNull
+  CaseInsensitiveVDir getVDirFromCache(@Nonnull CaseInsensitiveVDir parent, @Nonnull String name)
+      throws NotDirectoryException {
+    BaseVElement element = parent.getFromCache(name);
+    if (element == null) {
+      return null;
+    } else if (element.isVDir()) {
+      return (CaseInsensitiveVDir) element;
+    } else {
+      throw new NotDirectoryException(getVDirLocation(parent, name));
+    }
+  }
+
   @Override
   @Nonnull
-  synchronized CaseInsensitiveVDir createVDir(@Nonnull CaseInsensitiveVDir parent,
+  CaseInsensitiveVDir createVDir(@Nonnull CaseInsensitiveVDir parent,
       @Nonnull String name) throws CannotCreateFileException {
     assert !isClosed();
 
     try {
-      return getVDir(parent, name);
-
-    } catch (NoSuchFileException e) {
-      CaseInsensitiveVDir dir = new CaseInsensitiveVDir(this, parent, name);
-      parent.putInCache(name, dir);
-      return dir;
+      return loadVDir(parent, name);
     } catch (NotDirectoryException e) {
       throw new CannotCreateFileException(getVDirLocation(parent, name));
     }
@@ -463,23 +531,53 @@
 
   @Override
   @Nonnull
-  synchronized CaseInsensitiveVFile createVFile(@Nonnull CaseInsensitiveVDir parent,
-      @Nonnull String name) throws CannotCreateFileException {
+  synchronized CaseInsensitiveVFile createVFile(
+      @Nonnull CaseInsensitiveVDir parent, @Nonnull String name) throws CannotCreateFileException {
+    assert !isClosed();
+    try {
+      CaseInsensitiveVFile vFile = getVFileFromCache(parent, name);
+      if (vFile != null) {
+        return vFile;
+      } else {
+        CaseInsensitiveVFile original = new CaseInsensitiveVFile(this, parent, name);
+        BaseVFile encoded = vfs.getRootDir().createVFile(encode(original.getPath()));
+        original.setEncodedFile(encoded);
+        parent.putInCache(name, original);
+
+        return original;
+      }
+    } catch (NotFileException e) {
+      throw new CannotCreateFileException(getVFileLocation(parent, name));
+    }
+  }
+
+  @Nonnull
+  synchronized CaseInsensitiveVDir loadVDir(
+      @Nonnull CaseInsensitiveVDir parent, @Nonnull String name) throws NotDirectoryException {
     assert !isClosed();
 
-    try {
-      return getVFile(parent, name);
+    CaseInsensitiveVDir vDir = getVDirFromCache(parent, name);
+    if (vDir != null) {
+      return vDir;
+    } else {
+      CaseInsensitiveVDir dir = new CaseInsensitiveVDir(this, parent, name);
+      parent.putInCache(name, dir);
+      return dir;
+    }
+  }
 
-    } catch (NoSuchFileException e) {
-
+  @Nonnull
+  synchronized CaseInsensitiveVFile loadVFile(
+      @Nonnull CaseInsensitiveVDir parent, @Nonnull String name) throws NotFileException {
+    assert !isClosed();
+    CaseInsensitiveVFile vFile = getVFileFromCache(parent, name);
+    if (vFile != null) {
+      return vFile;
+    } else {
       CaseInsensitiveVFile original = new CaseInsensitiveVFile(this, parent, name);
-      BaseVFile encoded = vfs.getRootDir().createVFile(encode(original.getPath()));
-      original.setEncodedFile(encoded);
       parent.putInCache(name, original);
 
       return original;
-    } catch (NotFileException e) {
-      throw new CannotCreateFileException(getVFileLocation(parent, name));
     }
   }
 
@@ -509,14 +607,14 @@
 
   @Override
   boolean isEmpty(@Nonnull CaseInsensitiveVDir dir) {
-    return list(dir).isEmpty();
+    return dir.isEmpty();
   }
 
   @Override
   @Nonnull
   public FileTime getLastModified(@Nonnull CaseInsensitiveVFile file)
       throws CannotGetModificationTimeException {
-    return vfs.getLastModified(file.getEncodedFile());
+    return vfs.getLastModified(loadAndGetEncodedFile(file));
   }
 
   //
@@ -526,7 +624,7 @@
   @Override
   @Nonnull
   Location getVFileLocation(@Nonnull CaseInsensitiveVFile file) {
-    return vfs.getVFileLocation(file.getEncodedFile());
+    return vfs.getVFileLocation(loadAndGetEncodedFile(file));
   }
 
   @Override
@@ -642,6 +740,18 @@
   }
 
   @Override
+  @Nonnull
+  public StreamFileStatus getStatus() {
+    if (!used) {
+      return StreamFileStatus.NOT_USED;
+    } else if (closed) {
+      return StreamFileStatus.CLOSED;
+    } else {
+      return StreamFileStatus.OPEN;
+    }
+  }
+
+  @Override
   @CheckForNull
   public String getInfoString() {
     return vfs.getInfoString();
diff --git a/sched/src/com/android/sched/vfs/DeflateFS.java b/sched/src/com/android/sched/vfs/DeflateFS.java
index 90edda1..a6a5825 100644
--- a/sched/src/com/android/sched/vfs/DeflateFS.java
+++ b/sched/src/com/android/sched/vfs/DeflateFS.java
@@ -37,9 +37,7 @@
 import java.util.Collection;
 import java.util.List;
 import java.util.Set;
-import java.util.zip.Deflater;
 import java.util.zip.DeflaterOutputStream;
-import java.util.zip.Inflater;
 import java.util.zip.InflaterInputStream;
 
 import javax.annotation.CheckForNull;
@@ -160,7 +158,7 @@
   @Override
   @Nonnull
   InputStream openRead(@Nonnull DeflateVFile file) throws WrongPermissionException {
-    return new InflaterInputStream(vfs.openRead(file.getWrappedFile()), new Inflater());
+    return new InflaterInputStream(vfs.openRead(file.getWrappedFile()));
   }
 
   @Override
@@ -173,7 +171,7 @@
   @Nonnull
   OutputStream openWrite(@Nonnull DeflateVFile file, boolean append)
       throws WrongPermissionException {
-    return new DeflaterOutputStream(vfs.openWrite(file.getWrappedFile(), append), new Deflater());
+    return new DeflaterOutputStream(vfs.openWrite(file.getWrappedFile(), append));
   }
 
   @Override
diff --git a/sched/src/com/android/sched/vfs/DirectFS.java b/sched/src/com/android/sched/vfs/DirectFS.java
index 41fa6f9..7abfff9 100644
--- a/sched/src/com/android/sched/vfs/DirectFS.java
+++ b/sched/src/com/android/sched/vfs/DirectFS.java
@@ -29,6 +29,8 @@
 import com.android.sched.util.file.NoSuchFileException;
 import com.android.sched.util.file.NotDirectoryException;
 import com.android.sched.util.file.NotFileException;
+import com.android.sched.util.file.Statusful;
+import com.android.sched.util.file.StreamFileStatus;
 import com.android.sched.util.file.WrongPermissionException;
 import com.android.sched.util.location.DirectoryLocation;
 import com.android.sched.util.location.FileLocation;
@@ -55,7 +57,7 @@
 /**
  * A {@link VFS} implementation backed by a real file system.
  */
-public class DirectFS extends BaseVFS<ParentVDir, ParentVFile> implements VFS {
+public class DirectFS extends BaseVFS<ParentVDir, ParentVFile> implements VFS, Statusful {
 
   @Nonnull
   private final Directory  dir;
@@ -66,6 +68,8 @@
   @CheckForNull
   private String infoString;
 
+  private boolean used = false;
+
   public DirectFS(@Nonnull Directory dir, int permissions) {
     this.dir = dir;
     this.root = new ParentVDir(this, "");
@@ -113,6 +117,9 @@
 
   @Override
   public ParentVDir getRootDir() {
+
+    used = true;
+
     return root;
   }
 
@@ -378,6 +385,18 @@
     return getPathFromDir(root, file);
   }
 
+  @Override
+  @Nonnull
+  public StreamFileStatus getStatus() {
+    if (!used) {
+      return StreamFileStatus.NOT_USED;
+    } else if (closed) {
+      return StreamFileStatus.CLOSED;
+    } else {
+      return StreamFileStatus.OPEN;
+    }
+  }
+
   public void setInfoString(@CheckForNull String infoString) {
     this.infoString = infoString;
   }
diff --git a/sched/src/com/android/sched/vfs/GenericInputOutputVFS.java b/sched/src/com/android/sched/vfs/GenericInputOutputVFS.java
index 6605a1b..ad996fa 100644
--- a/sched/src/com/android/sched/vfs/GenericInputOutputVFS.java
+++ b/sched/src/com/android/sched/vfs/GenericInputOutputVFS.java
@@ -35,7 +35,7 @@
 
   @Override
   @Nonnull
-  public InputOutputVDir getRootInputOutputVDir() {
+  public InputOutputVDir getRootDir() {
     return new GenericInputOutputVDir(vfs.getRootDir());
   }
 
@@ -57,18 +57,6 @@
   }
 
   @Override
-  @Nonnull
-  public InputVDir getRootInputVDir() {
-    return new GenericInputVDir(vfs.getRootDir());
-  }
-
-  @Override
-  @Nonnull
-  public OutputVDir getRootOutputVDir() {
-    return new GenericOutputVDir(vfs.getRootDir());
-  }
-
-  @Override
   public boolean needsSequentialWriting() {
     return vfs.needsSequentialWriting();
   }
diff --git a/sched/src/com/android/sched/vfs/GenericInputOutputVFile.java b/sched/src/com/android/sched/vfs/GenericInputOutputVFile.java
index 97125ab..391bffa 100644
--- a/sched/src/com/android/sched/vfs/GenericInputOutputVFile.java
+++ b/sched/src/com/android/sched/vfs/GenericInputOutputVFile.java
@@ -89,6 +89,7 @@
     file.delete();
   }
 
+  @Override
   @CheckForNull
   public String getDigest() {
     return file.getDigest();
diff --git a/sched/src/com/android/sched/vfs/GenericInputVFS.java b/sched/src/com/android/sched/vfs/GenericInputVFS.java
index 65e8e59..72d09ee 100644
--- a/sched/src/com/android/sched/vfs/GenericInputVFS.java
+++ b/sched/src/com/android/sched/vfs/GenericInputVFS.java
@@ -35,7 +35,7 @@
 
   @Override
   @Nonnull
-  public InputVDir getRootInputVDir() {
+  public InputVDir getRootDir() {
     return new GenericInputVDir(vfs.getRootDir());
   }
 
diff --git a/sched/src/com/android/sched/vfs/GenericInputVFile.java b/sched/src/com/android/sched/vfs/GenericInputVFile.java
index 6a21c8b..d5ed89e 100644
--- a/sched/src/com/android/sched/vfs/GenericInputVFile.java
+++ b/sched/src/com/android/sched/vfs/GenericInputVFile.java
@@ -66,6 +66,7 @@
     file.delete();
   }
 
+  @Override
   @CheckForNull
   public String getDigest() {
     return file.getDigest();
diff --git a/sched/src/com/android/sched/vfs/GenericOutputVFS.java b/sched/src/com/android/sched/vfs/GenericOutputVFS.java
index d06c523..9c2b1ac 100644
--- a/sched/src/com/android/sched/vfs/GenericOutputVFS.java
+++ b/sched/src/com/android/sched/vfs/GenericOutputVFS.java
@@ -34,7 +34,7 @@
 
   @Override
   @Nonnull
-  public OutputVDir getRootOutputVDir() {
+  public OutputVDir getRootDir() {
     return new GenericOutputVDir(vfs.getRootDir());
   }
 
diff --git a/sched/src/com/android/sched/vfs/InputOutputVFS.java b/sched/src/com/android/sched/vfs/InputOutputVFS.java
index b983755..13181bd 100644
--- a/sched/src/com/android/sched/vfs/InputOutputVFS.java
+++ b/sched/src/com/android/sched/vfs/InputOutputVFS.java
@@ -23,6 +23,7 @@
  * An input/output VFS.
  */
 public interface InputOutputVFS extends InputVFS, OutputVFS {
+  @Override
   @Nonnull
-  InputOutputVDir getRootInputOutputVDir();
+  InputOutputVDir getRootDir();
 }
diff --git a/sched/src/com/android/sched/vfs/InputVFS.java b/sched/src/com/android/sched/vfs/InputVFS.java
index 54d2989..de9fa74 100644
--- a/sched/src/com/android/sched/vfs/InputVFS.java
+++ b/sched/src/com/android/sched/vfs/InputVFS.java
@@ -29,7 +29,7 @@
   @Nonnull
   String getPath();
   @Nonnull
-  InputVDir getRootInputVDir();
+  InputVDir getRootDir();
   @CheckForNull
   String getDigest();
   @Override
diff --git a/sched/src/com/android/sched/vfs/InputVFile.java b/sched/src/com/android/sched/vfs/InputVFile.java
index 1cb2144..3d824fa 100644
--- a/sched/src/com/android/sched/vfs/InputVFile.java
+++ b/sched/src/com/android/sched/vfs/InputVFile.java
@@ -21,6 +21,7 @@
 
 import java.nio.file.attribute.FileTime;
 
+import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 
 /**
@@ -38,4 +39,7 @@
 
   @Nonnull
   VFile getVFile();
+
+  @CheckForNull
+  String getDigest();
 }
diff --git a/sched/src/com/android/sched/vfs/MessageDigestFS.java b/sched/src/com/android/sched/vfs/MessageDigestFS.java
index 4ebe981..7de3fe4 100644
--- a/sched/src/com/android/sched/vfs/MessageDigestFS.java
+++ b/sched/src/com/android/sched/vfs/MessageDigestFS.java
@@ -172,7 +172,7 @@
 
   @SuppressWarnings("unchecked")
   public MessageDigestFS(@Nonnull VFS vfs, @Nonnull MessageDigestFactory factory)
-      throws BadVFSFormatException {
+      throws BadVFSFormatException, WrongVFSTypeException {
     this.vfs = (BaseVFS<BaseVDir, BaseVFile>) vfs;
     this.mdFactory = factory;
 
@@ -184,7 +184,7 @@
     init();
   }
 
-  private void init() throws BadVFSFormatException {
+  private void init() throws BadVFSFormatException, WrongVFSTypeException {
     BaseVFile digestFile;
 
     try {
@@ -193,7 +193,7 @@
       throw new BadVFSFormatException(this, vfs.getLocation(), e);
     } catch (NoSuchFileException e) {
       if (!vfs.getRootDir().isEmpty()) {
-        throw new BadVFSFormatException(this, vfs.getLocation(), e);
+        throw new WrongVFSTypeException(vfs, vfs.getLocation(), getDescription(), e);
       }
 
       return;
diff --git a/sched/src/com/android/sched/vfs/OutputVFS.java b/sched/src/com/android/sched/vfs/OutputVFS.java
index 2349aa4..6deae24 100644
--- a/sched/src/com/android/sched/vfs/OutputVFS.java
+++ b/sched/src/com/android/sched/vfs/OutputVFS.java
@@ -28,7 +28,7 @@
   @Nonnull
   String getPath();
   @Nonnull
-  OutputVDir getRootOutputVDir();
+  OutputVDir getRootDir();
 
   boolean needsSequentialWriting();
   @Override
diff --git a/sched/src/com/android/sched/vfs/PrefixedFS.java b/sched/src/com/android/sched/vfs/PrefixedFS.java
index d90cd0d..58da11d 100644
--- a/sched/src/com/android/sched/vfs/PrefixedFS.java
+++ b/sched/src/com/android/sched/vfs/PrefixedFS.java
@@ -19,6 +19,7 @@
 import com.android.sched.util.file.CannotCreateFileException;
 import com.android.sched.util.file.CannotDeleteFileException;
 import com.android.sched.util.file.CannotGetModificationTimeException;
+import com.android.sched.util.file.FileOrDirectory.Existence;
 import com.android.sched.util.file.NoSuchFileException;
 import com.android.sched.util.file.NotDirectoryException;
 import com.android.sched.util.file.NotFileException;
@@ -44,16 +45,22 @@
   private final BaseVDir rootDir;
 
   @SuppressWarnings("unchecked")
-  public PrefixedFS(@Nonnull VFS vfs, @Nonnull VPath prefix)
-      throws CannotCreateFileException, NotDirectoryException {
+  public PrefixedFS(@Nonnull VFS vfs, @Nonnull VPath prefix, @Nonnull Existence existence)
+      throws CannotCreateFileException, NotDirectoryException, WrongVFSTypeException {
     this.vfs = (BaseVFS<BaseVDir, BaseVFile>) vfs;
 
     BaseVDir rootDir;
-    // let's try to get the VDir before creating it because we not have write permissions.
     try {
       rootDir = this.vfs.getRootDir().getVDir(prefix);
+      if (existence == Existence.NOT_EXIST) {
+        throw new WrongVFSTypeException(vfs, vfs.getLocation(), getDescription());
+      }
     } catch (NoSuchFileException e) {
-      rootDir = this.vfs.getRootDir().createVDir(prefix);
+      if (existence == Existence.MUST_EXIST) {
+        throw new WrongVFSTypeException(vfs, vfs.getLocation(), getDescription(), e);
+      } else {
+        rootDir = this.vfs.getRootDir().createVDir(prefix);
+      }
     }
     this.rootDir = changeVFS(rootDir);
   }
diff --git a/sched/src/com/android/sched/vfs/ReadWriteZipFS.java b/sched/src/com/android/sched/vfs/ReadWriteZipFS.java
index 5a31f9d..2ac78bc 100644
--- a/sched/src/com/android/sched/vfs/ReadWriteZipFS.java
+++ b/sched/src/com/android/sched/vfs/ReadWriteZipFS.java
@@ -33,6 +33,8 @@
 import com.android.sched.util.file.NotDirectoryException;
 import com.android.sched.util.file.NotFileException;
 import com.android.sched.util.file.OutputZipFile;
+import com.android.sched.util.file.Statusful;
+import com.android.sched.util.file.StreamFileStatus;
 import com.android.sched.util.file.WrongPermissionException;
 import com.android.sched.util.location.DirectoryLocation;
 import com.android.sched.util.location.Location;
@@ -51,7 +53,7 @@
 /**
  * A {@link VFS} backed by a real filesystem directory, compressed into a zip archive when closed.
  */
-public class ReadWriteZipFS extends BaseVFS<BaseVDir, BaseVFile> implements VFS {
+public class ReadWriteZipFS extends BaseVFS<BaseVDir, BaseVFile> implements VFS, Statusful {
 
   @Nonnull
   private final VFSToVFSWrapper vfs;
@@ -273,4 +275,10 @@
   public String toString() {
     return "rwZipFS >> " + vfs.toString();
   }
+
+  @Override
+  @Nonnull
+  public StreamFileStatus getStatus() {
+    return ((Statusful) vfs.getWorkVFS()).getStatus();
+  }
 }
diff --git a/sched/src/com/android/sched/vfs/ReadZipFS.java b/sched/src/com/android/sched/vfs/ReadZipFS.java
index 2fdb7a0..a88230e 100644
--- a/sched/src/com/android/sched/vfs/ReadZipFS.java
+++ b/sched/src/com/android/sched/vfs/ReadZipFS.java
@@ -302,7 +302,7 @@
 
   @Override
   boolean isEmpty(@Nonnull ZipVDir dir) {
-    return list(dir).isEmpty();
+    return dir.isEmpty();
   }
 
   @Override
diff --git a/sched/src/com/android/sched/vfs/RuntimeBadVFSFormatException.java b/sched/src/com/android/sched/vfs/RuntimeBadVFSFormatException.java
new file mode 100644
index 0000000..a20ba4f
--- /dev/null
+++ b/sched/src/com/android/sched/vfs/RuntimeBadVFSFormatException.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.sched.vfs;
+
+import com.android.sched.util.UnrecoverableException;
+import com.android.sched.util.location.Location;
+
+import javax.annotation.Nonnull;
+
+/**
+ * {@link RuntimeException} when a {@link VFS} has a bad format, i.e. it does not match the expected
+ * format.
+ */
+public class RuntimeBadVFSFormatException extends UnrecoverableException {
+  private static final long serialVersionUID = 1L;
+
+  @Nonnull
+  private final VFS vfs;
+  @Nonnull
+  private final Location location;
+
+  public RuntimeBadVFSFormatException(@Nonnull VFS vfs, @Nonnull Location location,
+      @Nonnull Throwable cause) {
+    super(cause);
+    this.vfs = vfs;
+    this.location = location;
+  }
+
+  @Override
+  @Nonnull
+  public String getMessage() {
+    return "'" + vfs.getDescription() + "' VFS in " + location.getDescription()
+    + " has an unexpected bad format: " + getCause().getMessage();
+  }
+}
diff --git a/sched/src/com/android/sched/vfs/UnionVFS.java b/sched/src/com/android/sched/vfs/UnionVFS.java
index e3844f1..4a16e78 100644
--- a/sched/src/com/android/sched/vfs/UnionVFS.java
+++ b/sched/src/com/android/sched/vfs/UnionVFS.java
@@ -27,6 +27,8 @@
 import com.android.sched.util.file.NoSuchFileException;
 import com.android.sched.util.file.NotDirectoryException;
 import com.android.sched.util.file.NotFileException;
+import com.android.sched.util.file.Statusful;
+import com.android.sched.util.file.StreamFileStatus;
 import com.android.sched.util.file.WrongPermissionException;
 import com.android.sched.util.location.Location;
 import com.android.sched.vfs.UnionVFS.UnionVDir;
@@ -49,7 +51,7 @@
  * A {@link VFS} that acts as an ordered agglomerate of other VFS. Writing is done in the top VFS
  * only, if it is supported. The VFS are ordered according to their priority.
  */
-public class UnionVFS extends BaseVFS<UnionVDir, UnionVFile> implements VFS {
+public class UnionVFS extends BaseVFS<UnionVDir, UnionVFile> implements VFS, Statusful {
 
   /**
    * Only delete the VFile that is on top, do not delete those that are under.
@@ -217,6 +219,8 @@
 
   private final boolean writable;
 
+  private boolean used = false;
+
   public UnionVFS(@Nonnull List<VFS> vfsList) {
     assert !vfsList.isEmpty();
     this.vfsList = vfsList;
@@ -346,6 +350,8 @@
   @Override
   @Nonnull
   public UnionVDir getRootDir() {
+    used = true;
+
     return rootDir;
   }
 
@@ -649,6 +655,18 @@
   }
 
   @Override
+  @Nonnull
+  public StreamFileStatus getStatus() {
+    if (!used) {
+      return StreamFileStatus.NOT_USED;
+    } else if (closed) {
+      return StreamFileStatus.CLOSED;
+    } else {
+      return StreamFileStatus.OPEN;
+    }
+  }
+
+  @Override
   @CheckForNull
   public String getInfoString() {
     return vfsList.get(0).getInfoString();
diff --git a/sched/src/com/android/sched/vfs/VFSPropertyId.java b/sched/src/com/android/sched/vfs/VFSPropertyId.java
index 5dcf778..3858a30 100644
--- a/sched/src/com/android/sched/vfs/VFSPropertyId.java
+++ b/sched/src/com/android/sched/vfs/VFSPropertyId.java
@@ -23,6 +23,8 @@
 import com.android.sched.util.config.category.Category;
 import com.android.sched.util.config.expression.BooleanExpression;
 import com.android.sched.util.config.id.PropertyId;
+import com.android.sched.util.file.Statusful;
+import com.android.sched.util.file.StreamFileStatus;
 
 import javax.annotation.Nonnull;
 
@@ -90,7 +92,14 @@
         new ShutdownRunnable<VFS>() {
           @Override
           public void run(@Nonnull VFS vfs) {
-            if (!vfs.isClosed()) {
+            boolean open;
+            if (vfs instanceof Statusful) {
+              open = ((Statusful) vfs).getStatus() == StreamFileStatus.OPEN;
+            } else {
+              open = !vfs.isClosed();
+            }
+
+            if (open) {
               throw new AssertionError(
                   "VFS '"
                       + vfs.getDescription()
diff --git a/sched/src/com/android/sched/vfs/VPath.java b/sched/src/com/android/sched/vfs/VPath.java
index d93b331..a15741a 100644
--- a/sched/src/com/android/sched/vfs/VPath.java
+++ b/sched/src/com/android/sched/vfs/VPath.java
@@ -215,4 +215,9 @@
   public String getLastName() {
     return Iterators.getLast(split().iterator(), "");
   }
+
+  @Override
+  public String toString() {
+    return "_" + getInternalPath() + "_";
+  }
 }
diff --git a/sched/src/com/android/sched/vfs/WrongVFSTypeException.java b/sched/src/com/android/sched/vfs/WrongVFSTypeException.java
new file mode 100644
index 0000000..b01f7ff
--- /dev/null
+++ b/sched/src/com/android/sched/vfs/WrongVFSTypeException.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.sched.vfs;
+
+import com.android.sched.util.file.SchedIOException;
+import com.android.sched.util.location.Location;
+
+import javax.annotation.Nonnull;
+
+/**
+ * {@link Exception} when a {@link VFS} does not match the expected VFS type, but may be a valid VFS
+ * of another type.
+ */
+public class WrongVFSTypeException extends SchedIOException {
+  private static final long serialVersionUID = 1L;
+
+  @Nonnull
+  private final VFS vfs;
+  @Nonnull
+  private final String expectedVfsDescription;
+
+  public WrongVFSTypeException(@Nonnull VFS vfs, @Nonnull Location location,
+      @Nonnull String expectedVfsDescription, @Nonnull Throwable cause) {
+    super(location, cause);
+    this.vfs = vfs;
+    this.expectedVfsDescription = expectedVfsDescription;
+  }
+
+  public WrongVFSTypeException(@Nonnull VFS vfs, @Nonnull Location location,
+      @Nonnull String expectedVfsDescription) {
+    super(location, null);
+    this.vfs = vfs;
+    this.expectedVfsDescription = expectedVfsDescription;
+  }
+
+  @Override
+  @Nonnull
+  protected String createMessage(@Nonnull String description) {
+    return "'"
+        + vfs.getDescription()
+        + "' VFS in "
+        + description
+        + " does not match the expected VFS type '"
+        + expectedVfsDescription
+        + "': "
+        + getCause().getMessage();
+  }
+}
diff --git a/sched/tests/com/android/sched/AllTests.java b/sched/tests/com/android/sched/AllTests.java
index 8454401..8c39864 100644
--- a/sched/tests/com/android/sched/AllTests.java
+++ b/sched/tests/com/android/sched/AllTests.java
@@ -28,7 +28,6 @@
     com.android.sched.scheduler.AllTests.class,
     com.android.sched.config.AllTests.class,
     com.android.sched.util.AllTests.class,
-    com.android.sched.util.file.AllTests.class,
     com.android.sched.vfs.VFSTest.class})
 public class AllTests {
 }
diff --git a/sched/tests/com/android/sched/test/TestTools.java b/sched/tests/com/android/sched/test/TestTools.java
new file mode 100644
index 0000000..ff48351
--- /dev/null
+++ b/sched/tests/com/android/sched/test/TestTools.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.sched.test;
+
+import com.android.sched.util.file.CannotChangePermissionException;
+import com.android.sched.util.file.CannotCreateFileException;
+import com.android.sched.util.file.CannotDeleteFileException;
+import com.android.sched.util.file.FileUtils;
+import com.android.sched.util.file.Files;
+import com.android.sched.util.location.FileLocation;
+
+import java.io.File;
+import java.io.IOException;
+
+import javax.annotation.Nonnull;
+
+/**
+ * Common tools for Schedlib tests.
+ */
+public class TestTools {
+
+  @Nonnull
+  private static final String TMP_PREFIX = "test-sched-";
+
+  @Nonnull
+  public static File createTempFile(@Nonnull String prefix, @Nonnull String suffix)
+      throws CannotCreateFileException, CannotChangePermissionException {
+    File tmp = Files.createTempFile(TMP_PREFIX + prefix, suffix);
+    tmp.deleteOnExit();
+    return tmp;
+  }
+
+  @Nonnull
+  public static File createTempDir() throws CannotCreateFileException,
+      CannotChangePermissionException, IOException {
+    try {
+      final File tmpDir = Files.createTempDir(TMP_PREFIX);
+      Runtime.getRuntime().addShutdownHook(new Thread() {
+        @Override
+        public void run() {
+          try {
+            FileUtils.deleteDir(tmpDir);
+          } catch (IOException e) {
+            throw new RuntimeException(new CannotDeleteFileException(new FileLocation(tmpDir)));
+          }
+        }
+      });
+      return tmpDir;
+    } catch (IllegalStateException e) {
+      throw new IOException(e);
+    }
+  }
+
+}
diff --git a/sched/tests/com/android/sched/util/codec/AllTests.java b/sched/tests/com/android/sched/util/codec/AllTests.java
index db3d776..4409b61 100644
--- a/sched/tests/com/android/sched/util/codec/AllTests.java
+++ b/sched/tests/com/android/sched/util/codec/AllTests.java
@@ -21,6 +21,7 @@
 import org.junit.runners.Suite.SuiteClasses;
 
 @RunWith(Suite.class)
-@SuiteClasses(value = {DurationFormatterTest.class, QuantityFormatterTest.class})
-public class AllTests {
-}
+@SuiteClasses(
+  value = {DurationFormatterTest.class, QuantityFormatterTest.class, WriterFileCodecTest.class}
+)
+public class AllTests {}
diff --git a/sched/tests/com/android/sched/util/codec/WriterFileCodecTest.java b/sched/tests/com/android/sched/util/codec/WriterFileCodecTest.java
new file mode 100644
index 0000000..e5084a7
--- /dev/null
+++ b/sched/tests/com/android/sched/util/codec/WriterFileCodecTest.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.sched.util.codec;
+
+import com.android.sched.util.LineSeparator;
+import com.android.sched.util.file.CannotChangePermissionException;
+import com.android.sched.util.file.CannotCreateFileException;
+import com.android.sched.util.file.FileAlreadyExistsException;
+import com.android.sched.util.file.FileOrDirectory.ChangePermission;
+import com.android.sched.util.file.FileOrDirectory.Existence;
+import com.android.sched.util.file.NoSuchFileException;
+import com.android.sched.util.file.NotFileException;
+import com.android.sched.util.file.StandardOutputKind;
+import com.android.sched.util.file.WriterFile;
+import com.android.sched.util.file.WrongPermissionException;
+import com.android.sched.util.findbugs.SuppressFBWarnings;
+import com.android.sched.util.location.NoLocation;
+
+import junit.framework.Assert;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.Charset;
+
+public class WriterFileCodecTest {
+
+  @Test
+  public void testFormatValueStdout() {
+    String string =
+        new WriterFileCodec(Existence.MAY_EXIST)
+            .formatValue(new WriterFile(StandardOutputKind.STANDARD_OUTPUT));
+    Assert.assertEquals(FileCodec.STANDARD_IO_NAME, string);
+  }
+
+  @Test
+  public void testFormatValueStderr() {
+    String string =
+        new WriterFileCodec(Existence.MAY_EXIST)
+            .formatValue(new WriterFile(StandardOutputKind.STANDARD_ERROR));
+    Assert.assertEquals(FileCodec.STANDARD_ERROR_NAME, string);
+  }
+
+  @Test
+  @SuppressFBWarnings("RV_RETURN_VALUE_IGNORED_BAD_PRACTICE")
+  public void testFormatValueFile()
+      throws NotFileException, FileAlreadyExistsException, CannotCreateFileException,
+          CannotChangePermissionException, WrongPermissionException, NoSuchFileException,
+          IOException {
+    File file = File.createTempFile("sched-test", "tmp");
+    try {
+      String string =
+          new WriterFileCodec(Existence.MAY_EXIST)
+              .formatValue(new WriterFile(/* workingDirectory = */ null,
+                  file.getPath(),
+                  Charset.forName("UTF-8"),
+                  LineSeparator.SYSTEM,
+                  /* bufferSize = */ 4 * 1024,
+                  /* hooks = */ null,
+                  Existence.MAY_EXIST,
+                  ChangePermission.NOCHANGE,
+                  /* append = */ false));
+      Assert.assertEquals(file.getPath(), string);
+    } finally {
+      file.delete();
+    }
+  }
+
+  @Test
+  @Ignore // Known Schedlib bug
+  public void testFormatValueStreamOnly() {
+    ByteArrayOutputStream out = new ByteArrayOutputStream();
+    String string =
+        new WriterFileCodec(Existence.MAY_EXIST)
+            .formatValue(new WriterFile(out, new NoLocation()));
+    Assert.assertEquals("TBD", string);
+  }
+}
diff --git a/sched/tests/com/android/sched/util/file/FileUtilsTest.java b/sched/tests/com/android/sched/util/file/FileUtilsTest.java
deleted file mode 100644
index d336501..0000000
--- a/sched/tests/com/android/sched/util/file/FileUtilsTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.sched.util.file;
-
-import junit.framework.Assert;
-
-import org.junit.Test;
-
-import java.io.File;
-import java.io.IOException;
-
-/**
- * JUnit tests for class {@link FileUtils}.
- */
-public class FileUtilsTest {
-
-  /**
-   * Test method for {@link com.android.sched.util.file.FileUtils#getFileSeparator()}.
-   */
-  public void testGetFileSeparator() {
-    String fileSeparator = FileUtils.getFileSeparator();
-    Assert.assertNotNull(fileSeparator);
-    Assert.assertFalse(fileSeparator.isEmpty());
-  }
-
-  /**
-   * Test method for {@link com.android.sched.util.file.FileUtils#getWorkingDirectory()}.
-   */
-  @Test
-  public void testGetWorkingDirectory() {
-    File workingDir = FileUtils.getWorkingDirectory();
-    Assert.assertNotNull(workingDir);
-    Assert.assertTrue(workingDir.isDirectory());
-  }
-
-  /**
-   * Test method for {@link com.android.sched.util.file.FileUtils#createIfNotExists(java.io.File)}.
-   */
-  @Test
-  public void testCreateIfNotExists() throws IOException {
-
-    // Test creation of a directory (in tmp)
-    String tmpDirPath = System.getProperty("java.io.tmpdir");
-    File tempDir = new File(tmpDirPath);
-    File newDir = new File(tempDir, "testDir_FileUtilTest");
-    newDir.deleteOnExit();
-    if (newDir.exists()) {
-      if (!newDir.delete()) {
-        Assert.fail("Unable to delete folder " + newDir.getAbsolutePath());
-      }
-    }
-
-    FileUtils.createIfNotExists(newDir);
-    Assert.assertTrue(newDir.exists());
-  }
-
-}
diff --git a/sched/tests/com/android/sched/vfs/VFSTest.java b/sched/tests/com/android/sched/vfs/VFSTest.java
index d95d4f8..fd9b0c4 100644
--- a/sched/tests/com/android/sched/vfs/VFSTest.java
+++ b/sched/tests/com/android/sched/vfs/VFSTest.java
@@ -16,6 +16,7 @@
 
 package com.android.sched.vfs;
 
+import com.android.sched.test.TestTools;
 import com.android.sched.util.config.AsapConfigBuilder;
 import com.android.sched.util.config.ConfigurationException;
 import com.android.sched.util.config.MessageDigestFactory;
@@ -78,10 +79,9 @@
     InputOutputVFS ioVFS1 = null;
     InputOutputVFS ioVFS2 = null;
     try {
-      file = File.createTempFile("vfs", "dir");
+      file = TestTools.createTempDir();
       String path = file.getAbsolutePath();
-      Assert.assertTrue(file.delete());
-      VFS vfs1 = new DirectFS(new Directory(path, null, Existence.NOT_EXIST,
+      VFS vfs1 = new DirectFS(new Directory(path, null, Existence.MUST_EXIST,
           Permission.WRITE, ChangePermission.NOCHANGE), Permission.READ | Permission.WRITE);
 
       ioVFS1 = new GenericInputOutputVFS(vfs1);
@@ -103,9 +103,6 @@
       if (ioVFS2 != null) {
         ioVFS2.close();
       }
-      if (file != null) {
-        FileUtils.deleteDir(file);
-      }
     }
   }
 
@@ -118,11 +115,10 @@
     InputOutputVFS ioVFS1 = null;
     InputOutputVFS ioVFS2 = null;
     try {
-      file = File.createTempFile("vfs", "dir");
+      file = TestTools.createTempDir();
       String path = file.getAbsolutePath();
-      Assert.assertTrue(file.delete());
       VFS vfs1 = new CachedDirectFS(new Directory(path, null,
-          Existence.NOT_EXIST, Permission.WRITE, ChangePermission.NOCHANGE),
+          Existence.MUST_EXIST, Permission.WRITE, ChangePermission.NOCHANGE),
           Permission.READ | Permission.WRITE);
 
       ioVFS1 = new GenericInputOutputVFS(vfs1);
@@ -148,9 +144,6 @@
       if (ioVFS2 != null) {
         ioVFS2.close();
       }
-      if (file != null) {
-        FileUtils.deleteDir(file);
-      }
     }
   }
 
@@ -163,13 +156,12 @@
     InputOutputVFS ioVFS1 = null;
     InputOutputVFS ioVFS2 = null;
     try {
-      file = File.createTempFile("vfs", "dir");
+      file = TestTools.createTempDir();
       String path = file.getAbsolutePath();
-      Assert.assertTrue(file.delete());
 
       ioVFS1 =
           new GenericInputOutputVFS(new DeflateFS(new DirectFS(new Directory(path, null,
-              Existence.NOT_EXIST, Permission.WRITE, ChangePermission.NOCHANGE), Permission.READ
+              Existence.MUST_EXIST, Permission.WRITE, ChangePermission.NOCHANGE), Permission.READ
               | Permission.WRITE)));
 
       testOutputVFS(ioVFS1);
@@ -207,13 +199,12 @@
     InputOutputVFS ioVFS1 = null;
     InputOutputVFS ioVFS2 = null;
     try {
-      file = File.createTempFile("vfs", "dir");
+      file = TestTools.createTempDir();
       String path = file.getAbsolutePath();
-      Assert.assertTrue(file.delete());
 
       ioVFS1 =
           new GenericInputOutputVFS(new CaseInsensitiveFS(new DirectFS(new Directory(path, null,
-              Existence.NOT_EXIST, Permission.WRITE, ChangePermission.NOCHANGE), Permission.READ
+              Existence.MUST_EXIST, Permission.WRITE, ChangePermission.NOCHANGE), Permission.READ
               | Permission.WRITE)));
 
       testOutputVFS(ioVFS1);
@@ -234,9 +225,6 @@
       if (ioVFS2 != null) {
         ioVFS2.close();
       }
-      if (file != null) {
-        FileUtils.deleteDir(file);
-      }
     }
   }
 
@@ -244,19 +232,19 @@
   public void testMessageDigestFS()
       throws CannotCreateFileException, WrongPermissionException, CannotChangePermissionException,
       NoSuchFileException, FileAlreadyExistsException, IOException, CannotDeleteFileException,
-      NotFileOrDirectoryException, CannotCloseException, BadVFSFormatException {
+      NotFileOrDirectoryException, CannotCloseException, BadVFSFormatException,
+      WrongVFSTypeException {
     File file = null;
     InputOutputVFS ioVFS1 = null;
     InputOutputVFS ioVFS2 = null;
     try {
-      file = File.createTempFile("vfs", "dir");
+      file = TestTools.createTempDir();
       String path = file.getAbsolutePath();
-      Assert.assertTrue(file.delete());
 
       Provider.Service sha1 = getSha1Service();
 
       ioVFS1 = new GenericInputOutputVFS(new MessageDigestFS(new DirectFS(new Directory(path,
-          null, Existence.NOT_EXIST, Permission.WRITE, ChangePermission.NOCHANGE),
+          null, Existence.MUST_EXIST, Permission.WRITE, ChangePermission.NOCHANGE),
           Permission.READ | Permission.WRITE), new MessageDigestFactory(getSha1Service())));
 
       testOutputVFS(ioVFS1);
@@ -264,8 +252,8 @@
       checkFileLocations(ioVFS1);
       testInputVFS(ioVFS1);
       InputVFile fileAAB1 =
-          ioVFS1.getRootInputVDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
-      String fileAAB1digest = ((GenericInputVFile) fileAAB1).getDigest();
+          ioVFS1.getRootDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
+      String fileAAB1digest = fileAAB1.getDigest();
       Assert.assertNotNull(fileAAB1digest);
       String vfsDigest = ioVFS1.getDigest();
       Assert.assertNotNull(vfsDigest);
@@ -278,8 +266,8 @@
       checkFileLocations(ioVFS2);
 
       InputVFile fileAAB1b =
-          ioVFS2.getRootInputVDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
-      String fileAAB1digest2 = ((GenericInputVFile) fileAAB1b).getDigest();
+          ioVFS2.getRootDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
+      String fileAAB1digest2 = fileAAB1b.getDigest();
       Assert.assertEquals(fileAAB1digest, fileAAB1digest2);
       String vfsDigest2 = ioVFS2.getDigest();
       Assert.assertEquals(vfsDigest, vfsDigest2);
@@ -291,9 +279,6 @@
       if (ioVFS2 != null) {
         ioVFS2.close();
       }
-      if (file != null) {
-        FileUtils.deleteDir(file);
-      }
     }
   }
 
@@ -301,14 +286,14 @@
   public void testMessageDigestFSWithCaseInsensitiveFS()
       throws CannotCreateFileException, WrongPermissionException, CannotChangePermissionException,
       NoSuchFileException, FileAlreadyExistsException, IOException, CannotDeleteFileException,
-      NotFileOrDirectoryException, CannotCloseException, BadVFSFormatException {
+      NotFileOrDirectoryException, CannotCloseException, BadVFSFormatException,
+      WrongVFSTypeException {
     File file = null;
     InputOutputVFS ioVFS1 = null;
     InputOutputVFS ioVFS2 = null;
     try {
-      file = File.createTempFile("vfs", "dir");
+      file = TestTools.createTempDir();
       String path = file.getAbsolutePath();
-      Assert.assertTrue(file.delete());
 
       Provider.Service sha1 = null;
       for (Provider provider : Security.getProviders()) {
@@ -321,15 +306,15 @@
       Assert.assertNotNull(sha1);
 
       ioVFS1 = new GenericInputOutputVFS(new MessageDigestFS(new CaseInsensitiveFS(
-          new DirectFS(new Directory(path, null, Existence.NOT_EXIST, Permission.WRITE,
+          new DirectFS(new Directory(path, null, Existence.MUST_EXIST, Permission.WRITE,
               ChangePermission.NOCHANGE), Permission.READ | Permission.WRITE)),
               new MessageDigestFactory(sha1)));
       testOutputVFS(ioVFS1);
       testDelete(ioVFS1);
       testInputVFS(ioVFS1);
       InputVFile fileAAB1 =
-          ioVFS1.getRootInputVDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
-      String fileAAB1digest = ((GenericInputVFile) fileAAB1).getDigest();
+          ioVFS1.getRootDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
+      String fileAAB1digest = fileAAB1.getDigest();
       Assert.assertNotNull(fileAAB1digest);
       String vfsDigest = ioVFS1.getDigest();
       Assert.assertNotNull(vfsDigest);
@@ -342,8 +327,8 @@
       testInputVFS(ioVFS2);
 
       InputVFile fileAAB1b =
-          ioVFS2.getRootInputVDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
-      String fileAAB1digest2 = ((GenericInputVFile) fileAAB1b).getDigest();
+          ioVFS2.getRootDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
+      String fileAAB1digest2 = fileAAB1b.getDigest();
       Assert.assertEquals(fileAAB1digest, fileAAB1digest2);
       String vfsDigest2 = ioVFS2.getDigest();
       Assert.assertEquals(vfsDigest, vfsDigest2);
@@ -355,31 +340,29 @@
       if (ioVFS2 != null) {
         ioVFS2.close();
       }
-      if (file != null) {
-        FileUtils.deleteDir(file);
-      }
     }
   }
 
   @Test
   public void testDeflatePrefixedCaseInsensitiveDirectFS()
       throws CannotCreateFileException, WrongPermissionException, CannotChangePermissionException,
-      NoSuchFileException, FileAlreadyExistsException, IOException, CannotDeleteFileException,
-      NotFileOrDirectoryException, CannotCloseException, BadVFSFormatException {
+          NoSuchFileException, FileAlreadyExistsException, IOException, CannotDeleteFileException,
+          NotFileOrDirectoryException, CannotCloseException, BadVFSFormatException,
+          WrongVFSTypeException {
     File file = null;
     InputOutputVFS ioVFS1 = null;
     InputOutputVFS ioVFS2 = null;
     try {
-      file = File.createTempFile("vfs", "dir");
+      file = TestTools.createTempDir();
       String path = file.getAbsolutePath();
-      Assert.assertTrue(file.delete());
 
       CaseInsensitiveFS ciFS = new CaseInsensitiveFS(new DirectFS(new Directory(path, null,
-          Existence.NOT_EXIST, Permission.WRITE, ChangePermission.NOCHANGE),
+          Existence.MUST_EXIST, Permission.WRITE, ChangePermission.NOCHANGE),
           Permission.READ | Permission.WRITE));
 
       ioVFS1 =
-          new GenericInputOutputVFS(new DeflateFS(new PrefixedFS(ciFS, new VPath("stuff", '/'))));
+          new GenericInputOutputVFS(
+              new DeflateFS(new PrefixedFS(ciFS, new VPath("stuff", '/'), Existence.MAY_EXIST)));
 
       testOutputVFS(ioVFS1);
       testDelete(ioVFS1);
@@ -392,7 +375,8 @@
           Permission.READ | Permission.WRITE));
 
       ioVFS2 =
-          new GenericInputOutputVFS(new DeflateFS(new PrefixedFS(ciFS2, new VPath("stuff", '/'))));
+          new GenericInputOutputVFS(
+              new DeflateFS(new PrefixedFS(ciFS2, new VPath("stuff", '/'), Existence.MUST_EXIST)));
       testInputVFS(ioVFS2);
       ciFS2.close();
 
@@ -403,9 +387,6 @@
       if (ioVFS2 != null) {
         ioVFS2.close();
       }
-      if (file != null) {
-        FileUtils.deleteDir(file);
-      }
     }
   }
 
@@ -413,14 +394,14 @@
   public void testMessageDigestFSWithCachedDirectFS()
       throws CannotCreateFileException, WrongPermissionException, CannotChangePermissionException,
       NoSuchFileException, FileAlreadyExistsException, IOException, CannotDeleteFileException,
-      NotFileOrDirectoryException, CannotCloseException, BadVFSFormatException {
+      NotFileOrDirectoryException, CannotCloseException, BadVFSFormatException,
+      WrongVFSTypeException {
     File file = null;
     InputOutputVFS ioVFS1 = null;
     InputOutputVFS ioVFS2 = null;
     try {
-      file = File.createTempFile("vfs", "dir");
+      file = TestTools.createTempDir();
       String path = file.getAbsolutePath();
-      Assert.assertTrue(file.delete());
 
       Provider.Service sha1 = null;
       for (Provider provider : Security.getProviders()) {
@@ -433,7 +414,7 @@
       Assert.assertNotNull(sha1);
 
       VFS vfs1 = new MessageDigestFS(new CachedDirectFS(
-          new Directory(path, null, Existence.NOT_EXIST, Permission.WRITE,
+          new Directory(path, null, Existence.MUST_EXIST, Permission.WRITE,
               ChangePermission.NOCHANGE), Permission.READ | Permission.WRITE),
               new MessageDigestFactory(sha1));
 
@@ -443,8 +424,8 @@
       checkFileLocations(ioVFS1);
       testInputVFS(ioVFS1);
       InputVFile fileAAB1 =
-          ioVFS1.getRootInputVDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
-      String fileAAB1digest = ((GenericInputVFile) fileAAB1).getDigest();
+          ioVFS1.getRootDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
+      String fileAAB1digest = fileAAB1.getDigest();
       Assert.assertNotNull(fileAAB1digest);
       String vfsDigest = ioVFS1.getDigest();
       Assert.assertNotNull(vfsDigest);
@@ -458,8 +439,8 @@
       checkFileLocations(ioVFS2);
 
       InputVFile fileAAB1b =
-          ioVFS2.getRootInputVDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
-      String fileAAB1digest2 = ((GenericInputVFile) fileAAB1b).getDigest();
+          ioVFS2.getRootDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
+      String fileAAB1digest2 = fileAAB1b.getDigest();
       Assert.assertEquals(fileAAB1digest, fileAAB1digest2);
       String vfsDigest2 = ioVFS2.getDigest();
       Assert.assertEquals(vfsDigest, vfsDigest2);
@@ -471,9 +452,6 @@
       if (ioVFS2 != null) {
         ioVFS2.close();
       }
-      if (file != null) {
-        FileUtils.deleteDir(file);
-      }
     }
   }
 
@@ -481,19 +459,18 @@
   public void testPrefixedFSWithDirectFS()
       throws CannotCreateFileException, WrongPermissionException, CannotChangePermissionException,
       NoSuchFileException, FileAlreadyExistsException, IOException, NotFileOrDirectoryException,
-      CannotDeleteFileException, CannotCloseException {
+      CannotDeleteFileException, CannotCloseException, WrongVFSTypeException {
     File file = null;
     InputOutputVFS ioVFS1 = null;
     InputOutputVFS ioVFS2 = null;
     try {
-      file = File.createTempFile("vfs", "dir");
+      file = TestTools.createTempDir();
       String path = file.getAbsolutePath();
-      Assert.assertTrue(file.delete());
 
       ioVFS1 =
           new GenericInputOutputVFS(new PrefixedFS(new DirectFS(new Directory(path, null,
-              Existence.NOT_EXIST, Permission.WRITE, ChangePermission.NOCHANGE), Permission.READ
-              | Permission.WRITE), new VPath("stuff", '/')));
+              Existence.MUST_EXIST, Permission.WRITE, ChangePermission.NOCHANGE), Permission.READ
+              | Permission.WRITE), new VPath("stuff", '/'), Existence.NOT_EXIST));
 
       testOutputVFS(ioVFS1);
       testDelete(ioVFS1);
@@ -504,7 +481,7 @@
       ioVFS2 =
           new GenericInputOutputVFS(new PrefixedFS(new DirectFS(new Directory(path, null,
               Existence.MUST_EXIST, Permission.WRITE, ChangePermission.NOCHANGE), Permission.READ
-              | Permission.WRITE), new VPath("stuff", '/')));
+              | Permission.WRITE), new VPath("stuff", '/'), Existence.MUST_EXIST));
       testInputVFS(ioVFS2);
       checkFileLocations(ioVFS2);
 
@@ -515,9 +492,6 @@
       if (ioVFS2 != null) {
         ioVFS2.close();
       }
-      if (file != null) {
-        FileUtils.deleteDir(file);
-      }
     }
   }
 
@@ -525,19 +499,21 @@
   public void testPrefixedFSWithZip()
       throws CannotCreateFileException, WrongPermissionException, CannotChangePermissionException,
       NoSuchFileException, FileAlreadyExistsException, IOException, ZipException,
-      NotFileOrDirectoryException, CannotCloseException {
+      NotFileOrDirectoryException, CannotCloseException, WrongVFSTypeException {
     String prefix = "stuff";
     File file = null;
     InputOutputVFS ioVFS1 = null;
     InputOutputVFS ioVFS2 = null;
     try {
-      file = File.createTempFile("vfs", ".zip");
+      file = TestTools.createTempFile("vfs", ".zip");
       String path = file.getAbsolutePath();
 
       WriteZipFS writeZipFS = new WriteZipFS(new OutputZipFile(path, null, Existence.MAY_EXIST,
           ChangePermission.NOCHANGE, Compression.COMPRESSED));
 
-      ioVFS1 = new GenericInputOutputVFS(new PrefixedFS(writeZipFS, new VPath(prefix, '/')));
+      ioVFS1 =
+          new GenericInputOutputVFS(
+              new PrefixedFS(writeZipFS, new VPath(prefix, '/'), Existence.NOT_EXIST));
 
       testOutputVFS(ioVFS1);
       ioVFS1.close();
@@ -545,7 +521,9 @@
 
       ReadZipFS readZipFS = new ReadZipFS(new InputZipFile(path));
 
-      ioVFS2 = new GenericInputOutputVFS(new PrefixedFS(readZipFS, new VPath(prefix, '/')));
+      ioVFS2 =
+          new GenericInputOutputVFS(
+              new PrefixedFS(readZipFS, new VPath(prefix, '/'), Existence.MUST_EXIST));
       testInputVFS(ioVFS2);
       checkZipLocations(ioVFS2, prefix);
 
@@ -558,30 +536,29 @@
       if (ioVFS2 != null) {
         ioVFS2.close();
       }
-      if (file != null) {
-        Assert.assertTrue(file.delete());
-      }
     }
   }
 
   @Test
   public void testPrefixedFSWithCaseInsensitiveFS()
       throws CannotCreateFileException, WrongPermissionException, CannotChangePermissionException,
-      NoSuchFileException, FileAlreadyExistsException, IOException, CannotDeleteFileException,
-      NotFileOrDirectoryException, CannotCloseException, BadVFSFormatException {
+          NoSuchFileException, FileAlreadyExistsException, IOException, CannotDeleteFileException,
+          NotFileOrDirectoryException, CannotCloseException, BadVFSFormatException,
+          WrongVFSTypeException {
     File file = null;
     InputOutputVFS ioVFS1 = null;
     InputOutputVFS ioVFS2 = null;
     try {
-      file = File.createTempFile("vfs", "dir");
+      file = TestTools.createTempDir();
       String path = file.getAbsolutePath();
-      Assert.assertTrue(file.delete());
 
       CaseInsensitiveFS ciFS = new CaseInsensitiveFS(new DirectFS(new Directory(path, null,
-          Existence.NOT_EXIST, Permission.WRITE, ChangePermission.NOCHANGE),
+          Existence.MUST_EXIST, Permission.WRITE, ChangePermission.NOCHANGE),
           Permission.READ | Permission.WRITE));
 
-      ioVFS1 = new GenericInputOutputVFS(new PrefixedFS(ciFS, new VPath("stuff", '/')));
+      ioVFS1 =
+          new GenericInputOutputVFS(
+              new PrefixedFS(ciFS, new VPath("stuff", '/'), Existence.NOT_EXIST));
 
       testOutputVFS(ioVFS1);
       testDelete(ioVFS1);
@@ -593,7 +570,9 @@
           Existence.MUST_EXIST, Permission.WRITE, ChangePermission.NOCHANGE),
           Permission.READ | Permission.WRITE));
 
-      ioVFS2 = new GenericInputOutputVFS(new PrefixedFS(ciFS2, new VPath("stuff", '/')));
+      ioVFS2 =
+          new GenericInputOutputVFS(
+              new PrefixedFS(ciFS2, new VPath("stuff", '/'), Existence.MUST_EXIST));
       testInputVFS(ioVFS2);
       ciFS2.close();
 
@@ -604,24 +583,21 @@
       if (ioVFS2 != null) {
         ioVFS2.close();
       }
-      if (file != null) {
-        FileUtils.deleteDir(file);
-      }
     }
   }
 
   @Test
   public void testMessageDigestFSWithPrefixedFSAndCaseInsensitiveFS()
       throws CannotCreateFileException, WrongPermissionException, CannotChangePermissionException,
-      NoSuchFileException, FileAlreadyExistsException, IOException, CannotDeleteFileException,
-      NotFileOrDirectoryException, CannotCloseException, BadVFSFormatException {
+          NoSuchFileException, FileAlreadyExistsException, IOException, CannotDeleteFileException,
+          NotFileOrDirectoryException, CannotCloseException, BadVFSFormatException,
+          WrongVFSTypeException {
     File file = null;
     InputOutputVFS ioVFS1 = null;
     InputOutputVFS ioVFS2 = null;
     try {
-      file = File.createTempFile("vfs", "dir");
+      file = TestTools.createTempDir();
       String path = file.getAbsolutePath();
-      Assert.assertTrue(file.delete());
 
       Provider.Service sha1 = null;
       for (Provider provider : Security.getProviders()) {
@@ -635,10 +611,12 @@
 
       CaseInsensitiveFS ciFS =
           new CaseInsensitiveFS(new MessageDigestFS(new CachedDirectFS(new Directory(path, null,
-              Existence.NOT_EXIST, Permission.WRITE, ChangePermission.NOCHANGE),
+              Existence.MUST_EXIST, Permission.WRITE, ChangePermission.NOCHANGE),
               Permission.READ | Permission.WRITE), new MessageDigestFactory(sha1)));
 
-      ioVFS1 = new GenericInputOutputVFS(new PrefixedFS(ciFS, new VPath("stuff", '/')));
+      ioVFS1 =
+          new GenericInputOutputVFS(
+              new PrefixedFS(ciFS, new VPath("stuff", '/'), Existence.NOT_EXIST));
 
       testOutputVFS(ioVFS1);
       testDelete(ioVFS1);
@@ -651,7 +629,9 @@
               Existence.MUST_EXIST, Permission.WRITE, ChangePermission.NOCHANGE),
               Permission.READ | Permission.WRITE), new MessageDigestFactory(sha1)));
 
-      ioVFS2 = new GenericInputOutputVFS(new PrefixedFS(ciFS2, new VPath("stuff", '/')));
+      ioVFS2 =
+          new GenericInputOutputVFS(
+              new PrefixedFS(ciFS2, new VPath("stuff", '/'), Existence.MUST_EXIST));
       testInputVFS(ioVFS2);
       ciFS2.close();
 
@@ -662,9 +642,6 @@
       if (ioVFS2 != null) {
         ioVFS2.close();
       }
-      if (file != null) {
-        FileUtils.deleteDir(file);
-      }
     }
   }
 
@@ -677,7 +654,7 @@
     InputOutputVFS ioVFS1 = null;
     InputVFS iVFS2 = null;
     try {
-      file = File.createTempFile("vfs", ".zip");
+      file = TestTools.createTempFile("vfs", ".zip");
       String path = file.getAbsolutePath();
       ioVFS1 = new GenericInputOutputVFS(new WriteZipFS(new OutputZipFile(path, null,
           Existence.MAY_EXIST, ChangePermission.NOCHANGE, Compression.COMPRESSED)));
@@ -693,9 +670,6 @@
       if (iVFS2 != null) {
         iVFS2.close();
       }
-      if (file != null) {
-        Assert.assertTrue(file.delete());
-      }
     }
   }
 
@@ -708,10 +682,9 @@
     File zipFile = null;
     File dir = null;
     try {
-      zipFile = File.createTempFile("vfs", ".zip");
-      dir = File.createTempFile("vfs", "dir");
+      zipFile = TestTools.createTempFile("vfs", ".zip");
+      dir = TestTools.createTempDir();
       String dirPath = dir.getPath();
-      Assert.assertTrue(dir.delete());
 
       // fill up zip
       VFS writeZipVFS = new ReadWriteZipFS(
@@ -722,7 +695,7 @@
       writeZipVFS.close();
 
       // create Dir
-      VFS dirVFS = new CachedDirectFS(new Directory(dirPath, null, Existence.NOT_EXIST,
+      VFS dirVFS = new CachedDirectFS(new Directory(dirPath, null, Existence.MUST_EXIST,
           Permission.WRITE, ChangePermission.NOCHANGE), Permission.READ | Permission.WRITE);
 
       // create UnionVFS with dir and read-only zip
@@ -734,24 +707,24 @@
 
       // write new stuff to UnionVFS
       InputOutputVFS outputUnionVFS = new GenericInputOutputVFS(unionVFS);
-      OutputVFile fileBA2 = outputUnionVFS.getRootOutputVDir().createOutputVFile(
+      OutputVFile fileBA2 = outputUnionVFS.getRootDir().createOutputVFile(
           new VPath("dirB/dirBA/fileBA2", '/'));
       writeToFile(fileBA2, "dirB/dirBA/fileBA2");
       InputOutputVDir dirA =
-          outputUnionVFS.getRootInputOutputVDir().getInputVDir(new VPath("dirA", '/'));
+          outputUnionVFS.getRootDir().getInputVDir(new VPath("dirA", '/'));
       InputOutputVDir dirAA = dirA.getInputVDir(new VPath("dirAA", '/'));
       InputOutputVDir dirAAB = (InputOutputVDir) dirAA.createOutputVDir(new VPath("dirAAB", '/'));
       OutputVFile fileAAB2 = dirAAB.createOutputVFile(new VPath("fileAAB2", '/'));
       writeToFile(fileAAB2, "dirA/dirAA/dirAAB/fileAAB2");
       InputOutputVDir dirC =
-          outputUnionVFS.getRootInputOutputVDir().getInputVDir(new VPath("dirC", '/'));
+          outputUnionVFS.getRootDir().getInputVDir(new VPath("dirC", '/'));
       // write on top of an already existing file
       OutputVFile fileC1 = dirC.getInputVFile(new VPath("fileC1", '/'));
       writeToFile(fileC1, "dirC/fileC1v2");
 
       // try deleting some old stuff from zip (which is not yet supported)
       try {
-        outputUnionVFS.getRootInputOutputVDir().getInputVFile(new VPath("dirB/dirBB/fileBB1", '/'))
+        outputUnionVFS.getRootDir().getInputVFile(new VPath("dirB/dirBB/fileBB1", '/'))
             .delete();
         Assert.fail();
       } catch (UnionVFSReadOnlyException e) {
@@ -760,12 +733,12 @@
 
       // read new stuff
       InputVFS inputUnionVFS = new GenericInputVFS(unionVFS);
-      InputVFile readFileC1 = inputUnionVFS.getRootInputVDir().getInputVFile(
+      InputVFile readFileC1 = inputUnionVFS.getRootDir().getInputVFile(
           new VPath("dirC/fileC1", '/'));
       Assert.assertEquals("dirC/fileC1v2", readFromFile(readFileC1));
       Assert.assertTrue(
           readFileC1.getPathFromRoot().equals(new VPath("dirC/fileC1", '/')));
-      InputVDir readDirA = inputUnionVFS.getRootInputVDir().getInputVDir(new VPath("dirA", '/'));
+      InputVDir readDirA = inputUnionVFS.getRootDir().getInputVDir(new VPath("dirA", '/'));
       InputVDir readDirAA = readDirA.getInputVDir(new VPath("dirAA", '/'));
       InputVDir readDirAAB = readDirAA.getInputVDir(new VPath("dirAAB", '/'));
       InputVFile readFileAAB2 = readDirAAB.getInputVFile(new VPath("fileAAB2", '/'));
@@ -784,12 +757,12 @@
 
       // try to delete a file that is in the dir and the zip, then check that the one from the zip
       // remains
-      inputUnionVFS.getRootInputVDir().getInputVFile(new VPath("dirC/fileC1", '/')).delete();
+      inputUnionVFS.getRootDir().getInputVFile(new VPath("dirC/fileC1", '/')).delete();
       Assert.assertEquals("dirC/fileC1", readFromFile(
-          inputUnionVFS.getRootInputVDir().getInputVFile(new VPath("dirC/fileC1", '/'))));
+          inputUnionVFS.getRootDir().getInputVFile(new VPath("dirC/fileC1", '/'))));
 
       // list contents of "dirB/dirBA", which has files in the dir and in the zip
-      InputVDir dirBA = inputUnionVFS.getRootInputVDir().getInputVDir(new VPath("dirB/dirBA", '/'));
+      InputVDir dirBA = inputUnionVFS.getRootDir().getInputVDir(new VPath("dirB/dirBA", '/'));
       Collection<? extends InputVElement> dirBAList = dirBA.list();
       Assert.assertEquals(2, dirBAList.size());
       for (InputVElement subElement : dirBAList) {
@@ -817,28 +790,25 @@
       if (zipFile != null) {
         Assert.assertTrue(zipFile.delete());
       }
-      if (dir != null) {
-        FileUtils.deleteDir(dir);
-      }
     }
   }
 
   @SuppressWarnings("resource")
   @Test
-  public void testIncrementalStack() throws IOException, CannotCreateFileException,
-      WrongPermissionException, CannotChangePermissionException, NoSuchFileException,
-      FileAlreadyExistsException, ZipException, NotFileOrDirectoryException,
-      CannotDeleteFileException, CannotCloseException, BadVFSFormatException {
+  public void testIncrementalStack()
+      throws IOException, CannotCreateFileException, WrongPermissionException,
+          CannotChangePermissionException, NoSuchFileException, FileAlreadyExistsException,
+          ZipException, NotFileOrDirectoryException, CannotDeleteFileException,
+          CannotCloseException, BadVFSFormatException, WrongVFSTypeException {
     final VPath prefix = new VPath("pre", '/');
     File inputZipFile = null;
     File outputZipFile = null;
     File dir = null;
     try {
-      inputZipFile = File.createTempFile("input", ".zip");
-      dir = File.createTempFile("vfs", "dir");
-      outputZipFile = File.createTempFile("output", ".zip");
+      inputZipFile = TestTools.createTempFile("input", ".zip");
+      dir = TestTools.createTempDir();
+      outputZipFile = TestTools.createTempFile("output", ".zip");
       String dirPath = dir.getPath();
-      Assert.assertTrue(dir.delete());
 
       // fill up zip that will be used as input
       {
@@ -847,7 +817,8 @@
                 ChangePermission.NOCHANGE, Compression.COMPRESSED),
             /* numGroups = */ 1, /* groupSize = */ 2, new MessageDigestFactory(getSha1Service()),
             /* debug = */ false);
-        InputOutputVFS ioVFS1 = new GenericInputOutputVFS(new PrefixedFS(writeZipVFS, prefix));
+        InputOutputVFS ioVFS1 =
+            new GenericInputOutputVFS(new PrefixedFS(writeZipVFS, prefix, Existence.NOT_EXIST));
         testOutputVFS(ioVFS1);
         ioVFS1.close();
         writeZipVFS.close();
@@ -855,9 +826,9 @@
 
       // create Dir
       VFS ciVFS = new CaseInsensitiveFS(
-          new CachedDirectFS(new Directory(dirPath, null, Existence.NOT_EXIST, Permission.WRITE,
+          new CachedDirectFS(new Directory(dirPath, null, Existence.MUST_EXIST, Permission.WRITE,
               ChangePermission.NOCHANGE), Permission.READ | Permission.WRITE));
-      VFS prefixedFS1 = new PrefixedFS(ciVFS, prefix);
+      VFS prefixedFS1 = new PrefixedFS(ciVFS, prefix, Existence.NOT_EXIST);
       prefixedFS1.close();
 
       // create R/W output zip that uses as temp dir an UnionVFS between dir and read-only zip
@@ -873,30 +844,30 @@
         VFS unionVFS = new UnionVFS(vfsList);
         rwzfs.setWorkVFS(unionVFS);
       }
-      VFS prefixedFS = new PrefixedFS(rwzfs, prefix);
+      VFS prefixedFS = new PrefixedFS(rwzfs, prefix, Existence.MUST_EXIST);
 
       testInputVFS(new GenericInputVFS(prefixedFS));
 
       // write new stuff to R/W output zip
       InputOutputVFS ioVFS = new GenericInputOutputVFS(prefixedFS);
-      OutputVFile fileBA2 = ioVFS.getRootOutputVDir().createOutputVFile(
+      OutputVFile fileBA2 = ioVFS.getRootDir().createOutputVFile(
           new VPath("dirB/dirBA/fileBA2", '/'));
       writeToFile(fileBA2, "dirB/dirBA/fileBA2");
       InputOutputVDir dirA =
-          ioVFS.getRootInputOutputVDir().getInputVDir(new VPath("dirA", '/'));
+          ioVFS.getRootDir().getInputVDir(new VPath("dirA", '/'));
       InputOutputVDir dirAA = dirA.getInputVDir(new VPath("dirAA", '/'));
       InputOutputVDir dirAAB = (InputOutputVDir) dirAA.createOutputVDir(new VPath("dirAAB", '/'));
       OutputVFile fileAAB2 = dirAAB.createOutputVFile(new VPath("fileAAB2", '/'));
       writeToFile(fileAAB2, "dirA/dirAA/dirAAB/fileAAB2");
       InputOutputVDir dirC =
-          ioVFS.getRootInputOutputVDir().getInputVDir(new VPath("dirC", '/'));
+          ioVFS.getRootDir().getInputVDir(new VPath("dirC", '/'));
       // write on top of an already existing file
       OutputVFile fileC1 = dirC.getInputVFile(new VPath("fileC1", '/'));
       writeToFile(fileC1, "dirC/fileC1v2");
 
       // try deleting some old stuff from zip (which is not yet supported)
       try {
-        ioVFS.getRootInputOutputVDir().getInputVFile(new VPath("dirB/dirBB/fileBB1", '/'))
+        ioVFS.getRootDir().getInputVFile(new VPath("dirB/dirBB/fileBB1", '/'))
             .delete();
         Assert.fail();
       } catch (UnionVFSReadOnlyException e) {
@@ -905,12 +876,12 @@
 
       // read new stuff
       InputVFS inputVFS = new GenericInputVFS(prefixedFS);
-      InputVFile readFileC1 = inputVFS.getRootInputVDir().getInputVFile(
+      InputVFile readFileC1 = inputVFS.getRootDir().getInputVFile(
           new VPath("dirC/fileC1", '/'));
       Assert.assertEquals("dirC/fileC1v2", readFromFile(readFileC1));
       Assert.assertTrue(
           readFileC1.getPathFromRoot().equals(new VPath("dirC/fileC1", '/')));
-      InputVDir readDirA = inputVFS.getRootInputVDir().getInputVDir(new VPath("dirA", '/'));
+      InputVDir readDirA = inputVFS.getRootDir().getInputVDir(new VPath("dirA", '/'));
       InputVDir readDirAA = readDirA.getInputVDir(new VPath("dirAA", '/'));
       InputVDir readDirAAB = readDirAA.getInputVDir(new VPath("dirAAB", '/'));
       InputVFile readFileAAB2 = readDirAAB.getInputVFile(new VPath("fileAAB2", '/'));
@@ -929,12 +900,12 @@
 
       // try to delete a file that is in the dir and the zip, then check that the one from the zip
       // remains
-      inputVFS.getRootInputVDir().getInputVFile(new VPath("dirC/fileC1", '/')).delete();
+      inputVFS.getRootDir().getInputVFile(new VPath("dirC/fileC1", '/')).delete();
       Assert.assertEquals("dirC/fileC1", readFromFile(
-          inputVFS.getRootInputVDir().getInputVFile(new VPath("dirC/fileC1", '/'))));
+          inputVFS.getRootDir().getInputVFile(new VPath("dirC/fileC1", '/'))));
 
       // list contents of "dirB/dirBA", which has files in the dir and in the zip
-      InputVDir dirBA = inputVFS.getRootInputVDir().getInputVDir(new VPath("dirB/dirBA", '/'));
+      InputVDir dirBA = inputVFS.getRootDir().getInputVDir(new VPath("dirB/dirBA", '/'));
       Collection<? extends InputVElement> dirBAList = dirBA.list();
       Assert.assertEquals(2, dirBAList.size());
       for (InputVElement subElement : dirBAList) {
@@ -966,9 +937,6 @@
       if (outputZipFile != null) {
         Assert.assertTrue(outputZipFile.delete());
       }
-      if (dir != null) {
-        FileUtils.deleteDir(dir);
-      }
     }
   }
 
@@ -976,27 +944,27 @@
       CannotCreateFileException, IOException, WrongPermissionException {
 
     // create stuff from root dir
-    InputOutputVDir dirA = (InputOutputVDir) outputVFS.getRootInputOutputVDir().createOutputVDir(
+    InputOutputVDir dirA = (InputOutputVDir) outputVFS.getRootDir().createOutputVDir(
         new VPath("dirA", '/'));
-    outputVFS.getRootInputOutputVDir().createOutputVDir(
+    outputVFS.getRootDir().createOutputVDir(
         new VPath("dirB/dirBA", '/'));
     OutputVFile file1 =
-        outputVFS.getRootInputOutputVDir().createOutputVFile(new VPath("file1", '/'));
+        outputVFS.getRootDir().createOutputVFile(new VPath("file1", '/'));
     writeToFile(file1, "file1");
     OutputVFile fileA1 =
-        outputVFS.getRootInputOutputVDir().createOutputVFile(new VPath("dirA/fileA1", '/'));
+        outputVFS.getRootDir().createOutputVFile(new VPath("dirA/fileA1", '/'));
     writeToFile(fileA1, "dirA/fileA1");
     OutputVFile fileB1 =
-        outputVFS.getRootInputOutputVDir().createOutputVFile(new VPath("dirB/fileB1", '/'));
+        outputVFS.getRootDir().createOutputVFile(new VPath("dirB/fileB1", '/'));
     writeToFile(fileB1, "dirB/fileB1");
     OutputVFile fileBA1 =
-        outputVFS.getRootInputOutputVDir().createOutputVFile(new VPath("dirB/dirBA/fileBA1", '/'));
+        outputVFS.getRootDir().createOutputVFile(new VPath("dirB/dirBA/fileBA1", '/'));
     writeToFile(fileBA1, "dirB/dirBA/fileBA1");
     OutputVFile fileBB1 =
-        outputVFS.getRootInputOutputVDir().createOutputVFile(new VPath("dirB/dirBB/fileBB1", '/'));
+        outputVFS.getRootDir().createOutputVFile(new VPath("dirB/dirBB/fileBB1", '/'));
     writeToFile(fileBB1, "dirB/dirBB/fileBB1");
     OutputVFile fileC1 =
-        outputVFS.getRootInputOutputVDir().createOutputVFile(new VPath("dirC/fileC1", '/'));
+        outputVFS.getRootDir().createOutputVFile(new VPath("dirC/fileC1", '/'));
     writeToFile(fileC1, "dirC/fileC1");
 
     // create stuff from dirA
@@ -1012,11 +980,11 @@
 
   private void testInputVFS(@Nonnull InputVFS inputVFS) throws NoSuchFileException, IOException,
       NotFileOrDirectoryException, WrongPermissionException {
-    InputVFile file1 = inputVFS.getRootInputVDir().getInputVFile(new VPath("file1", '/'));
+    InputVFile file1 = inputVFS.getRootDir().getInputVFile(new VPath("file1", '/'));
     Assert.assertEquals("file1", readFromFile(file1));
     Assert.assertTrue(file1.getPathFromRoot().equals(new VPath("file1", '/')));
 
-    InputVDir dirA = inputVFS.getRootInputVDir().getInputVDir(new VPath("dirA", '/'));
+    InputVDir dirA = inputVFS.getRootDir().getInputVDir(new VPath("dirA", '/'));
     Collection<? extends InputVElement> dirAElements = dirA.list();
     Assert.assertEquals(3, dirAElements.size());
     Assert.assertTrue(containsFile(dirAElements, "fileA1", "dirA/fileA1"));
@@ -1024,18 +992,18 @@
     Assert.assertTrue(containsDir(dirAElements, "dirAA"));
 
     InputVFile fileAAB1 =
-        inputVFS.getRootInputVDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
+        inputVFS.getRootDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
     Assert.assertEquals("dirA/dirAA/dirAAB/fileAAB1", readFromFile(fileAAB1));
     Assert.assertTrue(
         fileAAB1.getPathFromRoot().equals(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/')));
 
-    InputVDir dirB = inputVFS.getRootInputVDir().getInputVDir(new VPath("dirB", '/'));
+    InputVDir dirB = inputVFS.getRootDir().getInputVDir(new VPath("dirB", '/'));
     InputVDir dirBA = dirB.getInputVDir(new VPath("dirBA", '/'));
     InputVFile fileBA1 = dirBA.getInputVFile(new VPath("fileBA1", '/'));
     Assert.assertEquals("dirB/dirBA/fileBA1", readFromFile(fileBA1));
     Assert.assertTrue(fileBA1.getPathFromRoot().equals(new VPath("dirB/dirBA/fileBA1", '/')));
 
-    InputVDir dirBB = inputVFS.getRootInputVDir().getInputVDir(new VPath("dirB/dirBB", '/'));
+    InputVDir dirBB = inputVFS.getRootDir().getInputVDir(new VPath("dirB/dirBB", '/'));
     InputVFile fileBB1 = dirBB.getInputVFile(new VPath("fileBB1", '/'));
     Assert.assertEquals("dirB/dirBB/fileBB1", readFromFile(fileBB1));
     Assert.assertTrue(fileBB1.getPathFromRoot().equals(new VPath("dirB/dirBB/fileBB1", '/')));
@@ -1050,7 +1018,7 @@
     InputOutputVFS zipVFS = null;
     InputVFS inputZipVFS = null;
     try {
-      file = File.createTempFile("vfs", ".zip");
+      file = TestTools.createTempFile("vfs", ".zip");
       String path = file.getAbsolutePath();
       Provider.Service sha1 = getSha1Service();
       zipVFS = new GenericInputOutputVFS(new ReadWriteZipFS(
@@ -1073,9 +1041,6 @@
       if (inputZipVFS != null) {
         inputZipVFS.close();
       }
-      if (file != null) {
-        Assert.assertTrue(file.delete());
-      }
     }
   }
 
@@ -1083,12 +1048,13 @@
   public void testDeflateFSWithMessageDigestFS()
       throws CannotCreateFileException, WrongPermissionException, CannotChangePermissionException,
       NoSuchFileException, FileAlreadyExistsException, IOException, CannotDeleteFileException,
-      NotFileOrDirectoryException, ZipException, CannotCloseException, BadVFSFormatException {
+      NotFileOrDirectoryException, ZipException, CannotCloseException, BadVFSFormatException,
+      WrongVFSTypeException {
     File file = null;
     InputOutputVFS ioVFS1 = null;
     InputVFS ioVFS2 = null;
     try {
-      file = File.createTempFile("vfs", ".zip");
+      file = TestTools.createTempFile("vfs", ".zip");
 
       Provider.Service sha1 = getSha1Service();
 
@@ -1103,8 +1069,8 @@
       testDelete(ioVFS1);
       testInputVFS(ioVFS1);
       InputVFile fileAAB1 =
-          ioVFS1.getRootInputVDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
-      String fileAAB1digest = ((GenericInputVFile) fileAAB1).getDigest();
+          ioVFS1.getRootDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
+      String fileAAB1digest = fileAAB1.getDigest();
       Assert.assertNotNull(fileAAB1digest);
       String vfsDigest = ioVFS1.getDigest();
       Assert.assertNotNull(vfsDigest);
@@ -1116,8 +1082,8 @@
       testInputVFS(ioVFS2);
 
       InputVFile fileAAB1b =
-          ioVFS2.getRootInputVDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
-      String fileAAB1digest2 = ((GenericInputVFile) fileAAB1b).getDigest();
+          ioVFS2.getRootDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
+      String fileAAB1digest2 = fileAAB1b.getDigest();
       Assert.assertEquals(fileAAB1digest, fileAAB1digest2);
       String vfsDigest2 = ioVFS2.getDigest();
       Assert.assertEquals(vfsDigest, vfsDigest2);
@@ -1129,9 +1095,6 @@
       if (ioVFS2 != null) {
         ioVFS2.close();
       }
-      if (file != null) {
-        Assert.assertTrue(file.delete());
-      }
     }
   }
 
@@ -1140,12 +1103,12 @@
       CannotCreateFileException, IOException, WrongPermissionException {
 
     // let's delete "dirA/dirAA/dirAAB/fileAAB1"
-    InputOutputVDir dirA = ioVFS.getRootInputOutputVDir().getInputVDir(new VPath("dirA", '/'));
+    InputOutputVDir dirA = ioVFS.getRootDir().getInputVDir(new VPath("dirA", '/'));
     {
       InputOutputVFile fileAAB1 = dirA.getInputVFile(new VPath("dirAA/dirAAB/fileAAB1", '/'));
       fileAAB1.delete();
       try {
-        ioVFS.getRootInputVDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
+        ioVFS.getRootDir().getInputVFile(new VPath("dirA/dirAA/dirAAB/fileAAB1", '/'));
         Assert.fail();
       } catch (NoSuchFileException e) {
         // expected
@@ -1154,12 +1117,12 @@
 
     // let's delete "dirB/dirBB/fileBB1"
     InputOutputVDir dirBB =
-        ioVFS.getRootInputOutputVDir().getInputVDir(new VPath("dirB/dirBB", '/'));
+        ioVFS.getRootDir().getInputVDir(new VPath("dirB/dirBB", '/'));
     {
       InputOutputVFile fileBB1 = dirBB.getInputVFile(new VPath("fileBB1", '/'));
       fileBB1.delete();
       try {
-        ioVFS.getRootInputVDir().getInputVFile(new VPath("dirB/dirBB/fileBB1", '/'));
+        ioVFS.getRootDir().getInputVFile(new VPath("dirB/dirBB/fileBB1", '/'));
         Assert.fail();
       } catch (NoSuchFileException e) {
         // expected
@@ -1168,11 +1131,11 @@
 
     // let's delete "dirC/fileC1"
     {
-      InputOutputVFile fileC1 = ioVFS.getRootInputOutputVDir().getInputVFile(
+      InputOutputVFile fileC1 = ioVFS.getRootDir().getInputVFile(
           new VPath("dirC/fileC1", '/'));
       fileC1.delete();
       try {
-        ioVFS.getRootInputVDir().getInputVFile(new VPath("dirC/fileC1", '/'));
+        ioVFS.getRootDir().getInputVFile(new VPath("dirC/fileC1", '/'));
         Assert.fail();
       } catch (NoSuchFileException e) {
         // expected
@@ -1186,7 +1149,7 @@
       OutputVFile fileBB1 = dirBB.createOutputVFile(new VPath("fileBB1", '/'));
       writeToFile(fileBB1, "dirB/dirBB/fileBB1");
       OutputVFile fileC1 =
-          ioVFS.getRootInputOutputVDir().createOutputVFile(new VPath("dirC/fileC1", '/'));
+          ioVFS.getRootDir().createOutputVFile(new VPath("dirC/fileC1", '/'));
       writeToFile(fileC1, "dirC/fileC1");
     }
   }
@@ -1195,14 +1158,14 @@
   private void checkFileLocations(@Nonnull InputVFS inputVFS) throws NotFileOrDirectoryException,
       NoSuchFileException {
     VPath fileAAB1Path = new VPath("dirA/dirAA/dirAAB/fileAAB1", '/');
-    InputVFile fileAAB1 = inputVFS.getRootInputVDir().getInputVFile(fileAAB1Path);
+    InputVFile fileAAB1 = inputVFS.getRootDir().getInputVFile(fileAAB1Path);
     FileLocation fileAAB1Location = (FileLocation) fileAAB1.getLocation();
     Assert.assertTrue(fileAAB1Location.getDescription().contains("file"));
     Assert.assertTrue(fileAAB1Location.getDescription().contains(
         fileAAB1Path.getPathAsString(File.separatorChar)));
 
     VPath dirBBPath = new VPath("dirB/dirBB", '/');
-    InputVDir dirBB = inputVFS.getRootInputVDir().getInputVDir(dirBBPath);
+    InputVDir dirBB = inputVFS.getRootDir().getInputVDir(dirBBPath);
     DirectoryLocation dirBBLocation = (DirectoryLocation) dirBB.getLocation();
     Assert.assertTrue(dirBBLocation.getDescription().contains("directory"));
     Assert.assertTrue(dirBBLocation.getDescription().contains(
@@ -1212,14 +1175,14 @@
   private void checkZipLocations(@Nonnull InputVFS inputVFS, @CheckForNull String prefix)
       throws NotFileOrDirectoryException, NoSuchFileException {
     VPath fileAAB1Path = new VPath("dirA/dirAA/dirAAB/fileAAB1", '/');
-    InputVFile fileAAB1 = inputVFS.getRootInputVDir().getInputVFile(fileAAB1Path);
+    InputVFile fileAAB1 = inputVFS.getRootDir().getInputVFile(fileAAB1Path);
     ZipLocation fileAAB1Location = (ZipLocation) fileAAB1.getLocation();
     Assert.assertTrue(fileAAB1Location.getDescription().contains(".zip"));
     String fileAAB1EntryName = getEntryName(fileAAB1Path, prefix, false);
     Assert.assertTrue(fileAAB1Location.getDescription().contains(fileAAB1EntryName));
 
     VPath dirBBPath = new VPath("dirB/dirBB", '/');
-    InputVDir dirBB = inputVFS.getRootInputVDir().getInputVDir(dirBBPath);
+    InputVDir dirBB = inputVFS.getRootDir().getInputVDir(dirBBPath);
     ZipLocation dirBBLocation = (ZipLocation) dirBB.getLocation();
     Assert.assertTrue(dirBBLocation.getDescription().contains(".zip"));
     String dirBBEntryName = getEntryName(dirBBPath, prefix, true);
diff --git a/server/jack-launcher/src/com/android/jack/launcher/ServerLauncher.java b/server/jack-launcher/src/com/android/jack/launcher/ServerLauncher.java
index 4fed930..6257d3e 100644
--- a/server/jack-launcher/src/com/android/jack/launcher/ServerLauncher.java
+++ b/server/jack-launcher/src/com/android/jack/launcher/ServerLauncher.java
@@ -510,10 +510,17 @@
         }
         tmpInstall = null;
 
-        File replacedServerJar = getServerJar(serverDir, currentServerInfo.id);
+        final File replacedServerJar = getServerJar(serverDir, currentServerInfo.id);
         assert currentServer != null;
-        finalizer.registerFinalizer(new Deleter(new File[]{replacedServerJar}),
-            currentServer.getClass().getClassLoader());
+        final ClassLoader serverClassLoader = currentServer.getClass().getClassLoader();
+        taskRunner.executeTask("Register deleter of '" + replacedServerJar.getPath() + "'",
+            new Runnable() {
+              @Override
+              public void run() {
+                finalizer.registerFinalizer(new Deleter(new File[]{replacedServerJar}),
+                    serverClassLoader);
+              }
+            });
         currentServerInfo = new ServerInfo(newServerId, candidateVersion);
       } finally {
         if (out != null) {
diff --git a/server/jack-server/etc/jack-admin b/server/jack-server/etc/jack-admin
index 0209ffc..d7fb11b 100755
--- a/server/jack-server/etc/jack-admin
+++ b/server/jack-server/etc/jack-admin
@@ -606,11 +606,21 @@
     echo "\$ lsof -i TCP:$SERVER_PORT_SERVICE -l" >>"$REPORT_INFO"
              lsof -i TCP:$SERVER_PORT_SERVICE -l  >>"$REPORT_INFO" 2>&1
 
+    echo "Test if Jack server service port $SERVER_PORT_SERVICE is open..."
+    echo >>"$REPORT_INFO"
+    echo "\$ if (exec 6<> /dev/tcp/127.0.0.1/$SERVER_PORT_SERVICE) 2> /dev/null ; then echo port $SERVER_PORT_SERVICE is in use; else echo port $SERVER_PORT_SERVICE is available; fi" >>"$REPORT_INFO"
+            (if (exec 6<> /dev/tcp/127.0.0.1/$SERVER_PORT_SERVICE) 2> /dev/null ; then echo port $SERVER_PORT_SERVICE is in use; else echo port $SERVER_PORT_SERVICE is available; fi)  >>"$REPORT_INFO" 2>&1
+
     echo "Listing process using Jack server admin port $SERVER_PORT_ADMIN..."
     echo >>"$REPORT_INFO"
     echo "\$ lsof -i TCP:$SERVER_PORT_ADMIN -l" >>"$REPORT_INFO"
              lsof -i TCP:$SERVER_PORT_ADMIN -l  >>"$REPORT_INFO" 2>&1
 
+    echo "Test if Jack server admin port $SERVER_PORT_ADMIN is open..."
+    echo >>"$REPORT_INFO"
+    echo "\$ if (exec 6<> /dev/tcp/127.0.0.1/$SERVER_PORT_ADMIN) 2> /dev/null ; then echo port $SERVER_PORT_ADMIN is in use; else echo port $SERVER_PORT_ADMIN is available; fi" >>"$REPORT_INFO"
+            (if (exec 6<> /dev/tcp/127.0.0.1/$SERVER_PORT_ADMIN) 2> /dev/null ; then echo port $SERVER_PORT_ADMIN is in use; else echo port $SERVER_PORT_ADMIN is available; fi) >>"$REPORT_INFO" 2>&1
+
     echo "Collecting Jack client configuration..."
     echo >>"$REPORT_INFO"
     echo "\$ cat \"\$JACK_CLIENT_SETTING\"" >>"$REPORT_INFO"
diff --git a/server/jack-server/etc/jack-diagnose b/server/jack-server/etc/jack-diagnose
index 04adc07..45dff60 100755
--- a/server/jack-server/etc/jack-diagnose
+++ b/server/jack-server/etc/jack-diagnose
@@ -89,7 +89,7 @@
   fi
 
 
-  JAVA_VERSION=$("$JAVA_COMMAND" -version 2>&1 | head -1 | grep --only-matching -e \"1\\.[0-9]* | cut -c 4-)
+  JAVA_VERSION=$(unset _JAVA_OPTIONS && unset JAVA_TOOL_OPTIONS && "$JAVA_COMMAND" -version 2>&1 | head -1 | grep --only-matching -e \"1\\.[0-9]* | cut -c 4-)
   if [ -z "$JAVA_VERSION" ] ; then
     echo "'$JAVA_COMMAND': Failed to parse version, please ensure you're running a supported java"
     return 255
@@ -127,6 +127,10 @@
 checkport() {
   PID_USING_PORT=$(lsof -F p -i TCP:$1 -sTCP:LISTEN | cut -c 2-)
   if [ -z "$PID_USING_PORT" ] ; then
+    if (exec 6<> /dev/tcp/127.0.0.1/$1) 2> /dev/null ; then
+      echo "Port $1 is used by a process owned by another user. Unless this is expected, please ensure the port is free or change port configuration in '$JACK_CLIENT_SETTING' and '$JACK_HOME/config.properties'"
+      return 255
+    fi
     # port is free nothing to check
     return 0
   fi
@@ -143,7 +147,7 @@
   fi
 
   if [ "$(echo $PS_OUT | awk '{print $2}')" -ne "$(id -u)" ] ; then
-    echo "Port $1 is used b a Jack server from another user uid=$(echo $PS_OUT | awk '{print $2}'), please change port configuration in '$JACK_CLIENT_SETTING' and '$JACK_HOME/config.properties'"
+    echo "Port $1 is used by a Jack server from another user uid=$(echo $PS_OUT | awk '{print $2}'), please change port configuration in '$JACK_CLIENT_SETTING' and '$JACK_HOME/config.properties'"
     return 255
   fi
 }
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..69c76c8
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+rootProject.name = 'Jack'
+
+include ':args4j'
+//include ':core-stubs-mini'
+include ':ddmlib'
+include ':dexcomparator'
+include ':dexlib'
+include ':dx-ref'
+include ':ecj'
+include ':ecj-tests-lib'
+include ':jack'
+include ':jack:jack-annotations'
+include ':jack-api'
+include ':jack-api:sample'
+include ':jack:jackunittests'
+include ':jack-jar-tools'
+include ':jack-tests'
+include ':jack-tests:test-lib'
+include ':jarjar'
+include ':jill'
+include ':jill-api'
+include ':sched'
+include ':sched:sched-ap'
+include ':sched:schedtests'