Merge changes Ib7b71b78,I62fd4d40 am: 9d354e41cf
am: f74980150b

Change-Id: Ia8f2a17046237e807485fb964cb571d86d22ade5
diff --git a/baksmali/src/main/java/org/jf/baksmali/Adaptors/EncodedValue/EncodedValueAdaptor.java b/baksmali/src/main/java/org/jf/baksmali/Adaptors/EncodedValue/EncodedValueAdaptor.java
index bce1ff7..880c760 100644
--- a/baksmali/src/main/java/org/jf/baksmali/Adaptors/EncodedValue/EncodedValueAdaptor.java
+++ b/baksmali/src/main/java/org/jf/baksmali/Adaptors/EncodedValue/EncodedValueAdaptor.java
@@ -30,6 +30,7 @@
 
 import org.jf.baksmali.Adaptors.ReferenceFormatter;
 import org.jf.baksmali.Renderers.*;
+import org.jf.dexlib2.ReferenceType;
 import org.jf.dexlib2.ValueType;
 import org.jf.dexlib2.iface.value.*;
 import org.jf.dexlib2.util.ReferenceUtil;
@@ -107,6 +108,17 @@
                 return;
             case ValueType.TYPE:
                 writer.write(((TypeEncodedValue)encodedValue).getValue());
+                return;
+            case ValueType.METHOD_TYPE:
+                ReferenceFormatter.writeReference(writer, ReferenceType.METHOD_PROTO,
+                        ((MethodTypeEncodedValue)encodedValue).getValue());
+                return;
+            case ValueType.METHOD_HANDLE:
+                ReferenceFormatter.writeReference(writer, ReferenceType.METHOD_HANDLE,
+                        ((MethodHandleEncodedValue)encodedValue).getValue());
+                return;
+            default:
+                throw new IllegalArgumentException("Unknown encoded value type: " + encodedValue.getValueType());
         }
     }
 }
diff --git a/baksmali/src/main/java/org/jf/baksmali/Adaptors/Format/InstructionMethodItem.java b/baksmali/src/main/java/org/jf/baksmali/Adaptors/Format/InstructionMethodItem.java
index b69995d..d5b0bf3 100644
--- a/baksmali/src/main/java/org/jf/baksmali/Adaptors/Format/InstructionMethodItem.java
+++ b/baksmali/src/main/java/org/jf/baksmali/Adaptors/Format/InstructionMethodItem.java
@@ -31,6 +31,7 @@
 import org.jf.baksmali.Adaptors.MethodDefinition;
 import org.jf.baksmali.Adaptors.MethodDefinition.InvalidSwitchPayload;
 import org.jf.baksmali.Adaptors.MethodItem;
+import org.jf.baksmali.Adaptors.ReferenceFormatter;
 import org.jf.baksmali.Renderers.LongRenderer;
 import org.jf.baksmali.BaksmaliOptions;
 import org.jf.dexlib2.Opcode;
@@ -41,6 +42,7 @@
 import org.jf.dexlib2.iface.instruction.formats.Instruction20bc;
 import org.jf.dexlib2.iface.instruction.formats.Instruction31t;
 import org.jf.dexlib2.iface.instruction.formats.UnknownInstruction;
+import org.jf.dexlib2.iface.reference.CallSiteReference;
 import org.jf.dexlib2.iface.reference.Reference;
 import org.jf.dexlib2.util.ReferenceUtil;
 import org.jf.util.ExceptionWithContext;
@@ -87,12 +89,16 @@
         return String.format("%s@%d", ReferenceType.toString(type), ex.getInvalidIndex());
     }
 
+    private interface Writable {
+        void writeTo(IndentingWriter writer) throws IOException;
+    }
+
     @Override
     public boolean writeTo(IndentingWriter writer) throws IOException {
         Opcode opcode = instruction.getOpcode();
         String verificationErrorName = null;
-        String referenceString = null;
-        String referenceString2 = null;
+        Writable referenceWritable = null;
+        Writable referenceWritable2 = null;
 
         boolean commentOutInstruction = false;
 
@@ -109,25 +115,34 @@
 
         if (instruction instanceof ReferenceInstruction) {
             ReferenceInstruction referenceInstruction = (ReferenceInstruction)instruction;
-            String classContext = null;
+            final String classContext;
             if (methodDef.classDef.options.implicitReferences) {
                 classContext = methodDef.method.getDefiningClass();
+            } else {
+                classContext = null;
             }
 
             try {
                 Reference reference = referenceInstruction.getReference();
-                referenceString = ReferenceUtil.getReferenceString(reference, classContext);
-                assert referenceString != null;
+                if (reference instanceof CallSiteReference) {
+                    referenceWritable = indentingWriter -> {
+                        ReferenceFormatter.writeCallSiteReference(indentingWriter, (CallSiteReference)reference);
+                    };
+                } else {
+                    referenceWritable = indentingWriter -> {
+                        indentingWriter.write(ReferenceUtil.getReferenceString(reference, classContext));
+                    };
+                }
             } catch (InvalidItemIndex ex) {
                 commentOutInstruction = true;
-                referenceString = writeInvalidItemIndex(ex, referenceInstruction.getReferenceType(),
+                String referenceString = writeInvalidItemIndex(ex, referenceInstruction.getReferenceType(),
                         writer);
+                referenceWritable = indentingWriter -> writer.write(referenceString);
             } catch (ReferenceType.InvalidReferenceTypeException ex) {
                 writer.write("#invalid reference type: ");
                 writer.printSignedIntAsDec(ex.getReferenceType());
                 commentOutInstruction = true;
-
-                referenceString = "invalid_reference";
+                referenceWritable = indentingWriter -> writer.write("invalid_reference");
             }
 
             if (instruction instanceof DualReferenceInstruction) {
@@ -135,17 +150,19 @@
                         (DualReferenceInstruction) instruction;
                 try {
                     Reference reference2 = dualReferenceInstruction.getReference2();
-                    referenceString2 = ReferenceUtil.getReferenceString(reference2, classContext);
+                    referenceWritable2 = indentingWriter -> {
+                        indentingWriter.write(ReferenceUtil.getReferenceString(reference2, classContext));
+                    };
                 } catch (InvalidItemIndex ex) {
                     commentOutInstruction = true;
-                    referenceString2 = writeInvalidItemIndex(ex,
+                    String referenceString = writeInvalidItemIndex(ex,
                             dualReferenceInstruction.getReferenceType2(), writer);
+                    referenceWritable2 = indentingWriter -> indentingWriter.write(referenceString);
                 } catch (ReferenceType.InvalidReferenceTypeException ex) {
                     writer.write("#invalid reference type: ");
                     writer.printSignedIntAsDec(ex.getReferenceType());
                     commentOutInstruction = true;
-
-                    referenceString2 = "invalid_reference";
+                    referenceWritable2 = indentingWriter -> indentingWriter.write("invalid reference");
                 }
             }
         }
@@ -235,7 +252,7 @@
                 writer.write(' ');
                 writer.write(verificationErrorName);
                 writer.write(", ");
-                writer.write(referenceString);
+                referenceWritable.writeTo(writer);
                 break;
             case Format20t:
             case Format30t:
@@ -249,7 +266,7 @@
                 writer.write(' ');
                 writeFirstRegister(writer);
                 writer.write(", ");
-                writer.write(referenceString);
+                referenceWritable.writeTo(writer);
                 break;
             case Format21ih:
             case Format21lh:
@@ -293,7 +310,7 @@
                 writer.write(", ");
                 writeSecondRegister(writer);
                 writer.write(", ");
-                writer.write(referenceString);
+                referenceWritable.writeTo(writer);
                 break;
             case Format22cs:
                 writeOpcode(writer);
@@ -335,7 +352,7 @@
                 writer.write(' ');
                 writeInvokeRegisters(writer);
                 writer.write(", ");
-                writer.write(referenceString);
+                referenceWritable.writeTo(writer);
                 break;
             case Format35mi:
                 writeOpcode(writer);
@@ -356,7 +373,7 @@
                 writer.write(' ');
                 writeInvokeRangeRegisters(writer);
                 writer.write(", ");
-                writer.write(referenceString);
+                referenceWritable.writeTo(writer);
                 break;
             case Format3rmi:
                 writeOpcode(writer);
@@ -377,18 +394,18 @@
                 writer.write(' ');
                 writeInvokeRegisters(writer);
                 writer.write(", ");
-                writer.write(referenceString);
+                referenceWritable.writeTo(writer);
                 writer.write(", ");
-                writer.write(referenceString2);
+                referenceWritable2.writeTo(writer);
                 break;
             case Format4rcc:
                 writeOpcode(writer);
                 writer.write(' ');
                 writeInvokeRangeRegisters(writer);
                 writer.write(", ");
-                writer.write(referenceString);
+                referenceWritable.writeTo(writer);
                 writer.write(", ");
-                writer.write(referenceString2);
+                referenceWritable2.writeTo(writer);
                 break;
             default:
                 assert false;
diff --git a/baksmali/src/main/java/org/jf/baksmali/Adaptors/ReferenceFormatter.java b/baksmali/src/main/java/org/jf/baksmali/Adaptors/ReferenceFormatter.java
index 91d142a..bfb71e8 100644
--- a/baksmali/src/main/java/org/jf/baksmali/Adaptors/ReferenceFormatter.java
+++ b/baksmali/src/main/java/org/jf/baksmali/Adaptors/ReferenceFormatter.java
@@ -28,8 +28,11 @@
 
 package org.jf.baksmali.Adaptors;
 
+import org.jf.baksmali.Adaptors.EncodedValue.EncodedValueAdaptor;
+import org.jf.dexlib2.MethodHandleType;
 import org.jf.dexlib2.ReferenceType;
 import org.jf.dexlib2.iface.reference.*;
+import org.jf.dexlib2.iface.value.EncodedValue;
 import org.jf.dexlib2.util.ReferenceUtil;
 import org.jf.util.IndentingWriter;
 import org.jf.util.StringUtils;
@@ -43,6 +46,26 @@
         writer.write('"');
     }
 
+    public static void writeCallSiteReference(IndentingWriter writer, CallSiteReference callSite) throws IOException {
+        writer.write(callSite.getName());
+        writer.write('(');
+        writer.write('"');
+        StringUtils.writeEscapedString(writer, callSite.getMethodName());
+        writer.write("\", ");
+        writeReference(writer, ReferenceType.METHOD_PROTO, callSite.getMethodProto());
+
+        for (EncodedValue encodedValue : callSite.getExtraArguments()) {
+            writer.write(", ");
+            EncodedValueAdaptor.writeTo(writer, encodedValue, null);
+        }
+        writer.write(")@");
+        MethodHandleReference methodHandle = callSite.getMethodHandle();
+        if (methodHandle.getMethodHandleType() != MethodHandleType.INVOKE_STATIC) {
+            throw new IllegalArgumentException("The linker method handle for a call site must be of type invoke-static");
+        }
+        writeReference(writer, ReferenceType.METHOD, callSite.getMethodHandle().getMemberReference());
+    }
+
     public static void writeReference(IndentingWriter writer, int referenceType,
                                       Reference reference) throws IOException {
         switch (referenceType) {
@@ -58,6 +81,17 @@
             case ReferenceType.FIELD:
                 ReferenceUtil.writeFieldDescriptor(writer, (FieldReference)reference);
                 return;
+            case ReferenceType.METHOD_PROTO:
+                ReferenceUtil.writeMethodProtoDescriptor(writer, (MethodProtoReference)reference);
+                return;
+            case ReferenceType.METHOD_HANDLE:
+                ReferenceUtil.writeMethodHandle(writer, (MethodHandleReference)reference);
+                return;
+            case ReferenceType.CALL_SITE:
+                // We can't use ReferenceUtil.writeCallSite here, because it doesn't write encoded values out in the
+                // exact format we need here.
+                writeCallSiteReference(writer, (CallSiteReference)reference);
+                return;
             default:
                 throw new IllegalStateException("Unknown reference type");
         }
diff --git a/baksmali/src/main/java/org/jf/baksmali/DexInputCommand.java b/baksmali/src/main/java/org/jf/baksmali/DexInputCommand.java
index c7660cb..1350263 100644
--- a/baksmali/src/main/java/org/jf/baksmali/DexInputCommand.java
+++ b/baksmali/src/main/java/org/jf/baksmali/DexInputCommand.java
@@ -55,7 +55,7 @@
     @Parameter(names = {"-a", "--api"},
             description = "The numeric api level of the file being disassembled.")
     @ExtendedParameter(argumentNames = "api")
-    public int apiLevel = 15;
+    public int apiLevel = -1;
 
     @Parameter(description = "A dex/apk/oat/odex file. For apk or oat files that contain multiple dex " +
             "files, you can specify the specific entry to use as if the apk/oat file was a directory. " +
@@ -125,6 +125,11 @@
             dexEntry = input.substring(file.getPath().length() + 1);
         }
 
+        Opcodes opcodes = null;
+        if (apiLevel != -1) {
+            opcodes = Opcodes.forApi(apiLevel);
+        }
+
         if (!Strings.isNullOrEmpty(dexEntry)) {
             boolean exactMatch = false;
             if (dexEntry.length() > 2 && dexEntry.charAt(0) == '"' && dexEntry.charAt(dexEntry.length() - 1) == '"') {
@@ -135,13 +140,13 @@
             inputEntry = dexEntry;
 
             try {
-                dexFile = DexFileFactory.loadDexEntry(file, dexEntry, exactMatch, Opcodes.forApi(apiLevel));
+                dexFile = DexFileFactory.loadDexEntry(file, dexEntry, exactMatch, opcodes);
             } catch (IOException ex) {
                 throw new RuntimeException(ex);
             }
         } else {
             try {
-                dexFile = DexFileFactory.loadDexFile(file, Opcodes.forApi(apiLevel));
+                dexFile = DexFileFactory.loadDexFile(file, opcodes);
             } catch (IOException ex) {
                 throw new RuntimeException(ex);
             }
diff --git a/baksmali/src/main/java/org/jf/baksmali/DisassembleCommand.java b/baksmali/src/main/java/org/jf/baksmali/DisassembleCommand.java
index eb670df..258c5e8 100644
--- a/baksmali/src/main/java/org/jf/baksmali/DisassembleCommand.java
+++ b/baksmali/src/main/java/org/jf/baksmali/DisassembleCommand.java
@@ -39,6 +39,7 @@
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import org.jf.dexlib2.util.SyntheticAccessorResolver;
+import org.jf.util.ConsoleUtil;
 import org.jf.util.StringWrapper;
 import org.jf.util.jcommander.ExtendedParameter;
 import org.jf.util.jcommander.ExtendedParameters;
@@ -163,7 +164,8 @@
         if (showDeodexWarning() && dexFile.hasOdexOpcodes()) {
             StringWrapper.printWrappedString(System.err,
                     "Warning: You are disassembling an odex/oat file without deodexing it. You won't be able to " +
-                            "re-assemble the results unless you deodex it. See \"baksmali help deodex\"");
+                            "re-assemble the results unless you deodex it. See \"baksmali help deodex\"",
+                    ConsoleUtil.getConsoleWidth());
         }
 
         File outputDirectoryFile = new File(outputDir);
diff --git a/baksmali/src/main/java/org/jf/baksmali/DumpCommand.java b/baksmali/src/main/java/org/jf/baksmali/DumpCommand.java
index 433be12..95b5d83 100644
--- a/baksmali/src/main/java/org/jf/baksmali/DumpCommand.java
+++ b/baksmali/src/main/java/org/jf/baksmali/DumpCommand.java
@@ -94,13 +94,17 @@
             throws IOException {
         Writer writer = new BufferedWriter(new OutputStreamWriter(output));
 
-        int consoleWidth = ConsoleUtil.getConsoleWidth();
-        if (consoleWidth <= 0) {
-            consoleWidth = 120;
-        }
+        try {
+            int consoleWidth = ConsoleUtil.getConsoleWidth();
+            if (consoleWidth <= 0) {
+                consoleWidth = 120;
+            }
 
-        RawDexFile rawDexFile = new RawDexFile(dexFile.getOpcodes(), dexFile);
-        DexAnnotator annotator = new DexAnnotator(rawDexFile, consoleWidth);
-        annotator.writeAnnotations(writer);
+            RawDexFile rawDexFile = new RawDexFile(dexFile.getOpcodes(), dexFile);
+            DexAnnotator annotator = new DexAnnotator(rawDexFile, consoleWidth);
+            annotator.writeAnnotations(writer);
+        } finally {
+            writer.close();
+        }
     }
 }
diff --git a/baksmali/src/test/java/org/jf/baksmali/AnalysisTest.java b/baksmali/src/test/java/org/jf/baksmali/AnalysisTest.java
index a68038d..80a54b7 100644
--- a/baksmali/src/test/java/org/jf/baksmali/AnalysisTest.java
+++ b/baksmali/src/test/java/org/jf/baksmali/AnalysisTest.java
@@ -42,7 +42,6 @@
 import org.jf.dexlib2.iface.ClassDef;
 import org.jf.dexlib2.iface.DexFile;
 import org.jf.util.IndentingWriter;
-import org.jf.util.TextUtils;
 import org.junit.Test;
 
 import javax.annotation.Nonnull;
@@ -122,8 +121,8 @@
                     className.substring(1, className.length() - 1));
             String smaliContents = readResource(smaliPath);
 
-            Assert.assertEquals(TextUtils.normalizeWhitespace(smaliContents),
-                    TextUtils.normalizeWhitespace((stringWriter.toString())));
+            Assert.assertEquals(BaksmaliTestUtils.normalizeWhitespace(smaliContents),
+                    BaksmaliTestUtils.normalizeWhitespace((stringWriter.toString())));
         }
     }
 
diff --git a/baksmali/src/test/java/org/jf/baksmali/BaksmaliTestUtils.java b/baksmali/src/test/java/org/jf/baksmali/BaksmaliTestUtils.java
index 4dd2ad9..e6406fb 100644
--- a/baksmali/src/test/java/org/jf/baksmali/BaksmaliTestUtils.java
+++ b/baksmali/src/test/java/org/jf/baksmali/BaksmaliTestUtils.java
@@ -33,20 +33,24 @@
 
 import com.google.common.io.ByteStreams;
 import junit.framework.Assert;
-
 import org.antlr.runtime.RecognitionException;
 import org.jf.baksmali.Adaptors.ClassDefinition;
 import org.jf.dexlib2.iface.ClassDef;
 import org.jf.smali.SmaliTestUtils;
 import org.jf.util.IndentingWriter;
-import org.jf.util.TextUtils;
+import org.junit.Test;
 
 import javax.annotation.Nonnull;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.StringWriter;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 public class BaksmaliTestUtils {
+
+    private static String newline = System.getProperty("line.separator");
+
     public static void assertSmaliCompiledEquals(String source, String expected,
                                                  BaksmaliOptions options, boolean stripComments) throws IOException,
             RecognitionException {
@@ -74,9 +78,9 @@
     @Nonnull
     public static String normalizeSmali(@Nonnull String smaliText, boolean stripComments) {
         if (stripComments) {
-            smaliText = TextUtils.stripComments(smaliText);
+            smaliText = stripComments(smaliText);
         }
-        return TextUtils.normalizeWhitespace(smaliText);
+        return normalizeWhitespace(smaliText);
     }
 
     @Nonnull
@@ -113,6 +117,61 @@
         return new String(readResourceBytesFully(fileName), encoding);
     }
 
-    // Static helpers class; do not instantiate.
-    private BaksmaliTestUtils() { throw new AssertionError(); }
+    @Nonnull
+    public static String normalizeNewlines(@Nonnull String source) {
+        return normalizeNewlines(source, newline);
+    }
+
+    @Nonnull
+    public static String normalizeNewlines(@Nonnull String source, String newlineValue) {
+        return source.replace("\r", "").replace("\n", newlineValue);
+    }
+
+    @Nonnull
+    public static String normalizeWhitespace(@Nonnull String source) {
+        // Go to native system new lines so that ^/$ work correctly
+        source = normalizeNewlines(source);
+
+        // Remove all suffix/prefix whitespace
+        Pattern pattern = Pattern.compile("((^[ \t]+)|([ \t]+$))", Pattern.MULTILINE);
+        Matcher matcher = pattern.matcher(source);
+        source = matcher.replaceAll("");
+
+        // Remove all empty lines
+        Pattern pattern2 = Pattern.compile("^\r?\n?", Pattern.MULTILINE);
+        Matcher matcher2 = pattern2.matcher(source);
+        source = matcher2.replaceAll("");
+
+        // Remove a trailing new line, if present
+        Pattern pattern3 = Pattern.compile("\r?\n?$");
+        Matcher matcher3 = pattern3.matcher(source);
+        source = matcher3.replaceAll("");
+
+        // Go back to unix-style \n newlines
+        source = normalizeNewlines(source, "\n");
+        return source;
+    }
+
+    @Nonnull
+    public static String stripComments(@Nonnull String source) {
+        Pattern pattern = Pattern.compile("#(.*)");
+        Matcher matcher = pattern.matcher(source);
+        return matcher.replaceAll("");
+    }
+
+    @Test
+    public void testStripComments() {
+        Assert.assertEquals("", stripComments("#world"));
+        Assert.assertEquals("hello", stripComments("hello#world"));
+        Assert.assertEquals("multi\nline", stripComments("multi#hello world\nline#world"));
+    }
+
+    @Test
+    public void testNormalizeWhitespace() {
+        Assert.assertEquals("", normalizeWhitespace(" "));
+        Assert.assertEquals("hello", normalizeWhitespace("hello "));
+        Assert.assertEquals("hello", normalizeWhitespace(" hello"));
+        Assert.assertEquals("hello", normalizeWhitespace(" hello "));
+        Assert.assertEquals("hello\nworld", normalizeWhitespace("hello \n \n world"));
+    }
 }
diff --git a/util/src/main/java/org/jf/util/BlankReader.java b/baksmali/src/test/java/org/jf/baksmali/InstructionRoundtripTest.java
similarity index 74%
copy from util/src/main/java/org/jf/util/BlankReader.java
copy to baksmali/src/test/java/org/jf/baksmali/InstructionRoundtripTest.java
index ca55dd0..780631b 100644
--- a/util/src/main/java/org/jf/util/BlankReader.java
+++ b/baksmali/src/test/java/org/jf/baksmali/InstructionRoundtripTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014, Google Inc.
+ * Copyright 2018, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,20 +29,22 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package org.jf.util;
+package org.jf.baksmali;
 
-import javax.annotation.Nonnull;
-import java.io.IOException;
-import java.io.Reader;
+import org.junit.Test;
 
-public class BlankReader extends Reader {
-    public static final BlankReader INSTANCE = new BlankReader();
-
-    @Override public int read(@Nonnull char[] chars, int i, int i2) throws IOException {
-        return -1;
+public class InstructionRoundtripTest extends IdenticalRoundtripTest {
+    @Test
+    public void testConstMethodHandle() {
+        BaksmaliOptions options = new BaksmaliOptions();
+        options.apiLevel = 28;
+        runTest("ConstMethodHandle", options);
     }
 
-    @Override
-    public void close() throws IOException {
+    @Test
+    public void testConstMethodType() {
+        BaksmaliOptions options = new BaksmaliOptions();
+        options.apiLevel = 28;
+        runTest("ConstMethodType", options);
     }
 }
diff --git a/util/src/main/java/org/jf/util/NakedByteArrayOutputStream.java b/baksmali/src/test/java/org/jf/baksmali/InvokeCustomTest.java
similarity index 81%
copy from util/src/main/java/org/jf/util/NakedByteArrayOutputStream.java
copy to baksmali/src/test/java/org/jf/baksmali/InvokeCustomTest.java
index 1358627..35f1482 100644
--- a/util/src/main/java/org/jf/util/NakedByteArrayOutputStream.java
+++ b/baksmali/src/test/java/org/jf/baksmali/InvokeCustomTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2012, Google Inc.
+ * Copyright 2018, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,16 +29,15 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package org.jf.util;
+package org.jf.baksmali;
 
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
+import org.junit.Test;
 
-/**
- * A ByteArrayOutputStream that lets you grab its protected bits.
- */
-public class NakedByteArrayOutputStream extends ByteArrayOutputStream {
-    public byte[] getBuffer() throws IOException {
-        return buf;
+public class InvokeCustomTest extends IdenticalRoundtripTest {
+    @Test
+    public void testInvokeCustom() {
+        BaksmaliOptions options = new BaksmaliOptions();
+        options.apiLevel = 26;
+        runTest("InvokeCustom", options);
     }
 }
diff --git a/baksmali/src/test/resources/InstructionRoundtripTest/ConstMethodHandle.smali b/baksmali/src/test/resources/InstructionRoundtripTest/ConstMethodHandle.smali
new file mode 100644
index 0000000..2d87184
--- /dev/null
+++ b/baksmali/src/test/resources/InstructionRoundtripTest/ConstMethodHandle.smali
@@ -0,0 +1,30 @@
+.class LConstMethodHandle;
+.super Ljava/lang/Object;
+
+
+# static fields
+.field public static staticField:Ljava/lang/Object;
+
+
+# instance fields
+.field public instanceField:Ljava/lang/Object;
+
+
+# direct methods
+.method public static constMethodHandle()V
+    .registers 15
+
+    const-method-handle v0, invoke-static@Ljava/lang/Integer;->toString(I)Ljava/lang/String;
+
+    const-method-handle v0, invoke-instance@Ljava/lang/Integer;->toString()Ljava/lang/String;
+
+    const-method-handle v0, static-put@LConstMethodHandle;->instanceField:Ljava/lang/Object;
+
+    const-method-handle v0, static-put@LConstMethodHandle;->instanceField:Ljava/lang/Object;
+
+    const-method-handle v0, static-put@LConstMethodHandle;->staticField:Ljava/lang/Object;
+
+    const-method-handle v0, static-put@LConstMethodHandle;->staticField:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/baksmali/src/test/resources/InstructionRoundtripTest/ConstMethodType.smali b/baksmali/src/test/resources/InstructionRoundtripTest/ConstMethodType.smali
new file mode 100644
index 0000000..17f2889
--- /dev/null
+++ b/baksmali/src/test/resources/InstructionRoundtripTest/ConstMethodType.smali
@@ -0,0 +1,24 @@
+.class LConstMethodType;
+.super Ljava/lang/Object;
+
+
+# static fields
+.field public static staticField:Ljava/lang/Object;
+
+
+# instance fields
+.field public instanceField:Ljava/lang/Object;
+
+
+# direct methods
+.method public static constMethodHandle()V
+    .registers 15
+
+    const-method-type v0, ()V
+
+    const-method-type v0, (II)I
+
+    const-method-type v0, (Ljava/lang/String;)Ljava/lang/String;
+
+    return-void
+.end method
diff --git a/baksmali/src/test/resources/InvokeCustomTest/InvokeCustom.smali b/baksmali/src/test/resources/InvokeCustomTest/InvokeCustom.smali
new file mode 100644
index 0000000..6cf954b
--- /dev/null
+++ b/baksmali/src/test/resources/InvokeCustomTest/InvokeCustom.smali
@@ -0,0 +1,38 @@
+.class LInvokeCustom;
+.super Ljava/lang/Object;
+
+
+# direct methods
+.method public static invokeCustom([Ljava/lang/String;)V
+    .registers 15
+
+    new-instance v0, LCustom;
+
+    invoke-direct {v0}, LCustom;-><init>()V
+
+    const-string v1, "Arg to doSomething"
+
+    invoke-custom {v0, v1}, call_site_1("doSomething", (LCustom;Ljava/lang/String;)Ljava/lang/String;, "just testing")@LBootstrapLinker;->normalLink(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;)Ljava/lang/invoke/CallSite;
+
+    move-result-object v2
+
+    sget-object v3, Ljava/lang/System;->out:Ljava/io/PrintStream;
+
+    const-string v4, "got back - "
+
+    invoke-virtual {v3, v4}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V
+
+    invoke-virtual {v3, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+    invoke-custom {v0, v1}, call_site_0("doSomething", (LCustom;Ljava/lang/String;)Ljava/lang/String;, "just testing")@LBootstrapLinker;->backwardsLink(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;)Ljava/lang/invoke/CallSite;
+
+    move-result-object v2
+
+    sget-object v3, Ljava/lang/System;->out:Ljava/io/PrintStream;
+
+    const-string v4, "got back - "
+
+    invoke-virtual {v3, v4}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V
+
+    invoke-virtual {v3, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+.end method
diff --git a/build.gradle b/build.gradle
index 360e3db..3678076 100644
--- a/build.gradle
+++ b/build.gradle
@@ -31,7 +31,7 @@
 
 apply plugin: 'idea'
 
-version = '2.2.2'
+version = '2.2.7'
 def jcommanderVersion = ''
 
 if (!('release' in gradle.startParameter.taskNames)) {
@@ -57,11 +57,6 @@
     version += "-${versionSuffix}"
 } else {
     jcommanderVersion = 'com.beust:jcommander:1.64'
-
-    if (System.env.JDK6_HOME == null && !JavaVersion.current().isJava6()) {
-        throw new InvalidUserDataException("bzzzzzzzt. Release builds must be performed with java 6. " +
-                "Either run gradle with java 6, or define the JDK6_HOME environment variable.")
-    }
 }
 
 // Note: please don't use this. This is strictly for the official releases
@@ -69,7 +64,7 @@
 task release() {
 }
 
-task(install) << {
+task(install).doLast {
     println "Installing version: ${version}"
 }
 
@@ -88,19 +83,6 @@
         }
     }
 
-    if (System.env.JDK6_HOME != null) {
-        sourceCompatibility = 1.6
-        targetCompatibility = 1.6
-
-        tasks.withType(JavaCompile) {
-            doFirst {
-                options.fork = true
-                options.bootClasspath = "$System.env.JDK6_HOME/jre/lib/rt.jar"
-                options.bootClasspath += "$File.pathSeparator$System.env.JDK6_HOME/jre/lib/jsse.jar"
-            }
-        }
-    }
-
     version = parent.version
 
     ext {
@@ -204,6 +186,6 @@
 }
 
 task wrapper(type: Wrapper) {
-    gradleVersion = '3.5'
+    gradleVersion = '4.6'
     distributionType = Wrapper.DistributionType.ALL
 }
diff --git a/dexlib2/Android.bp b/dexlib2/Android.bp
index 6d3769b..c5b0ebd 100644
--- a/dexlib2/Android.bp
+++ b/dexlib2/Android.bp
@@ -27,7 +27,6 @@
         "guava",
         "jcommander",
         "jsr305",
-        "smali-util",
     ],
 }
 
@@ -46,6 +45,5 @@
         "commons-cli-1.2",
         "jcommander",
         "jsr305",
-        "smali-util",
     ],
 }
diff --git a/dexlib2/OatVersions.txt b/dexlib2/OatVersions.txt
index 329c4f0..654a37a 100644
--- a/dexlib2/OatVersions.txt
+++ b/dexlib2/OatVersions.txt
@@ -88,3 +88,29 @@
 f44d36c8423f81cbb5e9f55d8813e26ffa1a7f3b - 115 (115 again. heck if I know what's going on)
 cbcedbf9382bc773713cd3552ed96f417bf1daeb - 116
 051071718085ce807a2e7c55278a8d723e238e86 - 116
+1595815c2a914a78df7dfb6f0082f47d4e82bb36 - 117
+f4f2daafb38c9c07ea74044a0fb89a2a19288b7a - 118
+6bc7774426cc0b6bbab5566fa62b3c509455e583 - 119
+88d329a698ba186aeb1f1ef8794355512ada84a9 - 120
+612ff540cd3329935351f05923358cf29b9c9b44 - 121
+c83dd7bfde2171c879efb92a31a363505385ffb9 - 122
+eee1c0ec2b08a6be642b329dc2fe885391127da3 - 123
+f977691961b5a49a074a535fcb29a5ad4a318974 - 124
+2665bc8159698429f20a08f814e63c434910d608 - 124
+88abba2b0cb0151d89e16da3e64025878dc2f142 - 125
+99cdddaf8e5bc6b31d0eb375755ec4071a9fb527 - 125
+c137cb03a90b9fd5a7d0ec7dd9b250db82ca88ef - 126
+0eb882bfc5d260e8014c26adfda11602065aa5d8 - 127
+    - The oat_dex_files_offset field is added to the OatHeader class in art/runtime/oat.h.
+    - The method_bss_mapping field is added to the OatDexFile class in art/runtime/oat_file.h.
+7b0648aa7cb4b7a58e73bf353e031dfe4553d9d7 - 128
+0cb172874481f736c6b7c491dd621166cc25561b - 129
+a308a327884920cbb1e3e62964c4b5a01c29af8c - 130 (changed kMultiDexSeparator from ':' to '!')
+4147fcc43c2ee019a06e55384985e3eaf82dcb8c - 131
+75c5ed6e75f70002db5fa7c609137c04dd2bdf40 - 131
+    - The dex_layout_sections field is added to OatDexFile class in art/runtime/oat_file.h.
+    - They did some kind of rebase or something so this commit is not in the master branch anymore.
+    - Only indication is that they cherry picked some things from this commit for oat 132.
+120aa286ab6adf3e76a31bc61fb4e583e5158d71 - 132
+    - The commit containing cherry picked changes from commit 75c5ed6e.
+    - No other noteable changes to the Oat format.
diff --git a/dexlib2/build.gradle b/dexlib2/build.gradle
index 422d2c3..b8fe789 100644
--- a/dexlib2/build.gradle
+++ b/dexlib2/build.gradle
@@ -46,7 +46,6 @@
 }
 
 dependencies {
-    compile project(':util')
     compile depends.findbugs
     compile depends.guava
 
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/DexFileFactory.java b/dexlib2/src/main/java/org/jf/dexlib2/DexFileFactory.java
index 1caaf9f..2775d18 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/DexFileFactory.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/DexFileFactory.java
@@ -58,7 +58,7 @@
 public final class DexFileFactory {
 
     @Nonnull
-    public static DexBackedDexFile loadDexFile(@Nonnull String path, @Nonnull Opcodes opcodes) throws IOException {
+    public static DexBackedDexFile loadDexFile(@Nonnull String path, @Nullable Opcodes opcodes) throws IOException {
         return loadDexFile(new File(path), opcodes);
     }
 
@@ -79,7 +79,7 @@
      * in a zip file is not a valid dex file
      */
     @Nonnull
-    public static DexBackedDexFile loadDexFile(@Nonnull File file, @Nonnull Opcodes opcodes) throws IOException {
+    public static DexBackedDexFile loadDexFile(@Nonnull File file, @Nullable Opcodes opcodes) throws IOException {
         if (!file.exists()) {
             throw new DexFileNotFoundException("%s does not exist", file.getName());
         }
@@ -176,7 +176,7 @@
      * @throws MultipleMatchingDexEntriesException If multiple entries match the given dexEntry
      */
     public static DexBackedDexFile loadDexEntry(@Nonnull File file, @Nonnull String dexEntry,
-                                                boolean exactMatch, @Nonnull Opcodes opcodes) throws IOException {
+                                                boolean exactMatch, @Nullable Opcodes opcodes) throws IOException {
         if (!file.exists()) {
             throw new DexFileNotFoundException("Container file %s does not exist", file.getName());
         }
@@ -230,7 +230,7 @@
      * @throws UnsupportedFileTypeException If the given file is not a valid dex/zip/odex/oat file
      */
     public static MultiDexContainer<? extends DexBackedDexFile> loadDexContainer(
-            @Nonnull File file, @Nonnull final Opcodes opcodes) throws IOException {
+            @Nonnull File file, @Nullable final Opcodes opcodes) throws IOException {
         if (!file.exists()) {
             throw new DexFileNotFoundException("%s does not exist", file.getName());
         }
@@ -456,10 +456,6 @@
             }
             return null;
         }
-
-        @Nonnull @Override public Opcodes getOpcodes() {
-            return dexFile.getOpcodes();
-        }
     }
 
     public static class FilenameVdexProvider implements VdexProvider {
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/MethodHandleType.java b/dexlib2/src/main/java/org/jf/dexlib2/MethodHandleType.java
new file mode 100644
index 0000000..11ee010
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/MethodHandleType.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2;
+
+import com.google.common.collect.BiMap;
+import com.google.common.collect.ImmutableBiMap;
+import org.jf.util.ExceptionWithContext;
+
+import javax.annotation.Nonnull;
+
+public class MethodHandleType {
+    public static final int STATIC_PUT = 0;
+    public static final int STATIC_GET = 1;
+    public static final int INSTANCE_PUT = 2;
+    public static final int INSTANCE_GET = 3;
+    public static final int INVOKE_STATIC = 4;
+    public static final int INVOKE_INSTANCE = 5;
+    public static final int INVOKE_CONSTRUCTOR = 6;
+    public static final int INVOKE_DIRECT = 7;
+    public static final int INVOKE_INTERFACE = 8;
+
+    private static final BiMap<Integer, String> methodHandleTypeNames = new ImmutableBiMap.Builder<Integer, String>()
+            .put(STATIC_PUT, "static-put")
+            .put(STATIC_GET, "static-get")
+            .put(INSTANCE_PUT, "instance-put")
+            .put(INSTANCE_GET, "instance-get")
+            .put(INVOKE_STATIC, "invoke-static")
+            .put(INVOKE_INSTANCE, "invoke-instance")
+            .put(INVOKE_CONSTRUCTOR, "invoke-constructor")
+            .put(INVOKE_DIRECT, "invoke-direct")
+            .put(INVOKE_INTERFACE, "invoke-interface")
+            .build();
+
+    @Nonnull public static String toString(int methodHandleType) {
+        String val = methodHandleTypeNames.get(methodHandleType);
+        if (val == null) {
+            throw new InvalidMethodHandleTypeException(methodHandleType);
+        }
+        return val;
+    }
+
+    public static int getMethodHandleType(String methodHandleType) {
+        Integer ret = methodHandleTypeNames.inverse().get(methodHandleType);
+        if (ret == null) {
+            throw new ExceptionWithContext("Invalid method handle type: %s", methodHandleType);
+        }
+        return ret;
+    }
+
+    public static class InvalidMethodHandleTypeException extends ExceptionWithContext {
+        private final int methodHandleType;
+
+        public InvalidMethodHandleTypeException(int methodHandleType) {
+            super("Invalid method handle type: %d", methodHandleType);
+            this.methodHandleType = methodHandleType;
+        }
+
+        public InvalidMethodHandleTypeException(int methodHandleType, String message, Object... formatArgs) {
+            super(message, formatArgs);
+            this.methodHandleType = methodHandleType;
+        }
+
+        public int getMethodHandleType() {
+            return methodHandleType;
+        }
+    }
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/Opcode.java b/dexlib2/src/main/java/org/jf/dexlib2/Opcode.java
index 60dffa2..5d0eeae 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/Opcode.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/Opcode.java
@@ -299,14 +299,20 @@
 
     IPUT_OBJECT_VOLATILE(firstApi(0xfc, 9), "iput-object-volatile", ReferenceType.FIELD, Format.Format22c, Opcode.ODEX_ONLY | Opcode.VOLATILE_FIELD_ACCESSOR | Opcode.CAN_THROW | Opcode.CAN_CONTINUE),
     SGET_OBJECT_VOLATILE(firstApi(0xfd, 9), "sget-object-volatile", ReferenceType.FIELD, Format.Format21c, Opcode.ODEX_ONLY | Opcode.VOLATILE_FIELD_ACCESSOR | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER | Opcode.STATIC_FIELD_ACCESSOR),
-    SPUT_OBJECT_VOLATILE(firstApi(0xfe, 9), "sput-object-volatile", ReferenceType.FIELD, Format.Format21c, Opcode.ODEX_ONLY | Opcode.VOLATILE_FIELD_ACCESSOR | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.STATIC_FIELD_ACCESSOR),
+    SPUT_OBJECT_VOLATILE(betweenApi(0xfe, 9, 19), "sput-object-volatile", ReferenceType.FIELD, Format.Format21c, Opcode.ODEX_ONLY | Opcode.VOLATILE_FIELD_ACCESSOR | Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.STATIC_FIELD_ACCESSOR),
 
     PACKED_SWITCH_PAYLOAD(0x100, "packed-switch-payload", ReferenceType.NONE, Format.PackedSwitchPayload, 0),
     SPARSE_SWITCH_PAYLOAD(0x200, "sparse-switch-payload", ReferenceType.NONE, Format.SparseSwitchPayload, 0),
     ARRAY_PAYLOAD(0x300, "array-payload", ReferenceType.NONE, Format.ArrayPayload, 0),
 
     INVOKE_POLYMORPHIC(firstArtVersion(0xfa, 87), "invoke-polymorphic", ReferenceType.METHOD, ReferenceType.METHOD_PROTO, Format.Format45cc, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT),
-    INVOKE_POLYMORPHIC_RANGE(firstArtVersion(0xfb, 87), "invoke-polymorphic/range", ReferenceType.METHOD, ReferenceType.METHOD_PROTO, Format.Format4rcc, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT);
+    INVOKE_POLYMORPHIC_RANGE(firstArtVersion(0xfb, 87), "invoke-polymorphic/range", ReferenceType.METHOD, ReferenceType.METHOD_PROTO, Format.Format4rcc, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT),
+
+    INVOKE_CUSTOM(firstArtVersion(0xfc, 111), "invoke-custom", ReferenceType.CALL_SITE, Format.Format35c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT),
+    INVOKE_CUSTOM_RANGE(firstArtVersion(0xfd, 111), "invoke-custom/range", ReferenceType.CALL_SITE, Format.Format3rc, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_RESULT),
+
+    CONST_METHOD_HANDLE(firstArtVersion(0xfe, 134), "const-method-handle", ReferenceType.METHOD_HANDLE, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER),
+    CONST_METHOD_TYPE(firstArtVersion(0xff, 134), "const-method-type", ReferenceType.METHOD_PROTO, Format.Format21c, Opcode.CAN_THROW | Opcode.CAN_CONTINUE | Opcode.SETS_REGISTER);
 
     //if the instruction can throw an exception
     public static final int CAN_THROW = 0x1;
@@ -392,10 +398,14 @@
     }
 
     private static List<VersionConstraint> lastApi(int opcodeValue, int api) {
-        Range range;
         return Lists.newArrayList(new VersionConstraint(Range.atMost(api), Range.openClosed(0, 0), opcodeValue));
     }
 
+    private static List<VersionConstraint> betweenApi(int opcodeValue, int minApi, int maxApi) {
+        return Lists.newArrayList(new VersionConstraint(Range.closed(minApi, maxApi), Range.openClosed(0, 0),
+                opcodeValue));
+    }
+
     private static List<VersionConstraint> firstArtVersion(int opcodeValue, int artVersion) {
         return Lists.newArrayList(new VersionConstraint(Range.openClosed(0, 0), Range.atLeast(artVersion), opcodeValue));
     }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/Opcodes.java b/dexlib2/src/main/java/org/jf/dexlib2/Opcodes.java
index 5f8106d..8f24e02 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/Opcodes.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/Opcodes.java
@@ -50,7 +50,7 @@
      */
     public final int api;
     public final int artVersion;
-    @Nonnull private final Opcode[] opcodesByValue = new Opcode[255];
+    @Nonnull private final Opcode[] opcodesByValue = new Opcode[256];
     @Nonnull private final EnumMap<Opcode, Short> opcodeValues;
     @Nonnull private final HashMap<String, Opcode> opcodesByName;
 
@@ -64,6 +64,15 @@
         return new Opcodes(NO_VERSION, artVersion);
     }
 
+    @Nonnull
+    public static Opcodes forDexVersion(int dexVersion) {
+        int api = VersionMap.mapDexVersionToApi(dexVersion);
+        if (api == NO_VERSION) {
+            throw new RuntimeException("Unsupported dex version " + dexVersion);
+        }
+        return new Opcodes(api, NO_VERSION);
+    }
+
     /**
      * @return a default Opcodes instance for when the exact Opcodes to use doesn't matter or isn't known
      */
@@ -74,14 +83,12 @@
     }
 
     private Opcodes(int api, int artVersion) {
-
-
         if (api >= 21) {
-        this.api = api;
+            this.api = api;
             this.artVersion = mapApiToArtVersion(api);
         } else if (artVersion >= 0 && artVersion < 39) {
             this.api = mapArtVersionToApi(artVersion);
-        this.artVersion = artVersion;
+            this.artVersion = artVersion;
         } else {
             this.api = api;
             this.artVersion = artVersion;
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/ReferenceType.java b/dexlib2/src/main/java/org/jf/dexlib2/ReferenceType.java
index fa8b968..0359475 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/ReferenceType.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/ReferenceType.java
@@ -40,7 +40,9 @@
     public static final int FIELD = 2;
     public static final int METHOD = 3;
     public static final int METHOD_PROTO = 4;
-    public static final int NONE = 5;
+    public static final int CALL_SITE = 5;
+    public static final int METHOD_HANDLE = 6;
+    public static final int NONE = 7;
 
     public static String toString(int referenceType) {
         switch (referenceType) {
@@ -54,6 +56,10 @@
                 return "method";
             case METHOD_PROTO:
                 return "method_proto";
+            case CALL_SITE:
+                return "call_site";
+            case METHOD_HANDLE:
+                return "method_handle";
             default:
                 throw new InvalidReferenceTypeException(referenceType);
         }
@@ -70,6 +76,10 @@
             return METHOD;
         } else if (reference instanceof MethodProtoReference) {
             return METHOD_PROTO;
+        } else if (reference instanceof CallSiteReference) {
+            return CALL_SITE;
+        } else if (reference instanceof MethodHandleReference) {
+            return METHOD_HANDLE;
         } else {
             throw new IllegalStateException("Invalid reference");
         }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/ValueType.java b/dexlib2/src/main/java/org/jf/dexlib2/ValueType.java
index 08710a6..ecb967b 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/ValueType.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/ValueType.java
@@ -39,6 +39,8 @@
     public static final int LONG = 0x06;
     public static final int FLOAT = 0x10;
     public static final int DOUBLE = 0x11;
+    public static final int METHOD_TYPE = 0x15;
+    public static final int METHOD_HANDLE = 0x16;
     public static final int STRING = 0x17;
     public static final int TYPE = 0x18;
     public static final int FIELD = 0x19;
@@ -50,4 +52,47 @@
     public static final int BOOLEAN = 0x1f;
 
     private ValueType() {}
+
+    public static String getValueTypeName(int valueType) {
+        switch (valueType) {
+            case BYTE:
+                return "byte";
+            case SHORT:
+                return "short";
+            case CHAR:
+                return "char";
+            case INT:
+                return "int";
+            case LONG:
+                return "long";
+            case FLOAT:
+                return "float";
+            case DOUBLE:
+                return "double";
+            case METHOD_TYPE:
+                return "method_type";
+            case METHOD_HANDLE:
+                return "method_handle";
+            case STRING:
+                return "string";
+            case TYPE:
+                return "type";
+            case FIELD:
+                return "field";
+            case METHOD:
+                return "method";
+            case ENUM:
+                return "enum";
+            case ARRAY:
+                return "array";
+            case ANNOTATION:
+                return "annotation";
+            case NULL:
+                return "null";
+            case BOOLEAN:
+                return "boolean";
+            default:
+                throw new IllegalArgumentException("Unknown encoded value type: " + valueType);
+        }
+    }
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/VersionMap.java b/dexlib2/src/main/java/org/jf/dexlib2/VersionMap.java
index b358187..791fffa 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/VersionMap.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/VersionMap.java
@@ -34,11 +34,43 @@
 public class VersionMap {
     public static final int NO_VERSION = -1;
 
+    public static int mapDexVersionToApi(int dexVersion) {
+        switch (dexVersion) {
+            case 35:
+                return 23;
+            case 37:
+                return 25;
+            case 38:
+                return 27;
+            case 39:
+                return 28;
+            default:
+                return NO_VERSION;
+        }
+    }
+
+    public static int mapApiToDexVersion(int api) {
+        if (api <= 23) {
+            return 35;
+        }
+        if (api <= 25) {
+            return 37;
+        }
+        if (api <= 27) {
+            return 38;
+        }
+        return 39;
+    }
+
     public static int mapArtVersionToApi(int artVersion) {
-        // NOTE: Art version 87 and api level 26 do not correspond to any
-        // particular android release and represent the current (as of
-        // October 2016) state of aosp/master.
-        if (artVersion >= 87) {
+        // 144 is the current version in the master branch of AOSP as of 2018-05-22
+        if (artVersion >= 144) {
+            return 28;
+        }
+        if (artVersion >= 131) {
+            return 27;
+        }
+        if (artVersion >= 124) {
             return 26;
         }
         if (artVersion >= 79) {
@@ -57,6 +89,10 @@
     }
 
     public static int mapApiToArtVersion(int api) {
+        if (api < 19) {
+            return NO_VERSION;
+        }
+
         switch (api) {
             case 19:
             case 20:
@@ -70,14 +106,13 @@
             case 24:
             case 25:
                 return 79;
+            case 26:
+                return 124;
+            case 27:
+                return 131;
+            default:
+                // 144 is the current version in the master branch of AOSP as of 2018-05-22
+                return 144;
         }
-
-        // NOTE: Art version 87 and api level 26 do not correspond to any
-        // particular android release and represent the current (as of
-        // October 2016) state of aosp/master.
-        if (api > 25) {
-            return 87;
-        }
-        return NO_VERSION;
     }
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/analysis/ClassPathResolver.java b/dexlib2/src/main/java/org/jf/dexlib2/analysis/ClassPathResolver.java
index 10daa56..3d5895b 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/analysis/ClassPathResolver.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/analysis/ClassPathResolver.java
@@ -31,14 +31,10 @@
 
 package org.jf.dexlib2.analysis;
 
-import com.beust.jcommander.internal.Sets;
 import com.google.common.base.Joiner;
 import com.google.common.base.Splitter;
 import com.google.common.collect.Lists;
-import org.jf.dexlib2.DexFileFactory;
 import org.jf.dexlib2.DexFileFactory.UnsupportedFileTypeException;
-import org.jf.dexlib2.Opcodes;
-import org.jf.dexlib2.dexbacked.DexBackedDexFile;
 import org.jf.dexlib2.dexbacked.DexBackedOdexFile;
 import org.jf.dexlib2.dexbacked.OatFile;
 import org.jf.dexlib2.dexbacked.OatFile.OatDexFile;
@@ -51,14 +47,11 @@
 import java.io.File;
 import java.io.IOException;
 import java.util.List;
-import java.util.Set;
 
 public class ClassPathResolver {
     private final Iterable<String> classPathDirs;
-    private final Opcodes opcodes;
 
-    private final Set<File> loadedFiles = Sets.newHashSet();
-    private final List<ClassProvider> classProviders = Lists.newArrayList();
+    private final PathEntryLoader pathEntryLoader;
 
     /**
      * Constructs a new ClassPathResolver using a specified list of bootclasspath entries
@@ -109,21 +102,21 @@
                               @Nonnull List<String> extraClassPathEntries, @Nonnull DexFile dexFile, boolean unused)
             throws IOException {
         this.classPathDirs = bootClassPathDirs;
-        opcodes = dexFile.getOpcodes();
+        this.pathEntryLoader = new PathEntryLoader(dexFile.getOpcodes());
 
         if (bootClassPathEntries == null) {
-            bootClassPathEntries = getDefaultBootClassPath(dexFile, opcodes.api);
+            bootClassPathEntries = getDefaultBootClassPath(dexFile, dexFile.getOpcodes().api);
         }
 
         for (String entry : bootClassPathEntries) {
             try {
                 loadLocalOrDeviceBootClassPathEntry(entry);
-            } catch (NoDexException ex) {
+            } catch (PathEntryLoader.NoDexException ex) {
                 if (entry.endsWith(".jar")) {
                     String odexEntry = entry.substring(0, entry.length() - 4) + ".odex";
                     try {
                         loadLocalOrDeviceBootClassPathEntry(odexEntry);
-                    } catch (NoDexException ex2) {
+                    } catch (PathEntryLoader.NoDexException ex2) {
                         throw new ResolveException("Neither %s nor %s contain a dex file", entry, odexEntry);
                     } catch (NotFoundException ex2) {
                         throw new ResolveException(ex);
@@ -136,7 +129,7 @@
                     String jarEntry = entry.substring(0, entry.length() - 5) + ".jar";
                     try {
                         loadLocalOrDeviceBootClassPathEntry(jarEntry);
-                        } catch (NoDexException ex2) {
+                        } catch (PathEntryLoader.NoDexException ex2) {
                         throw new ResolveException("Neither %s nor %s contain a dex file", entry, jarEntry);
                     } catch (NotFoundException ex2) {
                         throw new ResolveException(ex);
@@ -152,7 +145,7 @@
             // bootClassPathDirs
             try {
                 loadLocalClassPathEntry(entry);
-            } catch (NoDexException ex) {
+            } catch (PathEntryLoader.NoDexException ex) {
                 throw new ResolveException(ex);
             }
         }
@@ -160,23 +153,23 @@
         if (dexFile instanceof MultiDexContainer.MultiDexFile) {
             MultiDexContainer<? extends MultiDexFile> container = ((MultiDexFile)dexFile).getContainer();
             for (String entry: container.getDexEntryNames()) {
-                classProviders.add(new DexClassProvider(container.getEntry(entry)));
+                pathEntryLoader.getClassProviders().add(new DexClassProvider(container.getEntry(entry)));
             }
         } else {
-            classProviders.add(new DexClassProvider(dexFile));
+            pathEntryLoader.getClassProviders().add(new DexClassProvider(dexFile));
         }
     }
 
     @Nonnull
     public List<ClassProvider> getResolvedClassProviders() {
-        return classProviders;
+        return pathEntryLoader.getResolvedClassProviders();
     }
 
-    private boolean loadLocalClassPathEntry(@Nonnull String entry) throws NoDexException, IOException {
+    private boolean loadLocalClassPathEntry(@Nonnull String entry) throws PathEntryLoader.NoDexException, IOException {
         File entryFile = new File(entry);
         if (entryFile.exists() && entryFile.isFile()) {
             try {
-                loadEntry(entryFile, true);
+                pathEntryLoader.loadEntry(entryFile, true);
                 return true;
             } catch (UnsupportedFileTypeException ex) {
                 throw new ResolveException(ex, "Couldn't load classpath entry %s", entry);
@@ -186,7 +179,7 @@
     }
 
     private void loadLocalOrDeviceBootClassPathEntry(@Nonnull String entry)
-            throws IOException, NoDexException, NotFoundException {
+            throws IOException, PathEntryLoader.NoDexException, NotFoundException {
         // first, see if the entry is a valid local path
         if (loadLocalClassPathEntry(entry)) {
             return;
@@ -207,7 +200,7 @@
                 String partialPath = pathJoiner.join(pathComponents.subList(i, pathComponents.size()));
                 File entryFile = new File(directoryFile, partialPath);
                 if (entryFile.exists() && entryFile.isFile()) {
-                    loadEntry(entryFile, true);
+                    pathEntryLoader.loadEntry(entryFile, true);
                     return;
                 }
             }
@@ -216,86 +209,16 @@
         throw new NotFoundException("Could not find classpath entry %s", entry);
     }
 
-    private void loadEntry(@Nonnull File entryFile, boolean loadOatDependencies)
-            throws IOException, NoDexException {
-        if (loadedFiles.contains(entryFile)) {
-            return;
-        }
-
-        MultiDexContainer<? extends DexBackedDexFile> container;
-        try {
-            container = DexFileFactory.loadDexContainer(entryFile, opcodes);
-        } catch (UnsupportedFileTypeException ex) {
-            throw new ResolveException(ex);
-        }
-
-        List<String> entryNames = container.getDexEntryNames();
-
-        if (entryNames.size() == 0) {
-            throw new NoDexException("%s contains no dex file", entryFile);
-        }
-
-        loadedFiles.add(entryFile);
-
-        for (String entryName: entryNames) {
-            classProviders.add(new DexClassProvider(container.getEntry(entryName)));
-        }
-
-        if (loadOatDependencies && container instanceof OatFile) {
-            List<String> oatDependencies = ((OatFile)container).getBootClassPath();
-            if (!oatDependencies.isEmpty()) {
-                try {
-                    loadOatDependencies(entryFile.getParentFile(), oatDependencies);
-                } catch (NotFoundException ex) {
-                    throw new ResolveException(ex, "Error while loading oat file %s", entryFile);
-                } catch (NoDexException ex) {
-                    throw new ResolveException(ex, "Error while loading dependencies for oat file %s", entryFile);
-                }
-            }
-        }
-    }
-
     @Nonnull
     private static List<String> splitDevicePath(@Nonnull String path) {
         return Lists.newArrayList(Splitter.on('/').split(path));
     }
 
-    private void loadOatDependencies(@Nonnull File directory, @Nonnull List<String> oatDependencies)
-            throws IOException, NoDexException, NotFoundException {
-        // We assume that all oat dependencies are located in the same directory as the oat file
-        for (String oatDependency: oatDependencies) {
-            String oatDependencyName = getFilenameForOatDependency(oatDependency);
-            File file = new File(directory, oatDependencyName);
-            if (!file.exists()) {
-                throw new NotFoundException("Cannot find dependency %s in %s", oatDependencyName, directory);
-            }
-
-            loadEntry(file, false);
-        }
-    }
-
-    @Nonnull
-    private String getFilenameForOatDependency(String oatDependency) {
-        int index = oatDependency.lastIndexOf('/');
-
-        String dependencyLeaf = oatDependency.substring(index+1);
-        if (dependencyLeaf.endsWith(".art")) {
-            return dependencyLeaf.substring(0, dependencyLeaf.length() - 4) + ".oat";
-        }
-        return dependencyLeaf;
-    }
-
-    private static class NotFoundException extends Exception {
+    static class NotFoundException extends Exception {
         public NotFoundException(String message, Object... formatArgs) {
             super(String.format(message, formatArgs));
         }
     }
-    
-    private static class NoDexException extends Exception {
-        public NoDexException(String message, Object... formatArgs) {
-            super(String.format(message, formatArgs));
-        }
-    }
 
     /**
      * An error that occurred while resolving the classpath
@@ -320,17 +243,8 @@
     @Nonnull
     private static List<String> getDefaultBootClassPath(@Nonnull DexFile dexFile, int apiLevel) {
         if (dexFile instanceof OatFile.OatDexFile) {
-            List<String> bcp = ((OatDexFile)dexFile).getContainer().getBootClassPath();
-            if (!bcp.isEmpty()) {
-                for (int i=0; i<bcp.size(); i++) {
-                    String entry = bcp.get(i);
-                    if (entry.endsWith(".art")) {
-                        bcp.set(i, entry.substring(0, entry.length() - 4) + ".oat");
-                    }
-                }
-                return bcp;
-            }
-            return Lists.newArrayList("boot.oat");
+            return bootClassPathForOat((OatDexFile) dexFile);
+
         }
 
         if (dexFile instanceof DexBackedOdexFile) {
@@ -462,4 +376,23 @@
                     "/system/framework/org.apache.http.legacy.boot.jar");
         }
     }
+
+    private static List<String> bootClassPathForOat(@Nonnull OatDexFile dexFile) {
+        List<String> bcp = dexFile.getContainer().getBootClassPath();
+        if(bcp.isEmpty()) {
+            return Lists.newArrayList("boot.oat");
+        } else {
+            return replaceElementsSuffix(bcp, ".art", ".oat");
+        }
+    }
+
+    private static List<String> replaceElementsSuffix(List<String> bcp, String originalSuffix, String newSuffix) {
+        for (int i=0; i<bcp.size(); i++) {
+            String entry = bcp.get(i);
+            if (entry.endsWith(originalSuffix)) {
+                bcp.set(i, entry.substring(0, entry.length() - originalSuffix.length()) + newSuffix);
+            }
+        }
+        return bcp;
+    }
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/analysis/ClassProto.java b/dexlib2/src/main/java/org/jf/dexlib2/analysis/ClassProto.java
index 44cc5e2..636e5b8 100755
--- a/dexlib2/src/main/java/org/jf/dexlib2/analysis/ClassProto.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/analysis/ClassProto.java
@@ -44,7 +44,7 @@
 import org.jf.dexlib2.iface.reference.FieldReference;
 import org.jf.dexlib2.iface.reference.MethodReference;
 import org.jf.dexlib2.util.MethodUtil;
-import org.jf.util.AlignmentUtils;
+import org.jf.dexlib2.util.AlignmentUtils;
 import org.jf.util.ExceptionWithContext;
 import org.jf.util.SparseArray;
 
@@ -529,8 +529,8 @@
                     ClassProto superclass = null;
                     if (superclassType != null) {
                         superclass = (ClassProto) classPath.getClass(superclassType);
-                            startFieldOffset = superclass.getNextFieldOffset();
-                        }
+                        startFieldOffset = superclass.getNextFieldOffset();
+                    }
 
                     int fieldIndexMod;
                     if ((startFieldOffset % 8) == 0) {
@@ -617,12 +617,12 @@
 
                         //add padding to align the wide fields, if needed
                         if (fieldTypes[i] == WIDE && !gotDouble) {
-                                if (fieldOffset % 8 != 0) {
-                                    assert fieldOffset % 8 == 4;
-                                    fieldOffset += 4;
-                                }
-                                gotDouble = true;
+                            if (fieldOffset % 8 != 0) {
+                                assert fieldOffset % 8 == 4;
+                                fieldOffset += 4;
                             }
+                            gotDouble = true;
+                        }
 
                         instanceFields.append(fieldOffset, field);
                         if (fieldTypes[i] == WIDE) {
@@ -979,14 +979,14 @@
                         for (int j=0; j<vtable.size(); j++) {
                             Method candidate = vtable.get(j);
                             if (MethodUtil.methodSignaturesMatch(candidate, interfaceMethod)) {
-                        if (!classPath.shouldCheckPackagePrivateAccess() ||
+                                if (!classPath.shouldCheckPackagePrivateAccess() ||
                                         AnalyzedMethodUtil.canAccess(ClassProto.this, candidate, true, false, false)) {
                                     if (interfaceMethodOverrides(interfaceMethod, candidate)) {
                                         vtable.set(j, interfaceMethod);
+                                    }
+                                }
                             }
                         }
-                    }
-                }
 
                         if (vtableIndex >= 0) {
                             if (!isOverridableByDefaultMethod(vtable.get(vtableIndex))) {
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/analysis/PathEntryLoader.java b/dexlib2/src/main/java/org/jf/dexlib2/analysis/PathEntryLoader.java
new file mode 100644
index 0000000..fd654de
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/analysis/PathEntryLoader.java
@@ -0,0 +1,109 @@
+package org.jf.dexlib2.analysis;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+import org.jf.dexlib2.DexFileFactory;
+import org.jf.dexlib2.Opcodes;
+import org.jf.dexlib2.dexbacked.DexBackedDexFile;
+import org.jf.dexlib2.dexbacked.OatFile;
+import org.jf.dexlib2.iface.MultiDexContainer;
+
+import javax.annotation.Nonnull;
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.Set;
+
+public class PathEntryLoader {
+    Opcodes opcodes;
+
+    public Opcodes getOpcodes() {
+        return opcodes;
+    }
+
+    final Set<File> loadedFiles = Sets.newHashSet();
+    final List<ClassProvider> classProviders = Lists.newArrayList();
+
+    public List<ClassProvider> getClassProviders() {
+        return classProviders;
+    }
+
+    public PathEntryLoader(Opcodes opcodes) {
+        this.opcodes = opcodes;
+    }
+
+    @Nonnull
+    public List<ClassProvider> getResolvedClassProviders() {
+        return classProviders;
+    }
+
+    public void loadEntry(@Nonnull File entryFile, boolean loadOatDependencies)
+            throws IOException, NoDexException {
+        if (loadedFiles.contains(entryFile)) {
+            return;
+        }
+
+        MultiDexContainer<? extends DexBackedDexFile> container;
+        try {
+            container = DexFileFactory.loadDexContainer(entryFile, opcodes);
+        } catch (DexFileFactory.UnsupportedFileTypeException ex) {
+            throw new ClassPathResolver.ResolveException(ex);
+        }
+
+        List<String> entryNames = container.getDexEntryNames();
+
+        if (entryNames.isEmpty()) {
+            throw new NoDexException("%s contains no dex file", entryFile);
+        }
+
+        loadedFiles.add(entryFile);
+
+        for (String entryName : entryNames) {
+            classProviders.add(new DexClassProvider(container.getEntry(entryName)));
+        }
+
+        if (loadOatDependencies && container instanceof OatFile) {
+            List<String> oatDependencies = ((OatFile) container).getBootClassPath();
+            if (!oatDependencies.isEmpty()) {
+                try {
+                    loadOatDependencies(entryFile.getParentFile(), oatDependencies);
+                } catch (ClassPathResolver.NotFoundException ex) {
+                    throw new ClassPathResolver.ResolveException(ex, "Error while loading oat file %s", entryFile);
+                } catch (NoDexException ex) {
+                    throw new ClassPathResolver.ResolveException(ex, "Error while loading dependencies for oat file %s", entryFile);
+                }
+            }
+        }
+    }
+
+    private void loadOatDependencies(@Nonnull File directory, @Nonnull List<String> oatDependencies)
+            throws IOException, NoDexException, ClassPathResolver.NotFoundException {
+        // We assume that all oat dependencies are located in the same directory as the oat file
+        for (String oatDependency : oatDependencies) {
+            String oatDependencyName = getFilenameForOatDependency(oatDependency);
+            File file = new File(directory, oatDependencyName);
+            if (!file.exists()) {
+                throw new ClassPathResolver.NotFoundException("Cannot find dependency %s in %s", oatDependencyName, directory);
+            }
+
+            loadEntry(file, false);
+        }
+    }
+
+    @Nonnull
+    private String getFilenameForOatDependency(String oatDependency) {
+        int index = oatDependency.lastIndexOf('/');
+
+        String dependencyLeaf = oatDependency.substring(index + 1);
+        if (dependencyLeaf.endsWith(".art")) {
+            return dependencyLeaf.substring(0, dependencyLeaf.length() - 4) + ".oat";
+        }
+        return dependencyLeaf;
+    }
+
+    static class NoDexException extends Exception {
+        public NoDexException(String message, Object... formatArgs) {
+            super(String.format(message, formatArgs));
+        }
+    }
+}
\ No newline at end of file
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/base/reference/BaseCallSiteReference.java b/dexlib2/src/main/java/org/jf/dexlib2/base/reference/BaseCallSiteReference.java
new file mode 100644
index 0000000..700454c
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/base/reference/BaseCallSiteReference.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.base.reference;
+
+import org.jf.dexlib2.iface.reference.CallSiteReference;
+
+public abstract class BaseCallSiteReference implements CallSiteReference {
+    @Override
+    public int hashCode() {
+        int hashCode = getName().hashCode();
+        hashCode = hashCode*31 + getMethodHandle().hashCode();
+        hashCode = hashCode*31 + getMethodName().hashCode();
+        hashCode = hashCode*31 + getMethodProto().hashCode();
+        hashCode = hashCode*31 + getExtraArguments().hashCode();
+        return hashCode;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (o != null && o instanceof CallSiteReference) {
+            CallSiteReference other = (CallSiteReference) o;
+            return getMethodHandle().equals(other.getMethodHandle()) &&
+                    getMethodName().equals(other.getMethodName()) &&
+                    getMethodProto().equals(other.getMethodProto()) &&
+                    getExtraArguments().equals(other.getExtraArguments());
+        }
+        return false;
+    }
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/base/reference/BaseMethodHandleReference.java b/dexlib2/src/main/java/org/jf/dexlib2/base/reference/BaseMethodHandleReference.java
new file mode 100644
index 0000000..8d3b4e7
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/base/reference/BaseMethodHandleReference.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.base.reference;
+
+import com.google.common.primitives.Ints;
+import org.jf.dexlib2.iface.reference.FieldReference;
+import org.jf.dexlib2.iface.reference.MethodHandleReference;
+import org.jf.dexlib2.iface.reference.MethodReference;
+import org.jf.dexlib2.iface.reference.Reference;
+
+import javax.annotation.Nonnull;
+
+public abstract class BaseMethodHandleReference implements MethodHandleReference {
+    @Override
+    public int hashCode() {
+        int hashCode =  getMethodHandleType();
+        hashCode = hashCode*31 + getMemberReference().hashCode();
+        return hashCode;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (o != null && o instanceof MethodHandleReference) {
+            MethodHandleReference other = (MethodHandleReference) o;
+            return getMethodHandleType() == other.getMethodHandleType() &&
+                    getMemberReference().equals(other.getMemberReference());
+        }
+        return false;
+    }
+
+    @Override
+    public int compareTo(@Nonnull MethodHandleReference o) {
+        int res = Ints.compare(getMethodHandleType(), o.getMethodHandleType());
+        if (res != 0) return res;
+
+        Reference reference = getMemberReference();
+        if (reference instanceof FieldReference) {
+            // "This should never happen", but if it does, we'll arbitrarily say a field reference compares less than
+            // a method reference
+            if (!(o.getMemberReference() instanceof FieldReference)) {
+                return -1;
+            }
+            return ((FieldReference) reference).compareTo((FieldReference) o.getMemberReference());
+        } else {
+            if (!(o.getMemberReference() instanceof MethodReference)) {
+                return 1;
+            }
+            return ((MethodReference) reference).compareTo((MethodReference) o.getMemberReference());
+        }
+    }
+}
diff --git a/util/src/main/java/org/jf/util/BlankReader.java b/dexlib2/src/main/java/org/jf/dexlib2/base/value/BaseMethodHandleEncodedValue.java
similarity index 61%
copy from util/src/main/java/org/jf/util/BlankReader.java
copy to dexlib2/src/main/java/org/jf/dexlib2/base/value/BaseMethodHandleEncodedValue.java
index ca55dd0..f3bbbb9 100644
--- a/util/src/main/java/org/jf/util/BlankReader.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/base/value/BaseMethodHandleEncodedValue.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014, Google Inc.
+ * Copyright 2018, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,20 +29,38 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package org.jf.util;
+package org.jf.dexlib2.base.value;
+
+import com.google.common.primitives.Ints;
+import org.jf.dexlib2.ValueType;
+import org.jf.dexlib2.iface.value.EncodedValue;
+import org.jf.dexlib2.iface.value.MethodHandleEncodedValue;
 
 import javax.annotation.Nonnull;
-import java.io.IOException;
-import java.io.Reader;
 
-public class BlankReader extends Reader {
-    public static final BlankReader INSTANCE = new BlankReader();
-
-    @Override public int read(@Nonnull char[] chars, int i, int i2) throws IOException {
-        return -1;
+public abstract class BaseMethodHandleEncodedValue implements MethodHandleEncodedValue {
+    @Override
+    public int hashCode() {
+        return getValue().hashCode();
     }
 
     @Override
-    public void close() throws IOException {
+    public boolean equals(Object o) {
+        if (o instanceof MethodHandleEncodedValue) {
+            return getValue().equals(((MethodHandleEncodedValue) o).getValue());
+        }
+        return false;
+    }
+
+    @Override
+    public int compareTo(@Nonnull EncodedValue o) {
+        int res = Ints.compare(getValueType(), o.getValueType());
+        if (res != 0) return res;
+        return getValue().compareTo(((MethodHandleEncodedValue) o).getValue());
+    }
+
+    @Override
+    public int getValueType() {
+        return ValueType.METHOD_HANDLE;
     }
 }
diff --git a/util/src/main/java/org/jf/util/BlankReader.java b/dexlib2/src/main/java/org/jf/dexlib2/base/value/BaseMethodTypeEncodedValue.java
similarity index 62%
copy from util/src/main/java/org/jf/util/BlankReader.java
copy to dexlib2/src/main/java/org/jf/dexlib2/base/value/BaseMethodTypeEncodedValue.java
index ca55dd0..6ded330 100644
--- a/util/src/main/java/org/jf/util/BlankReader.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/base/value/BaseMethodTypeEncodedValue.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014, Google Inc.
+ * Copyright 2018, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,20 +29,38 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package org.jf.util;
+package org.jf.dexlib2.base.value;
+
+import com.google.common.primitives.Ints;
+import org.jf.dexlib2.ValueType;
+import org.jf.dexlib2.iface.value.EncodedValue;
+import org.jf.dexlib2.iface.value.MethodTypeEncodedValue;
 
 import javax.annotation.Nonnull;
-import java.io.IOException;
-import java.io.Reader;
 
-public class BlankReader extends Reader {
-    public static final BlankReader INSTANCE = new BlankReader();
-
-    @Override public int read(@Nonnull char[] chars, int i, int i2) throws IOException {
-        return -1;
+public abstract class BaseMethodTypeEncodedValue implements MethodTypeEncodedValue {
+    @Override
+    public int hashCode() {
+        return getValue().hashCode();
     }
 
     @Override
-    public void close() throws IOException {
+    public boolean equals(Object o) {
+        if (o instanceof MethodTypeEncodedValue) {
+            return getValue().equals(((MethodTypeEncodedValue) o).getValue());
+        }
+        return false;
+    }
+
+    @Override
+    public int compareTo(@Nonnull EncodedValue o) {
+        int res = Ints.compare(getValueType(), o.getValueType());
+        if (res != 0) return res;
+        return getValue().compareTo(((MethodTypeEncodedValue) o).getValue());
+    }
+
+    @Override
+    public int getValueType() {
+        return ValueType.METHOD_TYPE;
     }
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/builder/BuilderDebugItem.java b/dexlib2/src/main/java/org/jf/dexlib2/builder/BuilderDebugItem.java
index 0969a9d..41effa1 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/builder/BuilderDebugItem.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/builder/BuilderDebugItem.java
@@ -33,10 +33,7 @@
 
 import org.jf.dexlib2.iface.debug.DebugItem;
 
-import javax.annotation.Nullable;
-
-public abstract class BuilderDebugItem implements DebugItem {
-    @Nullable MethodLocation location;
+public abstract class BuilderDebugItem extends ItemWithLocation implements DebugItem {
 
     public BuilderDebugItem() {
     }
@@ -48,5 +45,4 @@
         }
         return location.getCodeAddress();
     }
-
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/builder/ItemWithLocation.java b/dexlib2/src/main/java/org/jf/dexlib2/builder/ItemWithLocation.java
new file mode 100644
index 0000000..f651552
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/builder/ItemWithLocation.java
@@ -0,0 +1,16 @@
+package org.jf.dexlib2.builder;
+
+import javax.annotation.Nullable;
+
+public abstract class ItemWithLocation {
+    @Nullable
+    MethodLocation location;
+
+    public boolean isPlaced() {
+        return location != null;
+    }
+
+    public void setLocation(MethodLocation methodLocation) {
+        location = methodLocation;
+    }
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/builder/Label.java b/dexlib2/src/main/java/org/jf/dexlib2/builder/Label.java
index ef19f91..35c3f56 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/builder/Label.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/builder/Label.java
@@ -32,11 +32,8 @@
 package org.jf.dexlib2.builder;
 
 import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
 
-public class Label {
-    @Nullable MethodLocation location;
-
+public class Label extends ItemWithLocation {
     Label() {
     }
 
@@ -55,8 +52,4 @@
         }
         return location;
     }
-
-    public boolean isPlaced() {
-        return location != null;
-    }
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/builder/LocatedDebugItems.java b/dexlib2/src/main/java/org/jf/dexlib2/builder/LocatedDebugItems.java
new file mode 100644
index 0000000..77291ac
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/builder/LocatedDebugItems.java
@@ -0,0 +1,10 @@
+package org.jf.dexlib2.builder;
+
+public class LocatedDebugItems extends LocatedItems<BuilderDebugItem> {
+
+    @Override
+    protected String getAddLocatedItemError() {
+        return "Cannot add a debug item that has already been added to a method." +
+                "You must remove it from its current location first.";
+    }
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/builder/LocatedItems.java b/dexlib2/src/main/java/org/jf/dexlib2/builder/LocatedItems.java
new file mode 100644
index 0000000..89f0ac1
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/builder/LocatedItems.java
@@ -0,0 +1,96 @@
+package org.jf.dexlib2.builder;
+
+import com.google.common.collect.ImmutableList;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import java.util.*;
+
+public abstract class LocatedItems<T extends ItemWithLocation> {
+    // We end up creating and keeping around a *lot* of MethodLocation objects
+    // when building a new dex file, so it's worth the trouble of lazily creating
+    // the labels and debugItems lists only when they are needed
+    @Nullable
+    private List<T> items = null;
+
+    @Nonnull
+    private List<T> getItems() {
+        if (items == null) {
+            return ImmutableList.of();
+        }
+        return items;
+    }
+
+    public Set<T> getModifiableItems(MethodLocation newItemsLocation) {
+        return new AbstractSet<T>() {
+            @Nonnull
+            @Override
+            public Iterator<T> iterator() {
+                final Iterator<T> it = getItems().iterator();
+
+                return new Iterator<T>() {
+                    private @Nullable
+                    T currentItem = null;
+
+                    @Override
+                    public boolean hasNext() {
+                        return it.hasNext();
+                    }
+
+                    @Override
+                    public T next() {
+                        currentItem = it.next();
+                        return currentItem;
+                    }
+
+                    @Override
+                    public void remove() {
+                        if (currentItem != null) {
+                            currentItem.setLocation(null);
+                        }
+                        it.remove();
+                    }
+                };
+            }
+
+            @Override
+            public int size() {
+                return getItems().size();
+            }
+
+            @Override
+            public boolean add(@Nonnull T item) {
+                if (item.isPlaced()) {
+                    throw new IllegalArgumentException(getAddLocatedItemError());
+                }
+                item.setLocation(newItemsLocation);
+                addItem(item);
+                return true;
+            }
+        };
+    }
+
+    private void addItem(@Nonnull T item) {
+        if (items == null) {
+            items = new ArrayList<>(1);
+        }
+        items.add(item);
+    }
+
+    protected abstract String getAddLocatedItemError();
+
+    public void mergeItemsIntoNext(@Nonnull MethodLocation nextLocation, LocatedItems<T> otherLocatedItems) {
+        if (otherLocatedItems == this) {
+            return;
+        }
+        if (items != null) {
+            for (T item : items) {
+                item.setLocation(nextLocation);
+            }
+            List<T> mergedItems = items;
+            mergedItems.addAll(otherLocatedItems.getItems());
+            otherLocatedItems.items = mergedItems;
+            items = null;
+        }
+    }
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/builder/LocatedLabels.java b/dexlib2/src/main/java/org/jf/dexlib2/builder/LocatedLabels.java
new file mode 100644
index 0000000..d14ce7b
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/builder/LocatedLabels.java
@@ -0,0 +1,9 @@
+package org.jf.dexlib2.builder;
+
+public class LocatedLabels extends LocatedItems<Label> {
+    @Override
+    protected String getAddLocatedItemError() {
+        return "Cannot add a label that is already placed." +
+                "You must remove it from its current location first.";
+    }
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/builder/MethodLocation.java b/dexlib2/src/main/java/org/jf/dexlib2/builder/MethodLocation.java
index 5a707e9..da746e1 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/builder/MethodLocation.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/builder/MethodLocation.java
@@ -31,7 +31,6 @@
 
 package org.jf.dexlib2.builder;
 
-import com.google.common.collect.ImmutableList;
 import org.jf.dexlib2.builder.debug.*;
 import org.jf.dexlib2.iface.instruction.Instruction;
 import org.jf.dexlib2.iface.reference.StringReference;
@@ -46,16 +45,12 @@
     int codeAddress;
     int index;
 
-    // We end up creating and keeping around a *lot* of MethodLocation objects
-    // when building a new dex file, so it's worth the trouble of lazily creating
-    // the labels and debugItems lists only when they are needed
-
-    @Nullable
-    private List<Label> labels = null;
-    @Nullable
-    private List<BuilderDebugItem> debugItems = null;
+    private final LocatedItems<Label> labels;
+    private final LocatedItems<BuilderDebugItem> debugItems;
 
     MethodLocation(@Nullable BuilderInstruction instruction, int codeAddress, int index) {
+        this.debugItems = new LocatedDebugItems();
+        this.labels = new LocatedLabels();
         this.instruction = instruction;
         this.codeAddress = codeAddress;
         this.index = index;
@@ -74,146 +69,26 @@
         return index;
     }
 
-    @Nonnull
-    private List<Label> getLabels(boolean mutable) {
-        if (labels == null) {
-            if (mutable) {
-                labels = new ArrayList<Label>(1);
-                return labels;
-            }
-            return ImmutableList.of();
-        }
-        return labels;
-    }
-
-    @Nonnull
-    private List<BuilderDebugItem> getDebugItems(boolean mutable) {
-        if (debugItems == null) {
-            if (mutable) {
-                debugItems = new ArrayList<BuilderDebugItem>(1);
-                return debugItems;
-            }
-            return ImmutableList.of();
-        }
-        return debugItems;
-    }
-
-    void mergeInto(@Nonnull MethodLocation other) {
-        if (this.labels != null || other.labels != null) {
-            List<Label> otherLabels = other.getLabels(true);
-            for (Label label: this.getLabels(false)) {
-                label.location = other;
-                otherLabels.add(label);
-            }
-            this.labels = null;
-        }
-
-        if (this.debugItems != null || other.labels != null) {
-            // We need to keep the debug items in the same order. We add the other debug items to this list, then reassign
-            // the list.
-            List<BuilderDebugItem> debugItems = getDebugItems(true);
-            for (BuilderDebugItem debugItem: debugItems) {
-                debugItem.location = other;
-            }
-            debugItems.addAll(other.getDebugItems(false));
-            other.debugItems = debugItems;
-            this.debugItems = null;
-        }
+    void mergeInto(@Nonnull MethodLocation nextLocation) {
+        labels.mergeItemsIntoNext(nextLocation, nextLocation.labels);
+        debugItems.mergeItemsIntoNext(nextLocation, nextLocation.debugItems);
     }
 
     @Nonnull
     public Set<Label> getLabels() {
-        return new AbstractSet<Label>() {
-            @Nonnull
-            @Override public Iterator<Label> iterator() {
-                final Iterator<Label> it = getLabels(false).iterator();
-
-                return new Iterator<Label>() {
-                    private @Nullable Label currentLabel = null;
-
-                    @Override public boolean hasNext() {
-                        return it.hasNext();
-                    }
-
-                    @Override public Label next() {
-                        currentLabel = it.next();
-                        return currentLabel;
-                    }
-
-                    @Override public void remove() {
-                        if (currentLabel != null) {
-                            currentLabel.location = null;
-                        }
-                        it.remove();
-                    }
-                };
-            }
-
-            @Override public int size() {
-                return getLabels(false).size();
-            }
-
-            @Override public boolean add(@Nonnull Label label) {
-                if (label.isPlaced()) {
-                    throw new IllegalArgumentException("Cannot add a label that is already placed. You must remove " +
-                            "it from its current location first.");
-                }
-                label.location = MethodLocation.this;
-                getLabels(true).add(label);
-                return true;
-            }
-        };
+        return labels.getModifiableItems(MethodLocation.this);
     }
 
     @Nonnull
     public Label addNewLabel() {
-        Label label = new Label(this);
-        getLabels(true).add(label);
-        return label;
+        Label newLabel = new Label();
+        getLabels().add(newLabel);
+        return newLabel;
     }
 
     @Nonnull
     public Set<BuilderDebugItem> getDebugItems() {
-        return new AbstractSet<BuilderDebugItem>() {
-            @Nonnull
-            @Override public Iterator<BuilderDebugItem> iterator() {
-                final Iterator<BuilderDebugItem> it = getDebugItems(false).iterator();
-
-                return new Iterator<BuilderDebugItem>() {
-                    private @Nullable BuilderDebugItem currentDebugItem = null;
-
-                    @Override public boolean hasNext() {
-                        return it.hasNext();
-                    }
-
-                    @Override public BuilderDebugItem next() {
-                        currentDebugItem = it.next();
-                        return currentDebugItem;
-                    }
-
-                    @Override public void remove() {
-                        if (currentDebugItem != null) {
-                            currentDebugItem.location = null;
-                        }
-                        it.remove();
-                    }
-                };
-            }
-
-            @Override public int size() {
-                return getDebugItems(false).size();
-            }
-
-            @Override public boolean add(@Nonnull BuilderDebugItem debugItem) {
-                if (debugItem.location != null) {
-                    throw new IllegalArgumentException("Cannot add a debug item that has already been added to a " +
-                            "method. You must remove it from its current location first.");
-                }
-                debugItem.location = MethodLocation.this;
-                getDebugItems(true).add(debugItem);
-                return true;
-            }
-        };
+        return debugItems.getModifiableItems(MethodLocation.this);
     }
 
     public void addLineNumber(int lineNumber) {
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/builder/MutableMethodImplementation.java b/dexlib2/src/main/java/org/jf/dexlib2/builder/MutableMethodImplementation.java
index a77ae25..3e4925e 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/builder/MutableMethodImplementation.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/builder/MutableMethodImplementation.java
@@ -473,6 +473,9 @@
     private int mapCodeAddressToIndex(@Nonnull int[] codeAddressToIndex, int codeAddress) {
         int index;
         do {
+            if (codeAddress >= codeAddressToIndex.length) {
+                codeAddress = codeAddressToIndex.length - 1;
+            }
             index = codeAddressToIndex[codeAddress];
             if (index < 0) {
                 codeAddress--;
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedClassDef.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedClassDef.java
index 9159fc6..6b415fb 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedClassDef.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedClassDef.java
@@ -38,8 +38,7 @@
 import org.jf.dexlib2.dexbacked.raw.ClassDefItem;
 import org.jf.dexlib2.dexbacked.raw.TypeIdItem;
 import org.jf.dexlib2.dexbacked.util.AnnotationsDirectory;
-import org.jf.dexlib2.dexbacked.util.FixedSizeSet;
-import org.jf.dexlib2.dexbacked.util.StaticInitialValueIterator;
+import org.jf.dexlib2.dexbacked.util.EncodedArrayItemIterator;
 import org.jf.dexlib2.dexbacked.util.VariableSizeLookaheadIterator;
 import org.jf.dexlib2.iface.ClassDef;
 import org.jf.dexlib2.iface.reference.FieldReference;
@@ -163,8 +162,8 @@
                 public Iterator<DexBackedField> iterator() {
                     final AnnotationsDirectory.AnnotationIterator annotationIterator =
                             annotationsDirectory.getFieldAnnotationIterator();
-                    final StaticInitialValueIterator staticInitialValueIterator =
-                            StaticInitialValueIterator.newOrEmpty(dexFile, staticInitialValuesOffset);
+                    final EncodedArrayItemIterator staticInitialValueIterator =
+                            EncodedArrayItemIterator.newOrEmpty(dexFile, staticInitialValuesOffset);
 
                     return new VariableSizeLookaheadIterator<DexBackedField>(dexFile, fieldsStartOffset) {
                         private int count;
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedDexFile.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedDexFile.java
index fe260c5..664428b 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedDexFile.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedDexFile.java
@@ -39,6 +39,7 @@
 import org.jf.dexlib2.dexbacked.reference.DexBackedMethodReference;
 import org.jf.dexlib2.dexbacked.reference.DexBackedStringReference;
 import org.jf.dexlib2.dexbacked.reference.DexBackedTypeReference;
+import org.jf.dexlib2.dexbacked.util.FixedSizeList;
 import org.jf.dexlib2.dexbacked.util.FixedSizeSet;
 import org.jf.dexlib2.iface.DexFile;
 import org.jf.dexlib2.iface.reference.Reference;
@@ -68,14 +69,22 @@
     private final int methodStartOffset;
     private final int classCount;
     private final int classStartOffset;
+    private final int mapOffset;
 
-    protected DexBackedDexFile(@Nonnull Opcodes opcodes, @Nonnull byte[] buf, int offset, boolean verifyMagic) {
+    protected DexBackedDexFile(@Nullable Opcodes opcodes, @Nonnull byte[] buf, int offset, boolean verifyMagic) {
         super(buf, offset);
 
-        this.opcodes = opcodes;
-
+        int dexVersion;
         if (verifyMagic) {
-            DexUtil.verifyDexHeader(buf, offset);
+            dexVersion = DexUtil.verifyDexHeader(buf, offset);
+        } else {
+            dexVersion = HeaderItem.getVersion(buf, offset);
+        }
+
+        if (opcodes == null) {
+            this.opcodes = Opcodes.forDexVersion(dexVersion);
+        } else {
+            this.opcodes = opcodes;
         }
 
         stringCount = readSmallUint(HeaderItem.STRING_COUNT_OFFSET);
@@ -90,22 +99,23 @@
         methodStartOffset = readSmallUint(HeaderItem.METHOD_START_OFFSET);
         classCount = readSmallUint(HeaderItem.CLASS_COUNT_OFFSET);
         classStartOffset = readSmallUint(HeaderItem.CLASS_START_OFFSET);
+        mapOffset = readSmallUint(HeaderItem.MAP_OFFSET);
     }
 
-    public DexBackedDexFile(@Nonnull Opcodes opcodes, @Nonnull BaseDexBuffer buf) {
+    public DexBackedDexFile(@Nullable Opcodes opcodes, @Nonnull BaseDexBuffer buf) {
         this(opcodes, buf.buf, buf.baseOffset);
     }
 
-    public DexBackedDexFile(@Nonnull Opcodes opcodes, @Nonnull byte[] buf, int offset) {
+    public DexBackedDexFile(@Nullable Opcodes opcodes, @Nonnull byte[] buf, int offset) {
         this(opcodes, buf, offset, false);
     }
 
-    public DexBackedDexFile(@Nonnull Opcodes opcodes, @Nonnull byte[] buf) {
+    public DexBackedDexFile(@Nullable Opcodes opcodes, @Nonnull byte[] buf) {
         this(opcodes, buf, 0, true);
     }
 
     @Nonnull
-    public static DexBackedDexFile fromInputStream(@Nonnull Opcodes opcodes, @Nonnull InputStream is)
+    public static DexBackedDexFile fromInputStream(@Nullable Opcodes opcodes, @Nonnull InputStream is)
             throws IOException {
         DexUtil.verifyDexHeader(is);
 
@@ -186,6 +196,22 @@
         return classStartOffset + classIndex*ClassDefItem.ITEM_SIZE;
     }
 
+    public int getCallSiteIdItemOffset(int callSiteIndex) {
+        MapItem mapItem = getMapItemForSection(ItemType.CALL_SITE_ID_ITEM);
+        if (mapItem == null || callSiteIndex >= mapItem.getItemCount()) {
+            throw new InvalidItemIndex(callSiteIndex, "Call site index out of bounds: %d", callSiteIndex);
+        }
+        return mapItem.getOffset() + callSiteIndex * CallSiteIdItem.ITEM_SIZE;
+    }
+
+    public int getMethodHandleItemOffset(int methodHandleIndex) {
+        MapItem mapItem = getMapItemForSection(ItemType.METHOD_HANDLE_ITEM);
+        if (mapItem == null || methodHandleIndex >= mapItem.getItemCount()) {
+            throw new InvalidItemIndex(methodHandleIndex , "Method handle index out of bounds: %d", methodHandleIndex);
+        }
+        return mapItem.getOffset() + methodHandleIndex * MethodHandleItem.ITEM_SIZE;
+    }
+
     public int getClassCount() {
         return classCount;
     }
@@ -210,6 +236,22 @@
         return methodCount;
     }
 
+    public int getCallSiteCount() {
+        MapItem mapItem = getMapItemForSection(ItemType.CALL_SITE_ID_ITEM);
+        if (mapItem == null) {
+            return 0;
+        }
+        return mapItem.getItemCount();
+    }
+
+    public int getMethodHandleCount() {
+        MapItem mapItem = getMapItemForSection(ItemType.METHOD_HANDLE_ITEM);
+        if (mapItem == null) {
+            return 0;
+        }
+        return mapItem.getItemCount();
+    }
+
     @Nonnull
     public String getString(int stringIndex) {
         int stringOffset = getStringIdItemOffset(stringIndex);
@@ -323,6 +365,32 @@
         return new DexReader(this, offset);
     }
 
+    public List<MapItem> getMapItems() {
+        final int mapSize = readSmallUint(mapOffset);
+
+        return new FixedSizeList<MapItem>() {
+            @Override
+            public MapItem readItem(int index) {
+                int mapItemOffset = mapOffset + 4 + index * MapItem.ITEM_SIZE;
+                return new MapItem(DexBackedDexFile.this, mapItemOffset);
+            }
+
+            @Override public int size() {
+                return mapSize;
+            }
+        };
+    }
+
+    @Nullable
+    public MapItem getMapItemForSection(int itemType) {
+        for (MapItem mapItem: getMapItems()) {
+            if (mapItem.getType() == itemType) {
+                return mapItem;
+            }
+        }
+        return null;
+    }
+
     public static class NotADexFile extends RuntimeException {
         public NotADexFile() {
         }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedField.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedField.java
index 653cdbd..50dd6d2 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedField.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedField.java
@@ -35,7 +35,7 @@
 import org.jf.dexlib2.dexbacked.raw.FieldIdItem;
 import org.jf.dexlib2.dexbacked.reference.DexBackedFieldReference;
 import org.jf.dexlib2.dexbacked.util.AnnotationsDirectory;
-import org.jf.dexlib2.dexbacked.util.StaticInitialValueIterator;
+import org.jf.dexlib2.dexbacked.util.EncodedArrayItemIterator;
 import org.jf.dexlib2.dexbacked.value.DexBackedEncodedValue;
 import org.jf.dexlib2.iface.ClassDef;
 import org.jf.dexlib2.iface.Field;
@@ -62,7 +62,7 @@
     public DexBackedField(@Nonnull DexReader reader,
                           @Nonnull DexBackedClassDef classDef,
                           int previousFieldIndex,
-                          @Nonnull StaticInitialValueIterator staticInitialValueIterator,
+                          @Nonnull EncodedArrayItemIterator staticInitialValueIterator,
                           @Nonnull AnnotationsDirectory.AnnotationIterator annotationIterator) {
         this.dexFile = reader.dexBuf;
         this.classDef = classDef;
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedMethodImplementation.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedMethodImplementation.java
index cfe16aa..f30e3a4 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedMethodImplementation.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/DexBackedMethodImplementation.java
@@ -41,7 +41,7 @@
 import org.jf.dexlib2.iface.MethodImplementation;
 import org.jf.dexlib2.iface.debug.DebugItem;
 import org.jf.dexlib2.iface.instruction.Instruction;
-import org.jf.util.AlignmentUtils;
+import org.jf.dexlib2.util.AlignmentUtils;
 import org.jf.util.ExceptionWithContext;
 
 import javax.annotation.Nonnull;
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/OatFile.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/OatFile.java
index aaf942e..26d4c14 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/OatFile.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/OatFile.java
@@ -177,10 +177,6 @@
         return Arrays.asList(bcp.split(":"));
     }
 
-    @Nonnull @Override public Opcodes getOpcodes() {
-        return opcodes;
-    }
-
     @Nonnull
     public List<OatDexFile> getDexFiles() {
         return new AbstractForwardSequentialList<OatDexFile>() {
@@ -249,9 +245,15 @@
 
     private class OatHeader {
         private final int headerOffset;
+        private final int keyValueStoreOffset;
 
         public OatHeader(int offset) {
             this.headerOffset = offset;
+            if (getVersion() >= 127) {
+                this.keyValueStoreOffset = 19 * 4;
+            } else {
+                this.keyValueStoreOffset = 18 * 4;
+            }
         }
 
         public boolean isValid() {
@@ -282,7 +284,7 @@
             if (getVersion() < MIN_OAT_VERSION) {
                 throw new IllegalStateException("Unsupported oat version");
             }
-            int fieldOffset = 17 * 4;
+            int fieldOffset = keyValueStoreOffset - 4;
             return readSmallUint(headerOffset + fieldOffset);
         }
 
@@ -290,14 +292,14 @@
             if (getVersion() < MIN_OAT_VERSION) {
                 throw new IllegalStateException("Unsupported oat version");
             }
-            return 18*4 + getKeyValueStoreSize();
+            return keyValueStoreOffset + getKeyValueStoreSize();
         }
 
         @Nullable
         public String getKeyValue(@Nonnull String key) {
             int size = getKeyValueStoreSize();
 
-            int offset = headerOffset + 18 * 4;
+            int offset = headerOffset + keyValueStoreOffset;
             int endOffset = offset + size;
 
             while (offset < endOffset) {
@@ -328,7 +330,11 @@
         }
 
         public int getDexListStart() {
-            return headerOffset + getHeaderSize();
+            if (getVersion() >= 127) {
+                return headerOffset + readSmallUint(headerOffset + (6 * 4));
+            } else {
+                return headerOffset + getHeaderSize();
+            }
         }
     }
 
@@ -602,6 +608,12 @@
             if (getOatVersion() >= 73) {
                 offset += 4; // lookup table offset
             }
+            if (getOatVersion() >= 131) {
+                offset += 4; // dex sections layout offset
+            }
+            if (getOatVersion() >= 127) {
+                offset += 4; // method bss mapping offset
+            }
             if (getOatVersion() < 75) {
                 // prior to 75, the class offsets are included here directly
                 int classCount = readSmallUint(dexOffset + HeaderItem.CLASS_COUNT_OFFSET);
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/ZipDexContainer.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/ZipDexContainer.java
index 50052c2..5bd30dd 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/ZipDexContainer.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/ZipDexContainer.java
@@ -58,23 +58,18 @@
 public class ZipDexContainer implements MultiDexContainer<ZipDexFile> {
 
     private final File zipFilePath;
-    private final Opcodes opcodes;
+    @Nullable private final Opcodes opcodes;
 
     /**
      * Constructs a new ZipDexContainer for the given zip file
      *
      * @param zipFilePath The path to the zip file
-     * @param opcodes The Opcodes instance to use when loading dex files from this container
      */
-    public ZipDexContainer(@Nonnull File zipFilePath, @Nonnull Opcodes opcodes) {
+    public ZipDexContainer(@Nonnull File zipFilePath, @Nullable Opcodes opcodes) {
         this.zipFilePath = zipFilePath;
         this.opcodes = opcodes;
     }
 
-    @Nonnull @Override public Opcodes getOpcodes() {
-        return opcodes;
-    }
-
     /**
      * Gets a list of the names of dex files in this zip file.
      *
@@ -147,7 +142,7 @@
 
         private final String entryName;
 
-        protected ZipDexFile(@Nonnull Opcodes opcodes, @Nonnull byte[] buf, @Nonnull String entryName) {
+        protected ZipDexFile(@Nullable Opcodes opcodes, @Nonnull byte[] buf, @Nonnull String entryName) {
             super(opcodes, buf, 0);
             this.entryName = entryName;
         }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/instruction/DexBackedInstruction45cc.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/instruction/DexBackedInstruction45cc.java
index bbdc229..2cb023f 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/instruction/DexBackedInstruction45cc.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/instruction/DexBackedInstruction45cc.java
@@ -91,7 +91,7 @@
     @Override
     public Reference getReference2() {
         return DexBackedReference.makeReference(dexFile, opcode.referenceType2,
-                dexFile.readUshort(instructionStart + 3));
+                dexFile.readUshort(instructionStart + 6));
     }
 
     @Override
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/instruction/DexBackedInstruction4rcc.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/instruction/DexBackedInstruction4rcc.java
index 629e753..f1cae64 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/instruction/DexBackedInstruction4rcc.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/instruction/DexBackedInstruction4rcc.java
@@ -70,7 +70,7 @@
     @Override
     public Reference getReference2() {
         return DexBackedReference.makeReference(dexFile, opcode.referenceType2,
-                dexFile.readUshort(instructionStart + 3));
+                dexFile.readUshort(instructionStart + 6));
     }
 
     @Override
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/CallSiteIdItem.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/CallSiteIdItem.java
new file mode 100644
index 0000000..784fe0f
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/CallSiteIdItem.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.dexbacked.raw;
+
+import org.jf.dexlib2.dexbacked.DexReader;
+import org.jf.dexlib2.dexbacked.raw.util.DexAnnotator;
+import org.jf.dexlib2.dexbacked.value.DexBackedArrayEncodedValue;
+import org.jf.dexlib2.util.AnnotatedBytes;
+import org.jf.dexlib2.util.EncodedValueUtils;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import java.io.IOException;
+import java.io.StringWriter;
+
+public class CallSiteIdItem {
+    public static final int ITEM_SIZE = 4;
+
+    @Nonnull
+    public static SectionAnnotator makeAnnotator(@Nonnull DexAnnotator annotator, @Nonnull MapItem mapItem) {
+        return new SectionAnnotator(annotator, mapItem) {
+            @Nonnull @Override public String getItemName() {
+                return "call_site_id_item";
+            }
+
+            @Override
+            protected void annotateItem(@Nonnull AnnotatedBytes out, int itemIndex, @Nullable String itemIdentity) {
+                int callSiteOffset = dexFile.readSmallUint(out.getCursor());
+
+                StringWriter writer = new StringWriter();
+                try {
+                    EncodedValueUtils.writeEncodedValue(writer,
+                            new DexBackedArrayEncodedValue(new DexReader(dexFile, callSiteOffset)));
+                } catch (IOException ex) {
+                    // Shouldn't get an IOException from a StringWriter..
+                    throw new RuntimeException(ex);
+                }
+
+                out.annotate(4, "call_site_id_item[0x%x] = %s", callSiteOffset, writer.toString());
+            }
+        };
+    }
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/EncodedValue.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/EncodedValue.java
index 29851c4..e484251 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/EncodedValue.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/EncodedValue.java
@@ -31,11 +31,15 @@
 
 package org.jf.dexlib2.dexbacked.raw;
 
+import org.jf.dexlib2.ValueType;
 import org.jf.dexlib2.dexbacked.DexReader;
+import org.jf.dexlib2.dexbacked.value.DexBackedEncodedValue;
 import org.jf.dexlib2.util.AnnotatedBytes;
-import org.jf.util.ExceptionWithContext;
+import org.jf.dexlib2.util.EncodedValueUtils;
 
 import javax.annotation.Nonnull;
+import java.io.IOException;
+import java.io.StringWriter;
 
 public class EncodedValue {
     public static void annotateEncodedValue(@Nonnull AnnotatedBytes out, @Nonnull DexReader reader) {
@@ -45,84 +49,42 @@
         int valueType = valueArgType & 0x1f;
 
         switch (valueType) {
-            case 0x00:
-                out.annotate(1, "valueArg = %d, valueType = 0x%x: byte", valueArg, valueType);
-                int intValue = reader.readByte();
-                out.annotate(1, "value = 0x%x", intValue);
+            case ValueType.BYTE:
+            case ValueType.SHORT:
+            case ValueType.CHAR:
+            case ValueType.INT:
+            case ValueType.LONG:
+            case ValueType.FLOAT:
+            case ValueType.DOUBLE:
+            case ValueType.METHOD_TYPE:
+            case ValueType.METHOD_HANDLE:
+            case ValueType.STRING:
+            case ValueType.TYPE:
+            case ValueType.FIELD:
+            case ValueType.METHOD:
+            case ValueType.ENUM:
+                out.annotate(1, "valueArg = %d, valueType = 0x%x: %s", valueArg, valueType,
+                        ValueType.getValueTypeName(valueType));
+                reader.setOffset(reader.getOffset() - 1);
+                out.annotate(valueArg + 1, "value = %s", asString(reader));
                 break;
-            case 0x02:
-                out.annotate(1, "valueArg = %d, valueType = 0x%x: short", valueArg, valueType);
-                intValue = reader.readSizedInt(valueArg+1);
-                out.annotate(valueArg + 1, "value = 0x%x", intValue);
-                break;
-            case 0x03:
-                out.annotate(1, "valueArg = %d, valueType = 0x%x: char", valueArg, valueType);
-                intValue = reader.readSizedSmallUint(valueArg+1);
-                out.annotate(valueArg+1, "value = 0x%x", intValue);
-                break;
-            case 0x04:
-                out.annotate(1, "valueArg = %d, valueType = 0x%x: int", valueArg, valueType);
-                intValue = reader.readSizedInt(valueArg+1);
-                out.annotate(valueArg+1, "value = 0x%x", intValue);
-                break;
-            case 0x06:
-                out.annotate(1, "valueArg = %d, valueType = 0x%x: long", valueArg, valueType);
-                long longValue = reader.readSizedLong(valueArg+1);
-                out.annotate(valueArg+1, "value = 0x%x", longValue);
-                break;
-            case 0x10:
-                out.annotate(1, "valueArg = %d, valueType = 0x%x: float", valueArg, valueType);
-                float floatValue = Float.intBitsToFloat(reader.readSizedRightExtendedInt(valueArg + 1));
-                out.annotate(valueArg+1, "value = %f", floatValue);
-                break;
-            case 0x11:
-                out.annotate(1, "valueArg = %d, valueType = 0x%x: double", valueArg, valueType);
-                double doubleValue = Double.longBitsToDouble(reader.readSizedRightExtendedLong(valueArg + 1));
-                out.annotate(valueArg+1, "value = %f", doubleValue);
-                break;
-            case 0x17:
-                out.annotate(1, "valueArg = %d, valueType = 0x%x: string", valueArg, valueType);
-                int stringIndex = reader.readSizedSmallUint(valueArg + 1);
-                out.annotate(valueArg+1, "value = %s",
-                        StringIdItem.getReferenceAnnotation(reader.dexBuf, stringIndex, true));
-                break;
-            case 0x18:
-                out.annotate(1, "valueArg = %d, valueType = 0x%x: type", valueArg, valueType);
-                int typeIndex = reader.readSizedSmallUint(valueArg+1);
-                out.annotate(valueArg+1, "value = %s", TypeIdItem.getReferenceAnnotation(reader.dexBuf, typeIndex));
-                break;
-            case 0x19:
-                out.annotate(1, "valueArg = %d, valueType = 0x%x: field", valueArg, valueType);
-                int fieldIndex = reader.readSizedSmallUint(valueArg+1);
-                out.annotate(valueArg+1, "value = %s", FieldIdItem.getReferenceAnnotation(reader.dexBuf, fieldIndex));
-                break;
-            case 0x1a:
-                out.annotate(1, "valueArg = %d, valueType = 0x%x: method", valueArg, valueType);
-                int methodIndex = reader.readSizedSmallUint(valueArg+1);
-                out.annotate(valueArg+1, "value = %s", MethodIdItem.getReferenceAnnotation(reader.dexBuf, methodIndex));
-                break;
-            case 0x1b:
-                out.annotate(1, "valueArg = %d, valueType = 0x%x: enum", valueArg, valueType);
-                fieldIndex = reader.readSizedSmallUint(valueArg+1);
-                out.annotate(valueArg+1, "value = %s", FieldIdItem.getReferenceAnnotation(reader.dexBuf, fieldIndex));
-                break;
-            case 0x1c:
+            case ValueType.ARRAY:
                 out.annotate(1, "valueArg = %d, valueType = 0x%x: array", valueArg, valueType);
                 annotateEncodedArray(out, reader);
                 break;
-            case 0x1d:
+            case ValueType.ANNOTATION:
                 out.annotate(1, "valueArg = %d, valueType = 0x%x: annotation", valueArg, valueType);
                 annotateEncodedAnnotation(out, reader);
                 break;
-            case 0x1e:
+            case ValueType.NULL:
                 out.annotate(1, "valueArg = %d, valueType = 0x%x: null", valueArg, valueType);
                 break;
-            case 0x1f:
+            case ValueType.BOOLEAN:
                 out.annotate(1, "valueArg = %d, valueType = 0x%x: boolean, value=%s", valueArg, valueType, valueArg==1);
                 break;
             default:
-                throw new ExceptionWithContext("Invalid encoded value type 0x%x at offset 0x%x", valueType,
-                        out.getCursor());
+                throw new IllegalArgumentException(String.format("Invalid encoded value type 0x%x at offset 0x%x", valueType,
+                        reader.getOffset()));
         }
     }
 
@@ -164,4 +126,72 @@
             out.deindent();
         }
     }
+
+    public static String asString(@Nonnull DexReader reader) {
+        int valueArgType = reader.readUbyte();
+
+        int valueArg = valueArgType >>> 5;
+        int valueType = valueArgType & 0x1f;
+
+        switch (valueType) {
+            case ValueType.BYTE:
+                int intValue = reader.readByte();
+                return String.format("0x%x", intValue);
+            case ValueType.SHORT:
+                intValue = reader.readSizedInt(valueArg+1);
+                return String.format("0x%x", intValue);
+            case ValueType.CHAR:
+                intValue = reader.readSizedSmallUint(valueArg+1);
+                return String.format("0x%x", intValue);
+            case ValueType.INT:
+                intValue = reader.readSizedInt(valueArg+1);
+                return String.format("0x%x", intValue);
+            case ValueType.LONG:
+                long longValue = reader.readSizedLong(valueArg+1);
+                return String.format("0x%x", longValue);
+            case ValueType.FLOAT:
+                float floatValue = Float.intBitsToFloat(reader.readSizedRightExtendedInt(valueArg + 1));
+                return String.format("%f", floatValue);
+            case ValueType.DOUBLE:
+                double doubleValue = Double.longBitsToDouble(reader.readSizedRightExtendedLong(valueArg + 1));
+                return String.format("%f", doubleValue);
+            case ValueType.METHOD_TYPE:
+                int protoIndex = reader.readSizedSmallUint(valueArg + 1);
+                return ProtoIdItem.getReferenceAnnotation(reader.dexBuf, protoIndex);
+            case ValueType.STRING:
+                int stringIndex = reader.readSizedSmallUint(valueArg + 1);
+                return StringIdItem.getReferenceAnnotation(reader.dexBuf, stringIndex, true);
+            case ValueType.TYPE:
+                int typeIndex = reader.readSizedSmallUint(valueArg+1);
+                return TypeIdItem.getReferenceAnnotation(reader.dexBuf, typeIndex);
+            case ValueType.FIELD:
+                int fieldIndex = reader.readSizedSmallUint(valueArg+1);
+                return FieldIdItem.getReferenceAnnotation(reader.dexBuf, fieldIndex);
+            case ValueType.METHOD:
+                int methodIndex = reader.readSizedSmallUint(valueArg+1);
+                return MethodIdItem.getReferenceAnnotation(reader.dexBuf, methodIndex);
+            case ValueType.ENUM:
+                fieldIndex = reader.readSizedSmallUint(valueArg+1);
+                return FieldIdItem.getReferenceAnnotation(reader.dexBuf, fieldIndex);
+            case ValueType.ARRAY:
+            case ValueType.ANNOTATION:
+            case ValueType.METHOD_HANDLE:
+                StringWriter writer = new StringWriter();
+                reader.setOffset(reader.getOffset() - 1);
+                try {
+                    EncodedValueUtils.writeEncodedValue(writer, DexBackedEncodedValue.readFrom(reader));
+                } catch (IOException ex) {
+                    // Shouldn't happen with a StringWriter...
+                    throw new RuntimeException(ex);
+                }
+                return writer.toString();
+            case ValueType.NULL:
+                return "null";
+            case ValueType.BOOLEAN:
+                return Boolean.toString(valueArg == 1);
+            default:
+                throw new IllegalArgumentException(String.format("Invalid encoded value type 0x%x at offset 0x%x",
+                        valueType, reader.getOffset()));
+        }
+    }
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/HeaderItem.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/HeaderItem.java
index e8db969..619357a 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/HeaderItem.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/HeaderItem.java
@@ -31,6 +31,7 @@
 
 package org.jf.dexlib2.dexbacked.raw;
 
+import org.jf.dexlib2.VersionMap;
 import org.jf.dexlib2.dexbacked.BaseDexBuffer;
 import org.jf.dexlib2.dexbacked.raw.util.DexAnnotator;
 import org.jf.dexlib2.util.AnnotatedBytes;
@@ -43,7 +44,6 @@
     public static final int ITEM_SIZE = 0x70;
 
     private static final byte[] MAGIC_VALUE = new byte[] { 0x64, 0x65, 0x78, 0x0a, 0x00, 0x00, 0x00, 0x00 };
-    private static final int[] SUPPORTED_DEX_VERSIONS = new int[] { 35, 37, 38 };
 
     public static final int LITTLE_ENDIAN_TAG = 0x12345678;
     public static final int BIG_ENDIAN_TAG = 0x78563412;
@@ -229,16 +229,7 @@
      * @return The dex file magic number
      */
     public static byte[] getMagicForApi(int api) {
-        if (api < 24) {
-            // Prior to Android N we only support dex version 035.
-            return getMagicForDexVersion(35);
-        } else if (api < 26) {
-            // On android N and later we support dex version 037.
-            return getMagicForDexVersion(37);
-        } else {
-            // On android O and later we support dex version 038.
-            return getMagicForDexVersion(38);
-        }
+        return getMagicForDexVersion(VersionMap.mapApiToDexVersion(api));
     }
 
     public static byte[] getMagicForDexVersion(int dexVersion) {
@@ -272,8 +263,8 @@
         for (int i=0; i<4; i++) {
             if (buf[offset + i] != MAGIC_VALUE[i]) {
                 return false;
-                }
             }
+        }
         for (int i=4; i<7; i++) {
             if (buf[offset + i] < '0' ||
                     buf[offset + i] > '9') {
@@ -282,7 +273,7 @@
         }
         if (buf[offset + 7] != MAGIC_VALUE[7]) {
             return false;
-    }
+        }
 
         return true;
     }
@@ -311,12 +302,7 @@
     }
 
     public static boolean isSupportedDexVersion(int version) {
-        for (int i=0; i<SUPPORTED_DEX_VERSIONS.length; i++) {
-            if (SUPPORTED_DEX_VERSIONS[i] == version) {
-                return true;
-            }
-        }
-        return false;
+        return VersionMap.mapDexVersionToApi(version) != VersionMap.NO_VERSION;
     }
 
     public static int getEndian(byte[] buf, int offset) {
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/ItemType.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/ItemType.java
index c7c8ed3..99564a3 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/ItemType.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/ItemType.java
@@ -41,6 +41,8 @@
     public static final int FIELD_ID_ITEM = 0x0004;
     public static final int METHOD_ID_ITEM = 0x0005;
     public static final int CLASS_DEF_ITEM = 0x0006;
+    public static final int CALL_SITE_ID_ITEM = 0x0007;
+    public static final int METHOD_HANDLE_ITEM = 0x0008;
     public static final int MAP_LIST = 0x1000;
     public static final int TYPE_LIST = 0x1001;
     public static final int ANNOTATION_SET_REF_LIST = 0x1002;
@@ -63,6 +65,8 @@
             case FIELD_ID_ITEM: return "field_id_item";
             case METHOD_ID_ITEM: return "method_id_item";
             case CLASS_DEF_ITEM: return "class_def_item";
+            case CALL_SITE_ID_ITEM: return "call_site_id_item";
+            case METHOD_HANDLE_ITEM: return "method_handle_item";
             case MAP_LIST: return "map_list";
             case TYPE_LIST: return "type_list";
             case ANNOTATION_SET_REF_LIST: return "annotation_set_ref_list";
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/MethodHandleItem.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/MethodHandleItem.java
new file mode 100644
index 0000000..eced8e2
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/MethodHandleItem.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.dexbacked.raw;
+
+import org.jf.dexlib2.MethodHandleType;
+import org.jf.dexlib2.dexbacked.raw.util.DexAnnotator;
+import org.jf.dexlib2.util.AnnotatedBytes;
+import org.jf.util.ExceptionWithContext;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
+public class MethodHandleItem {
+    public static final int ITEM_SIZE = 8;
+
+    public static final int METHOD_HANDLE_TYPE_OFFSET = 0;
+    public static final int MEMBER_ID_OFFSET = 4;
+
+    @Nonnull
+    public static SectionAnnotator makeAnnotator(@Nonnull DexAnnotator annotator, @Nonnull MapItem mapItem) {
+        return new SectionAnnotator(annotator, mapItem) {
+            @Nonnull @Override public String getItemName() {
+                return "method_handle_item";
+            }
+
+            @Override
+            protected void annotateItem(@Nonnull AnnotatedBytes out, int itemIndex, @Nullable String itemIdentity) {
+                int methodHandleType = dexFile.readUshort(out.getCursor());
+                out.annotate(2, "type = %s", MethodHandleType.toString(methodHandleType));
+                out.annotate(2, "unused");
+
+                int fieldOrMethodId = dexFile.readUshort(out.getCursor());
+                String fieldOrMethodDescriptor;
+                switch (methodHandleType) {
+                    case MethodHandleType.STATIC_PUT:
+                    case MethodHandleType.STATIC_GET:
+                    case MethodHandleType.INSTANCE_PUT:
+                    case MethodHandleType.INSTANCE_GET:
+                        fieldOrMethodDescriptor = FieldIdItem.getReferenceAnnotation(dexFile, fieldOrMethodId);
+                        break;
+                    case MethodHandleType.INVOKE_STATIC:
+                    case MethodHandleType.INVOKE_INSTANCE:
+                    case MethodHandleType.INVOKE_CONSTRUCTOR:
+                    case MethodHandleType.INVOKE_DIRECT:
+                    case MethodHandleType.INVOKE_INTERFACE:
+                        fieldOrMethodDescriptor = MethodIdItem.getReferenceAnnotation(dexFile, fieldOrMethodId);
+                        break;
+                    default:
+                        throw new ExceptionWithContext("Invalid method handle type: %d", methodHandleType);
+                }
+
+                out.annotate(2, "field_or_method_id = %s", fieldOrMethodDescriptor);
+                out.annotate(2, "unused");
+            }
+        };
+    }
+
+
+
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/RawDexFile.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/RawDexFile.java
index 204a29d..3357063 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/RawDexFile.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/RawDexFile.java
@@ -34,15 +34,12 @@
 import org.jf.dexlib2.Opcodes;
 import org.jf.dexlib2.dexbacked.BaseDexBuffer;
 import org.jf.dexlib2.dexbacked.DexBackedDexFile;
-import org.jf.dexlib2.dexbacked.util.FixedSizeList;
 import org.jf.dexlib2.util.AnnotatedBytes;
 
 import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
 import java.io.IOException;
 import java.io.Writer;
 import java.util.Arrays;
-import java.util.List;
 
 public class RawDexFile extends DexBackedDexFile {
     @Nonnull public final HeaderItem headerItem;
@@ -62,37 +59,6 @@
         return Arrays.copyOfRange(getBuf(), getBaseOffset() + start, getBaseOffset() + start + length);
     }
 
-    public int getMapOffset() {
-        return headerItem.getMapOffset();
-    }
-
-    @Nullable
-    public MapItem getMapItemForSection(int itemType) {
-        for (MapItem mapItem: getMapItems()) {
-            if (mapItem.getType() == itemType) {
-                return mapItem;
-            }
-        }
-        return null;
-    }
-
-    public List<MapItem> getMapItems() {
-        final int mapOffset = getMapOffset();
-        final int mapSize = readSmallUint(mapOffset);
-
-        return new FixedSizeList<MapItem>() {
-            @Override
-            public MapItem readItem(int index) {
-                int mapItemOffset = mapOffset + 4 + index * MapItem.ITEM_SIZE;
-                return new MapItem(RawDexFile.this, mapItemOffset);
-            }
-
-            @Override public int size() {
-                return mapSize;
-            }
-        };
-    }
-
     public void writeAnnotations(@Nonnull Writer out, @Nonnull AnnotatedBytes annotatedBytes) throws IOException {
         // TODO: need to pass in the offset
         annotatedBytes.writeAnnotations(out, getBuf());
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/SectionAnnotator.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/SectionAnnotator.java
index 5378845..e8da146 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/SectionAnnotator.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/SectionAnnotator.java
@@ -34,7 +34,7 @@
 import com.google.common.collect.Maps;
 import org.jf.dexlib2.dexbacked.raw.util.DexAnnotator;
 import org.jf.dexlib2.util.AnnotatedBytes;
-import org.jf.util.AlignmentUtils;
+import org.jf.dexlib2.util.AlignmentUtils;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/util/DexAnnotator.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/util/DexAnnotator.java
index c2e0c9c..9ce2226 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/util/DexAnnotator.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/raw/util/DexAnnotator.java
@@ -61,6 +61,8 @@
                 ItemType.PROTO_ID_ITEM,
                 ItemType.FIELD_ID_ITEM,
                 ItemType.METHOD_ID_ITEM,
+                ItemType.CALL_SITE_ID_ITEM,
+                ItemType.METHOD_HANDLE_ITEM,
 
                 // these need to be ordered like this, so the item identities can be propagated
                 ItemType.CLASS_DEF_ITEM,
@@ -143,6 +145,12 @@
                 case ItemType.ANNOTATION_DIRECTORY_ITEM:
                     annotators.put(mapItem.getType(), AnnotationDirectoryItem.makeAnnotator(this, mapItem));
                     break;
+                case ItemType.CALL_SITE_ID_ITEM:
+                    annotators.put(mapItem.getType(), CallSiteIdItem.makeAnnotator(this, mapItem));
+                    break;
+                case ItemType.METHOD_HANDLE_ITEM:
+                    annotators.put(mapItem.getType(), MethodHandleItem.makeAnnotator(this, mapItem));
+                    break;
                 default:
                     throw new RuntimeException(String.format("Unrecognized item type: 0x%x", mapItem.getType()));
             }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/reference/DexBackedCallSiteReference.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/reference/DexBackedCallSiteReference.java
new file mode 100644
index 0000000..9e825d6
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/reference/DexBackedCallSiteReference.java
@@ -0,0 +1,160 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.dexbacked.reference;
+
+import com.google.common.collect.Lists;
+import org.jf.dexlib2.ValueType;
+import org.jf.dexlib2.base.reference.BaseCallSiteReference;
+import org.jf.dexlib2.dexbacked.DexBackedDexFile;
+import org.jf.dexlib2.dexbacked.util.EncodedArrayItemIterator;
+import org.jf.dexlib2.iface.reference.MethodHandleReference;
+import org.jf.dexlib2.iface.reference.MethodProtoReference;
+import org.jf.dexlib2.iface.value.EncodedValue;
+import org.jf.dexlib2.iface.value.MethodHandleEncodedValue;
+import org.jf.dexlib2.iface.value.MethodTypeEncodedValue;
+import org.jf.dexlib2.iface.value.StringEncodedValue;
+import org.jf.util.ExceptionWithContext;
+
+import javax.annotation.Nonnull;
+import java.util.List;
+
+public class DexBackedCallSiteReference extends BaseCallSiteReference {
+    @Nonnull public final DexBackedDexFile dexFile;
+    public final int callSiteIndex;
+    public final int callSiteIdOffset;
+    private int callSiteOffset = -1;
+
+    public DexBackedCallSiteReference(DexBackedDexFile dexFile, int callSiteIndex) {
+        this.dexFile = dexFile;
+        this.callSiteIndex = callSiteIndex;
+        this.callSiteIdOffset = dexFile.getCallSiteIdItemOffset(callSiteIndex);
+    }
+
+    @Nonnull
+    @Override
+    public String getName() {
+        return String.format("call_site_%d", callSiteIndex);
+    }
+
+    @Nonnull
+    @Override
+    public MethodHandleReference getMethodHandle() {
+        EncodedArrayItemIterator iter = getCallSiteIterator();
+        if (iter.getItemCount() < 3) {
+            throw new ExceptionWithContext("Invalid call site item: must contain at least 3 entries.");
+        }
+
+        EncodedValue encodedValue = getCallSiteIterator().getNextOrNull();
+        assert encodedValue != null;
+        if (encodedValue.getValueType() != ValueType.METHOD_HANDLE) {
+            throw new ExceptionWithContext(
+                    "Invalid encoded value type (%d) for the first item in call site %d",
+                    encodedValue.getValueType(), callSiteIndex);
+        }
+        return ((MethodHandleEncodedValue) encodedValue).getValue();
+    }
+
+    @Nonnull
+    @Override
+    public String getMethodName() {
+        EncodedArrayItemIterator iter = getCallSiteIterator();
+        if (iter.getItemCount() < 3) {
+            throw new ExceptionWithContext("Invalid call site item: must contain at least 3 entries.");
+        }
+
+        iter.skipNext();
+        EncodedValue encodedValue = iter.getNextOrNull();
+        assert encodedValue != null;
+        if (encodedValue.getValueType() != ValueType.STRING) {
+            throw new ExceptionWithContext(
+                    "Invalid encoded value type (%d) for the second item in call site %d",
+                    encodedValue.getValueType(), callSiteIndex);
+        }
+        return ((StringEncodedValue) encodedValue).getValue();
+    }
+
+    @Nonnull
+    @Override
+    public MethodProtoReference getMethodProto() {
+        EncodedArrayItemIterator iter = getCallSiteIterator();
+        if (iter.getItemCount() < 3) {
+            throw new ExceptionWithContext("Invalid call site item: must contain at least 3 entries.");
+        }
+
+        iter.skipNext();
+        iter.skipNext();
+        EncodedValue encodedValue = iter.getNextOrNull();
+        assert encodedValue != null;
+        if (encodedValue.getValueType() != ValueType.METHOD_TYPE) {
+            throw new ExceptionWithContext(
+                    "Invalid encoded value type (%d) for the second item in call site %d",
+                    encodedValue.getValueType(), callSiteIndex);
+        }
+        return ((MethodTypeEncodedValue) encodedValue).getValue();
+    }
+
+    @Nonnull
+    @Override
+    public List<? extends EncodedValue> getExtraArguments() {
+        List<EncodedValue> values = Lists.newArrayList();
+
+        EncodedArrayItemIterator iter = getCallSiteIterator();
+        if (iter.getItemCount() < 3) {
+            throw new ExceptionWithContext("Invalid call site item: must contain at least 3 entries.");
+        }
+        if (iter.getItemCount() == 3) {
+            return values;
+        }
+
+        iter.skipNext();
+        iter.skipNext();
+        iter.skipNext();
+
+        EncodedValue item = iter.getNextOrNull();
+        while (item != null) {
+            values.add(item);
+            item = iter.getNextOrNull();
+        }
+        return values;
+    }
+
+    private EncodedArrayItemIterator getCallSiteIterator() {
+        return EncodedArrayItemIterator.newOrEmpty(dexFile, getCallSiteOffset());
+    }
+
+    private int getCallSiteOffset() {
+        if (callSiteOffset < 0) {
+            callSiteOffset = dexFile.readSmallUint(callSiteIdOffset);
+        }
+        return callSiteOffset;
+    }
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/reference/DexBackedMethodHandleReference.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/reference/DexBackedMethodHandleReference.java
new file mode 100644
index 0000000..11bb33b
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/reference/DexBackedMethodHandleReference.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.dexbacked.reference;
+
+import org.jf.dexlib2.MethodHandleType;
+import org.jf.dexlib2.base.reference.BaseMethodHandleReference;
+import org.jf.dexlib2.dexbacked.DexBackedDexFile;
+import org.jf.dexlib2.dexbacked.raw.MethodHandleItem;
+import org.jf.dexlib2.iface.reference.Reference;
+import org.jf.util.ExceptionWithContext;
+
+import javax.annotation.Nonnull;
+
+public class DexBackedMethodHandleReference extends BaseMethodHandleReference {
+    @Nonnull public final DexBackedDexFile dexFile;
+    public final int methodHandleIndex;
+    public final int methodHandleOffset;
+
+    public DexBackedMethodHandleReference(DexBackedDexFile dexFile, int methodHandleIndex) {
+        this.dexFile = dexFile;
+        this.methodHandleIndex = methodHandleIndex;
+        this.methodHandleOffset = dexFile.getMethodHandleItemOffset(methodHandleIndex);
+    }
+
+    @Override
+    public int getMethodHandleType() {
+        return dexFile.readUshort(methodHandleOffset + MethodHandleItem.METHOD_HANDLE_TYPE_OFFSET);
+    }
+
+    @Nonnull
+    @Override
+    public Reference getMemberReference() {
+        int memberIndex = dexFile.readUshort(methodHandleOffset + MethodHandleItem.MEMBER_ID_OFFSET);
+        switch (getMethodHandleType()) {
+            case MethodHandleType.STATIC_PUT:
+            case MethodHandleType.STATIC_GET:
+            case MethodHandleType.INSTANCE_PUT:
+            case MethodHandleType.INSTANCE_GET:
+                return new DexBackedFieldReference(dexFile, memberIndex);
+            case MethodHandleType.INVOKE_STATIC:
+            case MethodHandleType.INVOKE_INSTANCE:
+            case MethodHandleType.INVOKE_CONSTRUCTOR:
+            case MethodHandleType.INVOKE_DIRECT:
+            case MethodHandleType.INVOKE_INTERFACE:
+                return new DexBackedMethodReference(dexFile, memberIndex);
+            default:
+                throw new ExceptionWithContext("Invalid method handle type: %d", getMethodHandleType());
+        }
+    }
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/reference/DexBackedMethodReference.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/reference/DexBackedMethodReference.java
index f2b0b59..bee08f8 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/reference/DexBackedMethodReference.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/reference/DexBackedMethodReference.java
@@ -102,15 +102,11 @@
     /**
      * Calculate and return the private size of a method reference.
      *
-     * Calculated as: class_idx + proto_idx + name_idx + prototype size
+     * Calculated as: class_idx + proto_idx + name_idx
      *
      * @return size in bytes
      */
     public int getSize() {
-        int size = MethodIdItem.ITEM_SIZE; //ushort + ushort + uint for indices
-        DexBackedMethodProtoReference protoRef = new DexBackedMethodProtoReference(dexFile,
-            dexFile.readUshort(methodIdItemOffset + MethodIdItem.PROTO_OFFSET));
-        size += protoRef.getSize();
-        return size;
+        return MethodIdItem.ITEM_SIZE; //ushort + ushort + uint for indices
     }
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/reference/DexBackedReference.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/reference/DexBackedReference.java
index 99d66ecd..9da2830 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/reference/DexBackedReference.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/reference/DexBackedReference.java
@@ -51,6 +51,10 @@
                 return new DexBackedFieldReference(dexFile, referenceIndex);
             case ReferenceType.METHOD_PROTO:
                 return new DexBackedMethodProtoReference(dexFile, referenceIndex);
+            case ReferenceType.METHOD_HANDLE:
+                return new DexBackedMethodHandleReference(dexFile, referenceIndex);
+            case ReferenceType.CALL_SITE:
+                return new DexBackedCallSiteReference(dexFile, referenceIndex);
             default:
                 throw new ExceptionWithContext("Invalid reference type: %d", referenceType);
         }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/StaticInitialValueIterator.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/EncodedArrayItemIterator.java
similarity index 80%
rename from dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/StaticInitialValueIterator.java
rename to dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/EncodedArrayItemIterator.java
index f17b938..ac18b6d 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/StaticInitialValueIterator.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/util/EncodedArrayItemIterator.java
@@ -39,31 +39,33 @@
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-public abstract class StaticInitialValueIterator {
-    public static final StaticInitialValueIterator EMPTY = new StaticInitialValueIterator() {
+public abstract class EncodedArrayItemIterator {
+    public static final EncodedArrayItemIterator EMPTY = new EncodedArrayItemIterator() {
         @Nullable @Override public EncodedValue getNextOrNull() { return null; }
         @Override public void skipNext() {}
         @Override public int getReaderOffset() { return 0; }
+        @Override public int getItemCount() { return 0; }
     };
 
     @Nullable public abstract EncodedValue getNextOrNull();
     public abstract void skipNext();
     public abstract int getReaderOffset();
+    public abstract int getItemCount();
 
     @Nonnull
-    public static StaticInitialValueIterator newOrEmpty(@Nonnull DexBackedDexFile dexFile, int offset) {
+    public static EncodedArrayItemIterator newOrEmpty(@Nonnull DexBackedDexFile dexFile, int offset) {
         if (offset == 0) {
             return EMPTY;
         }
-        return new StaticInitialValueIteratorImpl(dexFile, offset);
+        return new EncodedArrayItemIteratorImpl(dexFile, offset);
     }
 
-    private static class StaticInitialValueIteratorImpl extends StaticInitialValueIterator {
+    private static class EncodedArrayItemIteratorImpl extends EncodedArrayItemIterator {
         @Nonnull private final DexReader reader;
         private final int size;
         private int index = 0;
 
-        public StaticInitialValueIteratorImpl(@Nonnull DexBackedDexFile dexFile, int offset) {
+        public EncodedArrayItemIteratorImpl(@Nonnull DexBackedDexFile dexFile, int offset) {
             this.reader = dexFile.readerAt(offset);
             this.size = reader.readSmallUleb128();
         }
@@ -77,6 +79,7 @@
             return null;
         }
 
+        @Override
         public void skipNext() {
             if (index < size) {
                 index++;
@@ -84,8 +87,14 @@
             }
         }
 
+        @Override
         public int getReaderOffset() {
             return reader.getOffset();
         }
+
+        @Override
+        public int getItemCount() {
+            return size;
+        }
     }
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/value/DexBackedEncodedValue.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/value/DexBackedEncodedValue.java
index 1e89781..1f2b3e0 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/value/DexBackedEncodedValue.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/value/DexBackedEncodedValue.java
@@ -101,6 +101,12 @@
                 case ValueType.BOOLEAN:
                     Preconditions.checkValueArg(valueArg, 1);
                     return ImmutableBooleanEncodedValue.forBoolean(valueArg == 1);
+                case ValueType.METHOD_HANDLE:
+                    Preconditions.checkValueArg(valueArg, 3);
+                    return new DexBackedMethodHandleEncodedValue(reader, valueArg);
+                case ValueType.METHOD_TYPE:
+                    Preconditions.checkValueArg(valueArg, 3);
+                    return new DexBackedMethodTypeEncodedValue(reader, valueArg);
                 default:
                     throw new ExceptionWithContext("Invalid encoded_value type: 0x%x", valueType);
             }
@@ -131,6 +137,8 @@
                 case ValueType.FIELD:
                 case ValueType.METHOD:
                 case ValueType.ENUM:
+                case ValueType.METHOD_HANDLE:
+                case ValueType.METHOD_TYPE:
                     int valueArg = b >>> 5;
                     reader.moveRelative(valueArg+1);
                     break;
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/value/DexBackedMethodEncodedValue.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/value/DexBackedMethodEncodedValue.java
index a0941ce..0dafdce 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/value/DexBackedMethodEncodedValue.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/value/DexBackedMethodEncodedValue.java
@@ -41,14 +41,14 @@
 
 public class DexBackedMethodEncodedValue extends BaseMethodEncodedValue {
     @Nonnull public final DexBackedDexFile dexFile;
-    private final int MethodIndex;
+    private final int methodIndex;
 
     public DexBackedMethodEncodedValue(@Nonnull DexReader reader, int valueArg) {
         this.dexFile = reader.dexBuf;
-        MethodIndex = reader.readSizedSmallUint(valueArg + 1);
+        methodIndex = reader.readSizedSmallUint(valueArg + 1);
     }
 
     @Nonnull @Override public MethodReference getValue() {
-        return new DexBackedMethodReference(dexFile, MethodIndex);
+        return new DexBackedMethodReference(dexFile, methodIndex);
     }
 }
diff --git a/util/src/main/java/org/jf/util/BlankReader.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/value/DexBackedMethodHandleEncodedValue.java
similarity index 63%
copy from util/src/main/java/org/jf/util/BlankReader.java
copy to dexlib2/src/main/java/org/jf/dexlib2/dexbacked/value/DexBackedMethodHandleEncodedValue.java
index ca55dd0..32740d1 100644
--- a/util/src/main/java/org/jf/util/BlankReader.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/value/DexBackedMethodHandleEncodedValue.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014, Google Inc.
+ * Copyright 2018, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,20 +29,28 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package org.jf.util;
+package org.jf.dexlib2.dexbacked.value;
+
+import org.jf.dexlib2.base.value.BaseMethodHandleEncodedValue;
+import org.jf.dexlib2.dexbacked.DexBackedDexFile;
+import org.jf.dexlib2.dexbacked.DexReader;
+import org.jf.dexlib2.dexbacked.reference.DexBackedMethodHandleReference;
+import org.jf.dexlib2.iface.reference.MethodHandleReference;
 
 import javax.annotation.Nonnull;
-import java.io.IOException;
-import java.io.Reader;
 
-public class BlankReader extends Reader {
-    public static final BlankReader INSTANCE = new BlankReader();
+public class DexBackedMethodHandleEncodedValue extends BaseMethodHandleEncodedValue {
+    @Nonnull public final DexBackedDexFile dexFile;
+    private final int methodHandleIndex;
 
-    @Override public int read(@Nonnull char[] chars, int i, int i2) throws IOException {
-        return -1;
+    public DexBackedMethodHandleEncodedValue(@Nonnull DexReader reader, int valueArg) {
+        this.dexFile = reader.dexBuf;
+        this.methodHandleIndex = reader.readSizedSmallUint(valueArg + 1);
     }
 
+    @Nonnull
     @Override
-    public void close() throws IOException {
+    public MethodHandleReference getValue() {
+        return new DexBackedMethodHandleReference(dexFile, methodHandleIndex);
     }
 }
diff --git a/util/src/main/java/org/jf/util/BlankReader.java b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/value/DexBackedMethodTypeEncodedValue.java
similarity index 64%
copy from util/src/main/java/org/jf/util/BlankReader.java
copy to dexlib2/src/main/java/org/jf/dexlib2/dexbacked/value/DexBackedMethodTypeEncodedValue.java
index ca55dd0..c9d170b 100644
--- a/util/src/main/java/org/jf/util/BlankReader.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/dexbacked/value/DexBackedMethodTypeEncodedValue.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014, Google Inc.
+ * Copyright 2018, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,20 +29,28 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package org.jf.util;
+package org.jf.dexlib2.dexbacked.value;
+
+import org.jf.dexlib2.base.value.BaseMethodTypeEncodedValue;
+import org.jf.dexlib2.dexbacked.DexBackedDexFile;
+import org.jf.dexlib2.dexbacked.DexReader;
+import org.jf.dexlib2.dexbacked.reference.DexBackedMethodProtoReference;
+import org.jf.dexlib2.iface.reference.MethodProtoReference;
 
 import javax.annotation.Nonnull;
-import java.io.IOException;
-import java.io.Reader;
 
-public class BlankReader extends Reader {
-    public static final BlankReader INSTANCE = new BlankReader();
+public class DexBackedMethodTypeEncodedValue extends BaseMethodTypeEncodedValue {
+    @Nonnull public final DexBackedDexFile dexFile;
+    private final int methodProtoIndex;
 
-    @Override public int read(@Nonnull char[] chars, int i, int i2) throws IOException {
-        return -1;
+    public DexBackedMethodTypeEncodedValue(@Nonnull DexReader reader, int valueArg) {
+        this.dexFile = reader.dexBuf;
+        this.methodProtoIndex = reader.readSizedSmallUint(valueArg + 1);
     }
 
+    @Nonnull
     @Override
-    public void close() throws IOException {
+    public MethodProtoReference getValue() {
+        return new DexBackedMethodProtoReference(dexFile, methodProtoIndex);
     }
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/iface/MultiDexContainer.java b/dexlib2/src/main/java/org/jf/dexlib2/iface/MultiDexContainer.java
index 6c4e769..251ecde 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/iface/MultiDexContainer.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/iface/MultiDexContainer.java
@@ -31,8 +31,6 @@
 
 package org.jf.dexlib2.iface;
 
-import org.jf.dexlib2.Opcodes;
-
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import java.io.IOException;
@@ -56,11 +54,6 @@
     @Nullable T getEntry(@Nonnull String entryName) throws IOException;
 
     /**
-     * @return the Opcodes instance associated with this MultiDexContainer
-     */
-    @Nonnull Opcodes getOpcodes();
-
-    /**
      * This class represents a dex file that is contained in a MultiDexContainer
      */
     interface MultiDexFile extends DexFile {
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/iface/reference/CallSiteReference.java b/dexlib2/src/main/java/org/jf/dexlib2/iface/reference/CallSiteReference.java
new file mode 100644
index 0000000..d3444af
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/iface/reference/CallSiteReference.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.iface.reference;
+
+import org.jf.dexlib2.iface.value.EncodedValue;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import java.util.List;
+
+/**
+ * This class represents a reference to a call site
+ */
+public interface CallSiteReference extends Reference {
+
+    /**
+     * Gets a name for this call site.
+     *
+     * This is an arbitrary synthetic string that serves to differentiate call sites that would otherwise be identical.
+     *
+     * It can be any arbitrary string, with the only requirement being that 2 different, but otherwise identical call
+     * sites in the same dex file must not share the same name. Multiple non-identical call sites may use the same name
+     * however.
+     *
+     * @return The name for this call site.
+     */
+    @Nonnull String getName();
+
+    /**
+     * Gets a reference to a method handle for the bootstrap linker method
+     *
+     * @return A MethodHandleReference to the bootstrap linker method
+     */
+    @Nonnull MethodHandleReference getMethodHandle();
+
+    /**
+     * @return A method name that the bootstrap linker should resolve.
+     */
+    @Nonnull String getMethodName();
+
+    /**
+     * @return A MethodProtoReference corresponding to the prototype of the method that the bootstrap linker should
+     * resolve
+     */
+    @Nonnull MethodProtoReference getMethodProto();
+
+    /**
+     * @return A list of extra arguments to pass to the bootstrap linker
+     */
+    @Nonnull List<? extends EncodedValue> getExtraArguments();
+
+    /**
+     * Returns a hashcode for this CallSiteReference.
+     *
+     * This hashCode is defined to be the following:
+     *
+     * <pre>
+     * {@code
+     * int hashCode = getName().hashCode();
+     * hashCode = hashCode*31 + getMethodHandle().hashCode();
+     * hashCode = hashCode*31 + getMethodName().hashCode();
+     * hashCode = hashCode*31 + getMethodProto().hashCode();
+     * hashCode = hashCode*31 + getExtraArguments().hashCode();
+     * }</pre>
+     *
+     * @return The hash code value for this MethodReference
+     */
+    @Override int hashCode();
+
+    /**
+     * Compares this CallSiteReference to another CallSiteReference for equality.
+     *
+     * This CallSiteReference is equal to another CallSiteReference if all of its fields are equal. That is, if
+     * the return values of getMethodHandle(), getMethodName(), getMethodProto() and getExtraArguments() are all equal.
+     *
+     * @param o The object to be compared for equality with this CallSiteReference
+     * @return true if the specified object is equal to this CallSiteReference
+     */
+    @Override boolean equals(@Nullable Object o);
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/iface/reference/MethodHandleReference.java b/dexlib2/src/main/java/org/jf/dexlib2/iface/reference/MethodHandleReference.java
new file mode 100644
index 0000000..f9e0f1e
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/iface/reference/MethodHandleReference.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.iface.reference;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
+/**
+ * This class represents a reference to a method handle
+ */
+public interface MethodHandleReference extends Reference, Comparable<MethodHandleReference> {
+    /**
+     * Gets the method handle type.
+     *
+     * @return One of the MethodHandleType values
+     */
+    int getMethodHandleType();
+
+    /**
+     * Gets the member that is being referenced by this method handle.
+     *
+     * @return A MethodReference or FieldReference, depending on the method handle type
+     */
+    @Nonnull Reference getMemberReference();
+
+    /**
+     * Returns a hashcode for this MethodHandleReference.
+     *
+     * This hashCode is defined to be the following:
+     *
+     * <pre>
+     * {@code
+     * int hashCode =  getMethodHandleType();
+     * hashCode = hashCode*31 + getMemberReference().hashCode();
+     * }</pre>
+     *
+     * @return The hash code value for this MethodHandleReference
+     */
+    @Override int hashCode();
+
+    /**
+     * Compares this MethodHandleReference to another MethodHandleReference for equality.
+     *
+     * This MethodHandleReference is equal to another MethodHandleReference if all of its fields are equal. That is, if
+     * the return values of getMethodHandleType() and getMemberReference() are all equal.
+     *
+     * @param o The object to be compared for equality with this MethodHandleReference
+     * @return true if the specified object is equal to this MethodHandleReference
+     */
+    @Override boolean equals(@Nullable Object o);
+
+    /**
+     * Compare this MethodHandleReference to another MethodHandleReference.
+     *
+     * The comparison is based on the comparison of the return values of getMethodHandleType() and getMemberReference()
+     * in that order.
+     *
+     * @param o The MethodHandleReference to compare with this MethodHandleReference
+     * @return An integer representing the result of the comparison
+     */
+    @Override int compareTo(@Nonnull MethodHandleReference o);
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/iface/reference/MethodProtoReference.java b/dexlib2/src/main/java/org/jf/dexlib2/iface/reference/MethodProtoReference.java
index e150c21..4adee37 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/iface/reference/MethodProtoReference.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/iface/reference/MethodProtoReference.java
@@ -69,9 +69,9 @@
     @Override int hashCode();
 
     /**
-     * Compares this MethodTypeReference to another MethodProtoReference for equality.
+     * Compares this MethodProtoReference to another MethodProtoReference for equality.
      *
-     * This MethodTypeReference is equal to another MethodProtoReference if all of it's "fields" are equal. That is, if
+     * This MethodProtoReference is equal to another MethodProtoReference if all of it's "fields" are equal. That is, if
      * the return values of getReturnType() and getParameterTypes() are all equal.
      *
      * Equality for getParameters() should be tested by comparing the string representation of each element. I.e.
@@ -83,7 +83,7 @@
     @Override boolean equals(@Nullable Object o);
 
     /**
-     * Compare this MethodTypeReference to another MethodProtoReference.
+     * Compare this MethodProtoReference to another MethodProtoReference.
      *
      * The comparison is based on the comparison of the return values of getReturnType() and getParameters(),
      * in that order. getParameters() should be compared using the semantics of
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/iface/value/MethodHandleEncodedValue.java b/dexlib2/src/main/java/org/jf/dexlib2/iface/value/MethodHandleEncodedValue.java
new file mode 100644
index 0000000..d62a9d3
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/iface/value/MethodHandleEncodedValue.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.iface.value;
+
+import org.jf.dexlib2.iface.reference.MethodHandleReference;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
+/**
+ * This class represents an encoded method type value.
+ */
+public interface MethodHandleEncodedValue extends EncodedValue {
+    /**
+     * Gets the method handle value.
+     *
+     * @return the method handle value as a MethodHandleReference
+     */
+    @Nonnull MethodHandleReference getValue();
+
+    /**
+     * Returns a hashcode for this MethodHandleEncodedValue.
+     *
+     * This hashCode is defined to be the following:
+     *
+     * <pre>
+     * {@code
+     * int hashCode = getValue.hashCode();
+     * }</pre>
+     *
+     * @return The hash code value for this MethodHandleEncodedValue
+     */
+    @Override int hashCode();
+
+    /**
+     * Compares this MethodHandleEncodedValue to another MethodHandleEncodedValue for equality.
+     *
+     * This MethodHandleEncodedValue is equal to another MethodHandleEncodedValue if the values returned by getValue()
+     * are equal.
+     *
+     * @param o The object to be compared for equality with this MethodHandleEncodedValue
+     * @return true if the specified object is equal to this MethodHandleEncodedValue
+     */
+    @Override boolean equals(@Nullable Object o);
+
+    /**
+     * Compare this MethodHandleEncodedValue to another EncodedValue.
+     *
+     * The comparison is first done on the return values of getValueType(). If the other value is another
+     * MethodHandleEncodedValue, the return values of getValue() are compared.
+     *
+     * @param o The EncodedValue to compare with this MethodHandleEncodedValue
+     * @return An integer representing the result of the comparison
+     */
+    @Override int compareTo(@Nonnull EncodedValue o);
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/iface/value/MethodTypeEncodedValue.java b/dexlib2/src/main/java/org/jf/dexlib2/iface/value/MethodTypeEncodedValue.java
new file mode 100644
index 0000000..bf64618
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/iface/value/MethodTypeEncodedValue.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.iface.value;
+
+import org.jf.dexlib2.iface.reference.MethodProtoReference;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
+/**
+ * This class represents an encoded method type value.
+ */
+public interface MethodTypeEncodedValue extends EncodedValue {
+    /**
+     * Gets the method type value.
+     *
+     * @return the method type value as a MethodProtoReference
+     */
+    @Nonnull MethodProtoReference getValue();
+
+    /**
+     * Returns a hashcode for this MethodTypeEncodedValue.
+     *
+     * This hashCode is defined to be the following:
+     *
+     * <pre>
+     * {@code
+     * int hashCode = getValue.hashCode();
+     * }</pre>
+     *
+     * @return The hash code value for this MethodTypeEncodedValue
+     */
+    @Override int hashCode();
+
+    /**
+     * Compares this MethodTypeEncodedValue to another MethodTypeEncodedValue for equality.
+     *
+     * This MethodTypeEncodedValue is equal to another MethodTypeEncodedValue if the values returned by getValue()
+     * are equal.
+     *
+     * @param o The object to be compared for equality with this MethodTypeEncodedValue
+     * @return true if the specified object is equal to this MethodTypeEncodedValue
+     */
+    @Override boolean equals(@Nullable Object o);
+
+    /**
+     * Compare this MethodTypeEncodedValue to another EncodedValue.
+     *
+     * The comparison is first done on the return values of getValueType(). If the other value is another
+     * MethodTypeEncodedValue, the return values of getValue() are compared.
+     *
+     * @param o The EncodedValue to compare with this MethodTypeEncodedValue
+     * @return An integer representing the result of the comparison
+     */
+    @Override int compareTo(@Nonnull EncodedValue o);
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/immutable/reference/ImmutableCallSiteReference.java b/dexlib2/src/main/java/org/jf/dexlib2/immutable/reference/ImmutableCallSiteReference.java
new file mode 100644
index 0000000..8b3c17f
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/immutable/reference/ImmutableCallSiteReference.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.immutable.reference;
+
+import com.google.common.collect.ImmutableList;
+import org.jf.dexlib2.base.reference.BaseCallSiteReference;
+import org.jf.dexlib2.iface.reference.CallSiteReference;
+import org.jf.dexlib2.iface.reference.MethodHandleReference;
+import org.jf.dexlib2.iface.reference.MethodProtoReference;
+import org.jf.dexlib2.iface.value.EncodedValue;
+import org.jf.dexlib2.immutable.value.ImmutableEncodedValue;
+import org.jf.dexlib2.immutable.value.ImmutableEncodedValueFactory;
+import org.jf.util.ImmutableUtils;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import java.util.List;
+
+public class ImmutableCallSiteReference extends BaseCallSiteReference implements ImmutableReference {
+    @Nonnull protected final String name;
+    @Nonnull protected final ImmutableMethodHandleReference methodHandle;
+    @Nonnull protected final String methodName;
+    @Nonnull protected final ImmutableMethodProtoReference methodProto;
+    @Nonnull protected final ImmutableList<? extends ImmutableEncodedValue> extraArguments;
+
+    public ImmutableCallSiteReference(@Nonnull String name, @Nonnull MethodHandleReference methodHandle,
+                                      @Nonnull String methodName, @Nonnull MethodProtoReference methodProto,
+                                      @Nonnull Iterable<? extends EncodedValue> extraArguments) {
+        this.name = name;
+        this.methodHandle = ImmutableMethodHandleReference.of(methodHandle);
+        this.methodName = methodName;
+        this.methodProto = ImmutableMethodProtoReference.of(methodProto);
+        this.extraArguments = ImmutableEncodedValueFactory.immutableListOf(extraArguments);
+    }
+
+    public ImmutableCallSiteReference(@Nonnull String name, @Nonnull ImmutableMethodHandleReference methodHandle,
+                                      @Nonnull String methodName, @Nonnull ImmutableMethodProtoReference methodProto,
+                                      @Nullable ImmutableList<? extends ImmutableEncodedValue> extraArguments) {
+        this.name = name;
+        this.methodHandle = methodHandle;
+        this.methodName = methodName;
+        this.methodProto = methodProto;
+        this.extraArguments = ImmutableUtils.nullToEmptyList(extraArguments);
+    }
+
+    @Nonnull
+    public static ImmutableCallSiteReference of(@Nonnull CallSiteReference callSiteReference) {
+        if (callSiteReference instanceof ImmutableCallSiteReference) {
+            return (ImmutableCallSiteReference) callSiteReference;
+        }
+        return new ImmutableCallSiteReference(callSiteReference.getName(),
+                ImmutableMethodHandleReference.of(callSiteReference.getMethodHandle()),
+                callSiteReference.getMethodName(),
+                ImmutableMethodProtoReference.of(callSiteReference.getMethodProto()),
+                ImmutableEncodedValueFactory.immutableListOf(callSiteReference.getExtraArguments()));
+    }
+
+    @Nonnull @Override public String getName() { return name; }
+    @Nonnull @Override public MethodHandleReference getMethodHandle() { return methodHandle; }
+    @Nonnull @Override public String getMethodName() { return methodName; }
+    @Nonnull @Override public MethodProtoReference getMethodProto() { return methodProto; }
+    @Nonnull @Override public List<? extends EncodedValue> getExtraArguments() { return extraArguments; }
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/immutable/reference/ImmutableMethodHandleReference.java b/dexlib2/src/main/java/org/jf/dexlib2/immutable/reference/ImmutableMethodHandleReference.java
new file mode 100644
index 0000000..c35b071
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/immutable/reference/ImmutableMethodHandleReference.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.immutable.reference;
+
+import org.jf.dexlib2.MethodHandleType;
+import org.jf.dexlib2.base.reference.BaseMethodHandleReference;
+import org.jf.dexlib2.iface.reference.FieldReference;
+import org.jf.dexlib2.iface.reference.MethodHandleReference;
+import org.jf.dexlib2.iface.reference.MethodReference;
+import org.jf.dexlib2.iface.reference.Reference;
+import org.jf.util.ExceptionWithContext;
+
+import javax.annotation.Nonnull;
+
+public class ImmutableMethodHandleReference extends BaseMethodHandleReference implements ImmutableReference {
+    protected final int methodHandleType;
+    @Nonnull protected final ImmutableReference memberReference;
+
+    public ImmutableMethodHandleReference(int methodHandleType, @Nonnull ImmutableReference memberReference) {
+        this.methodHandleType = methodHandleType;
+        this.memberReference = memberReference;
+    }
+
+    public ImmutableMethodHandleReference(int methodHandleType, @Nonnull Reference memberReference) {
+        this.methodHandleType = methodHandleType;
+        this.memberReference = ImmutableReferenceFactory.of(memberReference);
+    }
+
+    @Nonnull
+    public static ImmutableMethodHandleReference of(@Nonnull MethodHandleReference methodHandleReference) {
+        if (methodHandleReference instanceof ImmutableMethodHandleReference) {
+            return (ImmutableMethodHandleReference) methodHandleReference;
+        }
+        int methodHandleType = methodHandleReference.getMethodHandleType();
+        ImmutableReference memberReference;
+
+        switch (methodHandleType) {
+            case MethodHandleType.STATIC_PUT:
+            case MethodHandleType.STATIC_GET:
+            case MethodHandleType.INSTANCE_PUT:
+            case MethodHandleType.INSTANCE_GET:
+                memberReference = ImmutableFieldReference.of(
+                        (FieldReference) methodHandleReference.getMemberReference());
+                break;
+            case MethodHandleType.INVOKE_STATIC:
+            case MethodHandleType.INVOKE_INSTANCE:
+            case MethodHandleType.INVOKE_CONSTRUCTOR:
+            case MethodHandleType.INVOKE_DIRECT:
+            case MethodHandleType.INVOKE_INTERFACE:
+                memberReference = ImmutableMethodReference.of(
+                        (MethodReference) methodHandleReference.getMemberReference());
+                break;
+            default:
+                throw new ExceptionWithContext("Invalid method handle type: %d", methodHandleType);
+        }
+        return new ImmutableMethodHandleReference(methodHandleType, memberReference);
+    }
+
+    @Override public int getMethodHandleType() { return methodHandleType; }
+    @Nonnull @Override public Reference getMemberReference() { return memberReference; }
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/immutable/reference/ImmutableMethodProtoReference.java b/dexlib2/src/main/java/org/jf/dexlib2/immutable/reference/ImmutableMethodProtoReference.java
index 8c2afe5..d1c62e1 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/immutable/reference/ImmutableMethodProtoReference.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/immutable/reference/ImmutableMethodProtoReference.java
@@ -35,16 +35,22 @@
 import org.jf.dexlib2.base.reference.BaseMethodProtoReference;
 import org.jf.dexlib2.iface.reference.MethodProtoReference;
 import org.jf.dexlib2.immutable.util.CharSequenceConverter;
-
-import java.util.List;
+import org.jf.util.ImmutableUtils;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
+import java.util.List;
 
 public class ImmutableMethodProtoReference extends BaseMethodProtoReference implements ImmutableReference {
     @Nonnull protected final ImmutableList<String> parameters;
     @Nonnull protected final String returnType;
 
+    public ImmutableMethodProtoReference(@Nullable ImmutableList<String> parameters,
+                                         @Nonnull String returnType) {
+        this.parameters = ImmutableUtils.nullToEmptyList(parameters);
+        this.returnType = returnType;
+    }
+
     public ImmutableMethodProtoReference(@Nullable Iterable<? extends CharSequence> parameters,
                                          @Nonnull String returnType) {
         this.parameters = CharSequenceConverter.immutableStringList(parameters);
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/immutable/reference/ImmutableReferenceFactory.java b/dexlib2/src/main/java/org/jf/dexlib2/immutable/reference/ImmutableReferenceFactory.java
index d000747..c611844 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/immutable/reference/ImmutableReferenceFactory.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/immutable/reference/ImmutableReferenceFactory.java
@@ -55,6 +55,12 @@
         if (reference instanceof MethodProtoReference) {
             return ImmutableMethodProtoReference.of((MethodProtoReference) reference);
         }
+        if (reference instanceof CallSiteReference) {
+            return ImmutableCallSiteReference.of((CallSiteReference) reference);
+        }
+        if (reference instanceof MethodHandleReference) {
+            return ImmutableMethodHandleReference.of((MethodHandleReference) reference);
+        }
         throw new ExceptionWithContext("Invalid reference type");
     }
 
@@ -71,6 +77,10 @@
                 return ImmutableMethodReference.of((MethodReference)reference);
             case ReferenceType.METHOD_PROTO:
                 return ImmutableMethodProtoReference.of((MethodProtoReference)reference);
+            case ReferenceType.CALL_SITE:
+                return ImmutableCallSiteReference.of((CallSiteReference) reference);
+            case ReferenceType.METHOD_HANDLE:
+                return ImmutableMethodHandleReference.of((MethodHandleReference) reference);
         }
         throw new ExceptionWithContext("Invalid reference type: %d", referenceType);
     }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableEncodedValueFactory.java b/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableEncodedValueFactory.java
index db5c84a..f22e8c5 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableEncodedValueFactory.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableEncodedValueFactory.java
@@ -77,6 +77,10 @@
                 return ImmutableNullEncodedValue.INSTANCE;
             case ValueType.BOOLEAN:
                 return ImmutableBooleanEncodedValue.of((BooleanEncodedValue)encodedValue);
+            case ValueType.METHOD_HANDLE:
+                return ImmutableMethodHandleEncodedValue.of((MethodHandleEncodedValue) encodedValue);
+            case ValueType.METHOD_TYPE:
+                return ImmutableMethodTypeEncodedValue.of((MethodTypeEncodedValue) encodedValue);
             default:
                 Preconditions.checkArgument(false);
                 return null;
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableEnumEncodedValue.java b/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableEnumEncodedValue.java
index 2607f8a..a67ff31 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableEnumEncodedValue.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableEnumEncodedValue.java
@@ -32,15 +32,15 @@
 package org.jf.dexlib2.immutable.value;
 
 import org.jf.dexlib2.base.value.BaseEnumEncodedValue;
-import org.jf.dexlib2.iface.reference.FieldReference;
 import org.jf.dexlib2.iface.value.EnumEncodedValue;
+import org.jf.dexlib2.immutable.reference.ImmutableFieldReference;
 
 import javax.annotation.Nonnull;
 
 public class ImmutableEnumEncodedValue extends BaseEnumEncodedValue implements ImmutableEncodedValue {
-    @Nonnull protected final FieldReference value;
+    @Nonnull protected final ImmutableFieldReference value;
 
-    public ImmutableEnumEncodedValue(@Nonnull FieldReference value) {
+    public ImmutableEnumEncodedValue(@Nonnull ImmutableFieldReference value) {
         this.value = value;
     }
 
@@ -48,8 +48,8 @@
         if (enumEncodedValue instanceof ImmutableEnumEncodedValue) {
             return (ImmutableEnumEncodedValue)enumEncodedValue;
         }
-        return new ImmutableEnumEncodedValue(enumEncodedValue.getValue());
+        return new ImmutableEnumEncodedValue(ImmutableFieldReference.of(enumEncodedValue.getValue()));
     }
 
-    @Nonnull @Override public FieldReference getValue() { return value; }
+    @Nonnull @Override public ImmutableFieldReference getValue() { return value; }
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableFieldEncodedValue.java b/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableFieldEncodedValue.java
index 691b6cf..60dea87 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableFieldEncodedValue.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableFieldEncodedValue.java
@@ -32,15 +32,15 @@
 package org.jf.dexlib2.immutable.value;
 
 import org.jf.dexlib2.base.value.BaseFieldEncodedValue;
-import org.jf.dexlib2.iface.reference.FieldReference;
 import org.jf.dexlib2.iface.value.FieldEncodedValue;
+import org.jf.dexlib2.immutable.reference.ImmutableFieldReference;
 
 import javax.annotation.Nonnull;
 
 public class ImmutableFieldEncodedValue extends BaseFieldEncodedValue implements ImmutableEncodedValue {
-    @Nonnull protected final FieldReference value;
+    @Nonnull protected final ImmutableFieldReference value;
 
-    public ImmutableFieldEncodedValue(@Nonnull FieldReference value) {
+    public ImmutableFieldEncodedValue(@Nonnull ImmutableFieldReference value) {
         this.value = value;
     }
 
@@ -48,8 +48,8 @@
         if (fieldEncodedValue instanceof ImmutableFieldEncodedValue) {
             return (ImmutableFieldEncodedValue)fieldEncodedValue;
         }
-        return new ImmutableFieldEncodedValue(fieldEncodedValue.getValue());
+        return new ImmutableFieldEncodedValue(ImmutableFieldReference.of(fieldEncodedValue.getValue()));
     }
 
-    @Nonnull @Override public FieldReference getValue() { return value; }
+    @Nonnull @Override public ImmutableFieldReference getValue() { return value; }
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableMethodEncodedValue.java b/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableMethodEncodedValue.java
index 05b4580..99c108f 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableMethodEncodedValue.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableMethodEncodedValue.java
@@ -32,15 +32,15 @@
 package org.jf.dexlib2.immutable.value;
 
 import org.jf.dexlib2.base.value.BaseMethodEncodedValue;
-import org.jf.dexlib2.iface.reference.MethodReference;
 import org.jf.dexlib2.iface.value.MethodEncodedValue;
+import org.jf.dexlib2.immutable.reference.ImmutableMethodReference;
 
 import javax.annotation.Nonnull;
 
 public class ImmutableMethodEncodedValue extends BaseMethodEncodedValue implements ImmutableEncodedValue {
-    @Nonnull protected final MethodReference value;
+    @Nonnull protected final ImmutableMethodReference value;
 
-    public ImmutableMethodEncodedValue(@Nonnull MethodReference value) {
+    public ImmutableMethodEncodedValue(@Nonnull ImmutableMethodReference value) {
         this.value = value;
     }
 
@@ -48,8 +48,8 @@
         if (methodEncodedValue instanceof ImmutableMethodEncodedValue) {
             return (ImmutableMethodEncodedValue)methodEncodedValue;
         }
-        return new ImmutableMethodEncodedValue(methodEncodedValue.getValue());
+        return new ImmutableMethodEncodedValue(ImmutableMethodReference.of(methodEncodedValue.getValue()));
     }
 
-    @Nonnull @Override public MethodReference getValue() { return value; }
+    @Nonnull @Override public ImmutableMethodReference getValue() { return value; }
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableMethodHandleEncodedValue.java b/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableMethodHandleEncodedValue.java
new file mode 100644
index 0000000..cc893ea
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableMethodHandleEncodedValue.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.immutable.value;
+
+import org.jf.dexlib2.base.value.BaseMethodHandleEncodedValue;
+import org.jf.dexlib2.iface.value.MethodHandleEncodedValue;
+import org.jf.dexlib2.immutable.reference.ImmutableMethodHandleReference;
+
+import javax.annotation.Nonnull;
+
+public class ImmutableMethodHandleEncodedValue extends BaseMethodHandleEncodedValue implements ImmutableEncodedValue {
+    @Nonnull protected final ImmutableMethodHandleReference methodHandleReference;
+
+    public ImmutableMethodHandleEncodedValue(@Nonnull ImmutableMethodHandleReference methodHandleReference) {
+        this.methodHandleReference = methodHandleReference;
+    }
+
+    @Nonnull
+    public static ImmutableMethodHandleEncodedValue of(@Nonnull MethodHandleEncodedValue methodHandleEncodedValue) {
+        if (methodHandleEncodedValue instanceof ImmutableMethodHandleEncodedValue) {
+            return (ImmutableMethodHandleEncodedValue) methodHandleEncodedValue;
+        }
+        return new ImmutableMethodHandleEncodedValue(
+                ImmutableMethodHandleReference.of(methodHandleEncodedValue.getValue()));
+    }
+
+    @Nonnull @Override public ImmutableMethodHandleReference getValue() { return methodHandleReference; }
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableMethodTypeEncodedValue.java b/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableMethodTypeEncodedValue.java
new file mode 100644
index 0000000..3aa13a1
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/immutable/value/ImmutableMethodTypeEncodedValue.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.immutable.value;
+
+import org.jf.dexlib2.base.value.BaseMethodTypeEncodedValue;
+import org.jf.dexlib2.iface.value.MethodTypeEncodedValue;
+import org.jf.dexlib2.immutable.reference.ImmutableMethodProtoReference;
+
+import javax.annotation.Nonnull;
+
+public class ImmutableMethodTypeEncodedValue extends BaseMethodTypeEncodedValue implements ImmutableEncodedValue {
+    @Nonnull protected final ImmutableMethodProtoReference methodProtoReference;
+
+    public ImmutableMethodTypeEncodedValue(@Nonnull ImmutableMethodProtoReference methodProtoReference) {
+        this.methodProtoReference = methodProtoReference;
+    }
+
+    @Nonnull
+    public static ImmutableMethodTypeEncodedValue of(@Nonnull MethodTypeEncodedValue methodTypeEncodedValue) {
+        if (methodTypeEncodedValue instanceof ImmutableMethodTypeEncodedValue) {
+            return (ImmutableMethodTypeEncodedValue) methodTypeEncodedValue;
+        }
+        return new ImmutableMethodTypeEncodedValue(
+                ImmutableMethodProtoReference.of(methodTypeEncodedValue.getValue()));
+    }
+
+    @Nonnull @Override public ImmutableMethodProtoReference getValue() { return methodProtoReference; }
+}
diff --git a/util/src/main/java/org/jf/util/BlankReader.java b/dexlib2/src/main/java/org/jf/dexlib2/util/AlignmentUtils.java
similarity index 68%
copy from util/src/main/java/org/jf/util/BlankReader.java
copy to dexlib2/src/main/java/org/jf/dexlib2/util/AlignmentUtils.java
index ca55dd0..1648372 100644
--- a/util/src/main/java/org/jf/util/BlankReader.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/util/AlignmentUtils.java
@@ -1,18 +1,18 @@
 /*
- * Copyright 2014, Google Inc.
+ * Copyright 2018, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
  * met:
  *
- *     * Redistributions of source code must retain the above copyright
+ * Redistributions of source code must retain the above copyright
  * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
+ * Redistributions in binary form must reproduce the above
  * copyright notice, this list of conditions and the following disclaimer
  * in the documentation and/or other materials provided with the
  * distribution.
- *     * Neither the name of Google Inc. nor the names of its
+ * Neither the name of Google Inc. nor the names of its
  * contributors may be used to endorse or promote products derived from
  * this software without specific prior written permission.
  *
@@ -29,20 +29,16 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package org.jf.util;
+package org.jf.dexlib2.util;
 
-import javax.annotation.Nonnull;
-import java.io.IOException;
-import java.io.Reader;
-
-public class BlankReader extends Reader {
-    public static final BlankReader INSTANCE = new BlankReader();
-
-    @Override public int read(@Nonnull char[] chars, int i, int i2) throws IOException {
-        return -1;
+public abstract class AlignmentUtils {
+    public static int alignOffset(int offset, int alignment) {
+        int mask = alignment - 1;
+        assert (alignment >= 0) && ((mask & alignment) == 0);
+        return (offset + mask) & ~mask;
     }
 
-    @Override
-    public void close() throws IOException {
+    public static boolean isAligned(int offset, int alignment) {
+        return (offset % alignment) == 0;
     }
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/util/DexUtil.java b/dexlib2/src/main/java/org/jf/dexlib2/util/DexUtil.java
index 389edfd..aaa455c 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/util/DexUtil.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/util/DexUtil.java
@@ -50,11 +50,12 @@
      * The inputStream must support mark(), and will be reset to initial position upon exiting the method
      *
      * @param inputStream An input stream that is positioned at a dex header
+     * @return The dex version
      * @throws NotADexFile If the file is not a dex file
      * @throws InvalidFile If the header appears to be a dex file, but is not valid for some reason
      * @throws UnsupportedFile If the dex header is valid, but uses unsupported functionality
      */
-    public static void verifyDexHeader(@Nonnull InputStream inputStream) throws IOException {
+    public static int verifyDexHeader(@Nonnull InputStream inputStream) throws IOException {
         if (!inputStream.markSupported()) {
             throw new IllegalArgumentException("InputStream must support mark");
         }
@@ -68,7 +69,7 @@
             inputStream.reset();
         }
 
-        verifyDexHeader(partialHeader, 0);
+        return verifyDexHeader(partialHeader, 0);
     }
 
     /**
@@ -76,11 +77,12 @@
      *
      * @param buf A byte array containing at least the first 44 bytes of a dex file
      * @param offset The offset within the array to the dex header
+     * @return The dex version
      * @throws NotADexFile If the file is not a dex file
      * @throws InvalidFile If the header appears to be a dex file, but is not valid for some reason
      * @throws UnsupportedFile If the dex header is valid, but uses unsupported functionality
      */
-    public static void verifyDexHeader(@Nonnull byte[] buf, int offset) {
+    public static int verifyDexHeader(@Nonnull byte[] buf, int offset) {
         int dexVersion = HeaderItem.getVersion(buf, offset);
         if (dexVersion == -1) {
             StringBuilder sb = new StringBuilder("Not a valid dex magic value:");
@@ -102,6 +104,8 @@
         if (endian != HeaderItem.LITTLE_ENDIAN_TAG) {
             throw new InvalidFile(String.format("Invalid endian tag: 0x%x", endian));
         }
+
+        return dexVersion;
     }
 
     /**
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/util/EncodedValueUtils.java b/dexlib2/src/main/java/org/jf/dexlib2/util/EncodedValueUtils.java
index e8c6625..a09bbca 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/util/EncodedValueUtils.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/util/EncodedValueUtils.java
@@ -32,7 +32,13 @@
 package org.jf.dexlib2.util;
 
 import org.jf.dexlib2.ValueType;
+import org.jf.dexlib2.iface.AnnotationElement;
 import org.jf.dexlib2.iface.value.*;
+import org.jf.util.StringUtils;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.util.Set;
 
 public final class EncodedValueUtils {
     public static boolean isDefaultValue(EncodedValue encodedValue) {
@@ -59,5 +65,99 @@
         return false;
     }
 
+    public static void writeEncodedValue(Writer writer, EncodedValue encodedValue) throws IOException {
+        switch (encodedValue.getValueType()) {
+            case ValueType.BOOLEAN:
+                writer.write(Boolean.toString(((BooleanEncodedValue) encodedValue).getValue()));
+                break;
+            case ValueType.BYTE:
+                writer.write(Byte.toString(((ByteEncodedValue)encodedValue).getValue()));
+                break;
+            case ValueType.CHAR:
+                writer.write(Integer.toString(((CharEncodedValue)encodedValue).getValue()));
+                break;
+            case ValueType.SHORT:
+                writer.write(Short.toString(((ShortEncodedValue)encodedValue).getValue()));
+                break;
+            case ValueType.INT:
+                writer.write(Integer.toString(((IntEncodedValue)encodedValue).getValue()));
+                break;
+            case ValueType.LONG:
+                writer.write(Long.toString(((LongEncodedValue)encodedValue).getValue()));
+                break;
+            case ValueType.FLOAT:
+                writer.write(Float.toString(((FloatEncodedValue)encodedValue).getValue()));
+                break;
+            case ValueType.DOUBLE:
+                writer.write(Double.toString(((DoubleEncodedValue)encodedValue).getValue()));
+                break;
+            case ValueType.ANNOTATION:
+                writeAnnotation(writer, (AnnotationEncodedValue)encodedValue);
+                break;
+            case ValueType.ARRAY:
+                writeArray(writer, (ArrayEncodedValue)encodedValue);
+                break;
+            case ValueType.STRING:
+                writer.write('"');
+                StringUtils.writeEscapedString(writer, ((StringEncodedValue)encodedValue).getValue());
+                writer.write('"');
+                break;
+            case ValueType.FIELD:
+                ReferenceUtil.writeFieldDescriptor(writer, ((FieldEncodedValue)encodedValue).getValue());
+                break;
+            case ValueType.ENUM:
+                ReferenceUtil.writeFieldDescriptor(writer, ((EnumEncodedValue)encodedValue).getValue());
+                break;
+            case ValueType.METHOD:
+                ReferenceUtil.writeMethodDescriptor(writer, ((MethodEncodedValue)encodedValue).getValue());
+                break;
+            case ValueType.TYPE:
+                writer.write(((TypeEncodedValue)encodedValue).getValue());
+                break;
+            case ValueType.METHOD_TYPE:
+                ReferenceUtil.writeMethodProtoDescriptor(writer, ((MethodTypeEncodedValue)encodedValue).getValue());
+                break;
+            case ValueType.METHOD_HANDLE:
+                ReferenceUtil.writeMethodHandle(writer, ((MethodHandleEncodedValue)encodedValue).getValue());
+                break;
+            case ValueType.NULL:
+                writer.write("null");
+                break;
+            default:
+                throw new IllegalArgumentException("Unknown encoded value type");
+        }
+    }
+
+    private static void writeAnnotation(Writer writer, AnnotationEncodedValue annotation) throws IOException {
+        writer.write("Annotation[");
+        writer.write(annotation.getType());
+
+        Set<? extends AnnotationElement> elements = annotation.getElements();
+        for (AnnotationElement element: elements) {
+            writer.write(", ");
+            writer.write(element.getName());
+            writer.write('=');
+            writeEncodedValue(writer, element.getValue());
+        }
+
+        writer.write(']');
+    }
+
+    private static void writeArray(Writer writer, ArrayEncodedValue array) throws IOException {
+        writer.write("Array[");
+
+        boolean first = true;
+        for (EncodedValue element: array.getValue()) {
+            if (first) {
+                first = false;
+            } else {
+                writer.write(", ");
+            }
+            writeEncodedValue(writer, element);
+        }
+
+        writer.write(']');
+    }
+
     private EncodedValueUtils() {}
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/util/ReferenceUtil.java b/dexlib2/src/main/java/org/jf/dexlib2/util/ReferenceUtil.java
index 4e46a0e..86d3536 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/util/ReferenceUtil.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/util/ReferenceUtil.java
@@ -31,12 +31,15 @@
 
 package org.jf.dexlib2.util;
 
+import org.jf.dexlib2.MethodHandleType;
 import org.jf.dexlib2.iface.reference.*;
+import org.jf.dexlib2.iface.value.EncodedValue;
 import org.jf.util.StringUtils;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import java.io.IOException;
+import java.io.StringWriter;
 import java.io.Writer;
 
 public final class ReferenceUtil {
@@ -61,14 +64,24 @@
     }
 
     public static String getMethodProtoDescriptor(MethodProtoReference methodProtoReference) {
-        StringBuilder sb = new StringBuilder();
-        sb.append('(');
-        for (CharSequence paramType : methodProtoReference.getParameterTypes()) {
-            sb.append(paramType);
+        StringWriter stringWriter = new StringWriter();
+        try {
+            writeMethodProtoDescriptor(stringWriter, methodProtoReference);
+        } catch (IOException ex) {
+            // IOException shouldn't happen for a StringWriter...
+            throw new RuntimeException(ex);
         }
-        sb.append(')');
-        sb.append(methodProtoReference.getReturnType());
-        return sb.toString();
+        return stringWriter.toString();
+    }
+
+    public static void writeMethodProtoDescriptor(Writer writer, MethodProtoReference methodProtoReference)
+            throws IOException {
+        writer.write('(');
+        for (CharSequence paramType : methodProtoReference.getParameterTypes()) {
+            writer.write(paramType.toString());
+        }
+        writer.write(')');
+        writer.write(methodProtoReference.getReturnType());
     }
 
     public static void writeMethodDescriptor(Writer writer, MethodReference methodReference) throws IOException {
@@ -129,6 +142,62 @@
         writer.write(fieldReference.getType());
     }
 
+    public static String getMethodHandleString(MethodHandleReference methodHandleReference) {
+        StringWriter stringWriter = new StringWriter();
+        try {
+            writeMethodHandle(stringWriter, methodHandleReference);
+        } catch (IOException ex) {
+            // IOException shouldn't happen for a StringWriter...
+            throw new RuntimeException(ex);
+        }
+        return stringWriter.toString();
+    }
+
+    public static void writeMethodHandle(Writer writer, MethodHandleReference methodHandleReference)
+            throws IOException {
+        writer.write(MethodHandleType.toString(methodHandleReference.getMethodHandleType()));
+        writer.write('@');
+
+        Reference memberReference = methodHandleReference.getMemberReference();
+        if (memberReference instanceof MethodReference) {
+            writeMethodDescriptor(writer, (MethodReference)memberReference);
+        } else {
+            writeFieldDescriptor(writer, (FieldReference)memberReference);
+        }
+    }
+
+    public static String getCallSiteString(CallSiteReference callSiteReference) {
+        StringWriter stringWriter = new StringWriter();
+        try {
+            writeCallSite(stringWriter, callSiteReference);
+        } catch (IOException ex) {
+            // IOException shouldn't happen for a StringWriter...
+            throw new RuntimeException(ex);
+        }
+        return stringWriter.toString();
+    }
+
+    public static void writeCallSite(Writer writer, CallSiteReference callSiteReference) throws IOException {
+        writer.write(callSiteReference.getName());
+        writer.write('(');
+        writer.write('"');
+        StringUtils.writeEscapedString(writer, callSiteReference.getMethodName());
+        writer.write('"');
+        writer.write(", ");
+        writeMethodProtoDescriptor(writer, callSiteReference.getMethodProto());
+
+        for (EncodedValue encodedValue : callSiteReference.getExtraArguments()) {
+            writer.write(", ");
+            EncodedValueUtils.writeEncodedValue(writer, encodedValue);
+        }
+        writer.write(")@");
+        MethodHandleReference methodHandle = callSiteReference.getMethodHandle();
+        if (methodHandle.getMethodHandleType() != MethodHandleType.INVOKE_STATIC) {
+            throw new IllegalArgumentException("The linker method handle for a call site must be of type invoke-static");
+        }
+        writeMethodDescriptor(writer, (MethodReference)callSiteReference.getMethodHandle().getMemberReference());
+    }
+
     @Nullable
     public static String getReferenceString(@Nonnull Reference reference) {
         return getReferenceString(reference, null);
@@ -156,6 +225,14 @@
             MethodProtoReference methodProtoReference = (MethodProtoReference)reference;
             return getMethodProtoDescriptor(methodProtoReference);
         }
+        if (reference instanceof MethodHandleReference) {
+            MethodHandleReference methodHandleReference = (MethodHandleReference)reference;
+            return getMethodHandleString(methodHandleReference);
+        }
+        if (reference instanceof CallSiteReference) {
+            CallSiteReference callSiteReference = (CallSiteReference)reference;
+            return getCallSiteString(callSiteReference);
+        }
         return null;
     }
 
diff --git a/util/src/main/java/org/jf/util/NakedByteArrayOutputStream.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/CallSiteSection.java
similarity index 81%
copy from util/src/main/java/org/jf/util/NakedByteArrayOutputStream.java
copy to dexlib2/src/main/java/org/jf/dexlib2/writer/CallSiteSection.java
index 1358627..0860de4 100644
--- a/util/src/main/java/org/jf/util/NakedByteArrayOutputStream.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/CallSiteSection.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2012, Google Inc.
+ * Copyright 2018, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,16 +29,11 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package org.jf.util;
+package org.jf.dexlib2.writer;
 
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
+import org.jf.dexlib2.iface.reference.CallSiteReference;
 
-/**
- * A ByteArrayOutputStream that lets you grab its protected bits.
- */
-public class NakedByteArrayOutputStream extends ByteArrayOutputStream {
-    public byte[] getBuffer() throws IOException {
-        return buf;
-    }
+public interface CallSiteSection<CallSiteKey extends CallSiteReference, EncodedArrayKey>
+        extends IndexSection<CallSiteKey> {
+    EncodedArrayKey getEncodedCallSite(CallSiteKey callSiteReference);
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/ClassSection.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/ClassSection.java
index d28dd44..b272bd6 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/writer/ClassSection.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/ClassSection.java
@@ -45,7 +45,7 @@
 import java.util.Map;
 
 public interface ClassSection<StringKey extends CharSequence, TypeKey extends CharSequence, TypeListKey, ClassKey,
-        FieldKey, MethodKey, AnnotationSetKey, EncodedValue> extends IndexSection<ClassKey> {
+        FieldKey, MethodKey, AnnotationSetKey, EncodedArrayKey> extends IndexSection<ClassKey> {
     @Nonnull Collection<? extends ClassKey> getSortedClasses();
 
     @Nullable Map.Entry<? extends ClassKey, Integer> getClassEntryByType(@Nullable TypeKey key);
@@ -55,7 +55,7 @@
     @Nullable TypeKey getSuperclass(@Nonnull ClassKey key);
     @Nullable TypeListKey getInterfaces(@Nonnull ClassKey key);
     @Nullable StringKey getSourceFile(@Nonnull ClassKey key);
-    @Nullable Collection<? extends EncodedValue> getStaticInitializers(@Nonnull ClassKey key);
+    @Nullable EncodedArrayKey getStaticInitializers(@Nonnull ClassKey key);
 
     @Nonnull Collection<? extends FieldKey> getSortedStaticFields(@Nonnull ClassKey key);
     @Nonnull Collection<? extends FieldKey> getSortedInstanceFields(@Nonnull ClassKey key);
@@ -81,9 +81,6 @@
     @Nullable TypeKey getExceptionType(@Nonnull ExceptionHandler handler);
     @Nonnull MutableMethodImplementation makeMutableMethodImplementation(@Nonnull MethodKey key);
 
-    void setEncodedArrayOffset(@Nonnull ClassKey key, int offset);
-    int getEncodedArrayOffset(@Nonnull ClassKey key);
-
     void setAnnotationDirectoryOffset(@Nonnull ClassKey key, int offset);
     int getAnnotationDirectoryOffset(@Nonnull ClassKey key);
 
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/DexWriter.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/DexWriter.java
index 3020f32..46d6062 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/writer/DexWriter.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/DexWriter.java
@@ -35,10 +35,8 @@
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Ordering;
-import org.jf.dexlib2.AccessFlags;
-import org.jf.dexlib2.Opcode;
-import org.jf.dexlib2.Opcodes;
-import org.jf.dexlib2.ReferenceType;
+import com.google.common.primitives.Ints;
+import org.jf.dexlib2.*;
 import org.jf.dexlib2.base.BaseAnnotation;
 import org.jf.dexlib2.base.BaseAnnotationElement;
 import org.jf.dexlib2.builder.MutableMethodImplementation;
@@ -63,7 +61,6 @@
 import org.jf.dexlib2.writer.io.DexDataStore;
 import org.jf.dexlib2.writer.io.MemoryDeferredOutputStream;
 import org.jf.dexlib2.writer.util.TryListBuilder;
-import org.jf.util.CollectionUtils;
 import org.jf.util.ExceptionWithContext;
 
 import javax.annotation.Nonnull;
@@ -85,9 +82,12 @@
         TypeRef extends TypeReference, ProtoRefKey extends MethodProtoReference,
         FieldRefKey extends FieldReference, MethodRefKey extends MethodReference,
         ClassKey extends Comparable<? super ClassKey>,
+        CallSiteKey extends CallSiteReference,
+        MethodHandleKey extends MethodHandleReference,
         AnnotationKey extends Annotation, AnnotationSetKey,
         TypeListKey,
         FieldKey, MethodKey,
+        EncodedArrayKey,
         EncodedValue,
         AnnotationElement extends org.jf.dexlib2.iface.AnnotationElement,
         StringSectionType extends StringSection<StringKey, StringRef>,
@@ -96,14 +96,19 @@
         FieldSectionType extends FieldSection<StringKey, TypeKey, FieldRefKey, FieldKey>,
         MethodSectionType extends MethodSection<StringKey, TypeKey, ProtoRefKey, MethodRefKey, MethodKey>,
         ClassSectionType extends ClassSection<StringKey, TypeKey, TypeListKey, ClassKey, FieldKey, MethodKey,
-                AnnotationSetKey, EncodedValue>,
+                AnnotationSetKey, EncodedArrayKey>,
+        CallSiteSectionType extends CallSiteSection<CallSiteKey, EncodedArrayKey>,
+        MethodHandleSectionType extends MethodHandleSection<MethodHandleKey, FieldRefKey, MethodRefKey>,
         TypeListSectionType extends TypeListSection<TypeKey, TypeListKey>,
         AnnotationSectionType extends AnnotationSection<StringKey, TypeKey, AnnotationKey, AnnotationElement,
                 EncodedValue>,
-        AnnotationSetSectionType extends AnnotationSetSection<AnnotationKey, AnnotationSetKey>> {
+        AnnotationSetSectionType extends AnnotationSetSection<AnnotationKey, AnnotationSetKey>,
+        EncodedArraySectionType extends EncodedArraySection<EncodedArrayKey, EncodedValue>> {
     public static final int NO_INDEX = -1;
     public static final int NO_OFFSET = 0;
 
+    public static final int MAX_POOL_SIZE = (1 << 16);
+
     protected final Opcodes opcodes;
 
     protected int stringIndexSectionOffset = NO_OFFSET;
@@ -112,6 +117,8 @@
     protected int fieldSectionOffset = NO_OFFSET;
     protected int methodSectionOffset = NO_OFFSET;
     protected int classIndexSectionOffset = NO_OFFSET;
+    protected int callSiteSectionOffset = NO_OFFSET;
+    protected int methodHandleSectionOffset = NO_OFFSET;
 
     protected int stringDataSectionOffset = NO_OFFSET;
     protected int classDataSectionOffset = NO_OFFSET;
@@ -125,23 +132,31 @@
     protected int codeSectionOffset = NO_OFFSET;
     protected int mapSectionOffset = NO_OFFSET;
 
-    protected int numEncodedArrayItems = 0;
     protected int numAnnotationSetRefItems = 0;
     protected int numAnnotationDirectoryItems = 0;
     protected int numDebugInfoItems = 0;
     protected int numCodeItemItems = 0;
     protected int numClassDataItems = 0;
 
+    // The sections defined here must be kept in sync with these section arrays:
+    // - DexWriter.overflowableSections
+    // - DexPool.sections
+
     public final StringSectionType stringSection;
     public final TypeSectionType typeSection;
     public final ProtoSectionType protoSection;
     public final FieldSectionType fieldSection;
     public final MethodSectionType methodSection;
     public final ClassSectionType classSection;
-    
+    public final CallSiteSectionType callSiteSection;
+    public final MethodHandleSectionType methodHandleSection;
+
     public final TypeListSectionType typeListSection;
     public final AnnotationSectionType annotationSection;
     public final AnnotationSetSectionType annotationSetSection;
+    public final EncodedArraySectionType encodedArraySection;
+
+    private final IndexSection<?>[] overflowableSections;
 
     protected DexWriter(Opcodes opcodes) {
         this.opcodes = opcodes;
@@ -153,9 +168,23 @@
         this.fieldSection = sectionProvider.getFieldSection();
         this.methodSection = sectionProvider.getMethodSection();
         this.classSection = sectionProvider.getClassSection();
+        this.callSiteSection = sectionProvider.getCallSiteSection();
+        this.methodHandleSection = sectionProvider.getMethodHandleSection();
         this.typeListSection = sectionProvider.getTypeListSection();
         this.annotationSection = sectionProvider.getAnnotationSection();
         this.annotationSetSection = sectionProvider.getAnnotationSetSection();
+        this.encodedArraySection = sectionProvider.getEncodedArraySection();
+
+        overflowableSections = new IndexSection<?>[] {
+                //stringSection,            // supports jumbo indexes
+                typeSection,
+                protoSection,
+                fieldSection,
+                methodSection,
+                //classSection,             // redundant check: cannot be larger than typeSection
+                callSiteSection,
+                methodHandleSection,
+        };
     }
 
     @Nonnull protected abstract SectionProvider getSectionProvider();
@@ -163,6 +192,16 @@
     protected abstract void writeEncodedValue(@Nonnull InternalEncodedValueWriter writer,
                                               @Nonnull EncodedValue encodedValue) throws IOException;
 
+    private Comparator<Map.Entry<? extends CallSiteKey, Integer>> callSiteComparator =
+            new Comparator<Entry<? extends CallSiteKey, Integer>>() {
+                @Override
+                public int compare(Entry<? extends CallSiteKey, Integer> o1, Entry<? extends CallSiteKey, Integer> o2) {
+                    int offset1 = encodedArraySection.getItemOffset(callSiteSection.getEncodedCallSite(o1.getKey()));
+                    int offset2 = encodedArraySection.getItemOffset(callSiteSection.getEncodedCallSite(o2.getKey()));
+                    return Ints.compare(offset1, offset2);
+                }
+            };
+
     private static Comparator<Map.Entry> toStringKeyComparator =
             new Comparator<Map.Entry>() {
                 @Override public int compare(Entry o1, Entry o2) {
@@ -179,9 +218,10 @@
     }
 
     protected class InternalEncodedValueWriter extends EncodedValueWriter<StringKey, TypeKey, FieldRefKey, MethodRefKey,
-            AnnotationElement, EncodedValue> {
+            AnnotationElement, ProtoRefKey, MethodHandleKey, EncodedValue> {
         private InternalEncodedValueWriter(@Nonnull DexDataWriter writer) {
-            super(writer, stringSection, typeSection, fieldSection, methodSection, annotationSection);
+            super(writer, stringSection, typeSection, fieldSection, methodSection, protoSection, methodHandleSection,
+                    annotationSection);
         }
 
         @Override protected void writeEncodedValue(@Nonnull EncodedValue encodedValue) throws IOException {
@@ -196,7 +236,9 @@
                 protoSection.getItemCount() * ProtoIdItem.ITEM_SIZE +
                 fieldSection.getItemCount() * FieldIdItem.ITEM_SIZE +
                 methodSection.getItemCount() * MethodIdItem.ITEM_SIZE +
-                classSection.getItemCount() * ClassDefItem.ITEM_SIZE;
+                classSection.getItemCount() * ClassDefItem.ITEM_SIZE +
+                callSiteSection.getItemCount() * CallSiteIdItem.ITEM_SIZE +
+                methodHandleSection.getItemCount() * MethodHandleItem.ITEM_SIZE;
     }
 
     @Nonnull
@@ -227,19 +269,28 @@
     }
 
     /**
-     * Checks whether any of the size-sensitive constant pools have overflowed.
-     *
-     * This checks whether the type, method, field pools are larger than 64k entries.
+     * Checks whether any of the size-sensitive constant pools have overflowed and have more than 64Ki entries.
      *
      * Note that even if this returns true, it may still be possible to successfully write the dex file, if the
-     * overflowed items are not referenced anywhere that uses a 16-bit index
+     * overflowed items are not referenced anywhere that uses a 16-bit index.
      *
      * @return true if any of the size-sensitive constant pools have overflowed
      */
     public boolean hasOverflowed() {
-        return methodSection.getItemCount() > (1 << 16) ||
-                typeSection.getItemCount() > (1 << 16) ||
-                fieldSection.getItemCount() > (1 << 16);
+        return hasOverflowed(MAX_POOL_SIZE);
+    }
+
+    /**
+     * Checks whether any of the size-sensitive constant pools have more than the supplied maximum number of entries.
+     *
+     * @param maxPoolSize the maximum number of entries allowed in any of the size-sensitive constant pools
+     * @return true if any of the size-sensitive constant pools have overflowed the supplied size limit
+     */
+    public boolean hasOverflowed(int maxPoolSize) {
+        for (IndexSection section: overflowableSections) {
+            if (section.getItemCount() > maxPoolSize) return true;
+        }
+        return false;
     }
 
     public void writeTo(@Nonnull DexDataStore dest) throws IOException {
@@ -260,13 +311,36 @@
                 writeProtos(indexWriter);
                 writeFields(indexWriter);
                 writeMethods(indexWriter);
+
+                // encoded arrays depend on method handles..
+                DexDataWriter methodHandleWriter = outputAt(dest, indexWriter.getPosition() +
+                        classSection.getItemCount() * ClassDefItem.ITEM_SIZE +
+                        callSiteSection.getItemCount() * CallSiteIdItem.ITEM_SIZE);
+                try {
+                    writeMethodHandles(methodHandleWriter);
+                } finally {
+                    methodHandleWriter.close();
+                }
+
+                // call sites depend on encoded arrays..
                 writeEncodedArrays(offsetWriter);
+
+                // class defs depend on method handles and call sites..
+                DexDataWriter callSiteWriter = outputAt(dest, indexWriter.getPosition() +
+                        classSection.getItemCount() * ClassDefItem.ITEM_SIZE);
+                try {
+                    writeCallSites(callSiteWriter);
+                } finally {
+                    callSiteWriter.close();
+                }
+
                 writeAnnotations(offsetWriter);
                 writeAnnotationSets(offsetWriter);
                 writeAnnotationSetRefs(offsetWriter);
                 writeAnnotationDirectories(offsetWriter);
                 writeDebugAndCodeItems(offsetWriter, tempFactory.makeDeferredOutputStream());
                 writeClasses(indexWriter, offsetWriter);
+
                 writeMapItem(offsetWriter);
                 writeHeader(headerWriter, dataSectionOffset, offsetWriter.getPosition());
             } finally {
@@ -480,10 +554,15 @@
         if (classHasData) {
             indexWriter.writeInt(offsetWriter.getPosition());
         } else {
-            indexWriter.writeInt(0);
+            indexWriter.writeInt(NO_OFFSET);
         }
 
-        indexWriter.writeInt(classSection.getEncodedArrayOffset(key));
+        EncodedArrayKey staticInitializers = classSection.getStaticInitializers(key);
+        if (staticInitializers != null) {
+            indexWriter.writeInt(encodedArraySection.getItemOffset(staticInitializers));
+        } else {
+            indexWriter.writeInt(NO_OFFSET);
+        }
 
         // now write the class_data_item
         if (classHasData) {
@@ -503,6 +582,58 @@
         return nextIndex;
     }
 
+    private void writeCallSites(DexDataWriter writer) throws IOException {
+        callSiteSectionOffset = writer.getPosition();
+
+        List<Map.Entry<? extends CallSiteKey, Integer>> callSiteEntries =
+                Lists.newArrayList(callSiteSection.getItems());
+        Collections.sort(callSiteEntries, callSiteComparator);
+
+        int index = 0;
+
+        for (Map.Entry<? extends CallSiteKey, Integer> callSite: callSiteEntries) {
+            callSite.setValue(index++);
+            writer.writeInt(encodedArraySection.getItemOffset(callSiteSection.getEncodedCallSite(callSite.getKey())));
+        }
+    }
+
+    private void writeMethodHandles(DexDataWriter writer) throws IOException {
+        methodHandleSectionOffset = writer.getPosition();
+
+        int index = 0;
+
+        for (Entry<? extends MethodHandleKey, Integer> entry: methodHandleSection.getItems()) {
+            entry.setValue(index++);
+            MethodHandleKey methodHandleReference = entry.getKey();
+            writer.writeUshort(methodHandleReference.getMethodHandleType());
+            writer.writeUshort(0);
+            int memberIndex;
+            switch (methodHandleReference.getMethodHandleType()) {
+                case MethodHandleType.STATIC_PUT:
+                case MethodHandleType.STATIC_GET:
+                case MethodHandleType.INSTANCE_PUT:
+                case MethodHandleType.INSTANCE_GET:
+                    memberIndex = fieldSection.getItemIndex(
+                            methodHandleSection.getFieldReference(methodHandleReference));
+                    break;
+                case MethodHandleType.INVOKE_STATIC:
+                case MethodHandleType.INVOKE_INSTANCE:
+                case MethodHandleType.INVOKE_CONSTRUCTOR:
+                case MethodHandleType.INVOKE_DIRECT:
+                case MethodHandleType.INVOKE_INTERFACE:
+                    memberIndex = methodSection.getItemIndex(
+                            methodHandleSection.getMethodReference(methodHandleReference));
+                    break;
+                default:
+                    throw new ExceptionWithContext("Invalid method handle type: %d",
+                            methodHandleReference.getMethodHandleType());
+            }
+
+            writer.writeUshort(memberIndex);
+            writer.writeUshort(0);
+        }
+    }
+
     private void writeEncodedFields(@Nonnull DexDataWriter writer, @Nonnull Collection<? extends FieldKey> fields)
             throws IOException {
         int prevIndex = 0;
@@ -541,55 +672,16 @@
         }
     }
 
-    private static class EncodedArrayKey<EncodedValue> {
-        @Nonnull Collection<? extends EncodedValue> elements;
-
-        public EncodedArrayKey() {
-        }
-
-        @Override public int hashCode() {
-            return CollectionUtils.listHashCode(elements);
-        }
-
-        @Override public boolean equals(Object o) {
-            if (o instanceof EncodedArrayKey) {
-                EncodedArrayKey other = (EncodedArrayKey)o;
-                if (elements.size() != other.elements.size()) {
-                    return false;
-                }
-                return Iterables.elementsEqual(elements, other.elements);
-            }
-            return false;
-        }
-    }
-
     private void writeEncodedArrays(@Nonnull DexDataWriter writer) throws IOException {
         InternalEncodedValueWriter encodedValueWriter = new InternalEncodedValueWriter(writer);
         encodedArraySectionOffset = writer.getPosition();
 
-        HashMap<EncodedArrayKey<EncodedValue>, Integer> internedItems = Maps.newHashMap();
-        EncodedArrayKey<EncodedValue> key = new EncodedArrayKey<EncodedValue>();
-
-        for (ClassKey classKey: classSection.getSortedClasses()) {
-            Collection <? extends EncodedValue> elements = classSection.getStaticInitializers(classKey);
-            if (elements != null && elements.size() > 0) {
-                key.elements = elements;
-                Integer prev = internedItems.get(key);
-                if (prev != null) {
-                    classSection.setEncodedArrayOffset(classKey, prev);
-                } else {
-                    int offset = writer.getPosition();
-                    internedItems.put(key, offset);
-                    classSection.setEncodedArrayOffset(classKey, offset);
-                    key = new EncodedArrayKey<EncodedValue>();
-
-                    numEncodedArrayItems++;
-
-                    writer.writeUleb128(elements.size());
-                    for (EncodedValue value: elements) {
-                        writeEncodedValue(encodedValueWriter, value);
-                    }
-                }
+        for (Map.Entry<? extends EncodedArrayKey, Integer> entry: encodedArraySection.getItems()) {
+            entry.setValue(writer.getPosition());
+            List<? extends EncodedValue> encodedArray = encodedArraySection.getEncodedValueList(entry.getKey());
+            writer.writeUleb128(encodedArray.size());
+            for (EncodedValue value: encodedArray) {
+                writeEncodedValue(encodedValueWriter, value);
             }
         }
     }
@@ -975,7 +1067,7 @@
 
             InstructionWriter instructionWriter =
                     InstructionWriter.makeInstructionWriter(opcodes, writer, stringSection, typeSection, fieldSection,
-                            methodSection, protoSection);
+                            methodSection, protoSection, methodHandleSection, callSiteSection);
 
             writer.writeInt(codeUnitCount);
             int codeOffset = 0;
@@ -1196,10 +1288,16 @@
         if (methodSection.getItems().size() > 0) {
             numItems++;
         }
+        if (callSiteSection.getItems().size() > 0) {
+            numItems++;
+        }
+        if (methodHandleSection.getItems().size() > 0) {
+            numItems++;
+        }
         if (typeListSection.getItems().size() > 0) {
             numItems++;
         }
-        if (numEncodedArrayItems > 0) {
+        if (encodedArraySection.getItems().size() > 0) {
             numItems++;
         }
         if (annotationSection.getItems().size() > 0) {
@@ -1247,14 +1345,19 @@
         writeMapItem(writer, ItemType.FIELD_ID_ITEM, fieldSection.getItems().size(), fieldSectionOffset);
         writeMapItem(writer, ItemType.METHOD_ID_ITEM, methodSection.getItems().size(), methodSectionOffset);
         writeMapItem(writer, ItemType.CLASS_DEF_ITEM, classSection.getItems().size(), classIndexSectionOffset);
+        writeMapItem(writer, ItemType.CALL_SITE_ID_ITEM, callSiteSection.getItems().size(), callSiteSectionOffset);
+        writeMapItem(writer, ItemType.METHOD_HANDLE_ITEM, methodHandleSection.getItems().size(),
+                methodHandleSectionOffset);
 
         // data section
         writeMapItem(writer, ItemType.STRING_DATA_ITEM, stringSection.getItems().size(), stringDataSectionOffset);
         writeMapItem(writer, ItemType.TYPE_LIST, typeListSection.getItems().size(), typeListSectionOffset);
-        writeMapItem(writer, ItemType.ENCODED_ARRAY_ITEM, numEncodedArrayItems, encodedArraySectionOffset);
+        writeMapItem(writer, ItemType.ENCODED_ARRAY_ITEM, encodedArraySection.getItems().size(),
+                encodedArraySectionOffset);
         writeMapItem(writer, ItemType.ANNOTATION_ITEM, annotationSection.getItems().size(), annotationSectionOffset);
         writeMapItem(writer, ItemType.ANNOTATION_SET_ITEM,
-                annotationSetSection.getItems().size() + (shouldCreateEmptyAnnotationSet() ? 1 : 0), annotationSetSectionOffset);
+                annotationSetSection.getItems().size() + (shouldCreateEmptyAnnotationSet() ? 1 : 0),
+                annotationSetSectionOffset);
         writeMapItem(writer, ItemType.ANNOTATION_SET_REF_LIST, numAnnotationSetRefItems, annotationSetRefSectionOffset);
         writeMapItem(writer, ItemType.ANNOTATION_DIRECTORY_ITEM, numAnnotationDirectoryItems,
                 annotationDirectorySectionOffset);
@@ -1331,8 +1434,11 @@
         @Nonnull public abstract FieldSectionType getFieldSection();
         @Nonnull public abstract MethodSectionType getMethodSection();
         @Nonnull public abstract ClassSectionType getClassSection();
+        @Nonnull public abstract CallSiteSectionType getCallSiteSection();
+        @Nonnull public abstract MethodHandleSectionType getMethodHandleSection();
         @Nonnull public abstract TypeListSectionType getTypeListSection();
         @Nonnull public abstract AnnotationSectionType getAnnotationSection();
         @Nonnull public abstract AnnotationSetSectionType getAnnotationSetSection();
+        @Nonnull public abstract EncodedArraySectionType getEncodedArraySection();
     }
 }
diff --git a/util/src/main/java/org/jf/util/NakedByteArrayOutputStream.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/EncodedArraySection.java
similarity index 81%
copy from util/src/main/java/org/jf/util/NakedByteArrayOutputStream.java
copy to dexlib2/src/main/java/org/jf/dexlib2/writer/EncodedArraySection.java
index 1358627..49a5d15 100644
--- a/util/src/main/java/org/jf/util/NakedByteArrayOutputStream.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/EncodedArraySection.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2012, Google Inc.
+ * Copyright 2018, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,16 +29,10 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package org.jf.util;
+package org.jf.dexlib2.writer;
 
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
+import java.util.List;
 
-/**
- * A ByteArrayOutputStream that lets you grab its protected bits.
- */
-public class NakedByteArrayOutputStream extends ByteArrayOutputStream {
-    public byte[] getBuffer() throws IOException {
-        return buf;
-    }
+public interface EncodedArraySection<EncodedArrayKey, EncodedValue> extends OffsetSection<EncodedArrayKey> {
+    List<? extends EncodedValue> getEncodedValueList(EncodedArrayKey encodedArrayKey);
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/EncodedValueWriter.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/EncodedValueWriter.java
index def326c..3032acb 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/writer/EncodedValueWriter.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/EncodedValueWriter.java
@@ -35,6 +35,7 @@
 import org.jf.dexlib2.ValueType;
 import org.jf.dexlib2.base.BaseAnnotationElement;
 import org.jf.dexlib2.iface.reference.FieldReference;
+import org.jf.dexlib2.iface.reference.MethodHandleReference;
 import org.jf.dexlib2.iface.reference.MethodReference;
 
 import javax.annotation.Nonnull;
@@ -43,12 +44,14 @@
 
 public abstract class EncodedValueWriter<StringKey, TypeKey, FieldRefKey extends FieldReference,
         MethodRefKey extends MethodReference, AnnotationElement extends org.jf.dexlib2.iface.AnnotationElement,
-        EncodedValue> {
+        ProtoRefKey, MethodHandleKey extends MethodHandleReference, EncodedValue> {
     @Nonnull private final DexDataWriter writer;
     @Nonnull private final StringSection<StringKey, ?> stringSection;
     @Nonnull private final TypeSection<?, TypeKey, ?> typeSection;
     @Nonnull private final FieldSection<?, ?, FieldRefKey, ?> fieldSection;
     @Nonnull private final MethodSection<?, ?, ?, MethodRefKey, ?> methodSection;
+    @Nonnull private final ProtoSection<?, ?, ProtoRefKey, ?> protoSection;
+    @Nonnull private final MethodHandleSection<MethodHandleKey, ?, ?> methodHandleSection;
     @Nonnull private final AnnotationSection<StringKey, TypeKey, ?, AnnotationElement, EncodedValue> annotationSection;
 
     public EncodedValueWriter(
@@ -57,12 +60,16 @@
             @Nonnull TypeSection<?, TypeKey, ?> typeSection,
             @Nonnull FieldSection<?, ?, FieldRefKey, ?> fieldSection,
             @Nonnull MethodSection<?, ?, ?, MethodRefKey, ?> methodSection,
+            ProtoSection<?, ?, ProtoRefKey, ?> protoSection,
+            MethodHandleSection<MethodHandleKey, ?, ?> methodHandleSection,
             @Nonnull AnnotationSection<StringKey, TypeKey, ?, AnnotationElement, EncodedValue> annotationSection) {
         this.writer = writer;
         this.stringSection = stringSection;
         this.typeSection = typeSection;
         this.fieldSection = fieldSection;
         this.methodSection = methodSection;
+        this.protoSection = protoSection;
+        this.methodHandleSection = methodHandleSection;
         this.annotationSection = annotationSection;
     }
 
@@ -146,4 +153,12 @@
     public void writeType(@Nonnull TypeKey value) throws IOException {
         writer.writeEncodedUint(ValueType.TYPE, typeSection.getItemIndex(value));
     }
+
+    public void writeMethodType(@Nonnull ProtoRefKey value) throws IOException {
+        writer.writeEncodedUint(ValueType.METHOD_TYPE, protoSection.getItemIndex(value));
+    }
+
+    public void writeMethodHandle(@Nonnull MethodHandleKey value) throws IOException {
+        writer.writeEncodedUint(ValueType.METHOD_HANDLE, methodHandleSection.getItemIndex(value));
+    }
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/InstructionWriter.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/InstructionWriter.java
index f6fd52f..f86f683 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/writer/InstructionWriter.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/InstructionWriter.java
@@ -40,12 +40,7 @@
 import org.jf.dexlib2.iface.instruction.ReferenceInstruction;
 import org.jf.dexlib2.iface.instruction.SwitchElement;
 import org.jf.dexlib2.iface.instruction.formats.*;
-import org.jf.dexlib2.iface.reference.FieldReference;
-import org.jf.dexlib2.iface.reference.MethodProtoReference;
-import org.jf.dexlib2.iface.reference.MethodReference;
-import org.jf.dexlib2.iface.reference.Reference;
-import org.jf.dexlib2.iface.reference.StringReference;
-import org.jf.dexlib2.iface.reference.TypeReference;
+import org.jf.dexlib2.iface.reference.*;
 import org.jf.util.ExceptionWithContext;
 
 import javax.annotation.Nonnull;
@@ -55,7 +50,8 @@
 
 public class InstructionWriter<StringRef extends StringReference, TypeRef extends TypeReference,
         FieldRefKey extends FieldReference, MethodRefKey extends MethodReference,
-        ProtoRefKey extends MethodProtoReference> {
+        ProtoRefKey extends MethodProtoReference, MethodHandleKey extends MethodHandleReference,
+        CallSiteKey extends CallSiteReference> {
     @Nonnull private final Opcodes opcodes;
     @Nonnull private final DexDataWriter writer;
     @Nonnull private final StringSection<?, StringRef> stringSection;
@@ -63,10 +59,14 @@
     @Nonnull private final FieldSection<?, ?, FieldRefKey, ?> fieldSection;
     @Nonnull private final MethodSection<?, ?, ?, MethodRefKey, ?> methodSection;
     @Nonnull private final ProtoSection<?, ?, ProtoRefKey, ?> protoSection;
+    @Nonnull private final MethodHandleSection<MethodHandleKey, ?, ?> methodHandleSection;
+    @Nonnull private final CallSiteSection<CallSiteKey, ?> callSiteSection;
 
-    @Nonnull static <StringRef extends StringReference, TypeRef extends TypeReference, FieldRefKey extends FieldReference,
-            MethodRefKey extends MethodReference, ProtoRefKey extends MethodProtoReference>
-            InstructionWriter<StringRef, TypeRef, FieldRefKey, MethodRefKey, ProtoRefKey>
+    @Nonnull static <StringRef extends StringReference, TypeRef extends TypeReference,
+            FieldRefKey extends FieldReference, MethodRefKey extends MethodReference,
+            ProtoRefKey extends MethodProtoReference, MethodHandleKey extends MethodHandleReference,
+            CallSiteKey extends CallSiteReference>
+            InstructionWriter<StringRef, TypeRef, FieldRefKey, MethodRefKey, ProtoRefKey, MethodHandleKey, CallSiteKey>
             makeInstructionWriter(
                 @Nonnull Opcodes opcodes,
                 @Nonnull DexDataWriter writer,
@@ -74,9 +74,13 @@
                 @Nonnull TypeSection<?, ?, TypeRef> typeSection,
                 @Nonnull FieldSection<?, ?, FieldRefKey, ?> fieldSection,
                 @Nonnull MethodSection<?, ?, ?, MethodRefKey, ?> methodSection,
-                @Nonnull ProtoSection<?, ?, ProtoRefKey, ?> protoSection) {
-        return new InstructionWriter<StringRef, TypeRef, FieldRefKey, MethodRefKey, ProtoRefKey>(
-                opcodes, writer, stringSection, typeSection, fieldSection, methodSection, protoSection);
+                @Nonnull ProtoSection<?, ?, ProtoRefKey, ?> protoSection,
+                @Nonnull MethodHandleSection<MethodHandleKey, ?, ?> methodHandleSection,
+                @Nonnull CallSiteSection<CallSiteKey, ?> callSiteSection) {
+        return new InstructionWriter<
+                StringRef, TypeRef, FieldRefKey, MethodRefKey, ProtoRefKey, MethodHandleKey,CallSiteKey>(
+                        opcodes, writer, stringSection, typeSection, fieldSection, methodSection, protoSection,
+                        methodHandleSection, callSiteSection);
     }
 
     InstructionWriter(@Nonnull Opcodes opcodes,
@@ -85,7 +89,9 @@
                       @Nonnull TypeSection<?, ?, TypeRef> typeSection,
                       @Nonnull FieldSection<?, ?, FieldRefKey, ?> fieldSection,
                       @Nonnull MethodSection<?, ?, ?, MethodRefKey, ?> methodSection,
-                      @Nonnull ProtoSection<?, ?, ProtoRefKey, ?> protoSection) {
+                      @Nonnull ProtoSection<?, ?, ProtoRefKey, ?> protoSection,
+                      @Nonnull MethodHandleSection<MethodHandleKey, ?, ?> methodHandleSection,
+                      @Nonnull CallSiteSection<CallSiteKey, ?> callSiteSection) {
         this.opcodes = opcodes;
         this.writer = writer;
         this.stringSection = stringSection;
@@ -93,6 +99,8 @@
         this.fieldSection = fieldSection;
         this.methodSection = methodSection;
         this.protoSection = protoSection;
+        this.methodHandleSection = methodHandleSection;
+        this.callSiteSection = callSiteSection;
     }
 
     private short getOpcodeValue(Opcode opcode) {
@@ -551,6 +559,10 @@
                 return typeSection.getItemIndex((TypeRef) reference);
             case ReferenceType.METHOD_PROTO:
                 return protoSection.getItemIndex((ProtoRefKey) reference);
+            case ReferenceType.METHOD_HANDLE:
+                return methodHandleSection.getItemIndex((MethodHandleKey) reference);
+            case ReferenceType.CALL_SITE:
+                return callSiteSection.getItemIndex((CallSiteKey) reference);
             default:
                 throw new ExceptionWithContext("Unknown reference type: %d",  referenceType);
         }
diff --git a/util/src/main/java/org/jf/util/BlankReader.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/MethodHandleSection.java
similarity index 71%
copy from util/src/main/java/org/jf/util/BlankReader.java
copy to dexlib2/src/main/java/org/jf/dexlib2/writer/MethodHandleSection.java
index ca55dd0..2190ab9 100644
--- a/util/src/main/java/org/jf/util/BlankReader.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/MethodHandleSection.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014, Google Inc.
+ * Copyright 2018, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,20 +29,14 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package org.jf.util;
+package org.jf.dexlib2.writer;
 
-import javax.annotation.Nonnull;
-import java.io.IOException;
-import java.io.Reader;
+import org.jf.dexlib2.iface.reference.FieldReference;
+import org.jf.dexlib2.iface.reference.MethodHandleReference;
+import org.jf.dexlib2.iface.reference.MethodReference;
 
-public class BlankReader extends Reader {
-    public static final BlankReader INSTANCE = new BlankReader();
-
-    @Override public int read(@Nonnull char[] chars, int i, int i2) throws IOException {
-        return -1;
-    }
-
-    @Override
-    public void close() throws IOException {
-    }
+public interface MethodHandleSection<MethodHandleKey extends MethodHandleReference, FieldRefKey extends FieldReference,
+        MethodRefKey extends MethodReference> extends IndexSection<MethodHandleKey> {
+    FieldRefKey getFieldReference(MethodHandleKey methodHandleReference);
+    MethodRefKey getMethodReference(MethodHandleKey methodHandleReference);
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderCallSitePool.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderCallSitePool.java
new file mode 100644
index 0000000..0c5c6ae
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderCallSitePool.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.writer.builder;
+
+import com.google.common.collect.Maps;
+import org.jf.dexlib2.iface.reference.CallSiteReference;
+import org.jf.dexlib2.writer.CallSiteSection;
+import org.jf.dexlib2.writer.builder.BuilderEncodedValues.BuilderArrayEncodedValue;
+import org.jf.dexlib2.writer.util.CallSiteUtil;
+
+import javax.annotation.Nonnull;
+import java.util.Collection;
+import java.util.Map;
+import java.util.concurrent.ConcurrentMap;
+
+public class BuilderCallSitePool extends BaseBuilderPool
+        implements CallSiteSection<BuilderCallSiteReference, BuilderArrayEncodedValue> {
+    @Nonnull private final ConcurrentMap<CallSiteReference, BuilderCallSiteReference> internedItems =
+            Maps.newConcurrentMap();
+
+    public BuilderCallSitePool(@Nonnull DexBuilder dexBuilder) {
+        super(dexBuilder);
+    }
+
+    @Nonnull public BuilderCallSiteReference internCallSite(@Nonnull CallSiteReference callSiteReference) {
+        BuilderCallSiteReference internedCallSite = internedItems.get(callSiteReference);
+        if (internedCallSite != null) {
+            return internedCallSite;
+        }
+        BuilderArrayEncodedValue encodedCallSite = dexBuilder.encodedArraySection.internArrayEncodedValue(
+                CallSiteUtil.getEncodedCallSite(callSiteReference));
+        internedCallSite = new BuilderCallSiteReference(callSiteReference.getName(), encodedCallSite);
+        BuilderCallSiteReference existing = internedItems.putIfAbsent(internedCallSite, internedCallSite);
+        return existing == null ? internedCallSite : existing;
+    }
+
+    @Override
+    public BuilderArrayEncodedValue getEncodedCallSite(BuilderCallSiteReference callSiteReference) {
+        return callSiteReference.encodedCallSite;
+    }
+
+    @Override
+    public int getItemIndex(@Nonnull BuilderCallSiteReference builderCallSite) {
+        return builderCallSite.index;
+    }
+
+    @Nonnull
+    @Override
+    public Collection<? extends Map.Entry<? extends BuilderCallSiteReference, Integer>> getItems() {
+        return new BuilderMapEntryCollection<BuilderCallSiteReference>(internedItems.values()) {
+            @Override
+            protected int getValue(@Nonnull BuilderCallSiteReference builderCallSiteReference) {
+                return builderCallSiteReference.index;
+            }
+
+            @Override
+            protected int setValue(@Nonnull BuilderCallSiteReference builderCallSiteReference, int value) {
+                int prev = builderCallSiteReference.index;
+                builderCallSiteReference.index = value;
+                return prev;
+            }
+        };
+    }
+
+    @Override
+    public int getItemCount() {
+        return internedItems.size();
+    }
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderCallSiteReference.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderCallSiteReference.java
new file mode 100644
index 0000000..76e5b38
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderCallSiteReference.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.writer.builder;
+
+import com.google.common.collect.ImmutableList;
+import org.jf.dexlib2.base.reference.BaseCallSiteReference;
+import org.jf.dexlib2.iface.value.StringEncodedValue;
+import org.jf.dexlib2.writer.builder.BuilderEncodedValues.BuilderArrayEncodedValue;
+import org.jf.dexlib2.writer.builder.BuilderEncodedValues.BuilderEncodedValue;
+import org.jf.dexlib2.writer.builder.BuilderEncodedValues.BuilderMethodHandleEncodedValue;
+import org.jf.dexlib2.writer.builder.BuilderEncodedValues.BuilderMethodTypeEncodedValue;
+
+import javax.annotation.Nonnull;
+import java.util.List;
+
+import static org.jf.dexlib2.writer.DexWriter.NO_INDEX;
+
+public class BuilderCallSiteReference extends BaseCallSiteReference implements BuilderReference {
+    @Nonnull final String name;
+    @Nonnull final BuilderArrayEncodedValue encodedCallSite;
+    int index = NO_INDEX;
+
+    public BuilderCallSiteReference(@Nonnull String name,
+                                    @Nonnull BuilderArrayEncodedValue encodedCallSite) {
+        this.name = name;
+        this.encodedCallSite = encodedCallSite;
+    }
+
+    @Nonnull @Override public String getName() {
+        return name;
+    }
+
+    @Nonnull @Override public BuilderMethodHandleReference getMethodHandle() {
+        return ((BuilderMethodHandleEncodedValue) encodedCallSite.elements.get(0)).getValue();
+    }
+
+    @Nonnull @Override public String getMethodName() {
+        return ((StringEncodedValue) encodedCallSite.elements.get(1)).getValue();
+    }
+
+    @Nonnull @Override public BuilderMethodProtoReference getMethodProto() {
+        return ((BuilderMethodTypeEncodedValue) encodedCallSite.elements.get(2)).getValue();
+    }
+
+    @Nonnull @Override public List<? extends BuilderEncodedValue> getExtraArguments() {
+        if (encodedCallSite.elements.size() <= 3) {
+            return ImmutableList.of();
+        }
+        return encodedCallSite.elements.subList(3, encodedCallSite.elements.size());
+    }
+
+    @Override public int getIndex() {
+        return index;
+    }
+
+    @Override public void setIndex(int index) {
+        this.index = index;
+    }
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderClassDef.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderClassDef.java
index 9938a6e..1d85281 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderClassDef.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderClassDef.java
@@ -35,9 +35,9 @@
 import com.google.common.collect.*;
 import org.jf.dexlib2.base.reference.BaseTypeReference;
 import org.jf.dexlib2.iface.ClassDef;
-import org.jf.dexlib2.util.FieldUtil;
 import org.jf.dexlib2.util.MethodUtil;
 import org.jf.dexlib2.writer.DexWriter;
+import org.jf.dexlib2.writer.builder.BuilderEncodedValues.BuilderArrayEncodedValue;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -54,9 +54,9 @@
     @Nonnull final SortedSet<BuilderField> instanceFields;
     @Nonnull final SortedSet<BuilderMethod> directMethods;
     @Nonnull final SortedSet<BuilderMethod> virtualMethods;
+    @Nullable final BuilderArrayEncodedValue staticInitializers;
 
     int classDefIndex = DexWriter.NO_INDEX;
-    int encodedArrayOffset = DexWriter.NO_OFFSET;
     int annotationDirectoryOffset = DexWriter.NO_OFFSET;
 
     BuilderClassDef(@Nonnull BuilderTypeReference type,
@@ -65,14 +65,19 @@
                     @Nonnull BuilderTypeList interfaces,
                     @Nullable BuilderStringReference sourceFile,
                     @Nonnull BuilderAnnotationSet annotations,
-                    @Nullable Iterable<? extends BuilderField> fields,
-                    @Nullable Iterable<? extends BuilderMethod> methods) {
-        if (fields == null) {
-            fields = ImmutableList.of();
-        }
+                    @Nullable SortedSet<BuilderField> staticFields,
+                    @Nullable SortedSet<BuilderField> instanceFields,
+                    @Nullable Iterable<? extends BuilderMethod> methods,
+                    @Nullable BuilderArrayEncodedValue staticInitializers) {
         if (methods == null) {
             methods = ImmutableList.of();
         }
+        if (staticFields == null) {
+            staticFields = ImmutableSortedSet.of();
+        }
+        if (instanceFields == null) {
+            instanceFields = ImmutableSortedSet.of();
+        }
 
         this.type = type;
         this.accessFlags = accessFlags;
@@ -80,10 +85,11 @@
         this.interfaces = interfaces;
         this.sourceFile = sourceFile;
         this.annotations = annotations;
-        this.staticFields = ImmutableSortedSet.copyOf(Iterables.filter(fields, FieldUtil.FIELD_IS_STATIC));
-        this.instanceFields = ImmutableSortedSet.copyOf(Iterables.filter(fields, FieldUtil.FIELD_IS_INSTANCE));
+        this.staticFields = staticFields;
+        this.instanceFields = instanceFields;
         this.directMethods = ImmutableSortedSet.copyOf(Iterables.filter(methods, MethodUtil.METHOD_IS_DIRECT));
         this.virtualMethods = ImmutableSortedSet.copyOf(Iterables.filter(methods, MethodUtil.METHOD_IS_VIRTUAL));
+        this.staticInitializers = staticInitializers;
     }
 
     @Nonnull @Override public String getType() { return type.getType(); }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderClassPool.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderClassPool.java
index 232b482..26dbf07 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderClassPool.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderClassPool.java
@@ -48,21 +48,24 @@
 import org.jf.dexlib2.util.EncodedValueUtils;
 import org.jf.dexlib2.writer.ClassSection;
 import org.jf.dexlib2.writer.DebugWriter;
+import org.jf.dexlib2.writer.builder.BuilderEncodedValues.BuilderArrayEncodedValue;
 import org.jf.dexlib2.writer.builder.BuilderEncodedValues.BuilderEncodedValue;
 import org.jf.util.AbstractForwardSequentialList;
-import org.jf.util.CollectionUtils;
 import org.jf.util.ExceptionWithContext;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import java.io.IOException;
-import java.util.*;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
 import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentMap;
 
 public class BuilderClassPool extends BaseBuilderPool implements ClassSection<BuilderStringReference,
         BuilderTypeReference, BuilderTypeList, BuilderClassDef, BuilderField, BuilderMethod, BuilderAnnotationSet,
-        BuilderEncodedValue> {
+        BuilderArrayEncodedValue> {
     @Nonnull private final ConcurrentMap<String, BuilderClassDef> internedItems =
             Maps.newConcurrentMap();
 
@@ -153,23 +156,8 @@
             };
 
     @Nullable @Override
-    public Collection<? extends BuilderEncodedValue> getStaticInitializers(@Nonnull BuilderClassDef classDef) {
-        final SortedSet<BuilderField> sortedStaticFields = classDef.getStaticFields();
-
-        final int lastIndex = CollectionUtils.lastIndexOf(sortedStaticFields, HAS_INITIALIZER);
-        if (lastIndex > -1) {
-            return new AbstractCollection<BuilderEncodedValue>() {
-                @Nonnull @Override public Iterator<BuilderEncodedValue> iterator() {
-                    Iterable<BuilderField> fields = Iterables.limit(sortedStaticFields, lastIndex + 1);
-                    return Iterables.transform(fields, GET_INITIAL_VALUE).iterator();
-                }
-
-                @Override public int size() {
-                    return lastIndex+1;
-                }
-            };
-        }
-        return null;
+    public BuilderArrayEncodedValue getStaticInitializers(@Nonnull BuilderClassDef classDef) {
+        return classDef.staticInitializers;
     }
 
     @Nonnull @Override
@@ -323,14 +311,6 @@
         return new MutableMethodImplementation(impl);
     }
 
-    @Override public void setEncodedArrayOffset(@Nonnull BuilderClassDef builderClassDef, int offset) {
-        builderClassDef.encodedArrayOffset = offset;
-    }
-
-    @Override public int getEncodedArrayOffset(@Nonnull BuilderClassDef builderClassDef) {
-        return builderClassDef.encodedArrayOffset;
-    }
-
     @Override public void setAnnotationDirectoryOffset(@Nonnull BuilderClassDef builderClassDef, int offset) {
         builderClassDef.annotationDirectoryOffset = offset;
     }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderEncodedArrayPool.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderEncodedArrayPool.java
new file mode 100644
index 0000000..c6d0db8
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderEncodedArrayPool.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.writer.builder;
+
+import com.google.common.collect.Maps;
+import org.jf.dexlib2.iface.value.ArrayEncodedValue;
+import org.jf.dexlib2.writer.EncodedArraySection;
+import org.jf.dexlib2.writer.builder.BuilderEncodedValues.BuilderArrayEncodedValue;
+import org.jf.dexlib2.writer.builder.BuilderEncodedValues.BuilderEncodedValue;
+
+import javax.annotation.Nonnull;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentMap;
+
+public class BuilderEncodedArrayPool extends BaseBuilderPool implements
+        EncodedArraySection<BuilderArrayEncodedValue, BuilderEncodedValue> {
+    @Nonnull private final ConcurrentMap<ArrayEncodedValue, BuilderArrayEncodedValue> internedItems =
+            Maps.newConcurrentMap();
+
+    public BuilderEncodedArrayPool(@Nonnull DexBuilder dexBuilder) {
+        super(dexBuilder);
+    }
+
+    @Nonnull public BuilderArrayEncodedValue internArrayEncodedValue(@Nonnull ArrayEncodedValue arrayEncodedValue) {
+        BuilderArrayEncodedValue builderArrayEncodedValue = internedItems.get(arrayEncodedValue);
+        if (builderArrayEncodedValue != null) {
+            return builderArrayEncodedValue;
+        }
+
+        builderArrayEncodedValue = (BuilderArrayEncodedValue)dexBuilder.internEncodedValue(arrayEncodedValue);
+        BuilderArrayEncodedValue previous = internedItems.putIfAbsent(
+                builderArrayEncodedValue, builderArrayEncodedValue);
+        return previous == null ? builderArrayEncodedValue : previous;
+    }
+
+    @Override
+    public int getItemOffset(@Nonnull BuilderArrayEncodedValue builderArrayEncodedValue) {
+        return builderArrayEncodedValue.offset;
+    }
+
+    @Nonnull
+    @Override
+    public Collection<? extends Map.Entry<? extends BuilderArrayEncodedValue, Integer>> getItems() {
+        return new BuilderMapEntryCollection<BuilderArrayEncodedValue>(internedItems.values()) {
+            @Override
+            protected int getValue(@Nonnull BuilderArrayEncodedValue builderArrayEncodedValue) {
+                return builderArrayEncodedValue.offset;
+            }
+
+            @Override
+            protected int setValue(@Nonnull BuilderArrayEncodedValue key, int value) {
+                int prev = key.offset;
+                key.offset = value;
+                return prev;
+            }
+        };
+    }
+
+    @Override
+    public List<? extends BuilderEncodedValue> getEncodedValueList(BuilderArrayEncodedValue builderArrayEncodedValue) {
+        return builderArrayEncodedValue.elements;
+    }
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderEncodedValues.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderEncodedValues.java
index 0f04712..5fae60c 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderEncodedValues.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderEncodedValues.java
@@ -34,6 +34,7 @@
 import org.jf.dexlib2.base.value.*;
 import org.jf.dexlib2.iface.value.EncodedValue;
 import org.jf.dexlib2.immutable.value.*;
+import org.jf.dexlib2.writer.DexWriter;
 import org.jf.util.ExceptionWithContext;
 
 import javax.annotation.Nonnull;
@@ -66,6 +67,7 @@
 
     public static class BuilderArrayEncodedValue extends BaseArrayEncodedValue implements BuilderEncodedValue {
         @Nonnull final List<? extends BuilderEncodedValue> elements;
+        int offset = DexWriter.NO_OFFSET;
 
         BuilderArrayEncodedValue(@Nonnull List<? extends BuilderEncodedValue> elements) {
             this.elements = elements;
@@ -239,4 +241,26 @@
             return typeReference.getType();
         }
     }
+
+    public static class BuilderMethodTypeEncodedValue extends BaseMethodTypeEncodedValue
+            implements BuilderEncodedValue {
+        @Nonnull final BuilderMethodProtoReference methodProtoReference;
+
+        public BuilderMethodTypeEncodedValue(@Nonnull BuilderMethodProtoReference methodProtoReference) {
+            this.methodProtoReference = methodProtoReference;
+        }
+
+        @Nonnull @Override public BuilderMethodProtoReference getValue() { return methodProtoReference; }
+    }
+
+    public static class BuilderMethodHandleEncodedValue extends BaseMethodHandleEncodedValue
+            implements BuilderEncodedValue {
+        @Nonnull final BuilderMethodHandleReference methodHandleReference;
+
+        public BuilderMethodHandleEncodedValue(@Nonnull BuilderMethodHandleReference methodHandleReference) {
+            this.methodHandleReference = methodHandleReference;
+        }
+
+        @Nonnull @Override public BuilderMethodHandleReference getValue() { return methodHandleReference; }
+    }
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderMethodHandlePool.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderMethodHandlePool.java
new file mode 100644
index 0000000..320344c
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderMethodHandlePool.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.writer.builder;
+
+import com.google.common.collect.Maps;
+import org.jf.dexlib2.MethodHandleType;
+import org.jf.dexlib2.iface.reference.FieldReference;
+import org.jf.dexlib2.iface.reference.MethodHandleReference;
+import org.jf.dexlib2.iface.reference.MethodReference;
+import org.jf.dexlib2.writer.MethodHandleSection;
+import org.jf.util.ExceptionWithContext;
+
+import javax.annotation.Nonnull;
+import java.util.Collection;
+import java.util.Map;
+import java.util.concurrent.ConcurrentMap;
+
+public class BuilderMethodHandlePool extends BaseBuilderPool
+        implements MethodHandleSection<BuilderMethodHandleReference, BuilderFieldReference, BuilderMethodReference> {
+    @Nonnull private final ConcurrentMap<MethodHandleReference, BuilderMethodHandleReference> internedItems =
+            Maps.newConcurrentMap();
+
+    public BuilderMethodHandlePool(@Nonnull DexBuilder dexBuilder) {
+        super(dexBuilder);
+    }
+
+    public BuilderMethodHandleReference internMethodHandle(MethodHandleReference methodHandleReference) {
+        BuilderMethodHandleReference internedMethodHandle = internedItems.get(methodHandleReference);
+        if (internedMethodHandle != null) {
+            return internedMethodHandle;
+        }
+
+        BuilderReference memberReference;
+        switch (methodHandleReference.getMethodHandleType()) {
+            case MethodHandleType.STATIC_PUT:
+            case MethodHandleType.STATIC_GET:
+            case MethodHandleType.INSTANCE_PUT:
+            case MethodHandleType.INSTANCE_GET:
+                memberReference = dexBuilder.internFieldReference(
+                        (FieldReference) methodHandleReference.getMemberReference());
+                break;
+            case MethodHandleType.INVOKE_STATIC:
+            case MethodHandleType.INVOKE_INSTANCE:
+            case MethodHandleType.INVOKE_CONSTRUCTOR:
+            case MethodHandleType.INVOKE_DIRECT:
+            case MethodHandleType.INVOKE_INTERFACE:
+                memberReference = dexBuilder.internMethodReference(
+                        (MethodReference) methodHandleReference.getMemberReference());
+                break;
+            default:
+                throw new ExceptionWithContext("Invalid method handle type: %d",
+                        methodHandleReference.getMethodHandleType());
+        }
+
+        internedMethodHandle = new BuilderMethodHandleReference(methodHandleReference.getMethodHandleType(),
+                memberReference);
+        BuilderMethodHandleReference prev = internedItems.putIfAbsent(internedMethodHandle, internedMethodHandle);
+        return prev == null ? internedMethodHandle : prev;
+    }
+
+    @Override
+    public BuilderFieldReference getFieldReference(BuilderMethodHandleReference methodHandleReference) {
+        return (BuilderFieldReference) methodHandleReference.getMemberReference();
+    }
+
+    @Override
+    public BuilderMethodReference getMethodReference(BuilderMethodHandleReference methodHandleReference) {
+        return (BuilderMethodReference) methodHandleReference.getMemberReference();
+    }
+
+    @Override
+    public int getItemIndex(@Nonnull BuilderMethodHandleReference builderMethodHandleReference) {
+        return builderMethodHandleReference.index;
+    }
+
+    @Nonnull
+    @Override
+    public Collection<? extends Map.Entry<? extends BuilderMethodHandleReference, Integer>> getItems() {
+        return new BuilderMapEntryCollection<BuilderMethodHandleReference>(internedItems.values()) {
+            @Override
+            protected int getValue(@Nonnull BuilderMethodHandleReference builderMethodHandleReference) {
+                return builderMethodHandleReference.index;
+            }
+
+            @Override
+            protected int setValue(@Nonnull BuilderMethodHandleReference builderMethodHandleReference, int value) {
+                int prev = builderMethodHandleReference.index;
+                builderMethodHandleReference.index = value;
+                return prev;
+            }
+        };
+    }
+
+    @Override
+    public int getItemCount() {
+        return internedItems.size();
+    }
+}
diff --git a/util/src/main/java/org/jf/util/BlankReader.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderMethodHandleReference.java
similarity index 61%
copy from util/src/main/java/org/jf/util/BlankReader.java
copy to dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderMethodHandleReference.java
index ca55dd0..4fe0e30 100644
--- a/util/src/main/java/org/jf/util/BlankReader.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/BuilderMethodHandleReference.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014, Google Inc.
+ * Copyright 2018, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,20 +29,37 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package org.jf.util;
+package org.jf.dexlib2.writer.builder;
+
+import org.jf.dexlib2.base.reference.BaseMethodHandleReference;
 
 import javax.annotation.Nonnull;
-import java.io.IOException;
-import java.io.Reader;
 
-public class BlankReader extends Reader {
-    public static final BlankReader INSTANCE = new BlankReader();
+import static org.jf.dexlib2.writer.DexWriter.NO_INDEX;
 
-    @Override public int read(@Nonnull char[] chars, int i, int i2) throws IOException {
-        return -1;
+public class BuilderMethodHandleReference extends BaseMethodHandleReference implements BuilderReference {
+    final int methodHandleType;
+    @Nonnull final BuilderReference memberReference;
+    int index = NO_INDEX;
+
+    public BuilderMethodHandleReference(int methodHandleType, @Nonnull BuilderReference memberReference) {
+        this.methodHandleType = methodHandleType;
+        this.memberReference = memberReference;
     }
 
-    @Override
-    public void close() throws IOException {
+    @Override public int getMethodHandleType() {
+        return methodHandleType;
+    }
+
+    @Nonnull @Override public BuilderReference getMemberReference() {
+        return memberReference;
+    }
+
+    @Override public int getIndex() {
+        return index;
+    }
+
+    @Override public void setIndex(int index) {
+        this.index = index;
     }
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/DexBuilder.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/DexBuilder.java
index 25938fe..6037788 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/DexBuilder.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/builder/DexBuilder.java
@@ -32,10 +32,7 @@
 package org.jf.dexlib2.writer.builder;
 
 import com.google.common.base.Function;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterators;
-import com.google.common.collect.Sets;
+import com.google.common.collect.*;
 import org.jf.dexlib2.Opcodes;
 import org.jf.dexlib2.ValueType;
 import org.jf.dexlib2.iface.Annotation;
@@ -44,8 +41,10 @@
 import org.jf.dexlib2.iface.MethodParameter;
 import org.jf.dexlib2.iface.reference.*;
 import org.jf.dexlib2.iface.value.*;
+import org.jf.dexlib2.util.FieldUtil;
 import org.jf.dexlib2.writer.DexWriter;
 import org.jf.dexlib2.writer.builder.BuilderEncodedValues.*;
+import org.jf.dexlib2.writer.util.StaticInitializerUtil;
 import org.jf.util.ExceptionWithContext;
 
 import javax.annotation.Nonnull;
@@ -57,10 +56,11 @@
 
 public class DexBuilder extends DexWriter<BuilderStringReference, BuilderStringReference, BuilderTypeReference,
         BuilderTypeReference, BuilderMethodProtoReference, BuilderFieldReference, BuilderMethodReference,
-        BuilderClassDef, BuilderAnnotation, BuilderAnnotationSet, BuilderTypeList, BuilderField, BuilderMethod,
-        BuilderEncodedValue, BuilderAnnotationElement, BuilderStringPool, BuilderTypePool, BuilderProtoPool,
-        BuilderFieldPool, BuilderMethodPool, BuilderClassPool, BuilderTypeListPool, BuilderAnnotationPool,
-        BuilderAnnotationSetPool> {
+        BuilderClassDef, BuilderCallSiteReference, BuilderMethodHandleReference, BuilderAnnotation, BuilderAnnotationSet, BuilderTypeList,
+        BuilderField, BuilderMethod, BuilderArrayEncodedValue, BuilderEncodedValue, BuilderAnnotationElement,
+        BuilderStringPool, BuilderTypePool, BuilderProtoPool, BuilderFieldPool, BuilderMethodPool, BuilderClassPool,
+        BuilderCallSitePool, BuilderMethodHandlePool, BuilderTypeListPool, BuilderAnnotationPool,
+        BuilderAnnotationSetPool, BuilderEncodedArrayPool> {
 
     public DexBuilder(@Nonnull Opcodes opcodes) {
         super(opcodes);
@@ -122,14 +122,36 @@
             }
         }
 
+        ImmutableSortedSet<BuilderField> staticFields = null;
+        ImmutableSortedSet<BuilderField> instanceFields = null;
+        BuilderArrayEncodedValue internedStaticInitializers = null;
+        if (fields != null) {
+            staticFields = ImmutableSortedSet.copyOf(Iterables.filter(fields, FieldUtil.FIELD_IS_STATIC));
+            instanceFields = ImmutableSortedSet.copyOf(Iterables.filter(fields, FieldUtil.FIELD_IS_INSTANCE));
+            ArrayEncodedValue staticInitializers = StaticInitializerUtil.getStaticInitializers(staticFields);
+            if (staticInitializers != null) {
+                internedStaticInitializers = encodedArraySection.internArrayEncodedValue(staticInitializers);
+            }
+        }
+
         return classSection.internClass(new BuilderClassDef(typeSection.internType(type),
                 accessFlags,
                 typeSection.internNullableType(superclass),
                 typeListSection.internTypeList(interfaces),
                 stringSection.internNullableString(sourceFile),
                 annotationSetSection.internAnnotationSet(annotations),
-                fields,
-                methods));
+                staticFields,
+                instanceFields,
+                methods,
+                internedStaticInitializers));
+    }
+
+    public BuilderCallSiteReference internCallSite(@Nonnull CallSiteReference callSiteReference) {
+        return callSiteSection.internCallSite(callSiteReference);
+    }
+
+    public BuilderMethodHandleReference internMethodHandle(@Nonnull MethodHandleReference methodHandleReference) {
+        return methodHandleSection.internMethodHandle(methodHandleReference);
     }
 
     @Nonnull public BuilderStringReference internStringReference(@Nonnull String string) {
@@ -182,6 +204,12 @@
         if (reference instanceof MethodProtoReference) {
             return internMethodProtoReference((MethodProtoReference) reference);
         }
+        if (reference instanceof CallSiteReference) {
+            return internCallSite((CallSiteReference) reference);
+        }
+        if (reference instanceof MethodHandleReference) {
+            return internMethodHandle((MethodHandleReference) reference);
+        }
         throw new IllegalArgumentException("Could not determine type of reference");
     }
 
@@ -258,6 +286,12 @@
             case ValueType.TYPE:
                 writer.writeType(((BuilderTypeEncodedValue)encodedValue).typeReference);
                 break;
+            case ValueType.METHOD_TYPE:
+                writer.writeMethodType(((BuilderMethodTypeEncodedValue) encodedValue).methodProtoReference);
+                break;
+            case ValueType.METHOD_HANDLE:
+                writer.writeMethodHandle(((BuilderMethodHandleEncodedValue) encodedValue).methodHandleReference);
+                break;
             default:
                 throw new ExceptionWithContext("Unrecognized value type: %d", encodedValue.getValueType());
         }
@@ -287,7 +321,7 @@
         return internEncodedValue(encodedValue);
     }
 
-    @Nonnull private BuilderEncodedValue internEncodedValue(@Nonnull EncodedValue encodedValue) {
+    @Nonnull BuilderEncodedValue internEncodedValue(@Nonnull EncodedValue encodedValue) {
         switch (encodedValue.getValueType()) {
             case ValueType.ANNOTATION:
                 return internAnnotationEncodedValue((AnnotationEncodedValue)encodedValue);
@@ -322,6 +356,10 @@
                 return internStringEncodedValue((StringEncodedValue)encodedValue);
             case ValueType.TYPE:
                 return internTypeEncodedValue((TypeEncodedValue)encodedValue);
+            case ValueType.METHOD_TYPE:
+                return internMethodTypeEncodedValue((MethodTypeEncodedValue) encodedValue);
+            case ValueType.METHOD_HANDLE:
+                return internMethodHandleEncodedValue((MethodHandleEncodedValue) encodedValue);
             default:
                 throw new ExceptionWithContext("Unexpected encoded value type: %d", encodedValue.getValueType());
         }
@@ -364,6 +402,16 @@
         return new BuilderTypeEncodedValue(typeSection.internType(type.getValue()));
     }
 
+    @Nonnull private BuilderMethodTypeEncodedValue internMethodTypeEncodedValue(
+            @Nonnull MethodTypeEncodedValue methodType) {
+        return new BuilderMethodTypeEncodedValue(protoSection.internMethodProto(methodType.getValue()));
+    }
+
+    @Nonnull private BuilderMethodHandleEncodedValue internMethodHandleEncodedValue(
+            @Nonnull MethodHandleEncodedValue methodHandle) {
+        return new BuilderMethodHandleEncodedValue(methodHandleSection.internMethodHandle(methodHandle.getValue()));
+    }
+
     protected class DexBuilderSectionProvider extends SectionProvider {
         @Nonnull @Override public BuilderStringPool getStringSection() {
             return new BuilderStringPool();
@@ -389,6 +437,14 @@
             return new BuilderClassPool(DexBuilder.this);
         }
 
+        @Nonnull @Override public BuilderCallSitePool getCallSiteSection() {
+            return new BuilderCallSitePool(DexBuilder.this);
+        }
+
+        @Nonnull @Override public BuilderMethodHandlePool getMethodHandleSection() {
+            return new BuilderMethodHandlePool(DexBuilder.this);
+        }
+
         @Nonnull @Override public BuilderTypeListPool getTypeListSection() {
             return new BuilderTypeListPool(DexBuilder.this);
         }
@@ -400,5 +456,9 @@
         @Nonnull @Override public BuilderAnnotationSetPool getAnnotationSetSection() {
             return new BuilderAnnotationSetPool(DexBuilder.this);
         }
+
+        @Nonnull @Override public BuilderEncodedArrayPool getEncodedArraySection() {
+            return new BuilderEncodedArrayPool(DexBuilder.this);
+        }
     }
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/io/MemoryDataStore.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/io/MemoryDataStore.java
index 5797f80..6780836 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/writer/io/MemoryDataStore.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/io/MemoryDataStore.java
@@ -8,24 +8,34 @@
 
 public class MemoryDataStore implements DexDataStore {
     private byte[] buf;
+    private int size = 0;
 
     public MemoryDataStore() {
-        this(1024 * 1024);
+        this(0);
     }
 
     public MemoryDataStore(int initialCapacity) {
         buf = new byte[initialCapacity];
     }
 
-    public byte[] getData() {
+    public byte[] getBuffer() {
         return buf;
     }
 
+    public int getSize() {
+        return size;
+    }
+
+    public byte[] getData() {
+        return Arrays.copyOf(buf, size);
+    }
+
     @Nonnull @Override public OutputStream outputAt(final int offset) {
+        if (offset < 0) throw new IllegalArgumentException();
         return new OutputStream() {
             private int position = offset;
             @Override public void write(int b) throws IOException {
-                growBufferIfNeeded(position);
+                growBufferIfNeeded(position + 1);
                 buf[position++] = (byte)b;
             }
 
@@ -43,28 +53,39 @@
         };
     }
 
-    private void growBufferIfNeeded(int index) {
-        if (index < buf.length) {
-            return;
+    private void growBufferIfNeeded(int minSize) {
+        if (minSize > size) {
+            if (minSize > buf.length) {
+                int newSize = getNewBufferSize(buf.length, minSize);
+                if (newSize < minSize) throw new IndexOutOfBoundsException();
+                buf = Arrays.copyOf(buf, newSize);
+            }
+            size = minSize;
         }
-        buf = Arrays.copyOf(buf, (int)((index + 1) * 1.2));
+    }
+
+    protected int getNewBufferSize(int currentSize, int newMinSize) {
+        final int MIN_GROWTH_STEP = 256 * 1024;
+        return Math.max(newMinSize + (newMinSize >> 2), currentSize + MIN_GROWTH_STEP);
     }
 
     @Nonnull @Override public InputStream readAt(final int offset) {
+        if (offset < 0) throw new IllegalArgumentException();
         return new InputStream() {
             private int position = offset;
+            private int mark = offset;
 
             @Override public int read() throws IOException {
-                if (position >= buf.length) {
+                if (position >= size) {
                     return -1;
                 }
                 return buf[position++];
             }
 
             @Override public int read(byte[] b) throws IOException {
-                int readLength = Math.min(b.length, buf.length - position);
+                int readLength = Math.min(b.length, size - position);
                 if (readLength <= 0) {
-                    if (position >= buf.length) {
+                    if (position >= size) {
                         return -1;
                     }
                     return 0;
@@ -75,26 +96,38 @@
             }
 
             @Override public int read(byte[] b, int off, int len) throws IOException {
-                int readLength = Math.min(len, buf.length - position);
+                int readLength = Math.min(len, size - position);
                 if (readLength <= 0) {
-                    if (position >= buf.length) {
+                    if (position >= size) {
                         return -1;
                     }
                     return 0;
                 }
-                System.arraycopy(buf, position, b, 0, readLength);
+                System.arraycopy(buf, position, b, off, readLength);
                 position += readLength;
                 return readLength;
             }
 
             @Override public long skip(long n) throws IOException {
-                int skipLength = (int)Math.min(n, buf.length - position);
+                int skipLength = (int)Math.max(0, Math.min(n, size - position));
                 position += skipLength;
                 return skipLength;
             }
 
             @Override public int available() throws IOException {
-                return buf.length - position;
+                return Math.max(0, size - position);
+            }
+
+            @Override public void mark(int i) {
+                mark = position;
+            }
+
+            @Override public void reset() throws IOException {
+                position = mark;
+            }
+
+            @Override public boolean markSupported() {
+                return true;
             }
         };
     }
diff --git a/util/src/main/java/org/jf/util/BlankReader.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/CallSitePool.java
similarity index 63%
copy from util/src/main/java/org/jf/util/BlankReader.java
copy to dexlib2/src/main/java/org/jf/dexlib2/writer/pool/CallSitePool.java
index ca55dd0..83f8422 100644
--- a/util/src/main/java/org/jf/util/BlankReader.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/CallSitePool.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014, Google Inc.
+ * Copyright 2018, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,20 +29,31 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package org.jf.util;
+package org.jf.dexlib2.writer.pool;
+
+import org.jf.dexlib2.iface.reference.CallSiteReference;
+import org.jf.dexlib2.iface.value.ArrayEncodedValue;
+import org.jf.dexlib2.writer.CallSiteSection;
+import org.jf.dexlib2.writer.util.CallSiteUtil;
 
 import javax.annotation.Nonnull;
-import java.io.IOException;
-import java.io.Reader;
 
-public class BlankReader extends Reader {
-    public static final BlankReader INSTANCE = new BlankReader();
+public class CallSitePool extends BaseIndexPool<CallSiteReference>
+        implements CallSiteSection<CallSiteReference, ArrayEncodedValue> {
 
-    @Override public int read(@Nonnull char[] chars, int i, int i2) throws IOException {
-        return -1;
+    public CallSitePool(@Nonnull DexPool dexPool) {
+        super(dexPool);
+    }
+
+    public void intern(CallSiteReference callSiteReference) {
+        Integer prev = internedItems.put(callSiteReference, 0);
+        if (prev == null) {
+            dexPool.encodedArraySection.intern(getEncodedCallSite(callSiteReference));
+        }
     }
 
     @Override
-    public void close() throws IOException {
+    public ArrayEncodedValue getEncodedCallSite(CallSiteReference callSiteReference) {
+        return CallSiteUtil.getEncodedCallSite(callSiteReference);
     }
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/ClassPool.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/ClassPool.java
index 7c1d681..3492c07 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/ClassPool.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/ClassPool.java
@@ -33,7 +33,9 @@
 
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
-import com.google.common.collect.*;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Ordering;
 import org.jf.dexlib2.DebugItemType;
 import org.jf.dexlib2.ReferenceType;
 import org.jf.dexlib2.builder.MutableMethodImplementation;
@@ -42,14 +44,13 @@
 import org.jf.dexlib2.iface.instruction.Instruction;
 import org.jf.dexlib2.iface.instruction.ReferenceInstruction;
 import org.jf.dexlib2.iface.reference.*;
+import org.jf.dexlib2.iface.value.ArrayEncodedValue;
 import org.jf.dexlib2.iface.value.EncodedValue;
-import org.jf.dexlib2.immutable.value.ImmutableEncodedValueFactory;
-import org.jf.dexlib2.util.EncodedValueUtils;
 import org.jf.dexlib2.util.ReferenceUtil;
 import org.jf.dexlib2.writer.ClassSection;
 import org.jf.dexlib2.writer.DebugWriter;
+import org.jf.dexlib2.writer.util.StaticInitializerUtil;
 import org.jf.util.AbstractForwardSequentialList;
-import org.jf.util.CollectionUtils;
 import org.jf.util.ExceptionWithContext;
 
 import javax.annotation.Nonnull;
@@ -60,7 +61,7 @@
 
 public class ClassPool extends BasePool<String, PoolClassDef> implements ClassSection<CharSequence, CharSequence,
         TypeListPool.Key<? extends Collection<? extends CharSequence>>, PoolClassDef, Field, PoolMethod,
-        Set<? extends Annotation>, EncodedValue> {
+        Set<? extends Annotation>, ArrayEncodedValue> {
 
     public ClassPool(@Nonnull DexPool dexPool) {
         super(dexPool);
@@ -94,6 +95,11 @@
             }
 
             dexPool.annotationSetSection.intern(field.getAnnotations());
+
+            ArrayEncodedValue staticInitializers = getStaticInitializers(poolClassDef);
+            if (staticInitializers != null) {
+                dexPool.encodedArraySection.intern(staticInitializers);
+            }
         }
 
         HashSet<String> methods = new HashSet<String>();
@@ -139,6 +145,9 @@
                         case ReferenceType.METHOD:
                             dexPool.methodSection.intern((MethodReference)reference);
                             break;
+                        case ReferenceType.CALL_SITE:
+                            dexPool.callSiteSection.intern((CallSiteReference) reference);
+                            break;
                         default:
                             throw new ExceptionWithContext("Unrecognized reference type: %d",
                                     instruction.getOpcode().referenceType);
@@ -240,43 +249,9 @@
         return classDef.getSourceFile();
     }
 
-    private static final Predicate<Field> HAS_INITIALIZER = new Predicate<Field>() {
-        @Override
-        public boolean apply(Field input) {
-            EncodedValue encodedValue = input.getInitialValue();
-            return encodedValue != null && !EncodedValueUtils.isDefaultValue(encodedValue);
-        }
-    };
-
-    private static final Function<Field, EncodedValue> GET_INITIAL_VALUE = new Function<Field, EncodedValue>() {
-        @Override
-        public EncodedValue apply(Field input) {
-            EncodedValue initialValue = input.getInitialValue();
-            if (initialValue == null) {
-                return ImmutableEncodedValueFactory.defaultValueForType(input.getType());
-            }
-            return initialValue;
-        }
-    };
-
-    @Nullable @Override public Collection<? extends EncodedValue> getStaticInitializers(
+    @Nullable @Override public ArrayEncodedValue getStaticInitializers(
             @Nonnull PoolClassDef classDef) {
-        final SortedSet<Field> sortedStaticFields = classDef.getStaticFields();
-
-        final int lastIndex = CollectionUtils.lastIndexOf(sortedStaticFields, HAS_INITIALIZER);
-        if (lastIndex > -1) {
-            return new AbstractCollection<EncodedValue>() {
-                @Nonnull @Override public Iterator<EncodedValue> iterator() {
-                    Iterable<Field> fields = Iterables.limit(sortedStaticFields, lastIndex + 1);
-                    return Iterables.transform(fields, GET_INITIAL_VALUE).iterator();
-                }
-
-                @Override public int size() {
-                    return lastIndex+1;
-                }
-            };
-        }
-        return null;
+        return StaticInitializerUtil.getStaticInitializers(classDef.getStaticFields());
     }
 
     @Nonnull @Override public Collection<? extends Field> getSortedStaticFields(@Nonnull PoolClassDef classDef) {
@@ -419,14 +394,6 @@
         return new MutableMethodImplementation(poolMethod.getImplementation());
     }
 
-    @Override public void setEncodedArrayOffset(@Nonnull PoolClassDef classDef, int offset) {
-        classDef.encodedArrayOffset = offset;
-    }
-
-    @Override public int getEncodedArrayOffset(@Nonnull PoolClassDef classDef) {
-        return classDef.encodedArrayOffset;
-    }
-
     @Override public void setAnnotationDirectoryOffset(@Nonnull PoolClassDef classDef, int offset) {
         classDef.annotationDirectoryOffset = offset;
     }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/DexPool.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/DexPool.java
index 6d662ec..62ebb94 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/DexPool.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/DexPool.java
@@ -52,14 +52,25 @@
 
 public class DexPool extends DexWriter<CharSequence, StringReference, CharSequence, TypeReference,
         MethodProtoReference, FieldReference, MethodReference, PoolClassDef,
-        Annotation, Set<? extends Annotation>,
+        CallSiteReference, MethodHandleReference, Annotation, Set<? extends Annotation>,
         TypeListPool.Key<? extends Collection<? extends CharSequence>>, Field, PoolMethod,
-        EncodedValue, AnnotationElement, StringPool, TypePool, ProtoPool, FieldPool, MethodPool, ClassPool,
-        TypeListPool, AnnotationPool, AnnotationSetPool> {
+        ArrayEncodedValue, EncodedValue, AnnotationElement, StringPool, TypePool, ProtoPool, FieldPool, MethodPool,
+        ClassPool, CallSitePool, MethodHandlePool, TypeListPool, AnnotationPool, AnnotationSetPool, EncodedArrayPool> {
 
-    private final Markable[] sections = new Markable[] {
-            stringSection, typeSection, protoSection, fieldSection, methodSection, classSection, typeListSection,
-            annotationSection, annotationSetSection
+    private final BasePool<?, ?>[] sections = new BasePool<?, ?>[] {
+            stringSection,
+            typeSection,
+            protoSection,
+            fieldSection,
+            methodSection,
+            classSection,
+            callSiteSection,
+            methodHandleSection,
+
+            typeListSection,
+            annotationSection,
+            annotationSetSection,
+            encodedArraySection,
     };
 
     public DexPool(Opcodes opcodes) {
@@ -170,6 +181,12 @@
             case ValueType.TYPE:
                 writer.writeType(((TypeEncodedValue)encodedValue).getValue());
                 break;
+            case ValueType.METHOD_TYPE:
+                writer.writeMethodType(((MethodTypeEncodedValue) encodedValue).getValue());
+                break;
+            case ValueType.METHOD_HANDLE:
+                writer.writeMethodHandle(((MethodHandleEncodedValue) encodedValue).getValue());
+                break;
             default:
                 throw new ExceptionWithContext("Unrecognized value type: %d", encodedValue.getValueType());
         }
@@ -205,6 +222,12 @@
             case ValueType.METHOD:
                 methodSection.intern(((MethodEncodedValue)encodedValue).getValue());
                 break;
+            case ValueType.METHOD_HANDLE:
+                methodHandleSection.intern(((MethodHandleEncodedValue)encodedValue).getValue());
+                break;
+            case ValueType.METHOD_TYPE:
+                protoSection.intern(((MethodTypeEncodedValue)encodedValue).getValue());
+                break;
         }
     }
 
@@ -233,6 +256,14 @@
             return new ClassPool(DexPool.this);
         }
 
+        @Nonnull @Override public CallSitePool getCallSiteSection() {
+            return new CallSitePool(DexPool.this);
+        }
+
+        @Nonnull @Override public MethodHandlePool getMethodHandleSection() {
+            return new MethodHandlePool(DexPool.this);
+        }
+
         @Nonnull @Override public TypeListPool getTypeListSection() {
             return new TypeListPool(DexPool.this);
         }
@@ -244,5 +275,9 @@
         @Nonnull @Override public AnnotationSetPool getAnnotationSetSection() {
             return new AnnotationSetPool(DexPool.this);
         }
+
+        @Nonnull @Override public EncodedArrayPool getEncodedArraySection() {
+            return new EncodedArrayPool(DexPool.this);
+        }
     }
 }
diff --git a/util/src/main/java/org/jf/util/BlankReader.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/EncodedArrayPool.java
similarity index 62%
copy from util/src/main/java/org/jf/util/BlankReader.java
copy to dexlib2/src/main/java/org/jf/dexlib2/writer/pool/EncodedArrayPool.java
index ca55dd0..0b33f98 100644
--- a/util/src/main/java/org/jf/util/BlankReader.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/EncodedArrayPool.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014, Google Inc.
+ * Copyright 2018, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,20 +29,33 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package org.jf.util;
+package org.jf.dexlib2.writer.pool;
+
+import org.jf.dexlib2.iface.value.ArrayEncodedValue;
+import org.jf.dexlib2.iface.value.EncodedValue;
+import org.jf.dexlib2.writer.EncodedArraySection;
 
 import javax.annotation.Nonnull;
-import java.io.IOException;
-import java.io.Reader;
+import java.util.List;
 
-public class BlankReader extends Reader {
-    public static final BlankReader INSTANCE = new BlankReader();
+public class EncodedArrayPool extends BaseOffsetPool<ArrayEncodedValue>
+        implements EncodedArraySection<ArrayEncodedValue, EncodedValue> {
 
-    @Override public int read(@Nonnull char[] chars, int i, int i2) throws IOException {
-        return -1;
+    public EncodedArrayPool(@Nonnull DexPool dexPool) {
+        super(dexPool);
+    }
+
+    public void intern(@Nonnull ArrayEncodedValue arrayEncodedValue) {
+        Integer prev = internedItems.put(arrayEncodedValue, 0);
+        if (prev == null) {
+            for (EncodedValue value: arrayEncodedValue.getValue()) {
+                dexPool.internEncodedValue(value);
+            }
+        }
     }
 
     @Override
-    public void close() throws IOException {
+    public List<? extends EncodedValue> getEncodedValueList(ArrayEncodedValue arrayEncodedValue) {
+        return arrayEncodedValue.getValue();
     }
 }
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/MethodHandlePool.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/MethodHandlePool.java
new file mode 100644
index 0000000..017b74d
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/MethodHandlePool.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.writer.pool;
+
+import org.jf.dexlib2.MethodHandleType;
+import org.jf.dexlib2.iface.reference.FieldReference;
+import org.jf.dexlib2.iface.reference.MethodHandleReference;
+import org.jf.dexlib2.iface.reference.MethodReference;
+import org.jf.dexlib2.writer.MethodHandleSection;
+import org.jf.util.ExceptionWithContext;
+
+import javax.annotation.Nonnull;
+
+public class MethodHandlePool extends BaseIndexPool<MethodHandleReference>
+        implements MethodHandleSection<MethodHandleReference, FieldReference, MethodReference> {
+    public MethodHandlePool(@Nonnull DexPool dexPool) {
+        super(dexPool);
+    }
+
+    public void intern(MethodHandleReference methodHandleReference) {
+        Integer prev = internedItems.put(methodHandleReference, 0);
+        if (prev == null) {
+            switch (methodHandleReference.getMethodHandleType()) {
+                case MethodHandleType.STATIC_PUT:
+                case MethodHandleType.STATIC_GET:
+                case MethodHandleType.INSTANCE_PUT:
+                case MethodHandleType.INSTANCE_GET:
+                    dexPool.fieldSection.intern((FieldReference) methodHandleReference.getMemberReference());
+                    break;
+                case MethodHandleType.INVOKE_STATIC:
+                case MethodHandleType.INVOKE_INSTANCE:
+                case MethodHandleType.INVOKE_CONSTRUCTOR:
+                case MethodHandleType.INVOKE_DIRECT:
+                case MethodHandleType.INVOKE_INTERFACE:
+                    dexPool.methodSection.intern((MethodReference) methodHandleReference.getMemberReference());
+                    break;
+                default:
+                    throw new ExceptionWithContext(
+                            "Invalid method handle type: %d", methodHandleReference.getMethodHandleType());
+            }
+        }
+    }
+
+    @Override
+    public FieldReference getFieldReference(MethodHandleReference methodHandleReference) {
+        return (FieldReference) methodHandleReference.getMemberReference();
+    }
+
+    @Override
+    public MethodReference getMethodReference(MethodHandleReference methodHandleReference) {
+        return (MethodReference) methodHandleReference.getMemberReference();
+    }
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/PoolClassDef.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/PoolClassDef.java
index 00958fb..02f2210 100644
--- a/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/PoolClassDef.java
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/pool/PoolClassDef.java
@@ -50,7 +50,6 @@
     @Nonnull final ImmutableSortedSet<PoolMethod> virtualMethods;
 
     int classDefIndex = DexPool.NO_INDEX;
-    int encodedArrayOffset = DexPool.NO_OFFSET;
     int annotationDirectoryOffset = DexPool.NO_OFFSET;
 
     PoolClassDef(@Nonnull ClassDef classDef) {
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/util/CallSiteUtil.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/util/CallSiteUtil.java
new file mode 100644
index 0000000..73dbc40
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/util/CallSiteUtil.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.writer.util;
+
+import com.google.common.collect.Lists;
+import org.jf.dexlib2.base.value.BaseArrayEncodedValue;
+import org.jf.dexlib2.base.value.BaseMethodHandleEncodedValue;
+import org.jf.dexlib2.base.value.BaseMethodTypeEncodedValue;
+import org.jf.dexlib2.iface.reference.CallSiteReference;
+import org.jf.dexlib2.iface.reference.MethodHandleReference;
+import org.jf.dexlib2.iface.reference.MethodProtoReference;
+import org.jf.dexlib2.iface.value.ArrayEncodedValue;
+import org.jf.dexlib2.iface.value.EncodedValue;
+import org.jf.dexlib2.immutable.value.ImmutableStringEncodedValue;
+
+import javax.annotation.Nonnull;
+import java.util.List;
+
+public class CallSiteUtil {
+    public static ArrayEncodedValue getEncodedCallSite(CallSiteReference callSiteReference) {
+        return new BaseArrayEncodedValue() {
+            @Nonnull
+            @Override
+            public List<? extends EncodedValue> getValue() {
+                List<EncodedValue> encodedCallSite = Lists.newArrayList();
+
+                encodedCallSite.add(new BaseMethodHandleEncodedValue() {
+                    @Nonnull
+                    @Override
+                    public MethodHandleReference getValue() {
+                        return callSiteReference.getMethodHandle();
+                    }
+                });
+                encodedCallSite.add(new ImmutableStringEncodedValue(callSiteReference.getMethodName()));
+                encodedCallSite.add(new BaseMethodTypeEncodedValue() {
+                    @Nonnull
+                    @Override
+                    public MethodProtoReference getValue() {
+                        return callSiteReference.getMethodProto();
+                    }
+                });
+                encodedCallSite.addAll(callSiteReference.getExtraArguments());
+                return encodedCallSite;
+            }
+        };
+    }
+}
diff --git a/dexlib2/src/main/java/org/jf/dexlib2/writer/util/StaticInitializerUtil.java b/dexlib2/src/main/java/org/jf/dexlib2/writer/util/StaticInitializerUtil.java
new file mode 100644
index 0000000..e4ca180
--- /dev/null
+++ b/dexlib2/src/main/java/org/jf/dexlib2/writer/util/StaticInitializerUtil.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.writer.util;
+
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+import org.jf.dexlib2.base.value.BaseArrayEncodedValue;
+import org.jf.dexlib2.iface.Field;
+import org.jf.dexlib2.iface.value.ArrayEncodedValue;
+import org.jf.dexlib2.iface.value.EncodedValue;
+import org.jf.dexlib2.immutable.value.ImmutableEncodedValueFactory;
+import org.jf.dexlib2.util.EncodedValueUtils;
+import org.jf.util.AbstractForwardSequentialList;
+import org.jf.util.CollectionUtils;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.SortedSet;
+
+public class StaticInitializerUtil {
+
+    @Nullable public static ArrayEncodedValue getStaticInitializers(
+            @Nonnull SortedSet<? extends Field> sortedStaticFields) {
+        final int lastIndex = CollectionUtils.lastIndexOf(sortedStaticFields, HAS_INITIALIZER);
+        if (lastIndex > -1) {
+            return new BaseArrayEncodedValue() {
+                @Nonnull
+                @Override
+                public List<? extends EncodedValue> getValue() {
+                    return new AbstractForwardSequentialList<EncodedValue>() {
+                        @Nonnull @Override public Iterator<EncodedValue> iterator() {
+                            Iterable<? extends Field> fields = Iterables.limit(sortedStaticFields, lastIndex + 1);
+                            return Iterables.transform(fields, GET_INITIAL_VALUE).iterator();
+                        }
+
+                        @Override public int size() {
+                            return lastIndex+1;
+                        }
+                    };
+                }
+            };
+        }
+        return null;
+    }
+
+    private static final Predicate<Field> HAS_INITIALIZER = new Predicate<Field>() {
+        @Override
+        public boolean apply(Field input) {
+            EncodedValue encodedValue = input.getInitialValue();
+            return encodedValue != null && !EncodedValueUtils.isDefaultValue(encodedValue);
+        }
+    };
+
+    private static final Function<Field, EncodedValue> GET_INITIAL_VALUE = new Function<Field, EncodedValue>() {
+        @Override
+        public EncodedValue apply(Field input) {
+            EncodedValue initialValue = input.getInitialValue();
+            if (initialValue == null) {
+                return ImmutableEncodedValueFactory.defaultValueForType(input.getType());
+            }
+            return initialValue;
+        }
+    };
+
+}
diff --git a/util/src/main/java/org/jf/util/AbstractForwardSequentialList.java b/dexlib2/src/main/java/org/jf/util/AbstractForwardSequentialList.java
similarity index 100%
rename from util/src/main/java/org/jf/util/AbstractForwardSequentialList.java
rename to dexlib2/src/main/java/org/jf/util/AbstractForwardSequentialList.java
diff --git a/util/src/main/java/org/jf/util/AbstractListIterator.java b/dexlib2/src/main/java/org/jf/util/AbstractListIterator.java
similarity index 100%
rename from util/src/main/java/org/jf/util/AbstractListIterator.java
rename to dexlib2/src/main/java/org/jf/util/AbstractListIterator.java
diff --git a/util/src/main/java/org/jf/util/ArraySortedSet.java b/dexlib2/src/main/java/org/jf/util/ArraySortedSet.java
similarity index 100%
rename from util/src/main/java/org/jf/util/ArraySortedSet.java
rename to dexlib2/src/main/java/org/jf/util/ArraySortedSet.java
diff --git a/util/src/main/java/org/jf/util/BitSetUtils.java b/dexlib2/src/main/java/org/jf/util/BitSetUtils.java
similarity index 100%
rename from util/src/main/java/org/jf/util/BitSetUtils.java
rename to dexlib2/src/main/java/org/jf/util/BitSetUtils.java
diff --git a/util/src/main/java/org/jf/util/CharSequenceUtils.java b/dexlib2/src/main/java/org/jf/util/CharSequenceUtils.java
similarity index 100%
rename from util/src/main/java/org/jf/util/CharSequenceUtils.java
rename to dexlib2/src/main/java/org/jf/util/CharSequenceUtils.java
diff --git a/util/src/main/java/org/jf/util/CollectionUtils.java b/dexlib2/src/main/java/org/jf/util/CollectionUtils.java
similarity index 100%
rename from util/src/main/java/org/jf/util/CollectionUtils.java
rename to dexlib2/src/main/java/org/jf/util/CollectionUtils.java
diff --git a/util/src/main/java/org/jf/util/ExceptionWithContext.java b/dexlib2/src/main/java/org/jf/util/ExceptionWithContext.java
similarity index 100%
rename from util/src/main/java/org/jf/util/ExceptionWithContext.java
rename to dexlib2/src/main/java/org/jf/util/ExceptionWithContext.java
diff --git a/util/src/main/java/org/jf/util/Hex.java b/dexlib2/src/main/java/org/jf/util/Hex.java
similarity index 100%
rename from util/src/main/java/org/jf/util/Hex.java
rename to dexlib2/src/main/java/org/jf/util/Hex.java
diff --git a/util/src/main/java/org/jf/util/ImmutableConverter.java b/dexlib2/src/main/java/org/jf/util/ImmutableConverter.java
similarity index 100%
rename from util/src/main/java/org/jf/util/ImmutableConverter.java
rename to dexlib2/src/main/java/org/jf/util/ImmutableConverter.java
diff --git a/util/src/main/java/org/jf/util/ImmutableUtils.java b/dexlib2/src/main/java/org/jf/util/ImmutableUtils.java
similarity index 100%
rename from util/src/main/java/org/jf/util/ImmutableUtils.java
rename to dexlib2/src/main/java/org/jf/util/ImmutableUtils.java
diff --git a/util/src/main/java/org/jf/util/IndentingWriter.java b/dexlib2/src/main/java/org/jf/util/IndentingWriter.java
similarity index 100%
rename from util/src/main/java/org/jf/util/IndentingWriter.java
rename to dexlib2/src/main/java/org/jf/util/IndentingWriter.java
diff --git a/util/src/main/java/org/jf/util/NibbleUtils.java b/dexlib2/src/main/java/org/jf/util/NibbleUtils.java
similarity index 100%
rename from util/src/main/java/org/jf/util/NibbleUtils.java
rename to dexlib2/src/main/java/org/jf/util/NibbleUtils.java
diff --git a/util/src/main/java/org/jf/util/NumberUtils.java b/dexlib2/src/main/java/org/jf/util/NumberUtils.java
similarity index 100%
rename from util/src/main/java/org/jf/util/NumberUtils.java
rename to dexlib2/src/main/java/org/jf/util/NumberUtils.java
diff --git a/util/src/main/java/org/jf/util/RandomAccessFileInputStream.java b/dexlib2/src/main/java/org/jf/util/RandomAccessFileInputStream.java
similarity index 100%
rename from util/src/main/java/org/jf/util/RandomAccessFileInputStream.java
rename to dexlib2/src/main/java/org/jf/util/RandomAccessFileInputStream.java
diff --git a/util/src/main/java/org/jf/util/RandomAccessFileOutputStream.java b/dexlib2/src/main/java/org/jf/util/RandomAccessFileOutputStream.java
similarity index 100%
rename from util/src/main/java/org/jf/util/RandomAccessFileOutputStream.java
rename to dexlib2/src/main/java/org/jf/util/RandomAccessFileOutputStream.java
diff --git a/util/src/main/java/org/jf/util/SparseArray.java b/dexlib2/src/main/java/org/jf/util/SparseArray.java
similarity index 100%
rename from util/src/main/java/org/jf/util/SparseArray.java
rename to dexlib2/src/main/java/org/jf/util/SparseArray.java
diff --git a/util/src/main/java/org/jf/util/SparseIntArray.java b/dexlib2/src/main/java/org/jf/util/SparseIntArray.java
similarity index 100%
rename from util/src/main/java/org/jf/util/SparseIntArray.java
rename to dexlib2/src/main/java/org/jf/util/SparseIntArray.java
diff --git a/util/src/main/java/org/jf/util/StringUtils.java b/dexlib2/src/main/java/org/jf/util/StringUtils.java
similarity index 100%
rename from util/src/main/java/org/jf/util/StringUtils.java
rename to dexlib2/src/main/java/org/jf/util/StringUtils.java
diff --git a/util/src/main/java/org/jf/util/StringWrapper.java b/dexlib2/src/main/java/org/jf/util/StringWrapper.java
similarity index 94%
rename from util/src/main/java/org/jf/util/StringWrapper.java
rename to dexlib2/src/main/java/org/jf/util/StringWrapper.java
index 304c297..05226de 100644
--- a/util/src/main/java/org/jf/util/StringWrapper.java
+++ b/dexlib2/src/main/java/org/jf/util/StringWrapper.java
@@ -1,18 +1,18 @@
 /*
- * Copyright 2013, Google Inc.
+ * Copyright 2018, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
  * met:
  *
- *     * Redistributions of source code must retain the above copyright
+ * Redistributions of source code must retain the above copyright
  * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
+ * Redistributions in binary form must reproduce the above
  * copyright notice, this list of conditions and the following disclaimer
  * in the documentation and/or other materials provided with the
  * distribution.
- *     * Neither the name of Google Inc. nor the names of its
+ * Neither the name of Google Inc. nor the names of its
  * contributors may be used to endorse or promote products derived from
  * this software without specific prior written permission.
  *
@@ -187,10 +187,6 @@
         return newArr;
     }
 
-    public static void printWrappedString(@Nonnull PrintStream stream, @Nonnull String string) {
-        printWrappedString(stream, string, ConsoleUtil.getConsoleWidth());
-    }
-
     public static void printWrappedString(@Nonnull PrintStream stream, @Nonnull String string, int maxWidth) {
         for (String str: wrapStringOnBreaks(string, maxWidth)) {
             stream.println(str);
diff --git a/util/src/main/java/org/jf/util/TwoColumnOutput.java b/dexlib2/src/main/java/org/jf/util/TwoColumnOutput.java
similarity index 100%
rename from util/src/main/java/org/jf/util/TwoColumnOutput.java
rename to dexlib2/src/main/java/org/jf/util/TwoColumnOutput.java
diff --git a/util/src/main/java/org/jf/util/Utf8Utils.java b/dexlib2/src/main/java/org/jf/util/Utf8Utils.java
similarity index 100%
rename from util/src/main/java/org/jf/util/Utf8Utils.java
rename to dexlib2/src/main/java/org/jf/util/Utf8Utils.java
diff --git a/util/src/main/java/org/jf/util/WrappedIndentingWriter.java b/dexlib2/src/main/java/org/jf/util/WrappedIndentingWriter.java
similarity index 100%
rename from util/src/main/java/org/jf/util/WrappedIndentingWriter.java
rename to dexlib2/src/main/java/org/jf/util/WrappedIndentingWriter.java
diff --git a/dexlib2/src/test/java/org/jf/dexlib2/DexEntryFinderTest.java b/dexlib2/src/test/java/org/jf/dexlib2/DexEntryFinderTest.java
index 610d3c7..9994e18 100644
--- a/dexlib2/src/test/java/org/jf/dexlib2/DexEntryFinderTest.java
+++ b/dexlib2/src/test/java/org/jf/dexlib2/DexEntryFinderTest.java
@@ -31,8 +31,8 @@
 
 package org.jf.dexlib2;
 
-import com.beust.jcommander.internal.Maps;
 import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 import org.jf.dexlib2.DexFileFactory.DexEntryFinder;
 import org.jf.dexlib2.DexFileFactory.DexFileNotFoundException;
 import org.jf.dexlib2.DexFileFactory.MultipleMatchingDexEntriesException;
@@ -223,9 +223,5 @@
             }
             return null;
         }
-
-        @Nonnull @Override public Opcodes getOpcodes() {
-            return Opcodes.getDefault();
-        }
     }
 }
diff --git a/dexlib2/src/test/java/org/jf/dexlib2/builder/LocatedItemsTest.java b/dexlib2/src/test/java/org/jf/dexlib2/builder/LocatedItemsTest.java
new file mode 100644
index 0000000..a194799
--- /dev/null
+++ b/dexlib2/src/test/java/org/jf/dexlib2/builder/LocatedItemsTest.java
@@ -0,0 +1,46 @@
+package org.jf.dexlib2.builder;
+
+import com.google.common.collect.Sets;
+import org.jf.dexlib2.builder.debug.BuilderLineNumber;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class LocatedItemsTest {
+
+    private List<BuilderDebugItem> createItems(int count) {
+        List<BuilderDebugItem> items = new ArrayList<>();
+        for(int i = 0; i < count; ++i) {
+            items.add(new BuilderLineNumber(i));
+        }
+        return items;
+    }
+
+    private void doTestMergeIntoKeepsOrderOfDebugItems(int countLocation1, int countLocation2) {
+        MethodLocation location1 = new MethodLocation(null, 123, 1);
+        MethodLocation location2 = new MethodLocation(null, 456, 2);
+
+        List<BuilderDebugItem> items1 = createItems(countLocation1);
+        List<BuilderDebugItem> items2 = createItems(countLocation2);
+        location1.getDebugItems().addAll(items1);
+        location2.getDebugItems().addAll(items2);
+
+        location1.mergeInto(location2);
+
+        Assert.assertEquals(Sets.newHashSet(), location1.getDebugItems());
+        // items1 appear BEFORE items2
+        List<BuilderDebugItem> expectedItems = new ArrayList<>(items1);
+        expectedItems.addAll(items2);
+        Assert.assertEquals(expectedItems, new ArrayList<>(location2.getDebugItems()));
+    }
+
+    @Test
+    public void testMergeIntoKeepsOrderOfDebugItems() {
+        doTestMergeIntoKeepsOrderOfDebugItems(2, 2);
+        doTestMergeIntoKeepsOrderOfDebugItems(0, 0);
+        doTestMergeIntoKeepsOrderOfDebugItems(0, 2);
+        doTestMergeIntoKeepsOrderOfDebugItems(2, 0);
+    }
+}
diff --git a/dexlib2/src/test/java/org/jf/dexlib2/pool/RollbackTest.java b/dexlib2/src/test/java/org/jf/dexlib2/pool/RollbackTest.java
index 6074de1..87473bb 100644
--- a/dexlib2/src/test/java/org/jf/dexlib2/pool/RollbackTest.java
+++ b/dexlib2/src/test/java/org/jf/dexlib2/pool/RollbackTest.java
@@ -84,7 +84,7 @@
             dexPool.internClass(class2);
             dexPool.reset();
             dexPool.writeTo(dataStore);
-            dexFile1 = new RawDexFile(Opcodes.getDefault(), dataStore.getData());
+            dexFile1 = new RawDexFile(Opcodes.getDefault(), dataStore.getBuffer());
         }
 
         RawDexFile dexFile2;
@@ -93,7 +93,7 @@
             DexPool dexPool = new DexPool(Opcodes.getDefault());
             dexPool.internClass(class1);
             dexPool.writeTo(dataStore);
-            dexFile2 = new RawDexFile(Opcodes.getDefault(), dataStore.getData());
+            dexFile2 = new RawDexFile(Opcodes.getDefault(), dataStore.getBuffer());
         }
 
         List<MapItem> mapItems1 = dexFile1.getMapItems();
diff --git a/dexlib2/src/test/java/org/jf/dexlib2/writer/CallSiteTest.java b/dexlib2/src/test/java/org/jf/dexlib2/writer/CallSiteTest.java
new file mode 100644
index 0000000..c909fb2
--- /dev/null
+++ b/dexlib2/src/test/java/org/jf/dexlib2/writer/CallSiteTest.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright 2018, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.jf.dexlib2.writer;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterators;
+import com.google.common.collect.Lists;
+import org.jf.dexlib2.*;
+import org.jf.dexlib2.builder.MethodImplementationBuilder;
+import org.jf.dexlib2.builder.instruction.BuilderInstruction35c;
+import org.jf.dexlib2.iface.ClassDef;
+import org.jf.dexlib2.iface.DexFile;
+import org.jf.dexlib2.iface.Method;
+import org.jf.dexlib2.iface.instruction.Instruction;
+import org.jf.dexlib2.iface.instruction.formats.Instruction35c;
+import org.jf.dexlib2.iface.reference.CallSiteReference;
+import org.jf.dexlib2.immutable.ImmutableClassDef;
+import org.jf.dexlib2.immutable.ImmutableDexFile;
+import org.jf.dexlib2.immutable.ImmutableMethod;
+import org.jf.dexlib2.immutable.ImmutableMethodImplementation;
+import org.jf.dexlib2.immutable.instruction.ImmutableInstruction35c;
+import org.jf.dexlib2.immutable.reference.ImmutableCallSiteReference;
+import org.jf.dexlib2.immutable.reference.ImmutableMethodHandleReference;
+import org.jf.dexlib2.immutable.reference.ImmutableMethodProtoReference;
+import org.jf.dexlib2.immutable.reference.ImmutableMethodReference;
+import org.jf.dexlib2.writer.builder.BuilderCallSiteReference;
+import org.jf.dexlib2.writer.builder.BuilderMethod;
+import org.jf.dexlib2.writer.builder.DexBuilder;
+import org.jf.dexlib2.writer.io.FileDataStore;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.IOException;
+
+public class CallSiteTest {
+    @Test
+    public void testPoolCallSite() throws IOException {
+        ClassDef class1 = new ImmutableClassDef("Lcls1;", AccessFlags.PUBLIC.getValue(), "Ljava/lang/Object;", null, null,
+                null, null,
+                Lists.<Method>newArrayList(
+                        new ImmutableMethod("Lcls1", "method1",
+                                ImmutableList.of(), "V", AccessFlags.PUBLIC.getValue(), null,
+                                new ImmutableMethodImplementation(10, ImmutableList.of(
+                                        new ImmutableInstruction35c(Opcode.INVOKE_CUSTOM, 0, 0, 0, 0, 0, 0,
+                                                new ImmutableCallSiteReference("call_site_1",
+                                                        new ImmutableMethodHandleReference(MethodHandleType.INVOKE_STATIC,
+                                                                new ImmutableMethodReference("Lcls1", "loader",
+                                                                        ImmutableList.of("Ljava/lang/invoke/Lookup;",
+                                                                                "Ljava/lang/String;",
+                                                                                "Ljava/lang/invoke/MethodType;"),
+                                                                        "Ljava/lang/invoke/CallSite;")),
+                                                        "someMethod", new ImmutableMethodProtoReference(ImmutableList.of(), "V"), ImmutableList.of()))
+                                ), null, null))));
+
+        File tempFile = File.createTempFile("dex", ".dex");
+        DexFileFactory.writeDexFile(tempFile.getPath(),
+                new ImmutableDexFile(Opcodes.forArtVersion(111), ImmutableList.of(class1)));
+
+        verifyDexFile(DexFileFactory.loadDexFile(tempFile, Opcodes.forArtVersion(111)));
+    }
+
+    @Test
+    public void testBuilderCallSite() throws IOException {
+        DexBuilder dexBuilder = new DexBuilder(Opcodes.forArtVersion(111));
+
+        BuilderCallSiteReference callSite = dexBuilder.internCallSite(new ImmutableCallSiteReference("call_site_1",
+                new ImmutableMethodHandleReference(
+                        MethodHandleType.INVOKE_STATIC,
+                        new ImmutableMethodReference("Lcls1", "loader", ImmutableList.of("Ljava/lang/invoke/Lookup;",
+                                "Ljava/lang/String;",
+                                "Ljava/lang/invoke/MethodType;"),
+                                "Ljava/lang/invoke/CallSite;")),
+                "someMethod",
+                new ImmutableMethodProtoReference(ImmutableList.of(), "V"), ImmutableList.of()));
+
+        MethodImplementationBuilder methodImplementationBuilder = new MethodImplementationBuilder(10);
+        methodImplementationBuilder.addInstruction(new BuilderInstruction35c(Opcode.INVOKE_CUSTOM, 0, 0, 0, 0, 0, 0,
+                callSite));
+
+        BuilderMethod method = dexBuilder.internMethod("Lcls1", "method1", null, "V", 0, ImmutableSet.of(),
+                methodImplementationBuilder.getMethodImplementation());
+        dexBuilder.internClassDef("Lcls1;", AccessFlags.PUBLIC.getValue(), "Ljava/lang/Object;", null, null,
+                ImmutableSet.of(), null,
+                ImmutableList.of(method));
+
+        File tempFile = File.createTempFile("dex", ".dex");
+        dexBuilder.writeTo(new FileDataStore(tempFile));
+
+        verifyDexFile(DexFileFactory.loadDexFile(tempFile, Opcodes.forArtVersion(111)));
+    }
+
+    private void verifyDexFile(DexFile dexFile) {
+        Assert.assertEquals(1, dexFile.getClasses().size());
+        ClassDef cls = Lists.newArrayList(dexFile.getClasses()).get(0);
+        Assert.assertEquals("Lcls1;", cls.getType());
+        Assert.assertEquals(1, Lists.newArrayList(cls.getMethods()).size());
+        Method method = Iterators.getNext(cls.getMethods().iterator(), null);
+        Assert.assertEquals("method1", method.getName());
+        Assert.assertEquals(1, Lists.newArrayList(method.getImplementation().getInstructions()).size());
+        Instruction instruction = Lists.newArrayList(method.getImplementation().getInstructions().iterator()).get(0);
+        Assert.assertEquals(Opcode.INVOKE_CUSTOM, instruction.getOpcode());
+        Assert.assertTrue(((Instruction35c) instruction).getReference() instanceof CallSiteReference);
+    }
+}
diff --git a/dexlib2/src/test/java/org/jf/dexlib2/writer/DexDataWriterTest.java b/dexlib2/src/test/java/org/jf/dexlib2/writer/DexDataWriterTest.java
index fee32d8..7ef574c 100644
--- a/dexlib2/src/test/java/org/jf/dexlib2/writer/DexDataWriterTest.java
+++ b/dexlib2/src/test/java/org/jf/dexlib2/writer/DexDataWriterTest.java
@@ -34,7 +34,6 @@
 import junit.framework.Assert;
 import org.jf.dexlib2.ValueType;
 import org.jf.util.ExceptionWithContext;
-import org.jf.util.NakedByteArrayOutputStream;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/dexlib2/src/test/java/org/jf/dexlib2/writer/DexWriterSleb128Test.java b/dexlib2/src/test/java/org/jf/dexlib2/writer/DexWriterSleb128Test.java
index b41cf46..ffcf96b 100644
--- a/dexlib2/src/test/java/org/jf/dexlib2/writer/DexWriterSleb128Test.java
+++ b/dexlib2/src/test/java/org/jf/dexlib2/writer/DexWriterSleb128Test.java
@@ -32,7 +32,6 @@
 package org.jf.dexlib2.writer;
 
 import junit.framework.Assert;
-import org.jf.util.NakedByteArrayOutputStream;
 import org.junit.Test;
 
 import java.io.IOException;
diff --git a/dexlib2/src/test/java/org/jf/dexlib2/writer/DexWriterTest.java b/dexlib2/src/test/java/org/jf/dexlib2/writer/DexWriterTest.java
index bf55e37..fb65934 100644
--- a/dexlib2/src/test/java/org/jf/dexlib2/writer/DexWriterTest.java
+++ b/dexlib2/src/test/java/org/jf/dexlib2/writer/DexWriterTest.java
@@ -77,7 +77,7 @@
             throw new RuntimeException(ex);
         }
 
-        DexBackedDexFile dexFile = new DexBackedDexFile(Opcodes.getDefault(), dataStore.getData());
+        DexBackedDexFile dexFile = new DexBackedDexFile(Opcodes.getDefault(), dataStore.getBuffer());
         ClassDef dbClassDef = Iterables.getFirst(dexFile.getClasses(), null);
         Assert.assertNotNull(dbClassDef);
         Annotation dbAnnotation = Iterables.getFirst(dbClassDef.getAnnotations(), null);
@@ -117,7 +117,7 @@
             throw new RuntimeException(ex);
         }
 
-        DexBackedDexFile dexFile = new DexBackedDexFile(Opcodes.getDefault(), dataStore.getData());
+        DexBackedDexFile dexFile = new DexBackedDexFile(Opcodes.getDefault(), dataStore.getBuffer());
         ClassDef dbClassDef = Iterables.getFirst(dexFile.getClasses(), null);
         Assert.assertNotNull(dbClassDef);
         Annotation dbAnnotation = Iterables.getFirst(dbClassDef.getAnnotations(), null);
diff --git a/dexlib2/src/test/java/org/jf/dexlib2/writer/DexWriterUleb128Test.java b/dexlib2/src/test/java/org/jf/dexlib2/writer/DexWriterUleb128Test.java
index bf993bc..4fb1acb 100644
--- a/dexlib2/src/test/java/org/jf/dexlib2/writer/DexWriterUleb128Test.java
+++ b/dexlib2/src/test/java/org/jf/dexlib2/writer/DexWriterUleb128Test.java
@@ -32,7 +32,6 @@
 package org.jf.dexlib2.writer;
 
 import junit.framework.Assert;
-import org.jf.util.NakedByteArrayOutputStream;
 import org.junit.Test;
 
 import java.io.IOException;
diff --git a/dexlib2/src/test/java/org/jf/dexlib2/writer/JumboStringConversionTest.java b/dexlib2/src/test/java/org/jf/dexlib2/writer/JumboStringConversionTest.java
index 340b1fa..c64f3b2 100644
--- a/dexlib2/src/test/java/org/jf/dexlib2/writer/JumboStringConversionTest.java
+++ b/dexlib2/src/test/java/org/jf/dexlib2/writer/JumboStringConversionTest.java
@@ -92,7 +92,7 @@
         MemoryDataStore dexStore = new MemoryDataStore();
         dexBuilder.writeTo(dexStore);
 
-        DexBackedDexFile dexFile = new DexBackedDexFile(Opcodes.getDefault(), dexStore.getData());
+        DexBackedDexFile dexFile = new DexBackedDexFile(Opcodes.getDefault(), dexStore.getBuffer());
 
         ClassDef classDef = Iterables.getFirst(dexFile.getClasses(), null);
         Assert.assertNotNull(classDef);
@@ -189,7 +189,7 @@
         MemoryDataStore dexStore = new MemoryDataStore();
         dexBuilder.writeTo(dexStore);
 
-        DexBackedDexFile dexFile = new DexBackedDexFile(Opcodes.getDefault(), dexStore.getData());
+        DexBackedDexFile dexFile = new DexBackedDexFile(Opcodes.getDefault(), dexStore.getBuffer());
 
         ClassDef classDef = Iterables.getFirst(dexFile.getClasses(), null);
         Assert.assertNotNull(classDef);
diff --git a/util/src/main/java/org/jf/util/NakedByteArrayOutputStream.java b/dexlib2/src/test/java/org/jf/dexlib2/writer/NakedByteArrayOutputStream.java
similarity index 86%
rename from util/src/main/java/org/jf/util/NakedByteArrayOutputStream.java
rename to dexlib2/src/test/java/org/jf/dexlib2/writer/NakedByteArrayOutputStream.java
index 1358627..ea1e6d7 100644
--- a/util/src/main/java/org/jf/util/NakedByteArrayOutputStream.java
+++ b/dexlib2/src/test/java/org/jf/dexlib2/writer/NakedByteArrayOutputStream.java
@@ -1,18 +1,18 @@
 /*
- * Copyright 2012, Google Inc.
+ * Copyright 2018, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
  * met:
  *
- *     * Redistributions of source code must retain the above copyright
+ * Redistributions of source code must retain the above copyright
  * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
+ * Redistributions in binary form must reproduce the above
  * copyright notice, this list of conditions and the following disclaimer
  * in the documentation and/or other materials provided with the
  * distribution.
- *     * Neither the name of Google Inc. nor the names of its
+ * Neither the name of Google Inc. nor the names of its
  * contributors may be used to endorse or promote products derived from
  * this software without specific prior written permission.
  *
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package org.jf.util;
+package org.jf.dexlib2.writer;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
diff --git a/util/src/test/java/org/jf/util/AbstractForwardSequentialListTest.java b/dexlib2/src/test/java/org/jf/util/AbstractForwardSequentialListTest.java
similarity index 100%
rename from util/src/test/java/org/jf/util/AbstractForwardSequentialListTest.java
rename to dexlib2/src/test/java/org/jf/util/AbstractForwardSequentialListTest.java
diff --git a/util/src/test/java/org/jf/util/IndentingWriterTest.java b/dexlib2/src/test/java/org/jf/util/IndentingWriterTest.java
similarity index 100%
rename from util/src/test/java/org/jf/util/IndentingWriterTest.java
rename to dexlib2/src/test/java/org/jf/util/IndentingWriterTest.java
diff --git a/util/src/test/java/org/jf/util/NumberUtilsTest.java b/dexlib2/src/test/java/org/jf/util/NumberUtilsTest.java
similarity index 100%
rename from util/src/test/java/org/jf/util/NumberUtilsTest.java
rename to dexlib2/src/test/java/org/jf/util/NumberUtilsTest.java
diff --git a/util/src/test/java/org/jf/util/StringWrapperTest.java b/dexlib2/src/test/java/org/jf/util/StringWrapperTest.java
similarity index 100%
rename from util/src/test/java/org/jf/util/StringWrapperTest.java
rename to dexlib2/src/test/java/org/jf/util/StringWrapperTest.java
diff --git a/examples/InvokeCustom/BootstrapLinker.smali b/examples/InvokeCustom/BootstrapLinker.smali
new file mode 100644
index 0000000..cb50bb5
--- /dev/null
+++ b/examples/InvokeCustom/BootstrapLinker.smali
@@ -0,0 +1,60 @@
+.class public LBootstrapLinker;
+
+.super Ljava/lang/Object;
+
+.method public static normalLink(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
+    .registers 15
+
+    sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+    const-string v3, "BootstrapLinker.normalLink - "
+    invoke-virtual {v0, v3}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V
+    invoke-virtual {p3}, Ljava/lang/Object;->toString()Ljava/lang/String;
+    move-result-object v1
+    invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+    const v0, 0
+    const v1, 1
+    invoke-virtual {p2, v0, v1}, Ljava/lang/invoke/MethodType;->dropParameterTypes(II)Ljava/lang/invoke/MethodType;
+    move-result-object p2
+
+    const-class v1, LCustom;
+
+    invoke-virtual {p0, v1, p1, p2}, Ljava/lang/invoke/MethodHandles$Lookup;->findVirtual(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
+    move-result-object v2
+
+    new-instance v0, Ljava/lang/invoke/ConstantCallSite;
+    invoke-direct {v0, v2}, Ljava/lang/invoke/ConstantCallSite;-><init>(Ljava/lang/invoke/MethodHandle;)V
+
+    return-object v0
+.end method
+
+
+.method public static backwardsLink(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;)Ljava/lang/invoke/CallSite;
+    .registers 15
+
+    sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+    const-string v3, "BootstrapLinker.backwardsLink - "
+    invoke-virtual {v0, v3}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V
+    invoke-virtual {v0, p3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+    const v0, 0
+    const v1, 1
+    invoke-virtual {p2, v0, v1}, Ljava/lang/invoke/MethodType;->dropParameterTypes(II)Ljava/lang/invoke/MethodType;
+    move-result-object p2
+
+    new-instance v0, Ljava/lang/StringBuffer;
+    invoke-direct {v0, p1}, Ljava/lang/StringBuffer;-><init>(Ljava/lang/String;)V
+    invoke-virtual {v0}, Ljava/lang/StringBuffer;->reverse()Ljava/lang/StringBuffer;
+    invoke-virtual {v0}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;
+    move-result-object p1
+
+    const-class v1, LCustom;
+
+    invoke-virtual {p0, v1, p1, p2}, Ljava/lang/invoke/MethodHandles$Lookup;->findVirtual(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
+    move-result-object v2
+
+    new-instance v0, Ljava/lang/invoke/ConstantCallSite;
+    invoke-direct {v0, v2}, Ljava/lang/invoke/ConstantCallSite;-><init>(Ljava/lang/invoke/MethodHandle;)V
+
+    return-object v0
+.end method
diff --git a/examples/InvokeCustom/Custom.smali b/examples/InvokeCustom/Custom.smali
new file mode 100644
index 0000000..63a28f5
--- /dev/null
+++ b/examples/InvokeCustom/Custom.smali
@@ -0,0 +1,27 @@
+.class public LCustom;
+
+.super Ljava/lang/Object;
+
+.method public doSomething(Ljava/lang/String;)Ljava/lang/String;
+    .registers 15
+
+    sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+
+    invoke-virtual {v0, p1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+    const-string v1, "Custom"
+
+    return-object v1
+.end method
+
+.method public gnihtemoSod(Ljava/lang/String;)Ljava/lang/String;
+    .registers 15
+
+    sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+
+    invoke-virtual {v0, p1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+    const-string v1, "motsuC"
+
+    return-object v1
+.end method
\ No newline at end of file
diff --git a/examples/InvokeCustom/Main.smali b/examples/InvokeCustom/Main.smali
new file mode 100644
index 0000000..db009cd
--- /dev/null
+++ b/examples/InvokeCustom/Main.smali
@@ -0,0 +1,26 @@
+.class LMain;
+
+.super Ljava/lang/Object;
+
+.method public static main([Ljava/lang/String;)V
+    .registers 15
+
+    new-instance v0, LCustom;
+    invoke-direct {v0}, LCustom;-><init>()V
+    
+    const-string v1, "Arg to doSomething"
+
+    invoke-custom {v0, v1}, normallyLinkedCallSite("doSomething", (LCustom;Ljava/lang/String;)Ljava/lang/String;, "just testing")@LBootstrapLinker;->normalLink(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;)Ljava/lang/invoke/CallSite;
+    move-result-object v2
+    sget-object v3, Ljava/lang/System;->out:Ljava/io/PrintStream;
+    const-string v4, "got back - "
+    invoke-virtual {v3, v4}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V
+    invoke-virtual {v3, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+    invoke-custom {v0, v1}, backwardsLinkedCallSite("doSomething", (LCustom;Ljava/lang/String;)Ljava/lang/String;, "just testing")@LBootstrapLinker;->backwardsLink(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;)Ljava/lang/invoke/CallSite;
+    move-result-object v2
+    sget-object v3, Ljava/lang/System;->out:Ljava/io/PrintStream;
+    const-string v4, "got back - "
+    invoke-virtual {v3, v4}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V
+    invoke-virtual {v3, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+.end method
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 241a7ad..f6b961f 100644
--- a/gradle/wrapper/gradle-wrapper.jar
+++ b/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index ea282cc..9a4163a 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,5 @@
-#Wed May 03 00:04:05 SGT 2017
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-all.zip
diff --git a/gradlew b/gradlew
index 4453cce..cccdd3d 100755
--- a/gradlew
+++ b/gradlew
@@ -33,11 +33,11 @@
 # Use the maximum available, or set MAX_FD != -1 to use that value.
 MAX_FD="maximum"
 
-warn ( ) {
+warn () {
     echo "$*"
 }
 
-die ( ) {
+die () {
     echo
     echo "$*"
     echo
@@ -155,7 +155,7 @@
 fi
 
 # Escape application args
-save ( ) {
+save () {
     for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
     echo " "
 }
diff --git a/smali/src/main/antlr/smaliParser.g b/smali/src/main/antlr/smaliParser.g
index 2d5ecca..76de3bc 100644
--- a/smali/src/main/antlr/smaliParser.g
+++ b/smali/src/main/antlr/smaliParser.g
@@ -41,6 +41,7 @@
   ARRAY_DATA_DIRECTIVE;
   ARRAY_TYPE_PREFIX;
   ARROW;
+  AT;
   BOOL_LITERAL;
   BYTE_LITERAL;
   CATCH_DIRECTIVE;
@@ -106,11 +107,14 @@
   INSTRUCTION_FORMAT31i_OR_ID;
   INSTRUCTION_FORMAT31t;
   INSTRUCTION_FORMAT32x;
+  INSTRUCTION_FORMAT35c_CALL_SITE;
   INSTRUCTION_FORMAT35c_METHOD;
   INSTRUCTION_FORMAT35c_METHOD_ODEX;
+  INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE;
   INSTRUCTION_FORMAT35c_TYPE;
   INSTRUCTION_FORMAT35mi_METHOD;
   INSTRUCTION_FORMAT35ms_METHOD;
+  INSTRUCTION_FORMAT3rc_CALL_SITE;
   INSTRUCTION_FORMAT3rc_METHOD;
   INSTRUCTION_FORMAT3rc_METHOD_ODEX;
   INSTRUCTION_FORMAT3rc_TYPE;
@@ -125,6 +129,8 @@
   LOCALS_DIRECTIVE;
   LONG_LITERAL;
   METHOD_DIRECTIVE;
+  METHOD_HANDLE_TYPE_FIELD;
+  METHOD_HANDLE_TYPE_METHOD;
   MEMBER_NAME;
   NEGATIVE_INTEGER_LITERAL;
   NULL_LITERAL;
@@ -176,6 +182,7 @@
   I_ANNOTATION;
   I_ANNOTATION_ELEMENT;
   I_SUBANNOTATION;
+  I_ENCODED_METHOD_HANDLE;
   I_ENCODED_FIELD;
   I_ENCODED_METHOD;
   I_ENCODED_ENUM;
@@ -208,6 +215,8 @@
   I_STATEMENT_FORMAT21c_TYPE;
   I_STATEMENT_FORMAT21c_FIELD;
   I_STATEMENT_FORMAT21c_STRING;
+  I_STATEMENT_FORMAT21c_METHOD_HANDLE;
+  I_STATEMENT_FORMAT21c_METHOD_TYPE;
   I_STATEMENT_FORMAT21ih;
   I_STATEMENT_FORMAT21lh;
   I_STATEMENT_FORMAT21s;
@@ -224,8 +233,10 @@
   I_STATEMENT_FORMAT31i;
   I_STATEMENT_FORMAT31t;
   I_STATEMENT_FORMAT32x;
+  I_STATEMENT_FORMAT35c_CALL_SITE;
   I_STATEMENT_FORMAT35c_METHOD;
   I_STATEMENT_FORMAT35c_TYPE;
+  I_STATEMENT_FORMAT3rc_CALL_SITE;
   I_STATEMENT_FORMAT3rc_METHOD;
   I_STATEMENT_FORMAT3rc_TYPE;
   I_STATEMENT_FORMAT45cc_METHOD;
@@ -236,12 +247,13 @@
   I_STATEMENT_SPARSE_SWITCH;
   I_REGISTER_RANGE;
   I_REGISTER_LIST;
+  I_CALL_SITE_EXTRA_ARGUMENTS;
+  I_CALL_SITE_REFERENCE;
 }
 
 @header {
 package org.jf.smali;
 
-import org.jf.dexlib2.Format;
 import org.jf.dexlib2.Opcode;
 import org.jf.dexlib2.Opcodes;
 }
@@ -549,6 +561,8 @@
   | PRIMITIVE_TYPE -> SIMPLE_NAME[$PRIMITIVE_TYPE]
   | VOID_TYPE -> SIMPLE_NAME[$VOID_TYPE]
   | ANNOTATION_VISIBILITY -> SIMPLE_NAME[$ANNOTATION_VISIBILITY]
+  | METHOD_HANDLE_TYPE_FIELD
+  | METHOD_HANDLE_TYPE_METHOD
   | INSTRUCTION_FORMAT10t -> SIMPLE_NAME[$INSTRUCTION_FORMAT10t]
   | INSTRUCTION_FORMAT10x -> SIMPLE_NAME[$INSTRUCTION_FORMAT10x]
   | INSTRUCTION_FORMAT10x_ODEX -> SIMPLE_NAME[$INSTRUCTION_FORMAT10x_ODEX]
@@ -556,6 +570,8 @@
   | INSTRUCTION_FORMAT12x_OR_ID -> SIMPLE_NAME[$INSTRUCTION_FORMAT12x_OR_ID]
   | INSTRUCTION_FORMAT21c_FIELD -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_FIELD]
   | INSTRUCTION_FORMAT21c_FIELD_ODEX -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_FIELD_ODEX]
+  | INSTRUCTION_FORMAT21c_METHOD_HANDLE -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_METHOD_HANDLE]
+  | INSTRUCTION_FORMAT21c_METHOD_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_METHOD_TYPE]
   | INSTRUCTION_FORMAT21c_STRING -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_STRING]
   | INSTRUCTION_FORMAT21c_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_TYPE]
   | INSTRUCTION_FORMAT21t -> SIMPLE_NAME[$INSTRUCTION_FORMAT21t]
@@ -568,8 +584,10 @@
   | INSTRUCTION_FORMAT23x -> SIMPLE_NAME[$INSTRUCTION_FORMAT23x]
   | INSTRUCTION_FORMAT31i_OR_ID -> SIMPLE_NAME[$INSTRUCTION_FORMAT31i_OR_ID]
   | INSTRUCTION_FORMAT31t -> SIMPLE_NAME[$INSTRUCTION_FORMAT31t]
+  | INSTRUCTION_FORMAT35c_CALL_SITE -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_CALL_SITE]
   | INSTRUCTION_FORMAT35c_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_METHOD]
   | INSTRUCTION_FORMAT35c_METHOD_ODEX -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_METHOD_ODEX]
+  | INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE]
   | INSTRUCTION_FORMAT35c_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_TYPE]
   | INSTRUCTION_FORMAT35mi_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT35mi_METHOD]
   | INSTRUCTION_FORMAT35ms_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT35ms_METHOD]
@@ -636,7 +654,9 @@
   | array_literal
   | subannotation
   | type_field_method_literal
-  | enum_literal;
+  | enum_literal
+  | method_handle_literal
+  | method_prototype;
 
 parsed_integer_literal returns[int value]
   : integer_literal { $value = LiteralTools.parseInt($integer_literal.text); };
@@ -699,6 +719,20 @@
   | PRIMITIVE_TYPE
   | VOID_TYPE;
 
+call_site_reference
+  : simple_name OPEN_PAREN STRING_LITERAL COMMA method_prototype (COMMA literal)* CLOSE_PAREN AT method_reference
+    -> ^(I_CALL_SITE_REFERENCE simple_name STRING_LITERAL method_prototype ^(I_CALL_SITE_EXTRA_ARGUMENTS literal*)
+         method_reference);
+
+method_handle_reference
+  : METHOD_HANDLE_TYPE_FIELD AT field_reference -> METHOD_HANDLE_TYPE_FIELD field_reference
+  | METHOD_HANDLE_TYPE_METHOD AT method_reference -> METHOD_HANDLE_TYPE_METHOD method_reference
+  | INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE AT method_reference -> INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE method_reference;
+
+method_handle_literal
+  : method_handle_reference
+  -> ^(I_ENCODED_METHOD_HANDLE method_handle_reference);
+
 method_reference
   : (reference_type_descriptor ARROW)? member_name method_prototype
   -> reference_type_descriptor? member_name method_prototype;
@@ -795,8 +829,10 @@
 instruction_format31i
   : INSTRUCTION_FORMAT31i
   | INSTRUCTION_FORMAT31i_OR_ID -> INSTRUCTION_FORMAT31i[$INSTRUCTION_FORMAT31i_OR_ID];
-
-
+  
+instruction_format35c_method
+  : INSTRUCTION_FORMAT35c_METHOD
+  | INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE -> INSTRUCTION_FORMAT35c_METHOD[$INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE];
 
 instruction
   : insn_format10t
@@ -809,6 +845,8 @@
   | insn_format20t
   | insn_format21c_field
   | insn_format21c_field_odex
+  | insn_format21c_method_handle
+  | insn_format21c_method_type
   | insn_format21c_string
   | insn_format21c_type
   | insn_format21ih
@@ -829,11 +867,13 @@
   | insn_format31i
   | insn_format31t
   | insn_format32x
+  | insn_format35c_call_site
   | insn_format35c_method
   | insn_format35c_type
   | insn_format35c_method_odex
   | insn_format35mi_method
   | insn_format35ms_method
+  | insn_format3rc_call_site
   | insn_format3rc_method
   | insn_format3rc_method_odex
   | insn_format3rc_type
@@ -909,6 +949,18 @@
     }
     -> ^(I_STATEMENT_FORMAT21c_FIELD[$start, "I_STATEMENT_FORMAT21c_FIELD"] INSTRUCTION_FORMAT21c_FIELD_ODEX REGISTER field_reference);
 
+insn_format21c_method_handle
+  : //e.g. const-method-handle v0, invoke-static@Ljava/lang/Integer;->toString(I)Ljava/lang/String;
+    INSTRUCTION_FORMAT21c_METHOD_HANDLE REGISTER COMMA method_handle_reference
+    -> ^(I_STATEMENT_FORMAT21c_METHOD_HANDLE[$start, "I_STATEMENT_FORMAT21c_METHOD_HANDLE"]
+            INSTRUCTION_FORMAT21c_METHOD_HANDLE REGISTER method_handle_reference);
+
+insn_format21c_method_type
+    : //e.g. const-method-type v0, (ILjava/lang/String;)Ljava/lang/String;
+    INSTRUCTION_FORMAT21c_METHOD_TYPE REGISTER COMMA method_prototype
+    -> ^(I_STATEMENT_FORMAT21c_METHOD_TYPE[$start, "I_STATEMENT_FORMAT21c_METHOD_TYPE"]
+            INSTRUCTION_FORMAT21c_METHOD_TYPE REGISTER method_prototype);
+
 insn_format21c_string
   : //e.g. const-string v1, "Hello World!"
     INSTRUCTION_FORMAT21c_STRING REGISTER COMMA STRING_LITERAL
@@ -1016,10 +1068,16 @@
     INSTRUCTION_FORMAT32x REGISTER COMMA REGISTER
     -> ^(I_STATEMENT_FORMAT32x[$start, "I_STATEMENT_FORMAT32x"] INSTRUCTION_FORMAT32x REGISTER REGISTER);
 
+insn_format35c_call_site
+  : //e.g. invoke-custom {v0, v1}, call_site_name
+    // OR invoke-custom {v0, v1}, {"doSomething", (LCustom;Ljava/lang/String;)Ljava/lang/String;, "just testing"}, BootstrapLinker;->normalLink(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
+    INSTRUCTION_FORMAT35c_CALL_SITE OPEN_BRACE register_list CLOSE_BRACE COMMA call_site_reference
+    -> ^(I_STATEMENT_FORMAT35c_CALL_SITE[$start, "I_STATEMENT_FORMAT35c_CALL_SITE"] INSTRUCTION_FORMAT35c_CALL_SITE register_list call_site_reference);
+
 insn_format35c_method
   : //e.g. invoke-virtual {v0,v1} java/io/PrintStream/print(Ljava/lang/Stream;)V
-    INSTRUCTION_FORMAT35c_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference
-    -> ^(I_STATEMENT_FORMAT35c_METHOD[$start, "I_STATEMENT_FORMAT35c_METHOD"] INSTRUCTION_FORMAT35c_METHOD register_list method_reference);
+    instruction_format35c_method OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference
+    -> ^(I_STATEMENT_FORMAT35c_METHOD[$start, "I_STATEMENT_FORMAT35c_METHOD"] instruction_format35c_method register_list method_reference);
 
 insn_format35c_type
   : //e.g. filled-new-array {v0,v1}, I
@@ -1047,6 +1105,12 @@
       throwOdexedInstructionException(input, $INSTRUCTION_FORMAT35ms_METHOD.text);
     };
 
+insn_format3rc_call_site
+  : //e.g. invoke-custom/range {v0 .. v1}, call_site_name
+    // OR invoke-custom/range {v0 .. v1}, {"doSomething", (LCustom;Ljava/lang/String;)Ljava/lang/String;, "just testing"}, BootstrapLinker;->normalLink(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
+    INSTRUCTION_FORMAT3rc_CALL_SITE OPEN_BRACE register_range CLOSE_BRACE COMMA call_site_reference
+    -> ^(I_STATEMENT_FORMAT3rc_CALL_SITE[$start, "I_STATEMENT_FORMAT3rc_CALL_SITE"] INSTRUCTION_FORMAT3rc_CALL_SITE register_range call_site_reference);
+
 insn_format3rc_method
   : //e.g. invoke-virtual/range {v25..v26}, java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
     INSTRUCTION_FORMAT3rc_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA method_reference
diff --git a/smali/src/main/antlr/smaliTreeWalker.g b/smali/src/main/antlr/smaliTreeWalker.g
index 171756e..f359523 100644
--- a/smali/src/main/antlr/smaliTreeWalker.g
+++ b/smali/src/main/antlr/smaliTreeWalker.g
@@ -60,7 +60,9 @@
 import org.jf.dexlib2.iface.value.EncodedValue;
 import org.jf.dexlib2.immutable.ImmutableAnnotation;
 import org.jf.dexlib2.immutable.ImmutableAnnotationElement;
+import org.jf.dexlib2.immutable.reference.ImmutableCallSiteReference;
 import org.jf.dexlib2.immutable.reference.ImmutableFieldReference;
+import org.jf.dexlib2.immutable.reference.ImmutableMethodHandleReference;
 import org.jf.dexlib2.immutable.reference.ImmutableMethodReference;
 import org.jf.dexlib2.immutable.reference.ImmutableMethodProtoReference;
 import org.jf.dexlib2.immutable.reference.ImmutableReference;
@@ -80,6 +82,7 @@
   private int apiLevel = 15;
   private Opcodes opcodes = Opcodes.forApi(apiLevel);
   private DexBuilder dexBuilder;
+  private int callSiteNameIndex = 0;
 
   public void setDexBuilder(DexBuilder dexBuilder) {
       this.dexBuilder = dexBuilder;
@@ -269,7 +272,7 @@
   : ^(I_FIELD_INITIAL_VALUE literal) {$encodedValue = $literal.encodedValue;}
   | /*epsilon*/;
 
-literal returns[EncodedValue encodedValue]
+literal returns[ImmutableEncodedValue encodedValue]
   : integer_literal { $encodedValue = new ImmutableIntEncodedValue($integer_literal.value); }
   | long_literal { $encodedValue = new ImmutableLongEncodedValue($long_literal.value); }
   | short_literal { $encodedValue = new ImmutableShortEncodedValue($short_literal.value); }
@@ -285,7 +288,9 @@
   | subannotation { $encodedValue = new ImmutableAnnotationEncodedValue($subannotation.annotationType, $subannotation.elements); }
   | field_literal { $encodedValue = new ImmutableFieldEncodedValue($field_literal.value); }
   | method_literal { $encodedValue = new ImmutableMethodEncodedValue($method_literal.value); }
-  | enum_literal { $encodedValue = new ImmutableEnumEncodedValue($enum_literal.value); };
+  | enum_literal { $encodedValue = new ImmutableEnumEncodedValue($enum_literal.value); }
+  | method_handle_literal { $encodedValue = new ImmutableMethodHandleEncodedValue($method_handle_literal.value); }
+  | method_prototype { $encodedValue = new ImmutableMethodTypeEncodedValue($method_prototype.proto); };
 
 //everything but string
 fixed_64bit_literal_number returns[Number value]
@@ -465,11 +470,12 @@
             methodImplementation);
   };
 
-method_prototype returns[List<String> parameters, String returnType]
+method_prototype returns[ImmutableMethodProtoReference proto]
   : ^(I_METHOD_PROTOTYPE ^(I_METHOD_RETURN_TYPE type_descriptor) method_type_list)
   {
-    $returnType = $type_descriptor.type;
-    $parameters = $method_type_list.types;
+    String returnType = $type_descriptor.type;
+    List<String> parameters = $method_type_list.types;
+    $proto = new ImmutableMethodProtoReference(parameters, returnType);
   };
 
 method_name_and_prototype returns[String name, List<SmaliMethodParameter> parameters, String returnType]
@@ -479,14 +485,14 @@
     $parameters = Lists.newArrayList();
 
     int paramRegister = 0;
-    for (String type: $method_prototype.parameters) {
-        $parameters.add(new SmaliMethodParameter(paramRegister++, type));
+    for (CharSequence type: $method_prototype.proto.getParameterTypes()) {
+        $parameters.add(new SmaliMethodParameter(paramRegister++, type.toString()));
         char c = type.charAt(0);
         if (c == 'D' || c == 'J') {
             paramRegister++;
         }
     }
-    $returnType = $method_prototype.returnType;
+    $returnType = $method_prototype.proto.getReturnType();
   };
 
 method_type_list returns[List<String> types]
@@ -501,6 +507,40 @@
       }
     )*;
 
+call_site_reference returns[ImmutableCallSiteReference callSiteReference]
+  :
+  ^(I_CALL_SITE_REFERENCE call_site_name=SIMPLE_NAME method_name=string_literal method_prototype
+        call_site_extra_arguments method_reference)
+    {
+        String callSiteName = $call_site_name.text;
+        ImmutableMethodHandleReference methodHandleReference =
+            new ImmutableMethodHandleReference(MethodHandleType.INVOKE_STATIC,
+                $method_reference.methodReference);
+        $callSiteReference = new ImmutableCallSiteReference(
+            callSiteName, methodHandleReference, $method_name.value, $method_prototype.proto,
+            $call_site_extra_arguments.extraArguments);
+    };
+
+method_handle_type returns[int methodHandleType]
+  : (METHOD_HANDLE_TYPE_FIELD | METHOD_HANDLE_TYPE_METHOD | INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE) {
+    $methodHandleType = MethodHandleType.getMethodHandleType($text);
+  };
+
+method_handle_reference returns[ImmutableMethodHandleReference methodHandle]
+  : method_handle_type (field_reference | method_reference) {
+    ImmutableReference reference;
+    if ($field_reference.text != null) {
+        reference = $field_reference.fieldReference;
+    } else {
+        reference = $method_reference.methodReference;
+    }
+    $methodHandle = new ImmutableMethodHandleReference($method_handle_type.methodHandleType, reference);
+  };
+
+method_handle_literal returns[ImmutableMethodHandleReference value]
+  : (I_ENCODED_METHOD_HANDLE method_handle_reference) {
+    $value = $method_handle_reference.methodHandle;
+  };
 
 method_reference returns[ImmutableMethodReference methodReference]
   : reference_type_descriptor? SIMPLE_NAME method_prototype
@@ -512,7 +552,7 @@
         type = $reference_type_descriptor.type;
     }
     $methodReference = new ImmutableMethodReference(type, $SIMPLE_NAME.text,
-             $method_prototype.parameters, $method_prototype.returnType);
+             $method_prototype.proto.getParameterTypes(), $method_prototype.proto.getReturnType());
   };
 
 field_reference returns[ImmutableFieldReference fieldReference]
@@ -653,6 +693,10 @@
       $method::methodBuilder.addSetSourceFile(dexBuilder.internNullableStringReference($string_literal.value));
     };
 
+call_site_extra_arguments returns[List<ImmutableEncodedValue> extraArguments]
+  : { $extraArguments = Lists.newArrayList(); }
+  ^(I_CALL_SITE_EXTRA_ARGUMENTS (literal { $extraArguments.add($literal.encodedValue); })*);
+
 ordered_method_items
   : ^(I_ORDERED_METHOD_ITEMS (label_def | instruction | debug_directive)*);
 
@@ -725,6 +769,8 @@
   | insn_format20bc
   | insn_format20t
   | insn_format21c_field
+  | insn_format21c_method_handle
+  | insn_format21c_method_type
   | insn_format21c_string
   | insn_format21c_type
   | insn_format21ih
@@ -743,8 +789,10 @@
   | insn_format31i
   | insn_format31t
   | insn_format32x
+  | insn_format35c_call_site
   | insn_format35c_method
   | insn_format35c_type
+  | insn_format3rc_call_site
   | insn_format3rc_method
   | insn_format3rc_type
   | insn_format45cc_method
@@ -842,6 +890,32 @@
               dexBuilder.internFieldReference(fieldReference)));
     };
 
+insn_format21c_method_handle
+  : //e.g. const-method-handle v0, invoke-static@Ljava/lang/Integer;->toString(I)Ljava/lang/String;
+    ^(I_STATEMENT_FORMAT21c_METHOD_HANDLE inst=(INSTRUCTION_FORMAT21c_METHOD_HANDLE) REGISTER method_handle_reference)
+    {
+      Opcode opcode = opcodes.getOpcodeByName($inst.text);
+      short regA = parseRegister_byte($REGISTER.text);
+
+      ImmutableMethodHandleReference methodHandleReference = $method_handle_reference.methodHandle;
+
+      $method::methodBuilder.addInstruction(new BuilderInstruction21c(opcode, regA,
+              dexBuilder.internMethodHandle(methodHandleReference)));
+    };
+
+insn_format21c_method_type
+  : //e.g. const-method-type v0, (ILjava/lang/String;)Ljava/lang/String;
+    ^(I_STATEMENT_FORMAT21c_METHOD_TYPE inst=(INSTRUCTION_FORMAT21c_METHOD_TYPE) REGISTER method_prototype)
+    {
+        Opcode opcode = opcodes.getOpcodeByName($inst.text);
+        short regA = parseRegister_byte($REGISTER.text);
+
+        ImmutableMethodProtoReference methodProtoReference = $method_prototype.proto;
+
+        $method::methodBuilder.addInstruction(new BuilderInstruction21c(opcode, regA,
+                dexBuilder.internMethodProtoReference(methodProtoReference)));
+    };
+
 insn_format21c_string
   : //e.g. const-string v1, "Hello World!"
     ^(I_STATEMENT_FORMAT21c_STRING INSTRUCTION_FORMAT21c_STRING REGISTER string_literal)
@@ -1051,6 +1125,23 @@
       $method::methodBuilder.addInstruction(new BuilderInstruction32x(opcode, regA, regB));
     };
 
+insn_format35c_call_site
+  : //e.g. invoke-custom {v0, v1}, call_site_name
+    // OR invoke-custom {v0, v1}, {"doSomething", (LCustom;Ljava/lang/String;)Ljava/lang/String;, "just testing"}, BootstrapLinker;->normalLink(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
+    ^(I_STATEMENT_FORMAT35c_CALL_SITE INSTRUCTION_FORMAT35c_CALL_SITE register_list call_site_reference)
+    {
+        Opcode opcode = opcodes.getOpcodeByName($INSTRUCTION_FORMAT35c_CALL_SITE.text);
+
+        //this depends on the fact that register_list returns a byte[5]
+        byte[] registers = $register_list.registers;
+        byte registerCount = $register_list.registerCount;
+
+        ImmutableCallSiteReference callSiteReference = $call_site_reference.callSiteReference;
+
+        $method::methodBuilder.addInstruction(new BuilderInstruction35c(opcode, registerCount, registers[0],
+                registers[1], registers[2], registers[3], registers[4], dexBuilder.internCallSite(callSiteReference)));
+    };
+
 insn_format35c_method
   : //e.g. invoke-virtual {v0,v1} java/io/PrintStream/print(Ljava/lang/Stream;)V
     ^(I_STATEMENT_FORMAT35c_METHOD INSTRUCTION_FORMAT35c_METHOD register_list method_reference)
@@ -1081,6 +1172,23 @@
               registers[2], registers[3], registers[4], dexBuilder.internTypeReference($nonvoid_type_descriptor.type)));
     };
 
+insn_format3rc_call_site
+  : //e.g. invoke-custom/range {v0 .. v1}, call_site_name
+    // OR invoke-custom/range {v0 .. v1}, {"doSomething", (LCustom;Ljava/lang/String;)Ljava/lang/String;, "just testing"}, BootstrapLinker;->normalLink(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
+    ^(I_STATEMENT_FORMAT3rc_CALL_SITE INSTRUCTION_FORMAT3rc_CALL_SITE register_range call_site_reference)
+    {
+        Opcode opcode = opcodes.getOpcodeByName($INSTRUCTION_FORMAT3rc_CALL_SITE.text);
+        int startRegister = $register_range.startRegister;
+        int endRegister = $register_range.endRegister;
+
+        int registerCount = endRegister - startRegister + 1;
+
+        ImmutableCallSiteReference callSiteReference = $call_site_reference.callSiteReference;
+
+        $method::methodBuilder.addInstruction(new BuilderInstruction3rc(opcode, startRegister, registerCount,
+                dexBuilder.internCallSite(callSiteReference)));
+    };
+
 insn_format3rc_method
   : //e.g. invoke-virtual/range {v25..v26} java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
     ^(I_STATEMENT_FORMAT3rc_METHOD INSTRUCTION_FORMAT3rc_METHOD register_range method_reference)
@@ -1122,14 +1230,11 @@
       byte registerCount = $register_list.registerCount;
 
       ImmutableMethodReference methodReference = $method_reference.methodReference;
-      ImmutableMethodProtoReference methodProtoReference = new ImmutableMethodProtoReference(
-              $method_prototype.parameters,
-              $method_prototype.returnType);
 
       $method::methodBuilder.addInstruction(new BuilderInstruction45cc(opcode, registerCount, registers[0], registers[1],
               registers[2], registers[3], registers[4],
               dexBuilder.internMethodReference(methodReference),
-              dexBuilder.internMethodProtoReference(methodProtoReference)));
+              dexBuilder.internMethodProtoReference($method_prototype.proto)));
     };
 
 insn_format4rcc_method
@@ -1143,13 +1248,10 @@
       int registerCount = endRegister-startRegister+1;
 
       ImmutableMethodReference methodReference = $method_reference.methodReference;
-      ImmutableMethodProtoReference methodProtoReference = new ImmutableMethodProtoReference(
-              $method_prototype.parameters,
-              $method_prototype.returnType);
 
       $method::methodBuilder.addInstruction(new BuilderInstruction4rcc(opcode, startRegister, registerCount,
               dexBuilder.internMethodReference(methodReference),
-              dexBuilder.internMethodProtoReference(methodProtoReference)));
+              dexBuilder.internMethodProtoReference($method_prototype.proto)));
     };
 
 insn_format51l_type
@@ -1282,9 +1384,7 @@
         }
     })*)
     {
-      if (annotationMap.size() > 0) {
         $annotations = ImmutableSet.copyOf(annotationMap.values());
-      }
     };
 
 annotation returns[Annotation annotation]
@@ -1314,19 +1414,19 @@
       $elements = elements;
     };
 
-field_literal returns[FieldReference value]
+field_literal returns[ImmutableFieldReference value]
   : ^(I_ENCODED_FIELD field_reference)
     {
       $value = $field_reference.fieldReference;
     };
 
-method_literal returns[MethodReference value]
+method_literal returns[ImmutableMethodReference value]
   : ^(I_ENCODED_METHOD method_reference)
     {
       $value = $method_reference.methodReference;
     };
 
-enum_literal returns[FieldReference value]
+enum_literal returns[ImmutableFieldReference value]
   : ^(I_ENCODED_ENUM field_reference)
     {
       $value = $field_reference.fieldReference;
diff --git a/smali/src/main/java/org/jf/smali/Smali.java b/smali/src/main/java/org/jf/smali/Smali.java
index 7f3762a..1c7d158 100644
--- a/smali/src/main/java/org/jf/smali/Smali.java
+++ b/smali/src/main/java/org/jf/smali/Smali.java
@@ -50,6 +50,7 @@
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.TreeSet;
 import java.util.concurrent.*;
 
 public class Smali {
@@ -73,7 +74,7 @@
      * @return true if assembly completed with no errors, or false if errors were encountered
      */
     public static boolean assemble(final SmaliOptions options, List<String> input) throws IOException {
-        LinkedHashSet<File> filesToProcessSet = new LinkedHashSet<File>();
+        TreeSet<File> filesToProcessSet = new TreeSet<File>();
 
         for (String fileToProcess: input) {
             File argFile = new File(fileToProcess);
diff --git a/smali/src/main/java/org/jf/smali/SmaliTestUtils.java b/smali/src/main/java/org/jf/smali/SmaliTestUtils.java
index a0fe55c..8b1d34a 100644
--- a/smali/src/main/java/org/jf/smali/SmaliTestUtils.java
+++ b/smali/src/main/java/org/jf/smali/SmaliTestUtils.java
@@ -72,7 +72,7 @@
         smaliParser.smali_file_return result = parser.smali_file();
 
         if(parser.getNumberOfSyntaxErrors() > 0 || lexer.getNumberOfSyntaxErrors() > 0) {
-            throw new RuntimeException("Error occured while compiling text");
+            throw new RuntimeException("Error occurred while compiling text");
         }
 
         CommonTree t = result.getTree();
@@ -87,14 +87,14 @@
         dexGen.smali_file();
 
         if (dexGen.getNumberOfSyntaxErrors() > 0) {
-            throw new RuntimeException("Error occured while compiling text");
+            throw new RuntimeException("Error occurred while compiling text");
         }
 
         MemoryDataStore dataStore = new MemoryDataStore();
 
         dexBuilder.writeTo(dataStore);
 
-        DexBackedDexFile dexFile = new DexBackedDexFile(Opcodes.forApi(apiLevel), dataStore.getData());
+        DexBackedDexFile dexFile = new DexBackedDexFile(Opcodes.forApi(apiLevel), dataStore.getBuffer());
 
         return Iterables.getFirst(dexFile.getClasses(), null);
     }
diff --git a/smali/src/main/java/org/jf/smali/smaliFlexLexer.java b/smali/src/main/java/org/jf/smali/smaliFlexLexer.java
index 4092111..1cb964e 100644
--- a/smali/src/main/java/org/jf/smali/smaliFlexLexer.java
+++ b/smali/src/main/java/org/jf/smali/smaliFlexLexer.java
@@ -4,14 +4,15 @@
 
 import java.io.*;
 import org.antlr.runtime.*;
+import org.jf.smali.util.*;
 import org.jf.util.*;
 import static org.jf.smali.smaliParser.*;
 
 
 /**
- * This class is a scanner generated by
+ * This class is a scanner generated by 
  * <a href="http://www.jflex.de/">JFlex</a> 1.6.1
- * from the specification file <tt>./src/main/jflex/smaliLexer.jflex</tt>
+ * from the specification file <tt>/ssd/aosp-master/external/smali/smali/src/main/jflex/smaliLexer.jflex</tt>
  */
 public class smaliFlexLexer implements TokenSource, LexerErrorInterface {
 
@@ -35,14 +36,14 @@
    *                  at the beginning of a line
    * l is of the form l = 2*k, k a non negative integer
    */
-  private static final int ZZ_LEXSTATE[] = {
+  private static final int ZZ_LEXSTATE[] = { 
      0,  0,  1,  1,  2,  2,  3,  3,  4,  4,  5, 5
   };
 
-  /**
+  /** 
    * Translates characters to character classes
    */
-  private static final String ZZ_CMAP_PACKED =
+  private static final String ZZ_CMAP_PACKED = 
     "\11\0\1\115\1\64\2\0\1\64\22\0\1\50\1\0\1\62\1\72"+
     "\1\22\2\0\1\63\1\113\1\114\2\0\1\110\1\7\1\17\1\30"+
     "\1\1\1\76\1\75\1\102\1\73\1\5\1\77\1\5\1\101\1\4"+
@@ -55,12 +56,12 @@
     "\1\67\1\111\1\0\1\112\43\0\u1f5f\22\20\0\30\22\10\0\ub7d0\22"+
     "\u0400\20\u0400\21\u1ff0\22\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\uffff\0\40\0";
 
-  /**
+  /** 
    * Translates characters to character classes
    */
   private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
 
-  /**
+  /** 
    * Translates DFA states to action switch labels.
    */
   private static final int [] ZZ_ACTION = zzUnpackAction();
@@ -68,59 +69,63 @@
   private static final String ZZ_ACTION_PACKED_0 =
     "\6\0\1\1\1\2\2\3\1\2\4\3\1\4\1\1"+
     "\2\5\1\3\1\6\15\3\1\7\1\3\1\10\1\11"+
-    "\2\3\1\12\1\13\1\1\1\14\1\15\1\16\1\17"+
-    "\1\20\1\21\1\22\1\23\1\24\1\5\1\23\1\25"+
-    "\1\26\1\23\1\27\1\30\1\31\1\0\1\27\1\32"+
-    "\1\33\1\0\1\2\3\3\1\34\1\35\1\36\1\0"+
-    "\1\37\1\40\1\41\2\3\2\42\1\3\1\0\1\43"+
-    "\12\3\3\4\1\44\10\4\1\45\1\3\1\0\1\3"+
-    "\2\0\22\3\1\46\31\3\6\0\1\47\1\50\1\51"+
-    "\1\52\1\53\1\54\1\55\1\56\1\57\1\60\1\61"+
-    "\1\2\1\0\1\41\1\3\1\0\1\62\1\36\2\3"+
-    "\1\42\12\3\1\41\5\3\21\4\1\3\1\0\1\63"+
-    "\2\0\1\64\2\0\43\3\1\65\14\3\1\66\1\0"+
-    "\1\64\1\0\1\67\1\52\1\61\1\0\1\36\1\0"+
-    "\2\3\1\42\5\3\1\70\5\3\1\70\4\3\25\4"+
-    "\4\0\7\3\1\71\5\3\1\72\11\3\1\73\5\3"+
-    "\1\74\1\3\1\75\6\3\1\76\6\3\1\77\3\3"+
-    "\1\52\1\61\1\100\2\3\1\101\14\3\4\4\1\102"+
-    "\13\4\1\103\1\0\3\4\3\3\1\104\32\3\1\0"+
-    "\11\3\1\105\5\3\1\0\3\3\1\52\1\61\1\3"+
-    "\1\106\22\3\1\0\1\3\1\4\1\107\1\110\1\111"+
-    "\1\112\3\4\1\113\3\4\1\114\13\4\5\3\1\0"+
-    "\34\3\1\105\5\3\2\0\12\3\1\71\4\3\2\0"+
-    "\3\3\2\115\12\3\1\0\13\3\1\0\1\3\2\4"+
-    "\1\116\4\4\1\117\15\4\1\120\7\3\1\0\1\121"+
-    "\1\0\16\3\1\71\11\3\1\71\12\3\1\0\1\122"+
-    "\1\74\11\3\1\0\3\3\1\123\1\124\1\0\1\61"+
-    "\11\3\1\0\21\3\1\0\1\3\24\4\1\3\1\71"+
-    "\5\3\1\0\1\125\13\3\1\0\10\3\1\0\3\3"+
-    "\1\126\10\3\1\0\4\3\1\127\1\3\2\0\3\3"+
-    "\1\0\4\3\1\70\2\3\1\70\2\3\1\0\15\3"+
-    "\1\70\3\3\1\130\1\3\1\4\1\131\5\4\1\132"+
-    "\1\133\11\4\1\0\1\4\6\3\1\0\11\3\1\72"+
-    "\2\3\1\72\1\3\1\0\2\3\1\0\7\3\1\74"+
-    "\1\0\2\3\1\134\4\3\2\0\2\3\1\0\10\3"+
-    "\1\135\1\136\16\3\6\4\1\137\1\140\5\4\1\141"+
-    "\2\4\1\142\3\3\1\143\1\0\1\3\1\144\7\3"+
-    "\1\0\11\3\1\0\5\3\2\0\2\3\1\145\20\3"+
-    "\1\146\1\147\1\150\10\4\1\151\1\4\2\3\2\0"+
-    "\5\3\1\0\2\3\1\105\1\65\3\3\1\105\1\152"+
-    "\5\3\1\0\1\153\1\0\7\3\1\154\7\3\11\4"+
-    "\1\155\2\0\1\156\13\3\1\157\1\160\2\3\1\161"+
-    "\2\3\1\0\1\154\2\3\1\154\3\3\11\4\2\0"+
-    "\1\162\1\163\1\164\10\3\1\0\5\3\1\165\1\166"+
-    "\1\167\5\4\1\170\2\0\1\171\6\3\1\0\4\3"+
-    "\1\172\1\173\3\4\3\0\5\3\1\0\3\3\1\174"+
-    "\3\4\3\0\4\3\1\0\3\3\1\0\3\4\1\0"+
-    "\1\175\1\0\2\3\1\176\1\177\1\200\2\3\1\0"+
-    "\1\201\1\202\1\203\1\204\1\0\2\3\3\0\1\205"+
-    "\2\0\1\206\1\3\4\0\1\207\1\3\4\0\1\3"+
-    "\3\0\1\210\1\3\3\0\1\3\1\211\1\212\1\213"+
-    "\1\214";
+    "\1\3\1\12\1\3\1\13\1\14\1\1\1\15\1\16"+
+    "\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\5"+
+    "\1\24\1\26\1\27\1\24\1\30\1\31\1\32\1\0"+
+    "\1\30\1\33\1\34\1\0\1\2\3\3\1\35\1\36"+
+    "\1\37\1\0\1\40\1\41\1\42\2\3\2\43\1\3"+
+    "\1\0\1\44\12\3\3\4\1\45\10\4\1\46\1\3"+
+    "\1\0\1\3\2\0\22\3\1\47\31\3\6\0\1\50"+
+    "\1\51\1\52\1\53\1\54\1\55\1\56\1\57\1\60"+
+    "\1\61\1\62\1\2\1\0\1\42\1\3\1\0\1\63"+
+    "\1\37\2\3\1\43\12\3\1\42\5\3\21\4\1\3"+
+    "\1\0\1\64\2\0\1\65\2\0\43\3\1\66\14\3"+
+    "\1\67\1\0\1\65\1\0\1\70\1\53\1\62\1\0"+
+    "\1\37\1\0\2\3\1\43\5\3\1\71\5\3\1\71"+
+    "\4\3\25\4\4\0\7\3\1\72\5\3\1\73\12\3"+
+    "\1\74\5\3\1\75\1\3\1\76\6\3\1\77\6\3"+
+    "\1\100\3\3\1\53\1\62\1\101\2\3\1\102\14\3"+
+    "\4\4\1\103\13\4\1\104\1\0\3\4\3\3\1\105"+
+    "\33\3\1\0\11\3\1\106\5\3\1\0\3\3\1\53"+
+    "\1\62\1\3\1\107\22\3\1\0\1\3\1\4\1\110"+
+    "\1\111\1\112\1\113\3\4\1\114\3\4\1\115\13\4"+
+    "\5\3\1\0\25\3\1\74\10\3\1\106\5\3\2\0"+
+    "\12\3\1\72\4\3\2\0\3\3\2\116\12\3\1\0"+
+    "\13\3\1\0\1\3\2\4\1\117\4\4\1\120\15\4"+
+    "\1\121\10\3\1\0\1\122\1\0\16\3\1\72\12\3"+
+    "\1\72\12\3\1\0\1\123\1\75\11\3\1\0\3\3"+
+    "\1\124\1\125\1\0\1\62\11\3\1\0\22\3\1\0"+
+    "\1\3\24\4\1\3\1\72\6\3\1\0\1\126\13\3"+
+    "\1\0\12\3\1\0\3\3\1\127\10\3\1\0\4\3"+
+    "\1\130\1\3\2\0\3\3\1\0\4\3\1\71\2\3"+
+    "\1\71\2\3\1\0\17\3\1\71\3\3\1\131\1\3"+
+    "\1\4\1\132\5\4\1\133\1\134\11\4\1\0\1\4"+
+    "\7\3\1\0\11\3\1\73\2\3\1\73\2\3\1\0"+
+    "\2\3\1\0\7\3\1\75\1\0\2\3\1\135\4\3"+
+    "\2\0\2\3\1\0\10\3\1\136\1\137\21\3\6\4"+
+    "\1\140\1\141\5\4\1\142\2\4\1\143\4\3\1\144"+
+    "\1\0\1\3\1\145\7\3\1\146\1\0\11\3\1\0"+
+    "\5\3\2\0\2\3\1\147\23\3\1\150\1\151\1\152"+
+    "\10\4\1\153\1\4\3\3\2\0\5\3\1\0\2\3"+
+    "\1\106\1\66\3\3\1\106\1\154\5\3\1\0\1\155"+
+    "\1\0\12\3\1\156\7\3\11\4\1\157\1\3\2\0"+
+    "\1\160\13\3\1\161\1\162\2\3\1\163\2\3\1\164"+
+    "\2\3\1\0\1\165\2\3\1\165\3\3\11\4\1\0"+
+    "\1\3\1\0\1\166\1\167\1\170\10\3\1\0\2\3"+
+    "\1\0\5\3\1\171\1\172\1\173\5\4\1\174\1\0"+
+    "\2\3\1\0\1\175\4\3\1\176\1\3\1\0\2\3"+
+    "\1\0\4\3\1\177\1\200\3\4\1\0\2\3\2\0"+
+    "\4\3\1\0\2\3\1\0\3\3\1\201\3\4\1\0"+
+    "\2\3\2\0\3\3\1\0\2\3\1\0\3\3\1\0"+
+    "\3\4\1\0\1\202\1\3\1\203\1\0\2\3\1\0"+
+    "\1\204\1\205\1\206\2\3\1\0\1\207\1\210\1\211"+
+    "\1\212\1\3\1\0\2\3\1\213\3\0\1\214\1\0"+
+    "\1\215\1\0\1\216\1\3\4\0\1\217\1\3\4\0"+
+    "\1\3\3\0\1\220\1\3\3\0\1\3\1\221\1\222"+
+    "\1\223\1\224";
 
   private static int [] zzUnpackAction() {
-    int [] result = new int[1209];
+    int [] result = new int[1263];
     int offset = 0;
     offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
     return result;
@@ -139,7 +144,7 @@
   }
 
 
-  /**
+  /** 
    * Translates a state to a row index in the transition table
    */
   private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
@@ -149,157 +154,163 @@
     "\0\u0270\0\u02be\0\u030c\0\u035a\0\u03a8\0\u03f6\0\u0444\0\u0492"+
     "\0\u04e0\0\u052e\0\u057c\0\u05ca\0\u0618\0\u0666\0\u06b4\0\u0702"+
     "\0\u0750\0\u079e\0\u07ec\0\u083a\0\u0888\0\u08d6\0\u0924\0\u0972"+
-    "\0\u09c0\0\u0a0e\0\u0a5c\0\u0aaa\0\u01d4\0\u01d4\0\u0af8\0\u0b46"+
-    "\0\u0b94\0\u0270\0\u0be2\0\u01d4\0\u01d4\0\u01d4\0\u01d4\0\u01d4"+
-    "\0\u01d4\0\u01d4\0\u01d4\0\u01d4\0\u01d4\0\u0c30\0\u0c7e\0\u01d4"+
-    "\0\u0ccc\0\u0d1a\0\u01d4\0\u01d4\0\u0d68\0\u0db6\0\u01d4\0\u01d4"+
-    "\0\u0e04\0\u0e52\0\u0ea0\0\u0eee\0\u0f3c\0\u0270\0\u0270\0\u0f8a"+
-    "\0\u04e0\0\u0270\0\u0270\0\u0270\0\u0fd8\0\u1026\0\u1074\0\u10c2"+
-    "\0\u1110\0\u115e\0\u01d4\0\u11ac\0\u11fa\0\u1248\0\u1296\0\u12e4"+
-    "\0\u1332\0\u1380\0\u13ce\0\u141c\0\u146a\0\u14b8\0\u1506\0\u1554"+
-    "\0\u01d4\0\u15a2\0\u15f0\0\u163e\0\u168c\0\u16da\0\u1728\0\u1776"+
-    "\0\u17c4\0\u052e\0\u1812\0\u1860\0\u18ae\0\u18fc\0\u194a\0\u1998"+
-    "\0\u19e6\0\u1a34\0\u1a82\0\u1ad0\0\u1b1e\0\u1b6c\0\u1bba\0\u1c08"+
-    "\0\u1c56\0\u1ca4\0\u1cf2\0\u1d40\0\u1d8e\0\u1ddc\0\u1e2a\0\u1e78"+
-    "\0\u1ec6\0\u1f14\0\u1f62\0\u1fb0\0\u1ffe\0\u204c\0\u209a\0\u20e8"+
-    "\0\u2136\0\u2184\0\u21d2\0\u2220\0\u226e\0\u22bc\0\u230a\0\u2358"+
-    "\0\u23a6\0\u23f4\0\u2442\0\u2490\0\u24de\0\u252c\0\u257a\0\u25c8"+
-    "\0\u2616\0\u2664\0\u26b2\0\u2700\0\u274e\0\u279c\0\u27ea\0\u2838"+
-    "\0\u2886\0\u01d4\0\u01d4\0\u01d4\0\u28d4\0\u01d4\0\u01d4\0\u01d4"+
-    "\0\u01d4\0\u01d4\0\u01d4\0\u2922\0\u2970\0\u29be\0\u2a0c\0\u2a5a"+
-    "\0\u2aa8\0\u01d4\0\u01d4\0\u2af6\0\u2b44\0\u2b92\0\u2be0\0\u2c2e"+
-    "\0\u2c7c\0\u2cca\0\u2d18\0\u2d66\0\u2db4\0\u2e02\0\u2e50\0\u2e9e"+
-    "\0\u2eec\0\u2f3a\0\u2f88\0\u2fd6\0\u3024\0\u3072\0\u30c0\0\u310e"+
-    "\0\u315c\0\u31aa\0\u31f8\0\u3246\0\u3294\0\u32e2\0\u3330\0\u337e"+
-    "\0\u33cc\0\u341a\0\u3468\0\u34b6\0\u3504\0\u3552\0\u35a0\0\u35ee"+
-    "\0\u363c\0\u1860\0\u368a\0\u36d8\0\u1860\0\u3726\0\u3774\0\u37c2"+
-    "\0\u3810\0\u385e\0\u38ac\0\u38fa\0\u3948\0\u3996\0\u39e4\0\u3a32"+
-    "\0\u3a80\0\u3ace\0\u3b1c\0\u3b6a\0\u3bb8\0\u3c06\0\u3c54\0\u3ca2"+
-    "\0\u3cf0\0\u3d3e\0\u3d8c\0\u3dda\0\u3e28\0\u3e76\0\u3ec4\0\u3f12"+
-    "\0\u3f60\0\u3fae\0\u3ffc\0\u404a\0\u4098\0\u40e6\0\u4134\0\u4182"+
-    "\0\u41d0\0\u421e\0\u0270\0\u426c\0\u42ba\0\u4308\0\u4356\0\u43a4"+
-    "\0\u43f2\0\u4440\0\u448e\0\u44dc\0\u452a\0\u4578\0\u45c6\0\u01d4"+
-    "\0\u0c30\0\u01d4\0\u0ccc\0\u01d4\0\u4614\0\u4662\0\u46b0\0\u46fe"+
-    "\0\u474c\0\u479a\0\u47e8\0\u4836\0\u4884\0\u48d2\0\u4920\0\u496e"+
-    "\0\u49bc\0\u4a0a\0\u4a58\0\u4aa6\0\u4af4\0\u4b42\0\u4b90\0\u4bde"+
-    "\0\u4c2c\0\u4c7a\0\u4cc8\0\u4d16\0\u4d64\0\u4db2\0\u4e00\0\u4e4e"+
-    "\0\u4e9c\0\u4eea\0\u4f38\0\u4f86\0\u4fd4\0\u5022\0\u5070\0\u50be"+
-    "\0\u510c\0\u515a\0\u51a8\0\u51f6\0\u5244\0\u5292\0\u52e0\0\u532e"+
-    "\0\u537c\0\u53ca\0\u5418\0\u5466\0\u54b4\0\u5502\0\u5550\0\u559e"+
-    "\0\u55ec\0\u563a\0\u5688\0\u56d6\0\u5724\0\u5772\0\u57c0\0\u580e"+
-    "\0\u585c\0\u58aa\0\u58f8\0\u5946\0\u5994\0\u59e2\0\u5a30\0\u5a7e"+
-    "\0\u5acc\0\u5b1a\0\u5b68\0\u5bb6\0\u0270\0\u5c04\0\u5c52\0\u5ca0"+
-    "\0\u5cee\0\u5d3c\0\u5d8a\0\u5dd8\0\u0270\0\u5e26\0\u5e74\0\u5ec2"+
-    "\0\u5f10\0\u5f5e\0\u5fac\0\u0270\0\u5ffa\0\u6048\0\u6096\0\u60e4"+
-    "\0\u6132\0\u6180\0\u61ce\0\u621c\0\u626a\0\u62b8\0\u6306\0\u6354"+
-    "\0\u0270\0\u63a2\0\u63f0\0\u643e\0\u648c\0\u64da\0\u6528\0\u6576"+
-    "\0\u65c4\0\u6612\0\u6660\0\u66ae\0\u66fc\0\u674a\0\u6798\0\u67e6"+
-    "\0\u6834\0\u6882\0\u68d0\0\u691e\0\u14b8\0\u696c\0\u69ba\0\u6a08"+
-    "\0\u6a56\0\u6aa4\0\u6af2\0\u6b40\0\u6b8e\0\u6bdc\0\u6c2a\0\u6c78"+
-    "\0\u14b8\0\u6cc6\0\u6d14\0\u6d62\0\u6db0\0\u6dfe\0\u6e4c\0\u6e9a"+
-    "\0\u6ee8\0\u6f36\0\u6f84\0\u6fd2\0\u7020\0\u706e\0\u70bc\0\u710a"+
-    "\0\u7158\0\u71a6\0\u71f4\0\u7242\0\u7290\0\u72de\0\u732c\0\u737a"+
-    "\0\u73c8\0\u7416\0\u7464\0\u74b2\0\u7500\0\u754e\0\u759c\0\u75ea"+
-    "\0\u7638\0\u7686\0\u76d4\0\u7722\0\u7770\0\u77be\0\u780c\0\u785a"+
-    "\0\u78a8\0\u78f6\0\u7944\0\u7992\0\u79e0\0\u7a2e\0\u7a7c\0\u7aca"+
-    "\0\u7b18\0\u7b66\0\u7bb4\0\u7c02\0\u7c50\0\u7c9e\0\u7cec\0\u7d3a"+
-    "\0\u7d88\0\u7dd6\0\u0270\0\u7e24\0\u7e72\0\u7ec0\0\u7f0e\0\u7f5c"+
-    "\0\u7faa\0\u7ff8\0\u8046\0\u8094\0\u80e2\0\u8130\0\u817e\0\u81cc"+
-    "\0\u821a\0\u8268\0\u82b6\0\u8304\0\u8352\0\u83a0\0\u83ee\0\u843c"+
-    "\0\u14b8\0\u14b8\0\u848a\0\u84d8\0\u8526\0\u8574\0\u85c2\0\u14b8"+
-    "\0\u8610\0\u865e\0\u86ac\0\u14b8\0\u86fa\0\u8748\0\u8796\0\u87e4"+
-    "\0\u8832\0\u8880\0\u88ce\0\u891c\0\u896a\0\u89b8\0\u8a06\0\u8a54"+
-    "\0\u8aa2\0\u8af0\0\u8b3e\0\u8b8c\0\u8bda\0\u8c28\0\u8c76\0\u8cc4"+
-    "\0\u8d12\0\u8d60\0\u8dae\0\u8dfc\0\u8e4a\0\u8e98\0\u8ee6\0\u8f34"+
-    "\0\u8f82\0\u8fd0\0\u901e\0\u906c\0\u90ba\0\u9108\0\u9156\0\u91a4"+
-    "\0\u91f2\0\u9240\0\u928e\0\u92dc\0\u932a\0\u9378\0\u93c6\0\u9414"+
-    "\0\u9462\0\u94b0\0\u94fe\0\u954c\0\u959a\0\u95e8\0\u9636\0\u9684"+
-    "\0\u96d2\0\u9720\0\u976e\0\u97bc\0\u980a\0\u9858\0\u98a6\0\u98f4"+
-    "\0\u9942\0\u9990\0\u99de\0\u9a2c\0\u9a7a\0\u9ac8\0\u9b16\0\u9b64"+
-    "\0\u9bb2\0\u9c00\0\u9c4e\0\u9c9c\0\u9cea\0\u01d4\0\u9d38\0\u9d86"+
-    "\0\u9dd4\0\u9e22\0\u9e70\0\u9ebe\0\u9f0c\0\u9f5a\0\u9fa8\0\u9ff6"+
-    "\0\ua044\0\ua092\0\ua0e0\0\ua12e\0\ua17c\0\ua1ca\0\ua218\0\ua266"+
-    "\0\ua2b4\0\ua302\0\ua350\0\ua39e\0\ua3ec\0\ua43a\0\ua488\0\ua4d6"+
-    "\0\ua524\0\u14b8\0\ua572\0\ua5c0\0\ua60e\0\ua65c\0\u14b8\0\ua6aa"+
-    "\0\ua6f8\0\ua746\0\ua794\0\ua7e2\0\ua830\0\ua87e\0\ua8cc\0\ua91a"+
-    "\0\ua968\0\ua9b6\0\uaa04\0\uaa52\0\u14b8\0\uaaa0\0\uaaee\0\uab3c"+
-    "\0\uab8a\0\uabd8\0\uac26\0\uac74\0\uacc2\0\u01d4\0\uad10\0\uad5e"+
-    "\0\uadac\0\uadfa\0\uae48\0\uae96\0\uaee4\0\uaf32\0\uaf80\0\uafce"+
-    "\0\ub01c\0\ub06a\0\ub0b8\0\ub106\0\ub154\0\ub1a2\0\ub1f0\0\ub23e"+
-    "\0\ub28c\0\ub2da\0\ub328\0\ub376\0\ub3c4\0\ub412\0\ub460\0\ub4ae"+
-    "\0\ub4fc\0\ub54a\0\ub598\0\ub5e6\0\ub634\0\ub682\0\ub6d0\0\ub71e"+
-    "\0\ub76c\0\ub7ba\0\ub808\0\u01d4\0\u0270\0\ub856\0\ub8a4\0\ub8f2"+
-    "\0\ub940\0\ub98e\0\ub9dc\0\uba2a\0\uba78\0\ubac6\0\ubb14\0\ubb62"+
-    "\0\ubbb0\0\ubbfe\0\u01d4\0\u01d4\0\ubc4c\0\u9d38\0\ubc9a\0\ubce8"+
-    "\0\ubd36\0\ubd84\0\ubdd2\0\ube20\0\ube6e\0\ubebc\0\ubf0a\0\ubf58"+
-    "\0\ubfa6\0\ubff4\0\uc042\0\uc090\0\uc0de\0\uc12c\0\uc17a\0\uc1c8"+
-    "\0\uc216\0\uc264\0\uc2b2\0\uc300\0\uc34e\0\uc39c\0\uc3ea\0\uc438"+
-    "\0\uc486\0\uc4d4\0\uc522\0\uc570\0\uc5be\0\uc60c\0\uc65a\0\uc6a8"+
-    "\0\uc6f6\0\uc744\0\uc792\0\uc7e0\0\uc82e\0\uc87c\0\uc8ca\0\uc918"+
-    "\0\uc966\0\uc9b4\0\uca02\0\uca50\0\uca9e\0\ucaec\0\ucb3a\0\ucb88"+
-    "\0\u0270\0\ucbd6\0\ucc24\0\ucc72\0\uccc0\0\ucd0e\0\ucd5c\0\u01d4"+
-    "\0\ucdaa\0\ucdf8\0\uce46\0\uce94\0\ucee2\0\ucf30\0\ucf7e\0\ucfcc"+
-    "\0\ud01a\0\ud068\0\ud0b6\0\ud104\0\ud152\0\ud1a0\0\ud1ee\0\ud23c"+
-    "\0\ud28a\0\ud2d8\0\ud326\0\ud374\0\ud3c2\0\ud410\0\ud45e\0\ud4ac"+
-    "\0\ud4fa\0\ud548\0\ud596\0\ud5e4\0\ud632\0\ud680\0\ud6ce\0\ud71c"+
-    "\0\ud76a\0\ud7b8\0\ud806\0\ud854\0\ud8a2\0\ud8f0\0\u0270\0\ud93e"+
+    "\0\u09c0\0\u0a0e\0\u0a5c\0\u0aaa\0\u01d4\0\u01d4\0\u0af8\0\u01d4"+
+    "\0\u0b46\0\u0b94\0\u0270\0\u0be2\0\u01d4\0\u01d4\0\u01d4\0\u01d4"+
+    "\0\u01d4\0\u01d4\0\u01d4\0\u01d4\0\u01d4\0\u01d4\0\u0c30\0\u0c7e"+
+    "\0\u01d4\0\u0ccc\0\u0d1a\0\u01d4\0\u01d4\0\u0d68\0\u0db6\0\u01d4"+
+    "\0\u01d4\0\u0e04\0\u0e52\0\u0ea0\0\u0eee\0\u0f3c\0\u0270\0\u0270"+
+    "\0\u0f8a\0\u04e0\0\u0270\0\u0270\0\u0270\0\u0fd8\0\u1026\0\u1074"+
+    "\0\u10c2\0\u1110\0\u115e\0\u01d4\0\u11ac\0\u11fa\0\u1248\0\u1296"+
+    "\0\u12e4\0\u1332\0\u1380\0\u13ce\0\u141c\0\u146a\0\u14b8\0\u1506"+
+    "\0\u1554\0\u01d4\0\u15a2\0\u15f0\0\u163e\0\u168c\0\u16da\0\u1728"+
+    "\0\u1776\0\u17c4\0\u052e\0\u1812\0\u1860\0\u18ae\0\u18fc\0\u194a"+
+    "\0\u1998\0\u19e6\0\u1a34\0\u1a82\0\u1ad0\0\u1b1e\0\u1b6c\0\u1bba"+
+    "\0\u1c08\0\u1c56\0\u1ca4\0\u1cf2\0\u1d40\0\u1d8e\0\u1ddc\0\u1e2a"+
+    "\0\u1e78\0\u1ec6\0\u1f14\0\u1f62\0\u1fb0\0\u1ffe\0\u204c\0\u209a"+
+    "\0\u20e8\0\u2136\0\u2184\0\u21d2\0\u2220\0\u226e\0\u22bc\0\u230a"+
+    "\0\u2358\0\u23a6\0\u23f4\0\u2442\0\u2490\0\u24de\0\u252c\0\u257a"+
+    "\0\u25c8\0\u2616\0\u2664\0\u26b2\0\u2700\0\u274e\0\u279c\0\u27ea"+
+    "\0\u2838\0\u2886\0\u01d4\0\u01d4\0\u01d4\0\u28d4\0\u01d4\0\u01d4"+
+    "\0\u01d4\0\u01d4\0\u01d4\0\u01d4\0\u2922\0\u2970\0\u29be\0\u2a0c"+
+    "\0\u2a5a\0\u2aa8\0\u01d4\0\u01d4\0\u2af6\0\u2b44\0\u2b92\0\u2be0"+
+    "\0\u2c2e\0\u2c7c\0\u2cca\0\u2d18\0\u2d66\0\u2db4\0\u2e02\0\u2e50"+
+    "\0\u2e9e\0\u2eec\0\u2f3a\0\u2f88\0\u2fd6\0\u3024\0\u3072\0\u30c0"+
+    "\0\u310e\0\u315c\0\u31aa\0\u31f8\0\u3246\0\u3294\0\u32e2\0\u3330"+
+    "\0\u337e\0\u33cc\0\u341a\0\u3468\0\u34b6\0\u3504\0\u3552\0\u35a0"+
+    "\0\u35ee\0\u363c\0\u1860\0\u368a\0\u36d8\0\u1860\0\u3726\0\u3774"+
+    "\0\u37c2\0\u3810\0\u385e\0\u38ac\0\u38fa\0\u3948\0\u3996\0\u39e4"+
+    "\0\u3a32\0\u3a80\0\u3ace\0\u3b1c\0\u3b6a\0\u3bb8\0\u3c06\0\u3c54"+
+    "\0\u3ca2\0\u3cf0\0\u3d3e\0\u3d8c\0\u3dda\0\u3e28\0\u3e76\0\u3ec4"+
+    "\0\u3f12\0\u3f60\0\u3fae\0\u3ffc\0\u404a\0\u4098\0\u40e6\0\u4134"+
+    "\0\u4182\0\u41d0\0\u421e\0\u0270\0\u426c\0\u42ba\0\u4308\0\u4356"+
+    "\0\u43a4\0\u43f2\0\u4440\0\u448e\0\u44dc\0\u452a\0\u4578\0\u45c6"+
+    "\0\u01d4\0\u0c30\0\u01d4\0\u0ccc\0\u01d4\0\u4614\0\u4662\0\u46b0"+
+    "\0\u46fe\0\u474c\0\u479a\0\u47e8\0\u4836\0\u4884\0\u48d2\0\u4920"+
+    "\0\u496e\0\u49bc\0\u4a0a\0\u4a58\0\u4aa6\0\u4af4\0\u4b42\0\u4b90"+
+    "\0\u4bde\0\u4c2c\0\u4c7a\0\u4cc8\0\u4d16\0\u4d64\0\u4db2\0\u4e00"+
+    "\0\u4e4e\0\u4e9c\0\u4eea\0\u4f38\0\u4f86\0\u4fd4\0\u5022\0\u5070"+
+    "\0\u50be\0\u510c\0\u515a\0\u51a8\0\u51f6\0\u5244\0\u5292\0\u52e0"+
+    "\0\u532e\0\u537c\0\u53ca\0\u5418\0\u5466\0\u54b4\0\u5502\0\u5550"+
+    "\0\u559e\0\u55ec\0\u563a\0\u5688\0\u56d6\0\u5724\0\u5772\0\u57c0"+
+    "\0\u580e\0\u585c\0\u58aa\0\u58f8\0\u5946\0\u5994\0\u59e2\0\u5a30"+
+    "\0\u5a7e\0\u5acc\0\u5b1a\0\u5b68\0\u5bb6\0\u5c04\0\u0270\0\u5c52"+
+    "\0\u5ca0\0\u5cee\0\u5d3c\0\u5d8a\0\u5dd8\0\u5e26\0\u0270\0\u5e74"+
+    "\0\u5ec2\0\u5f10\0\u5f5e\0\u5fac\0\u5ffa\0\u0270\0\u6048\0\u6096"+
+    "\0\u60e4\0\u6132\0\u6180\0\u61ce\0\u621c\0\u626a\0\u62b8\0\u6306"+
+    "\0\u6354\0\u63a2\0\u0270\0\u63f0\0\u643e\0\u648c\0\u64da\0\u6528"+
+    "\0\u6576\0\u65c4\0\u6612\0\u6660\0\u66ae\0\u66fc\0\u674a\0\u6798"+
+    "\0\u67e6\0\u6834\0\u6882\0\u68d0\0\u691e\0\u696c\0\u14b8\0\u69ba"+
+    "\0\u6a08\0\u6a56\0\u6aa4\0\u6af2\0\u6b40\0\u6b8e\0\u6bdc\0\u6c2a"+
+    "\0\u6c78\0\u6cc6\0\u14b8\0\u6d14\0\u6d62\0\u6db0\0\u6dfe\0\u6e4c"+
+    "\0\u6e9a\0\u6ee8\0\u6f36\0\u6f84\0\u6fd2\0\u7020\0\u706e\0\u70bc"+
+    "\0\u710a\0\u7158\0\u71a6\0\u71f4\0\u7242\0\u7290\0\u72de\0\u732c"+
+    "\0\u737a\0\u73c8\0\u7416\0\u7464\0\u74b2\0\u7500\0\u754e\0\u759c"+
+    "\0\u75ea\0\u7638\0\u7686\0\u76d4\0\u7722\0\u7770\0\u77be\0\u780c"+
+    "\0\u785a\0\u78a8\0\u78f6\0\u7944\0\u7992\0\u79e0\0\u7a2e\0\u7a7c"+
+    "\0\u7aca\0\u7b18\0\u7b66\0\u7bb4\0\u7c02\0\u7c50\0\u7c9e\0\u7cec"+
+    "\0\u7d3a\0\u7d88\0\u7dd6\0\u7e24\0\u7e72\0\u0270\0\u7ec0\0\u7f0e"+
+    "\0\u7f5c\0\u7faa\0\u7ff8\0\u8046\0\u8094\0\u80e2\0\u8130\0\u817e"+
+    "\0\u81cc\0\u821a\0\u8268\0\u82b6\0\u8304\0\u8352\0\u83a0\0\u83ee"+
+    "\0\u843c\0\u848a\0\u84d8\0\u14b8\0\u14b8\0\u8526\0\u8574\0\u85c2"+
+    "\0\u8610\0\u865e\0\u14b8\0\u86ac\0\u86fa\0\u8748\0\u14b8\0\u8796"+
+    "\0\u87e4\0\u8832\0\u8880\0\u88ce\0\u891c\0\u896a\0\u89b8\0\u8a06"+
+    "\0\u8a54\0\u8aa2\0\u8af0\0\u8b3e\0\u8b8c\0\u8bda\0\u8c28\0\u8c76"+
+    "\0\u8cc4\0\u8d12\0\u8d60\0\u8dae\0\u8dfc\0\u8e4a\0\u8e98\0\u8ee6"+
+    "\0\u8f34\0\u8f82\0\u8fd0\0\u901e\0\u906c\0\u90ba\0\u9108\0\u9156"+
+    "\0\u91a4\0\u91f2\0\u9240\0\u928e\0\u92dc\0\u932a\0\u9378\0\u93c6"+
+    "\0\u9414\0\u9462\0\u94b0\0\u94fe\0\u954c\0\u959a\0\u95e8\0\u9636"+
+    "\0\u9684\0\u96d2\0\u9720\0\u976e\0\u97bc\0\u980a\0\u9858\0\u98a6"+
+    "\0\u98f4\0\u9942\0\u9990\0\u99de\0\u9a2c\0\u9a7a\0\u9ac8\0\u9b16"+
+    "\0\u9b64\0\u9bb2\0\u9c00\0\u9c4e\0\u9c9c\0\u9cea\0\u9d38\0\u9d86"+
+    "\0\u9dd4\0\u9e22\0\u01d4\0\u9e70\0\u9ebe\0\u9f0c\0\u9f5a\0\u9fa8"+
+    "\0\u9ff6\0\ua044\0\ua092\0\ua0e0\0\ua12e\0\ua17c\0\ua1ca\0\ua218"+
+    "\0\ua266\0\ua2b4\0\ua302\0\ua350\0\ua39e\0\ua3ec\0\ua43a\0\ua488"+
+    "\0\ua4d6\0\ua524\0\ua572\0\ua5c0\0\ua60e\0\ua65c\0\u14b8\0\ua6aa"+
+    "\0\ua6f8\0\ua746\0\ua794\0\u14b8\0\ua7e2\0\ua830\0\ua87e\0\ua8cc"+
+    "\0\ua91a\0\ua968\0\ua9b6\0\uaa04\0\uaa52\0\uaaa0\0\uaaee\0\uab3c"+
+    "\0\uab8a\0\u14b8\0\uabd8\0\uac26\0\uac74\0\uacc2\0\uad10\0\uad5e"+
+    "\0\uadac\0\uadfa\0\uae48\0\u01d4\0\uae96\0\uaee4\0\uaf32\0\uaf80"+
+    "\0\uafce\0\ub01c\0\ub06a\0\ub0b8\0\ub106\0\ub154\0\ub1a2\0\ub1f0"+
+    "\0\ub23e\0\ub28c\0\ub2da\0\ub328\0\ub376\0\ub3c4\0\ub412\0\ub460"+
+    "\0\ub4ae\0\ub4fc\0\ub54a\0\ub598\0\ub5e6\0\ub634\0\ub682\0\ub6d0"+
+    "\0\ub71e\0\ub76c\0\ub7ba\0\ub808\0\ub856\0\ub8a4\0\ub8f2\0\ub940"+
+    "\0\ub98e\0\ub9dc\0\u01d4\0\u0270\0\uba2a\0\uba78\0\ubac6\0\ubb14"+
+    "\0\ubb62\0\ubbb0\0\ubbfe\0\ubc4c\0\ubc9a\0\ubce8\0\ubd36\0\ubd84"+
+    "\0\ubdd2\0\u01d4\0\u01d4\0\ube20\0\u9e70\0\ube6e\0\ubebc\0\ubf0a"+
+    "\0\ubf58\0\ubfa6\0\ubff4\0\uc042\0\uc090\0\uc0de\0\uc12c\0\uc17a"+
+    "\0\uc1c8\0\uc216\0\uc264\0\uc2b2\0\uc300\0\uc34e\0\uc39c\0\uc3ea"+
+    "\0\uc438\0\uc486\0\uc4d4\0\uc522\0\uc570\0\uc5be\0\uc60c\0\uc65a"+
+    "\0\uc6a8\0\uc6f6\0\uc744\0\uc792\0\uc7e0\0\uc82e\0\uc87c\0\uc8ca"+
+    "\0\uc918\0\uc966\0\uc9b4\0\uca02\0\uca50\0\uca9e\0\ucaec\0\ucb3a"+
+    "\0\ucb88\0\ucbd6\0\ucc24\0\ucc72\0\uccc0\0\ucd0e\0\ucd5c\0\ucdaa"+
+    "\0\u0270\0\ucdf8\0\uce46\0\uce94\0\ucee2\0\ucf30\0\ucf7e\0\ucfcc"+
+    "\0\u01d4\0\ud01a\0\ud068\0\ud0b6\0\ud104\0\ud152\0\ud1a0\0\ud1ee"+
+    "\0\ud23c\0\ud28a\0\ud2d8\0\ud326\0\ud374\0\ud3c2\0\ud410\0\ud45e"+
+    "\0\ud4ac\0\ud4fa\0\ud548\0\ud596\0\ud5e4\0\ud632\0\ud680\0\ud6ce"+
+    "\0\ud71c\0\ud76a\0\ud7b8\0\ud806\0\ud854\0\ud8a2\0\ud8f0\0\ud93e"+
     "\0\ud98c\0\ud9da\0\uda28\0\uda76\0\udac4\0\udb12\0\udb60\0\udbae"+
-    "\0\udbfc\0\udc4a\0\udc98\0\udce6\0\udd34\0\udd82\0\uddd0\0\ude1e"+
-    "\0\ude6c\0\udeba\0\udf08\0\udf56\0\udfa4\0\udff2\0\ue040\0\ue08e"+
-    "\0\ue0dc\0\ue12a\0\ue178\0\ue1c6\0\ue214\0\ue262\0\u0270\0\ue2b0"+
-    "\0\ue2fe\0\ue34c\0\uc4d4\0\ue39a\0\ue3e8\0\u14b8\0\ue436\0\ue484"+
-    "\0\ue4d2\0\ue520\0\ue56e\0\u14b8\0\u14b8\0\ue5bc\0\ue60a\0\ue658"+
-    "\0\ue6a6\0\ue6f4\0\ue742\0\ue790\0\ue7de\0\ue82c\0\ue87a\0\ue8c8"+
-    "\0\ue916\0\ue964\0\ue9b2\0\uea00\0\uea4e\0\uea9c\0\ueaea\0\ueb38"+
-    "\0\ueb86\0\uebd4\0\uec22\0\uec70\0\uecbe\0\ued0c\0\ued5a\0\ueda8"+
-    "\0\u0270\0\uedf6\0\uee44\0\uee92\0\ueee0\0\uef2e\0\uef7c\0\uefca"+
-    "\0\uf018\0\uf066\0\uf0b4\0\uf102\0\uf150\0\uf19e\0\uf1ec\0\uf23a"+
-    "\0\uf288\0\uf2d6\0\uf324\0\uf372\0\u0270\0\uf3c0\0\uf40e\0\uf45c"+
+    "\0\udbfc\0\u0270\0\udc4a\0\udc98\0\udce6\0\udd34\0\udd82\0\uddd0"+
+    "\0\ude1e\0\ude6c\0\udeba\0\udf08\0\udf56\0\udfa4\0\udff2\0\ue040"+
+    "\0\ue08e\0\ue0dc\0\ue12a\0\ue178\0\ue1c6\0\ue214\0\ue262\0\ue2b0"+
+    "\0\ue2fe\0\ue34c\0\ue39a\0\ue3e8\0\ue436\0\ue484\0\ue4d2\0\ue520"+
+    "\0\ue56e\0\ue5bc\0\ue60a\0\u0270\0\ue658\0\ue6a6\0\ue6f4\0\uc6f6"+
+    "\0\ue742\0\ue790\0\u14b8\0\ue7de\0\ue82c\0\ue87a\0\ue8c8\0\ue916"+
+    "\0\u14b8\0\u14b8\0\ue964\0\ue9b2\0\uea00\0\uea4e\0\uea9c\0\ueaea"+
+    "\0\ueb38\0\ueb86\0\uebd4\0\uec22\0\uec70\0\uecbe\0\ued0c\0\ued5a"+
+    "\0\ueda8\0\uedf6\0\uee44\0\uee92\0\ueee0\0\uef2e\0\uef7c\0\uefca"+
+    "\0\uf018\0\uf066\0\uf0b4\0\uf102\0\uf150\0\uf19e\0\u0270\0\uf1ec"+
+    "\0\uf23a\0\uf288\0\uf2d6\0\uf324\0\uf372\0\uf3c0\0\uf40e\0\uf45c"+
     "\0\uf4aa\0\uf4f8\0\uf546\0\uf594\0\uf5e2\0\uf630\0\uf67e\0\uf6cc"+
-    "\0\uf71a\0\uf768\0\uf7b6\0\uf804\0\uf852\0\uf8a0\0\u0270\0\ude6c"+
-    "\0\uf8ee\0\uf93c\0\uf98a\0\uf9d8\0\ufa26\0\ufa74\0\ufac2\0\ufb10"+
-    "\0\ufb5e\0\ufbac\0\ufbfa\0\ufc48\0\ufc96\0\ufce4\0\ufd32\0\ufd80"+
-    "\0\ufdce\0\ufe1c\0\ufe6a\0\ufeb8\0\u14b8\0\u14b8\0\uff06\0\uff54"+
-    "\0\uffa2\0\ufff0\1\76\0\u14b8\1\214\1\332\0\u14b8\1\u0128"+
-    "\1\u0176\1\u01c4\1\u0212\1\u0260\1\u02ae\0\u0270\1\u02fc\1\u034a"+
-    "\1\u0398\1\u03e6\1\u0434\1\u0482\1\u04d0\1\u051e\1\u056c\1\u05ba"+
-    "\1\u0608\1\u0656\1\u06a4\1\u06f2\1\u0740\1\u078e\1\u07dc\1\u082a"+
-    "\1\u0878\1\u08c6\1\u0914\1\u0962\1\u09b0\1\u09fe\1\u0a4c\1\u0a9a"+
-    "\1\u0ae8\0\uf630\1\u0b36\1\u0b84\1\u0bd2\1\u0c20\1\u0c6e\1\u0cbc"+
-    "\1\u0d0a\1\u0d58\1\u0da6\1\u0df4\1\u0e42\1\u0e90\1\u0ede\1\u0f2c"+
-    "\1\u0f7a\1\u0fc8\0\u14b8\0\u14b8\0\u14b8\1\u1016\1\u1064\1\u10b2"+
-    "\1\u1100\1\u114e\1\u119c\1\u11ea\1\u1238\0\u14b8\1\u1286\1\u12d4"+
-    "\1\u1322\1\u1370\1\u13be\1\u140c\1\u145a\1\u14a8\1\u14f6\1\u1544"+
-    "\1\u1592\1\u15e0\1\u162e\0\u0270\1\u167c\1\u16ca\1\u1718\1\u1766"+
-    "\1\u17b4\0\u01d4\1\u1802\1\u1850\1\u189e\1\u18ec\1\u193a\1\u1988"+
-    "\0\u01d4\1\u19d6\1\u1a24\1\u1a72\1\u1ac0\1\u1b0e\1\u1b5c\1\u1baa"+
-    "\1\u1bf8\1\u1c46\1\u1c94\1\u1ce2\1\u1d30\1\u1d7e\1\u1dcc\1\u1e1a"+
-    "\1\u1e68\1\u1eb6\1\u1f04\1\u1f52\1\u1fa0\1\u1fee\1\u203c\1\u208a"+
-    "\1\u20d8\1\u2126\1\u2174\1\u21c2\1\u2210\0\u01d4\1\u225e\1\u22ac"+
-    "\1\u22fa\1\u2348\1\u2396\1\u23e4\1\u2432\1\u2480\1\u24ce\1\u251c"+
-    "\1\u256a\0\u01d4\0\u01d4\1\u25b8\1\u2606\0\u0270\1\u2654\1\u26a2"+
-    "\1\u26f0\1\u273e\1\u278c\1\u27da\1\u2828\1\u2876\1\u28c4\1\u2912"+
-    "\1\u2960\1\u29ae\1\u29fc\1\u2a4a\1\u2a98\1\u2ae6\1\u2b34\1\u2b82"+
-    "\1\u2bd0\1\u2c1e\1\u2c6c\0\u01d4\0\u0270\0\u0270\1\u2cba\1\u2d08"+
-    "\1\u2d56\1\u2da4\1\u2df2\1\u2e40\1\u2e8e\1\u2edc\1\u2f2a\1\u2f78"+
-    "\1\u2fc6\1\u3014\1\u3062\1\u30b0\0\u14b8\0\u14b8\0\u14b8\1\u30fe"+
-    "\1\u314c\1\u319a\1\u31e8\1\u3236\0\u14b8\1\u3284\1\u32d2\1\u3320"+
-    "\1\u336e\1\u33bc\1\u340a\1\u3458\1\u34a6\1\u34f4\1\u3542\1\u3590"+
-    "\1\u35de\1\u362c\1\u367a\0\u14b8\0\u14b8\1\u36c8\1\u3716\1\u3764"+
-    "\1\u37b2\1\u3800\1\u384e\1\u389c\1\u38ea\1\u3938\1\u3986\1\u39d4"+
-    "\1\u3a22\1\u3a70\1\u3abe\1\u3b0c\1\u3b5a\1\u3ba8\1\u3bf6\1\u3c44"+
+    "\0\uf71a\0\uf768\0\uf7b6\0\u0270\0\uf804\0\uf852\0\uf8a0\0\uf8ee"+
+    "\0\uf93c\0\uf98a\0\uf9d8\0\ufa26\0\ufa74\0\ufac2\0\ufb10\0\ufb5e"+
+    "\0\ufbac\0\ufbfa\0\ufc48\0\ufc96\0\ufce4\0\u0270\0\ue178\0\ufd32"+
+    "\0\ufd80\0\ufdce\0\ufe1c\0\ufe6a\0\ufeb8\0\uff06\0\uff54\0\uffa2"+
+    "\0\ufff0\1\76\1\214\1\332\1\u0128\1\u0176\1\u01c4\1\u0212"+
+    "\1\u0260\1\u02ae\1\u02fc\1\u034a\1\u0398\1\u03e6\0\u14b8\0\u14b8"+
+    "\1\u0434\1\u0482\1\u04d0\1\u051e\1\u056c\0\u14b8\1\u05ba\1\u0608"+
+    "\0\u14b8\1\u0656\1\u06a4\1\u06f2\1\u0740\1\u078e\1\u07dc\1\u082a"+
+    "\0\u0270\1\u0878\1\u08c6\1\u0914\1\u0962\1\u09b0\1\u09fe\1\u0a4c"+
+    "\0\u0270\1\u0a9a\1\u0ae8\1\u0b36\1\u0b84\1\u0bd2\1\u0c20\1\u0c6e"+
+    "\1\u0cbc\1\u0d0a\1\u0d58\1\u0da6\1\u0df4\1\u0e42\1\u0e90\1\u0ede"+
+    "\1\u0f2c\1\u0f7a\1\u0fc8\1\u1016\1\u1064\0\ufa74\1\u10b2\1\u1100"+
+    "\1\u114e\1\u119c\1\u11ea\1\u1238\1\u1286\1\u12d4\1\u1322\1\u1370"+
+    "\1\u13be\1\u140c\1\u145a\1\u14a8\1\u14f6\1\u1544\1\u1592\1\u15e0"+
+    "\1\u162e\0\u14b8\0\u14b8\0\u14b8\1\u167c\1\u16ca\1\u1718\1\u1766"+
+    "\1\u17b4\1\u1802\1\u1850\1\u189e\0\u14b8\1\u18ec\1\u193a\1\u1988"+
+    "\1\u19d6\1\u1a24\1\u1a72\1\u1ac0\1\u1b0e\1\u1b5c\1\u1baa\1\u1bf8"+
+    "\1\u1c46\1\u1c94\1\u1ce2\0\u0270\1\u1d30\1\u1d7e\1\u1dcc\1\u1e1a"+
+    "\1\u1e68\0\u01d4\1\u1eb6\1\u1f04\1\u1f52\1\u1fa0\1\u1fee\1\u203c"+
+    "\0\u01d4\1\u208a\1\u20d8\1\u2126\1\u2174\1\u21c2\1\u2210\1\u225e"+
+    "\1\u22ac\1\u22fa\1\u2348\1\u2396\1\u23e4\1\u2432\1\u2480\1\u24ce"+
+    "\1\u251c\1\u256a\1\u25b8\1\u2606\1\u2654\1\u26a2\1\u26f0\1\u273e"+
+    "\1\u278c\1\u27da\1\u2828\1\u2876\1\u28c4\1\u2912\1\u2960\1\u29ae"+
+    "\1\u29fc\0\u01d4\1\u2a4a\1\u2a98\1\u2ae6\1\u2b34\1\u2b82\1\u2bd0"+
+    "\1\u2c1e\1\u2c6c\1\u2cba\1\u2d08\1\u2d56\0\u01d4\0\u01d4\1\u2da4"+
+    "\1\u2df2\0\u0270\1\u2e40\1\u2e8e\1\u2edc\1\u2f2a\1\u2f78\1\u2fc6"+
+    "\1\u3014\1\u3062\1\u30b0\1\u30fe\1\u314c\1\u319a\1\u31e8\1\u3236"+
+    "\1\u3284\1\u32d2\1\u3320\1\u336e\1\u33bc\1\u340a\1\u3458\1\u34a6"+
+    "\1\u34f4\1\u3542\1\u3590\0\u01d4\0\u0270\0\u0270\1\u35de\1\u362c"+
+    "\1\u367a\1\u36c8\1\u3716\1\u3764\1\u37b2\1\u3800\1\u384e\1\u389c"+
+    "\1\u38ea\1\u3938\1\u3986\1\u39d4\1\u3a22\1\u3a70\1\u3abe\0\u14b8"+
+    "\0\u14b8\0\u14b8\1\u3b0c\1\u3b5a\1\u3ba8\1\u3bf6\1\u3c44\0\u14b8"+
     "\1\u3c92\1\u3ce0\1\u3d2e\1\u3d7c\1\u3dca\1\u3e18\1\u3e66\1\u3eb4"+
-    "\1\u3f02\1\u3f50\1\u3f9e\1\u3fec\1\u403a\1\u4088\1\u40d6\1\u4124"+
-    "\0\u01d4\1\u4172\1\u41c0\1\u420e\1\u425c\0\u01d4\1\u42aa\1\u42f8"+
-    "\1\u4346\1\u4394\0\u14b8\0\u14b8\0\u14b8\0\u01d4\1\u43e2\1\u4430"+
-    "\1\u447e\1\u44cc\1\u451a\1\u4568\0\u0270\1\u45b6\1\u4604\0\u0270"+
-    "\1\u4652\1\u46a0\1\u46ee\1\u473c\1\u478a\0\u01d4\1\u47d8\1\u4826"+
-    "\1\u4874\1\u48c2\1\u4910\1\u495e\1\u49ac\1\u49fa\1\u4a48\0\u01d4"+
-    "\1\u4a96\1\u4ae4\1\u4b32\1\u4b80\1\u4bce\0\u01d4\0\u01d4\0\u01d4"+
-    "\0\u0270";
+    "\1\u3f02\0\u0270\1\u3f50\1\u3f9e\1\u3fec\1\u403a\1\u4088\1\u40d6"+
+    "\1\u4124\1\u4172\1\u41c0\0\u14b8\0\u14b8\1\u420e\1\u425c\1\u42aa"+
+    "\1\u42f8\1\u4346\1\u4394\1\u43e2\1\u4430\1\u447e\1\u44cc\1\u451a"+
+    "\1\u4568\1\u45b6\1\u4604\1\u4652\1\u46a0\1\u46ee\1\u473c\1\u478a"+
+    "\1\u47d8\1\u4826\1\u4874\1\u48c2\1\u4910\1\u495e\1\u49ac\1\u49fa"+
+    "\1\u4a48\1\u4a96\1\u4ae4\1\u4b32\1\u4b80\1\u4bce\1\u4c1c\1\u4c6a"+
+    "\1\u4cb8\1\u4d06\1\u4d54\1\u4da2\1\u4df0\1\u4e3e\1\u4e8c\1\u4eda"+
+    "\0\u0270\1\u4f28\0\u01d4\1\u4f76\1\u4fc4\1\u5012\1\u5060\1\u50ae"+
+    "\0\u01d4\1\u50fc\1\u514a\1\u5198\1\u51e6\0\u14b8\0\u14b8\0\u14b8"+
+    "\0\u01d4\1\u5234\1\u5282\1\u52d0\1\u531e\0\u01d4\1\u536c\1\u53ba"+
+    "\1\u5408\0\u0270\1\u5456\0\u0270\1\u54a4\0\u0270\1\u54f2\1\u5540"+
+    "\1\u558e\1\u55dc\1\u562a\0\u01d4\1\u5678\1\u56c6\1\u5714\1\u5762"+
+    "\1\u57b0\1\u57fe\1\u584c\1\u589a\1\u58e8\0\u01d4\1\u5936\1\u5984"+
+    "\1\u59d2\1\u5a20\1\u5a6e\0\u01d4\0\u01d4\0\u01d4\0\u0270";
 
   private static int [] zzUnpackRowMap() {
-    int [] result = new int[1209];
+    int [] result = new int[1263];
     int offset = 0;
     offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
     return result;
@@ -316,7 +327,7 @@
     return j;
   }
 
-  /**
+  /** 
    * The transition table of the DFA
    */
   private static final int [] ZZ_TRANS = zzUnpackTrans();
@@ -328,2484 +339,2594 @@
     "\1\30\1\31\1\32\1\33\1\34\1\35\1\36\1\37"+
     "\1\40\1\41\1\42\1\43\1\11\1\44\3\11\1\7"+
     "\1\11\2\22\1\45\1\46\1\43\1\7\1\47\1\11"+
-    "\1\7\1\50\1\51\1\13\1\11\3\13\1\11\2\13"+
-    "\1\52\1\53\1\7\1\54\1\55\1\56\1\57\1\60"+
-    "\1\61\1\62\1\43\23\63\4\64\31\63\2\64\57\63"+
-    "\4\65\1\66\2\63\1\67\25\63\2\65\57\63\4\70"+
-    "\1\71\30\63\2\70\34\63\62\72\1\73\1\72\1\74"+
-    "\1\75\30\72\63\76\1\77\1\100\1\101\30\76\117\0"+
-    "\1\102\1\103\1\11\1\104\1\102\1\105\4\11\1\106"+
-    "\1\107\2\11\1\110\1\111\1\0\3\11\1\106\1\11"+
-    "\1\112\3\0\1\11\1\112\1\11\1\113\2\11\1\105"+
-    "\3\11\1\107\1\11\1\114\1\0\5\11\1\0\1\11"+
-    "\1\113\1\114\4\0\2\11\1\0\1\103\1\0\1\102"+
-    "\1\11\3\102\1\11\1\104\1\102\1\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\5\11"+
+    "\1\50\1\51\1\52\1\13\1\11\3\13\1\11\2\13"+
+    "\1\53\1\54\1\7\1\55\1\56\1\57\1\60\1\61"+
+    "\1\62\1\63\1\43\23\64\4\65\31\64\2\65\57\64"+
+    "\4\66\1\67\2\64\1\70\25\64\2\66\57\64\4\71"+
+    "\1\72\30\64\2\71\34\64\62\73\1\74\1\73\1\75"+
+    "\1\76\30\73\63\77\1\100\1\101\1\102\30\77\117\0"+
+    "\1\103\1\104\1\11\1\105\1\103\1\106\4\11\1\107"+
+    "\1\110\2\11\1\111\1\112\1\0\3\11\1\107\1\11"+
+    "\1\113\3\0\1\11\1\113\1\11\1\114\2\11\1\106"+
+    "\3\11\1\110\1\11\1\115\1\0\5\11\1\0\1\11"+
+    "\1\114\1\115\4\0\2\11\1\0\1\104\1\0\1\103"+
+    "\1\11\3\103\1\11\1\105\1\103\1\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\5\11"+
     "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\4\11"+
-    "\1\115\2\11\1\116\5\11\1\0\5\11\1\0\3\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\4\11"+
+    "\1\116\2\11\1\117\5\11\1\0\5\11\1\0\3\11"+
     "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\1\13"+
-    "\2\11\2\13\1\105\4\11\1\106\1\107\2\11\1\110"+
-    "\1\111\1\0\3\11\1\106\1\11\1\112\3\0\1\11"+
-    "\1\112\1\11\1\113\2\11\1\105\3\11\1\107\1\11"+
-    "\1\114\1\0\5\11\1\0\1\11\1\113\1\114\4\0"+
+    "\2\11\2\13\1\106\4\11\1\107\1\110\2\11\1\111"+
+    "\1\112\1\0\3\11\1\107\1\11\1\113\3\0\1\11"+
+    "\1\113\1\11\1\114\2\11\1\106\3\11\1\110\1\11"+
+    "\1\115\1\0\5\11\1\0\1\11\1\114\1\115\4\0"+
     "\2\11\1\0\1\11\1\0\1\13\1\11\3\13\1\11"+
-    "\2\13\1\11\13\0\1\117\2\11\2\120\3\11\1\121"+
-    "\5\11\1\122\1\111\1\0\2\11\1\121\3\11\3\0"+
+    "\2\13\1\11\13\0\1\120\2\11\2\121\3\11\1\122"+
+    "\5\11\1\123\1\112\1\0\2\11\1\122\3\11\3\0"+
     "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\1\120\1\11\3\120\1\11\2\120\1\11"+
-    "\1\0\1\123\11\0\11\11\1\124\1\125\3\11\1\0"+
-    "\1\111\1\0\6\11\3\0\1\11\1\126\3\11\1\127"+
-    "\3\11\1\130\3\11\1\0\1\11\1\131\3\11\1\0"+
+    "\1\11\1\0\1\121\1\11\3\121\1\11\2\121\1\11"+
+    "\1\0\1\124\11\0\11\11\1\125\1\126\3\11\1\0"+
+    "\1\112\1\0\6\11\3\0\1\11\1\127\3\11\1\130"+
+    "\3\11\1\131\3\11\1\0\1\11\1\132\3\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\15\11\1\132\1\0\1\111\1\0\6\11\3\0\2\11"+
-    "\1\132\12\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\10\11\1\133\5\11"+
-    "\1\0\1\111\1\0\6\11\3\0\1\11\1\134\1\135"+
+    "\15\11\1\133\1\0\1\112\1\0\6\11\3\0\2\11"+
+    "\1\133\12\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\10\11\1\134\5\11"+
+    "\1\0\1\112\1\0\6\11\3\0\1\11\1\135\1\136"+
     "\12\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\1\110\2\136\2\110\3\136"+
-    "\1\137\1\136\1\140\3\136\1\141\3\0\5\136\2\0"+
-    "\1\136\1\142\1\143\1\144\1\145\1\136\1\146\1\147"+
-    "\1\150\1\151\4\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\1\110\1\136\3\110\1\136\2\110\1\136"+
-    "\33\0\1\11\75\0\16\11\1\0\1\111\1\0\1\11"+
-    "\4\152\1\153\2\0\1\154\15\11\1\0\5\11\1\0"+
-    "\1\11\2\152\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\11\11\1\124\4\11\1\0\1\111\1\0\1\11"+
-    "\4\152\1\153\2\0\1\154\11\11\1\124\3\11\1\0"+
-    "\5\11\1\0\1\11\2\152\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\155\1\0\1\156\1\0\6\155"+
-    "\3\0\15\155\1\0\5\155\1\0\3\155\4\0\2\155"+
-    "\1\0\1\155\1\0\11\155\35\0\4\154\1\157\2\0"+
-    "\1\25\25\0\2\154\35\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\1\11\1\160\6\11\1\161\2\11\1\162"+
-    "\1\11\1\0\1\163\4\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\13\11\1\164\1\11\1\0\5\11"+
+    "\1\11\1\0\11\11\13\0\1\111\2\137\2\111\3\137"+
+    "\1\140\1\137\1\141\3\137\1\142\3\0\5\137\2\0"+
+    "\1\137\1\143\1\144\1\145\1\146\1\137\1\147\1\150"+
+    "\1\151\1\152\4\137\1\0\11\137\3\0\3\137\1\0"+
+    "\1\137\1\0\1\111\1\137\3\111\1\137\2\111\1\137"+
+    "\33\0\1\11\75\0\16\11\1\0\1\112\1\0\1\11"+
+    "\4\153\1\154\2\0\1\155\15\11\1\0\5\11\1\0"+
+    "\1\11\2\153\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\11\11\1\125\4\11\1\0\1\112\1\0\1\11"+
+    "\4\153\1\154\2\0\1\155\11\11\1\125\3\11\1\0"+
+    "\5\11\1\0\1\11\2\153\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\156\1\0\1\157\1\0\6\156"+
+    "\3\0\15\156\1\0\5\156\1\0\3\156\4\0\2\156"+
+    "\1\0\1\156\1\0\11\156\35\0\4\155\1\160\2\0"+
+    "\1\25\25\0\2\155\35\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\1\11\1\161\6\11\1\162\2\11\1\163"+
+    "\1\11\1\0\1\164\4\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\13\11\1\165\1\11\1\0\5\11"+
     "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\2\11\1\165\13\11\1\0\1\111\1\0\6\11"+
-    "\3\0\5\11\1\166\1\11\1\167\1\11\1\170\2\11"+
-    "\1\171\1\0\1\11\1\172\3\11\1\0\3\11\4\0"+
+    "\13\0\2\11\1\166\13\11\1\0\1\112\1\0\6\11"+
+    "\3\0\5\11\1\167\1\11\1\170\1\11\1\171\2\11"+
+    "\1\172\1\0\1\11\1\173\3\11\1\0\3\11\4\0"+
     "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\4\11\1\173\1\174\4\11"+
-    "\1\175\2\11\1\0\1\176\1\177\1\200\2\11\1\0"+
+    "\1\112\1\0\6\11\3\0\4\11\1\174\1\175\4\11"+
+    "\1\176\2\11\1\0\1\177\1\200\1\201\2\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\3\11\1\201"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\3\11\1\202"+
     "\11\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\1\202\2\11\2\202\11\11"+
-    "\1\0\1\111\1\0\6\11\3\0\2\11\1\203\1\11"+
-    "\1\204\2\11\1\205\5\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\1\202\1\11\3\202"+
-    "\1\11\2\202\1\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\11\11\1\206\3\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\207\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\3\11\1\210"+
-    "\1\211\1\11\1\212\6\11\1\0\5\11\1\0\3\11"+
+    "\1\11\1\0\11\11\13\0\1\203\2\11\2\203\11\11"+
+    "\1\0\1\112\1\0\6\11\3\0\2\11\1\204\1\11"+
+    "\1\205\2\11\1\206\5\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\1\203\1\11\3\203"+
+    "\1\11\2\203\1\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\11\11\1\207\3\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\210\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\3\11\1\211"+
+    "\1\212\1\11\1\213\6\11\1\0\5\11\1\0\3\11"+
     "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\4\11\1\213\6\11"+
-    "\1\214\1\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\15\11\1\132\1\0"+
-    "\1\111\1\0\6\11\3\0\2\11\1\215\1\11\1\216"+
-    "\1\11\1\217\4\11\1\220\1\11\1\0\5\11\1\0"+
+    "\1\0\1\112\1\0\6\11\3\0\4\11\1\214\6\11"+
+    "\1\215\1\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\15\11\1\133\1\0"+
+    "\1\112\1\0\6\11\3\0\2\11\1\216\1\11\1\217"+
+    "\1\11\1\220\4\11\1\221\1\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\7\11\1\221"+
-    "\5\11\1\0\1\222\4\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\7\11\1\223\5\11\1\0\5\11"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\7\11\1\222"+
+    "\5\11\1\0\1\223\4\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\7\11\1\224\5\11\1\0\5\11"+
     "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\10\11\1\224\5\11\1\0\1\111\1\0\6\11"+
-    "\3\0\6\11\1\225\4\11\1\226\1\11\1\0\5\11"+
+    "\13\0\10\11\1\225\5\11\1\0\1\112\1\0\6\11"+
+    "\3\0\6\11\1\226\4\11\1\227\1\11\1\0\5\11"+
     "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
     "\62\0\1\43\13\0\1\43\30\0\1\43\1\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\6\11\1\227\4\11"+
-    "\1\230\1\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\1\202\2\11\2\202"+
-    "\11\11\1\0\1\111\1\0\6\11\3\0\2\11\1\231"+
-    "\7\11\1\232\1\233\1\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\1\202\1\11\3\202"+
-    "\1\11\2\202\1\11\13\0\16\11\1\0\1\111\1\0"+
+    "\1\0\1\112\1\0\6\11\3\0\6\11\1\230\4\11"+
+    "\1\231\1\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\1\203\2\11\2\203"+
+    "\11\11\1\0\1\112\1\0\6\11\3\0\2\11\1\232"+
+    "\7\11\1\233\1\234\1\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\1\203\1\11\3\203"+
+    "\1\11\2\203\1\11\13\0\16\11\1\0\1\112\1\0"+
     "\6\11\3\0\13\11\1\41\1\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\12\0"+
-    "\64\51\1\0\31\51\1\0\16\234\1\0\1\235\1\0"+
-    "\6\234\3\0\15\234\1\0\5\234\1\0\3\234\4\0"+
-    "\2\234\1\0\1\234\1\0\11\234\13\0\16\236\1\0"+
-    "\1\237\1\0\6\236\3\0\15\236\1\0\5\236\1\0"+
-    "\3\236\4\0\2\236\1\0\1\236\1\0\11\236\44\0"+
-    "\1\67\64\0\16\240\1\0\1\241\1\0\6\240\3\0"+
-    "\15\240\1\0\5\240\1\0\3\240\4\0\2\240\1\0"+
-    "\1\240\1\0\11\240\12\0\62\72\1\0\1\72\2\0"+
-    "\30\72\3\242\1\243\7\242\1\244\23\242\1\245\2\242"+
-    "\1\246\1\242\1\247\1\250\14\242\1\251\1\252\1\242"+
-    "\1\253\30\242\63\76\3\0\30\76\3\242\1\243\7\242"+
-    "\1\244\23\242\1\254\2\242\1\246\1\242\1\247\1\250"+
-    "\14\242\1\251\1\252\1\242\1\253\30\242\1\0\1\102"+
-    "\2\11\1\104\1\102\1\105\4\11\1\106\1\107\2\11"+
-    "\1\110\1\111\1\0\3\11\1\106\1\11\1\112\3\0"+
-    "\1\11\1\112\1\11\1\113\2\11\1\105\3\11\1\107"+
-    "\1\11\1\114\1\0\5\11\1\0\1\11\1\113\1\114"+
-    "\4\0\2\11\1\0\1\11\1\0\1\102\1\11\3\102"+
-    "\1\11\1\104\1\102\1\11\13\0\1\255\1\11\4\255"+
-    "\4\11\1\255\2\11\1\255\1\256\1\111\1\0\1\11"+
-    "\1\255\1\11\1\255\2\11\3\0\1\255\1\11\1\255"+
-    "\3\11\1\255\5\11\1\255\1\0\5\11\1\0\2\11"+
-    "\1\255\4\0\2\11\1\0\1\11\1\0\1\255\1\11"+
-    "\3\255\1\11\2\255\1\11\13\0\1\104\2\11\2\104"+
-    "\1\105\4\11\1\106\3\11\1\110\1\111\1\0\3\11"+
-    "\1\106\2\11\3\0\6\11\1\105\5\11\1\114\1\0"+
-    "\5\11\1\0\2\11\1\114\4\0\2\11\1\0\1\11"+
-    "\1\0\1\104\1\11\3\104\1\11\2\104\1\11\13\0"+
-    "\1\257\2\11\2\257\1\11\1\260\7\11\1\0\1\111"+
+    "\64\52\1\0\31\52\1\0\16\235\1\0\1\236\1\0"+
+    "\6\235\3\0\15\235\1\0\5\235\1\0\3\235\4\0"+
+    "\2\235\1\0\1\235\1\0\11\235\13\0\16\237\1\0"+
+    "\1\240\1\0\6\237\3\0\15\237\1\0\5\237\1\0"+
+    "\3\237\4\0\2\237\1\0\1\237\1\0\11\237\44\0"+
+    "\1\70\64\0\16\241\1\0\1\242\1\0\6\241\3\0"+
+    "\15\241\1\0\5\241\1\0\3\241\4\0\2\241\1\0"+
+    "\1\241\1\0\11\241\12\0\62\73\1\0\1\73\2\0"+
+    "\30\73\3\243\1\244\7\243\1\245\23\243\1\246\2\243"+
+    "\1\247\1\243\1\250\1\251\14\243\1\252\1\253\1\243"+
+    "\1\254\30\243\63\77\3\0\30\77\3\243\1\244\7\243"+
+    "\1\245\23\243\1\255\2\243\1\247\1\243\1\250\1\251"+
+    "\14\243\1\252\1\253\1\243\1\254\30\243\1\0\1\103"+
+    "\2\11\1\105\1\103\1\106\4\11\1\107\1\110\2\11"+
+    "\1\111\1\112\1\0\3\11\1\107\1\11\1\113\3\0"+
+    "\1\11\1\113\1\11\1\114\2\11\1\106\3\11\1\110"+
+    "\1\11\1\115\1\0\5\11\1\0\1\11\1\114\1\115"+
+    "\4\0\2\11\1\0\1\11\1\0\1\103\1\11\3\103"+
+    "\1\11\1\105\1\103\1\11\13\0\1\256\1\11\4\256"+
+    "\4\11\1\256\2\11\1\256\1\257\1\112\1\0\1\11"+
+    "\1\256\1\11\1\256\2\11\3\0\1\256\1\11\1\256"+
+    "\3\11\1\256\5\11\1\256\1\0\5\11\1\0\2\11"+
+    "\1\256\4\0\2\11\1\0\1\11\1\0\1\256\1\11"+
+    "\3\256\1\11\2\256\1\11\13\0\1\105\2\11\2\105"+
+    "\1\106\4\11\1\107\3\11\1\111\1\112\1\0\3\11"+
+    "\1\107\2\11\3\0\6\11\1\106\5\11\1\115\1\0"+
+    "\5\11\1\0\2\11\1\115\4\0\2\11\1\0\1\11"+
+    "\1\0\1\105\1\11\3\105\1\11\2\105\1\11\13\0"+
+    "\1\260\2\11\2\260\1\11\1\261\7\11\1\0\1\112"+
     "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\1\257\1\11\3\257"+
-    "\1\11\2\257\1\11\13\0\1\110\2\0\2\110\1\261"+
-    "\4\0\1\262\11\0\1\262\13\0\1\261\5\0\1\263"+
-    "\11\0\1\263\11\0\1\110\1\0\3\110\1\0\2\110"+
-    "\14\0\10\11\1\264\5\11\1\0\1\111\1\0\6\11"+
+    "\4\0\2\11\1\0\1\11\1\0\1\260\1\11\3\260"+
+    "\1\11\2\260\1\11\13\0\1\111\2\0\2\111\1\262"+
+    "\4\0\1\263\11\0\1\263\13\0\1\262\5\0\1\264"+
+    "\11\0\1\264\11\0\1\111\1\0\3\111\1\0\2\111"+
+    "\14\0\10\11\1\265\5\11\1\0\1\112\1\0\6\11"+
     "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\10\11\1\265\5\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\5\11"+
+    "\1\0\1\11\1\0\11\11\13\0\10\11\1\266\5\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\5\11"+
     "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\1\266\1\267\1\11\1\104\1\266\1\105\4\11"+
-    "\1\106\1\107\2\11\1\110\1\111\1\0\3\11\1\106"+
-    "\1\11\1\112\3\0\1\11\1\112\1\11\1\113\2\11"+
-    "\1\105\3\11\1\107\1\11\1\114\1\0\5\11\1\0"+
-    "\1\11\1\113\1\114\4\0\2\11\1\0\1\267\1\0"+
-    "\1\266\1\11\3\266\1\11\1\104\1\266\1\11\13\0"+
-    "\1\120\2\11\2\120\1\105\4\11\1\106\1\107\2\11"+
-    "\1\110\1\111\1\0\3\11\1\106\1\11\1\112\3\0"+
-    "\1\11\1\112\1\11\1\113\2\11\1\105\3\11\1\107"+
-    "\1\11\1\114\1\0\5\11\1\0\1\11\1\113\1\114"+
-    "\4\0\2\11\1\0\1\11\1\0\1\120\1\11\3\120"+
-    "\1\11\2\120\1\11\13\0\11\11\1\124\4\11\1\0"+
-    "\1\111\1\0\6\11\3\0\11\11\1\124\3\11\1\0"+
+    "\13\0\1\267\1\270\1\11\1\105\1\267\1\106\4\11"+
+    "\1\107\1\110\2\11\1\111\1\112\1\0\3\11\1\107"+
+    "\1\11\1\113\3\0\1\11\1\113\1\11\1\114\2\11"+
+    "\1\106\3\11\1\110\1\11\1\115\1\0\5\11\1\0"+
+    "\1\11\1\114\1\115\4\0\2\11\1\0\1\270\1\0"+
+    "\1\267\1\11\3\267\1\11\1\105\1\267\1\11\13\0"+
+    "\1\121\2\11\2\121\1\106\4\11\1\107\1\110\2\11"+
+    "\1\111\1\112\1\0\3\11\1\107\1\11\1\113\3\0"+
+    "\1\11\1\113\1\11\1\114\2\11\1\106\3\11\1\110"+
+    "\1\11\1\115\1\0\5\11\1\0\1\11\1\114\1\115"+
+    "\4\0\2\11\1\0\1\11\1\0\1\121\1\11\3\121"+
+    "\1\11\2\121\1\11\13\0\11\11\1\125\4\11\1\0"+
+    "\1\112\1\0\6\11\3\0\11\11\1\125\3\11\1\0"+
     "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\1\110\2\0\2\110\65\0\1\110\1\0"+
-    "\3\110\1\0\2\110\14\0\12\11\1\270\3\11\1\0"+
-    "\1\111\1\0\3\11\1\270\2\11\3\0\15\11\1\0"+
+    "\11\11\13\0\1\111\2\0\2\111\65\0\1\111\1\0"+
+    "\3\111\1\0\2\111\14\0\12\11\1\271\3\11\1\0"+
+    "\1\112\1\0\3\11\1\271\2\11\3\0\15\11\1\0"+
     "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\6\11\1\271\7\11\1\0\1\111\1\0"+
+    "\11\11\13\0\6\11\1\272\7\11\1\0\1\112\1\0"+
     "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
     "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\1\11\1\272\13\11\1\0"+
+    "\1\112\1\0\6\11\3\0\1\11\1\273\13\11\1\0"+
     "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\4\11\1\273\10\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\12\11\1\270"+
-    "\3\11\1\0\1\111\1\0\3\11\1\270\2\11\3\0"+
-    "\1\11\1\274\1\11\1\275\6\11\1\276\2\11\1\0"+
-    "\5\11\1\0\3\11\4\0\1\277\1\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\6\11\1\300\6\11\1\0\5\11\1\0\3\11"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\4\11\1\274\10\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\12\11\1\271"+
+    "\3\11\1\0\1\112\1\0\3\11\1\271\2\11\3\0"+
+    "\1\11\1\275\1\11\1\276\6\11\1\277\2\11\1\0"+
+    "\5\11\1\0\3\11\4\0\1\300\1\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\6\11\1\301\6\11\1\0\5\11\1\0\3\11"+
     "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\11\11"+
-    "\1\301\4\11\1\0\1\111\1\0\6\11\3\0\11\11"+
-    "\1\301\3\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\1\11\1\302\4\11\1\303\2\11"+
-    "\1\304\3\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\13\11\1\305\1\11\1\0\5\11"+
+    "\1\302\4\11\1\0\1\112\1\0\6\11\3\0\11\11"+
+    "\1\302\3\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\1\11\1\303\4\11\1\304\2\11"+
+    "\1\305\3\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\13\11\1\306\1\11\1\0\5\11"+
     "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\1\11"+
-    "\1\306\13\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\136\4\0\5\136"+
-    "\2\0\16\136\1\0\11\136\3\0\3\136\1\0\1\136"+
-    "\1\0\11\136\13\0\16\136\4\0\5\136\2\0\11\136"+
-    "\1\307\4\136\1\0\11\136\3\0\3\136\1\0\1\136"+
-    "\1\0\11\136\13\0\10\136\1\310\5\136\4\0\5\136"+
-    "\2\0\16\136\1\0\11\136\3\0\3\136\1\0\1\136"+
-    "\1\0\11\136\13\0\16\136\4\0\5\136\2\0\2\136"+
-    "\1\311\1\312\12\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\10\136\1\313\5\136\4\0"+
-    "\5\136\2\0\14\136\1\314\1\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\10\136\1\315\1\136\1\316\3\136\1\0"+
-    "\11\136\3\0\3\136\1\0\1\136\1\0\11\136\13\0"+
-    "\16\136\4\0\5\136\2\0\5\136\1\317\1\320\5\136"+
-    "\1\321\1\136\1\0\11\136\3\0\3\136\1\0\1\136"+
-    "\1\0\11\136\13\0\16\136\4\0\5\136\2\0\3\136"+
-    "\1\322\4\136\1\323\5\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\6\136\1\324\3\136\1\325\3\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\7\136\1\326\6\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\7\136\1\327\6\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\330"+
-    "\1\0\1\331\1\0\6\330\3\0\15\330\1\0\5\330"+
-    "\1\0\3\330\4\0\2\330\1\0\1\330\1\0\11\330"+
-    "\35\0\4\332\1\333\2\0\1\154\25\0\2\332\35\0"+
-    "\16\155\1\0\1\156\1\0\6\155\1\334\1\335\1\0"+
-    "\15\155\1\0\5\155\1\0\3\155\4\0\2\155\1\0"+
-    "\1\155\1\0\11\155\33\0\1\155\75\0\16\336\1\0"+
-    "\1\337\1\0\6\336\3\0\15\336\1\0\5\336\1\0"+
-    "\3\336\4\0\2\336\1\0\1\336\1\0\11\336\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\2\11\1\340"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\1\11"+
+    "\1\307\13\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\137\4\0\5\137"+
+    "\2\0\16\137\1\0\11\137\3\0\3\137\1\0\1\137"+
+    "\1\0\11\137\13\0\16\137\4\0\5\137\2\0\11\137"+
+    "\1\310\4\137\1\0\11\137\3\0\3\137\1\0\1\137"+
+    "\1\0\11\137\13\0\10\137\1\311\5\137\4\0\5\137"+
+    "\2\0\16\137\1\0\11\137\3\0\3\137\1\0\1\137"+
+    "\1\0\11\137\13\0\16\137\4\0\5\137\2\0\2\137"+
+    "\1\312\1\313\12\137\1\0\11\137\3\0\3\137\1\0"+
+    "\1\137\1\0\11\137\13\0\10\137\1\314\5\137\4\0"+
+    "\5\137\2\0\14\137\1\315\1\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\10\137\1\316\1\137\1\317\3\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\16\137\4\0\5\137\2\0\5\137\1\320\1\321\5\137"+
+    "\1\322\1\137\1\0\11\137\3\0\3\137\1\0\1\137"+
+    "\1\0\11\137\13\0\16\137\4\0\5\137\2\0\3\137"+
+    "\1\323\4\137\1\324\5\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\6\137\1\325\3\137\1\326\3\137\1\0\11\137"+
+    "\3\0\3\137\1\0\1\137\1\0\11\137\13\0\16\137"+
+    "\4\0\5\137\2\0\7\137\1\327\6\137\1\0\11\137"+
+    "\3\0\3\137\1\0\1\137\1\0\11\137\13\0\16\137"+
+    "\4\0\5\137\2\0\7\137\1\330\6\137\1\0\11\137"+
+    "\3\0\3\137\1\0\1\137\1\0\11\137\13\0\16\331"+
+    "\1\0\1\332\1\0\6\331\3\0\15\331\1\0\5\331"+
+    "\1\0\3\331\4\0\2\331\1\0\1\331\1\0\11\331"+
+    "\35\0\4\333\1\334\2\0\1\155\25\0\2\333\35\0"+
+    "\16\156\1\0\1\157\1\0\6\156\1\335\1\336\1\0"+
+    "\15\156\1\0\5\156\1\0\3\156\4\0\2\156\1\0"+
+    "\1\156\1\0\11\156\33\0\1\156\75\0\16\337\1\0"+
+    "\1\340\1\0\6\337\3\0\15\337\1\0\5\337\1\0"+
+    "\3\337\4\0\2\337\1\0\1\337\1\0\11\337\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\2\11\1\341"+
     "\12\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\5\11\1\341\7\11\1\0\5\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\5\11\1\342\7\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\11\11\1\342"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\11\11\1\343"+
     "\3\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\6\11\1\343\6\11\1\0\5\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\6\11\1\344\6\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\11\11\1\344"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\11\11\1\345"+
     "\3\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\3\11\1\345\11\11\1\0\5\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\3\11\1\346\11\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\4\11\1\346"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\4\11\1\347"+
     "\10\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\7\11\1\347\5\11\1\0\5\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\7\11\1\350\5\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\11\11\1\350"+
-    "\2\11\1\223\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\14\11\1\351\1\0\5\11\1\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\11\11\1\351"+
+    "\2\11\1\224\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\14\11\1\352\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\6\11\1\346"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\6\11\1\347"+
     "\6\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\2\11\1\352\13\11\1\0"+
-    "\1\111\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
+    "\1\11\1\0\11\11\13\0\2\11\1\353\13\11\1\0"+
+    "\1\112\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\2\11\1\353"+
-    "\1\11\1\354\10\11\1\0\5\11\1\0\3\11\4\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\2\11\1\354"+
+    "\1\11\1\355\10\11\1\0\5\11\1\0\3\11\4\0"+
     "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\2\11\1\355\4\11\1\356"+
+    "\1\112\1\0\6\11\3\0\2\11\1\356\4\11\1\357"+
     "\5\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\1\11\1\357\5\11\1\357\5\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\1\11\1\360\5\11\1\360\5\11\1\0"+
     "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\6\11\1\354\6\11\1\0\5\11\1\0\3\11\4\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\6\11\1\355\6\11\1\0\5\11\1\0\3\11\4\0"+
     "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\3\11\1\360\5\11\1\361"+
+    "\1\112\1\0\6\11\3\0\3\11\1\361\5\11\1\362"+
     "\3\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\15\11\1\0\1\362\4\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\1\202"+
-    "\2\11\2\202\11\11\1\0\1\111\1\0\6\11\3\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\15\11\1\0\1\363\4\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\1\203"+
+    "\2\11\2\203\11\11\1\0\1\112\1\0\6\11\3\0"+
     "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\1\202\1\11\3\202\1\11\2\202\1\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\1\363"+
+    "\1\11\1\0\1\203\1\11\3\203\1\11\2\203\1\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\1\364"+
     "\14\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\2\11\1\364\13\11\1\0"+
-    "\1\111\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
+    "\1\11\1\0\11\11\13\0\2\11\1\365\13\11\1\0"+
+    "\1\112\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\10\11\1\365\5\11\1\0\1\111\1\0\6\11\3\0"+
-    "\13\11\1\366\1\11\1\0\5\11\1\0\3\11\4\0"+
+    "\10\11\1\366\5\11\1\0\1\112\1\0\6\11\3\0"+
+    "\13\11\1\367\1\11\1\0\5\11\1\0\3\11\4\0"+
     "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\4\11\1\367\10\11\1\0"+
+    "\1\112\1\0\6\11\3\0\4\11\1\370\10\11\1\0"+
     "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\6\11\1\370\6\11\1\0\5\11\1\0\3\11\4\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\6\11\1\371\6\11\1\0\5\11\1\0\3\11\4\0"+
     "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\4\11\1\371\10\11\1\0"+
+    "\1\112\1\0\6\11\3\0\4\11\1\372\10\11\1\0"+
     "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\11\11\1\372\3\11\1\0\5\11\1\0\3\11\4\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\11\11\1\373\3\11\1\0\5\11\1\0\3\11\4\0"+
     "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\10\11\1\351\1\11\1\373"+
+    "\1\112\1\0\6\11\3\0\10\11\1\352\1\11\1\374"+
     "\2\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\1\11\1\351\13\11\1\0\5\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\1\11\1\352\13\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\11\11\1\374"+
-    "\3\11\1\0\5\11\1\0\3\11\4\0\1\375\1\11"+
-    "\1\0\1\11\1\0\11\11\13\0\11\11\1\301\4\11"+
-    "\1\0\1\111\1\0\6\11\3\0\11\11\1\301\1\376"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\11\11\1\375"+
+    "\3\11\1\0\5\11\1\0\3\11\4\0\1\376\1\11"+
+    "\1\0\1\11\1\0\11\11\13\0\11\11\1\302\4\11"+
+    "\1\0\1\112\1\0\6\11\3\0\11\11\1\302\1\377"+
     "\2\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\1\11\1\377\13\11\1\0\5\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\1\11\1\u0100\13\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\15\11\1\0"+
-    "\1\11\1\u0100\2\11\1\u0101\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\6\11\1\u0102\7\11"+
-    "\1\0\1\111\1\0\6\11\3\0\5\11\1\u0103\4\11"+
-    "\1\u0104\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\2\11\1\u0105\1\11\1\u0106\10\11"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
+    "\1\11\1\u0101\2\11\1\u0102\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\6\11\1\u0103\7\11"+
+    "\1\0\1\112\1\0\6\11\3\0\5\11\1\u0104\4\11"+
+    "\1\u0105\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\2\11\1\u0106\1\11\1\u0107\10\11"+
     "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\7\11\1\u0107\5\11\1\0\5\11\1\0\3\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\7\11\1\u0108\5\11\1\0\5\11\1\0\3\11"+
     "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\6\11"+
-    "\1\u0108\7\11\1\0\1\111\1\0\6\11\3\0\15\11"+
+    "\1\u0109\7\11\1\0\1\112\1\0\6\11\3\0\15\11"+
     "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\1\351"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\1\352"+
     "\1\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\1\u0109\14\11\1\0\5\11"+
+    "\1\112\1\0\6\11\3\0\1\u010a\14\11\1\0\5\11"+
     "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\4\11"+
-    "\1\u010a\10\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\11\11\1\u010b\3\11\1\0\5\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\4\11"+
+    "\1\u010b\10\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\11\11\1\u010c\3\11\1\0\5\11"+
     "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\12\11"+
-    "\1\u010c\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\7\11\1\u010d\5\11\1\0\5\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\12\11"+
+    "\1\u010d\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\7\11\1\u010e\5\11\1\0\5\11"+
     "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\2\11"+
-    "\1\u010e\12\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\1\11\1\u010f\13\11\1\0\5\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\2\11"+
+    "\1\u010f\12\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\1\11\1\u0110\13\11\1\0\5\11"+
     "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\234\1\0\1\235\1\0\6\234\3\0\15\234"+
-    "\1\0\5\234\1\0\3\234\4\0\2\234\1\0\1\234"+
-    "\1\0\11\234\1\0\1\u0110\31\0\1\234\75\0\16\236"+
-    "\1\0\1\237\1\0\6\236\1\u0111\1\u0112\1\0\15\236"+
-    "\1\0\5\236\1\0\3\236\4\0\2\236\1\0\1\236"+
-    "\1\0\11\236\33\0\1\236\75\0\16\240\1\0\1\241"+
-    "\1\0\6\240\1\u0113\1\u0114\1\0\15\240\1\0\5\240"+
-    "\1\0\3\240\4\0\2\240\1\0\1\240\1\0\11\240"+
-    "\33\0\1\240\75\0\1\u0115\1\0\4\u0115\4\0\1\u0115"+
-    "\2\0\1\u0115\4\0\1\u0115\1\0\1\u0115\5\0\1\u0115"+
-    "\1\0\1\u0115\3\0\1\u0115\5\0\1\u0115\11\0\1\u0115"+
-    "\11\0\1\u0115\1\0\3\u0115\1\0\2\u0115\14\0\1\u0116"+
-    "\1\0\4\u0116\4\0\1\u0116\2\0\1\u0116\4\0\1\u0116"+
-    "\1\0\1\u0116\5\0\1\u0116\1\0\1\u0116\3\0\1\u0116"+
-    "\5\0\1\u0116\11\0\1\u0116\11\0\1\u0116\1\0\3\u0116"+
-    "\1\0\2\u0116\14\0\1\255\1\11\4\255\1\11\1\105"+
-    "\2\11\1\255\1\107\1\11\1\255\1\u0117\1\111\1\0"+
-    "\1\11\1\255\1\11\1\255\1\11\1\112\3\0\1\255"+
-    "\1\112\1\255\1\113\1\11\1\105\1\255\3\11\1\107"+
-    "\1\11\1\255\1\0\5\11\1\0\1\11\1\113\1\255"+
-    "\4\0\2\11\1\0\1\11\1\0\1\255\1\11\3\255"+
-    "\1\11\2\255\1\11\13\0\1\u0117\1\0\4\u0117\4\0"+
-    "\1\u0117\2\0\1\u0117\4\0\1\u0117\1\0\1\u0117\5\0"+
-    "\1\u0117\1\0\1\u0117\3\0\1\u0117\5\0\1\u0117\11\0"+
-    "\1\u0117\11\0\1\u0117\1\0\3\u0117\1\0\2\u0117\14\0"+
-    "\1\257\2\11\2\257\5\11\1\106\3\11\1\0\1\111"+
-    "\1\0\3\11\1\106\2\11\3\0\14\11\1\114\1\0"+
-    "\5\11\1\0\2\11\1\114\4\0\2\11\1\0\1\11"+
-    "\1\0\1\257\1\11\3\257\1\11\2\257\1\11\13\0"+
-    "\1\257\2\11\2\257\11\11\1\0\1\111\1\0\6\11"+
+    "\13\0\16\235\1\0\1\236\1\0\6\235\3\0\15\235"+
+    "\1\0\5\235\1\0\3\235\4\0\2\235\1\0\1\235"+
+    "\1\0\11\235\1\0\1\u0111\31\0\1\235\75\0\16\237"+
+    "\1\0\1\240\1\0\6\237\1\u0112\1\u0113\1\0\15\237"+
+    "\1\0\5\237\1\0\3\237\4\0\2\237\1\0\1\237"+
+    "\1\0\11\237\33\0\1\237\75\0\16\241\1\0\1\242"+
+    "\1\0\6\241\1\u0114\1\u0115\1\0\15\241\1\0\5\241"+
+    "\1\0\3\241\4\0\2\241\1\0\1\241\1\0\11\241"+
+    "\33\0\1\241\75\0\1\u0116\1\0\4\u0116\4\0\1\u0116"+
+    "\2\0\1\u0116\4\0\1\u0116\1\0\1\u0116\5\0\1\u0116"+
+    "\1\0\1\u0116\3\0\1\u0116\5\0\1\u0116\11\0\1\u0116"+
+    "\11\0\1\u0116\1\0\3\u0116\1\0\2\u0116\14\0\1\u0117"+
+    "\1\0\4\u0117\4\0\1\u0117\2\0\1\u0117\4\0\1\u0117"+
+    "\1\0\1\u0117\5\0\1\u0117\1\0\1\u0117\3\0\1\u0117"+
+    "\5\0\1\u0117\11\0\1\u0117\11\0\1\u0117\1\0\3\u0117"+
+    "\1\0\2\u0117\14\0\1\256\1\11\4\256\1\11\1\106"+
+    "\2\11\1\256\1\110\1\11\1\256\1\u0118\1\112\1\0"+
+    "\1\11\1\256\1\11\1\256\1\11\1\113\3\0\1\256"+
+    "\1\113\1\256\1\114\1\11\1\106\1\256\3\11\1\110"+
+    "\1\11\1\256\1\0\5\11\1\0\1\11\1\114\1\256"+
+    "\4\0\2\11\1\0\1\11\1\0\1\256\1\11\3\256"+
+    "\1\11\2\256\1\11\13\0\1\u0118\1\0\4\u0118\4\0"+
+    "\1\u0118\2\0\1\u0118\4\0\1\u0118\1\0\1\u0118\5\0"+
+    "\1\u0118\1\0\1\u0118\3\0\1\u0118\5\0\1\u0118\11\0"+
+    "\1\u0118\11\0\1\u0118\1\0\3\u0118\1\0\2\u0118\14\0"+
+    "\1\260\2\11\2\260\5\11\1\107\3\11\1\0\1\112"+
+    "\1\0\3\11\1\107\2\11\3\0\14\11\1\115\1\0"+
+    "\5\11\1\0\2\11\1\115\4\0\2\11\1\0\1\11"+
+    "\1\0\1\260\1\11\3\260\1\11\2\260\1\11\13\0"+
+    "\1\260\2\11\2\260\11\11\1\0\1\112\1\0\6\11"+
     "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\1\257\1\11\3\257\1\11\2\257"+
-    "\1\11\13\0\1\u0118\2\0\2\u0118\1\0\1\u0119\63\0"+
-    "\1\u0118\1\0\3\u0118\1\0\2\u0118\14\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\1\11\1\u011a\13\11\1\0"+
+    "\1\0\1\11\1\0\1\260\1\11\3\260\1\11\2\260"+
+    "\1\11\13\0\1\u0119\2\0\2\u0119\1\0\1\u011a\63\0"+
+    "\1\u0119\1\0\3\u0119\1\0\2\u0119\14\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\1\11\1\u011b\13\11\1\0"+
     "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\14\11\1\u011b\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\1\266\2\11\1\104"+
-    "\1\266\1\105\4\11\1\106\1\107\2\11\1\110\1\111"+
-    "\1\0\3\11\1\106\1\11\1\112\3\0\1\11\1\112"+
-    "\1\11\1\113\2\11\1\105\3\11\1\107\1\11\1\114"+
-    "\1\0\5\11\1\0\1\11\1\113\1\114\4\0\2\11"+
-    "\1\0\1\11\1\0\1\266\1\11\3\266\1\11\1\104"+
-    "\1\266\1\11\13\0\1\u011c\1\11\4\u011c\4\11\1\u011c"+
-    "\2\11\1\u011c\1\256\1\111\1\0\1\11\1\u011c\1\11"+
-    "\1\u011c\2\11\3\0\1\u011c\1\11\1\u011c\3\11\1\u011c"+
-    "\5\11\1\u011c\1\0\5\11\1\0\2\11\1\u011c\4\0"+
-    "\2\11\1\0\1\11\1\0\1\u011c\1\11\3\u011c\1\11"+
-    "\2\u011c\1\11\13\0\10\11\1\u011d\5\11\1\0\1\111"+
-    "\1\0\2\11\1\u011d\3\11\3\0\15\11\1\0\5\11"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\14\11\1\u011c\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\1\267\2\11\1\105"+
+    "\1\267\1\106\4\11\1\107\1\110\2\11\1\111\1\112"+
+    "\1\0\3\11\1\107\1\11\1\113\3\0\1\11\1\113"+
+    "\1\11\1\114\2\11\1\106\3\11\1\110\1\11\1\115"+
+    "\1\0\5\11\1\0\1\11\1\114\1\115\4\0\2\11"+
+    "\1\0\1\11\1\0\1\267\1\11\3\267\1\11\1\105"+
+    "\1\267\1\11\13\0\1\u011d\1\11\4\u011d\4\11\1\u011d"+
+    "\2\11\1\u011d\1\257\1\112\1\0\1\11\1\u011d\1\11"+
+    "\1\u011d\2\11\3\0\1\u011d\1\11\1\u011d\3\11\1\u011d"+
+    "\5\11\1\u011d\1\0\5\11\1\0\2\11\1\u011d\4\0"+
+    "\2\11\1\0\1\11\1\0\1\u011d\1\11\3\u011d\1\11"+
+    "\2\u011d\1\11\13\0\10\11\1\u011e\5\11\1\0\1\112"+
+    "\1\0\2\11\1\u011e\3\11\3\0\15\11\1\0\5\11"+
     "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\1\11"+
-    "\1\u011e\4\11\1\u011f\2\11\1\u0120\3\11\1\0\1\11"+
-    "\1\u011e\3\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\6\11\1\u0121\6\11\1\0\5\11\1\0\3\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\1\11"+
+    "\1\u011f\4\11\1\u0120\2\11\1\u0121\3\11\1\0\1\11"+
+    "\1\u011f\3\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\6\11\1\u0122\6\11\1\0\5\11\1\0\3\11"+
     "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\12\11\1\u0122\2\11"+
+    "\1\0\1\112\1\0\6\11\3\0\12\11\1\u0123\2\11"+
     "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\10\11\1\u0123\5\11\1\0\1\111"+
+    "\1\0\11\11\13\0\10\11\1\u0124\5\11\1\0\1\112"+
     "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
     "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\12\11\1\u0124\2\11"+
+    "\1\0\1\112\1\0\6\11\3\0\12\11\1\u0125\2\11"+
     "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\6\11\1\u0125\7\11\1\0\1\111"+
-    "\1\0\6\11\3\0\6\11\1\u0126\6\11\1\0\5\11"+
+    "\1\0\11\11\13\0\6\11\1\u0126\7\11\1\0\1\112"+
+    "\1\0\6\11\3\0\6\11\1\u0127\6\11\1\0\5\11"+
     "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\13\11"+
-    "\1\u0127\1\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\12\11\1\u0128\2\11\1\0\5\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\13\11"+
+    "\1\u0128\1\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\12\11\1\u0129\2\11\1\0\5\11"+
     "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\12\11\1\106\3\11\1\0\1\111\1\0\3\11"+
-    "\1\106\2\11\3\0\14\11\1\114\1\0\5\11\1\0"+
-    "\2\11\1\114\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\1\11"+
-    "\1\u0129\13\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\1\11\1\u012a\13\11\1\0\5\11"+
+    "\13\0\12\11\1\107\3\11\1\0\1\112\1\0\3\11"+
+    "\1\107\2\11\3\0\14\11\1\115\1\0\5\11\1\0"+
+    "\2\11\1\115\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\1\11"+
+    "\1\u012a\13\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\1\11\1\u012b\13\11\1\0\5\11"+
     "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\2\11"+
-    "\1\u012b\12\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\2\11\1\u012c\12\11\1\0\5\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\2\11"+
+    "\1\u012c\12\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\2\11\1\u012d\12\11\1\0\5\11"+
     "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\3\11"+
-    "\1\u0106\11\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\136\4\0\5\136"+
-    "\2\0\6\136\1\u012d\7\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\7\136\1\u012e\6\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\3\136\1\u012f\12\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\13\136\1\u0130\2\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\12\136\1\u0131\3\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\1\136\1\u0132\14\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\10\136\1\u0133\5\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\12\136\1\u0134\3\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\2\136\1\u0135\13\136"+
-    "\4\0\5\136\2\0\6\136\1\u0136\7\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\3\136\1\u0137\12\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\5\136\1\u0138\10\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\1\136\1\u0139\6\136\1\u013a\5\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\14\136\1\u013b\1\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\10\136\1\u013c\5\136\4\0\5\136\2\0\16\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\5\136\1\u013d\7\136"+
-    "\1\u013e\1\0\11\136\3\0\3\136\1\0\1\136\1\0"+
-    "\11\136\13\0\16\136\4\0\5\136\2\0\4\136\1\u013f"+
-    "\11\136\1\0\1\136\1\u0140\7\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\136\4\0\5\136\2\0"+
-    "\13\136\1\u0141\2\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\330\1\0\1\331\1\0"+
-    "\6\330\1\333\1\332\1\0\15\330\1\0\5\330\1\0"+
-    "\3\330\4\0\2\330\1\0\1\330\1\0\11\330\33\0"+
-    "\1\330\75\0\16\u0142\1\0\1\u0143\1\0\6\u0142\3\0"+
-    "\15\u0142\1\0\5\u0142\1\0\3\u0142\4\0\2\u0142\1\0"+
-    "\1\u0142\1\0\11\u0142\13\0\16\u0144\1\0\1\u0145\1\0"+
-    "\6\u0144\3\0\15\u0144\1\0\5\u0144\1\0\3\u0144\4\0"+
-    "\2\u0144\1\0\1\u0144\1\0\11\u0144\13\0\16\336\1\0"+
-    "\1\337\1\0\6\336\1\157\1\154\1\0\15\336\1\0"+
-    "\5\336\1\0\3\336\4\0\2\336\1\0\1\336\1\0"+
-    "\11\336\33\0\1\336\75\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\3\11\1\u0146\11\11\1\0\5\11\1\0"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\3\11"+
+    "\1\u0107\11\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\137\4\0\5\137"+
+    "\2\0\6\137\1\u012e\7\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\7\137\1\u012f\6\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\3\137\1\u0130\12\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\13\137\1\u0131\2\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\12\137\1\u0132\3\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\1\137\1\u0133\14\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\10\137\1\u0134\5\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\12\137\1\u0135\3\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\2\137\1\u0136\13\137"+
+    "\4\0\5\137\2\0\6\137\1\u0137\7\137\1\0\11\137"+
+    "\3\0\3\137\1\0\1\137\1\0\11\137\13\0\16\137"+
+    "\4\0\5\137\2\0\3\137\1\u0138\12\137\1\0\11\137"+
+    "\3\0\3\137\1\0\1\137\1\0\11\137\13\0\16\137"+
+    "\4\0\5\137\2\0\5\137\1\u0139\10\137\1\0\11\137"+
+    "\3\0\3\137\1\0\1\137\1\0\11\137\13\0\16\137"+
+    "\4\0\5\137\2\0\1\137\1\u013a\6\137\1\u013b\5\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\14\137\1\u013c\1\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\10\137\1\u013d\5\137\4\0\5\137\2\0\16\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\5\137\1\u013e\7\137"+
+    "\1\u013f\1\0\11\137\3\0\3\137\1\0\1\137\1\0"+
+    "\11\137\13\0\16\137\4\0\5\137\2\0\4\137\1\u0140"+
+    "\11\137\1\0\1\137\1\u0141\7\137\3\0\3\137\1\0"+
+    "\1\137\1\0\11\137\13\0\16\137\4\0\5\137\2\0"+
+    "\13\137\1\u0142\2\137\1\0\11\137\3\0\3\137\1\0"+
+    "\1\137\1\0\11\137\13\0\16\331\1\0\1\332\1\0"+
+    "\6\331\1\334\1\333\1\0\15\331\1\0\5\331\1\0"+
+    "\3\331\4\0\2\331\1\0\1\331\1\0\11\331\33\0"+
+    "\1\331\75\0\16\u0143\1\0\1\u0144\1\0\6\u0143\3\0"+
+    "\15\u0143\1\0\5\u0143\1\0\3\u0143\4\0\2\u0143\1\0"+
+    "\1\u0143\1\0\11\u0143\13\0\16\u0145\1\0\1\u0146\1\0"+
+    "\6\u0145\3\0\15\u0145\1\0\5\u0145\1\0\3\u0145\4\0"+
+    "\2\u0145\1\0\1\u0145\1\0\11\u0145\13\0\16\337\1\0"+
+    "\1\340\1\0\6\337\1\160\1\155\1\0\15\337\1\0"+
+    "\5\337\1\0\3\337\4\0\2\337\1\0\1\337\1\0"+
+    "\11\337\33\0\1\337\75\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\3\11\1\u0147\11\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\6\11\1\u0147\7\11\1\0\1\111\1\0\6\11\3\0"+
-    "\1\11\1\u0148\13\11\1\0\1\11\1\u0148\3\11\1\0"+
+    "\6\11\1\u0148\7\11\1\0\1\112\1\0\6\11\3\0"+
+    "\1\11\1\u0149\13\11\1\0\1\11\1\u0149\3\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\3\11\1\u0149"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\3\11\1\u014a"+
     "\11\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\1\u014a\14\11\1\0\5\11\1\0\3\11"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\1\u014b\14\11\1\0\5\11\1\0\3\11"+
     "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\1\11"+
-    "\1\u014b\3\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\12\11\1\u014c\2\11\1\0\5\11\1\0\3\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\1\11"+
+    "\1\u014c\3\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\12\11\1\u014d\2\11\1\0\5\11\1\0\3\11"+
     "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\12\11\1\u014d\2\11"+
+    "\1\0\1\112\1\0\6\11\3\0\12\11\1\u014e\2\11"+
     "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\2\11\1\u014e\12\11\1\0\5\11\1\0\3\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\2\11\1\u014f\12\11\1\0\5\11\1\0\3\11"+
     "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\13\11\1\u014f\1\11"+
+    "\1\0\1\112\1\0\6\11\3\0\13\11\1\u0150\1\11"+
     "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\6\11\1\u0150\7\11\1\0\1\111"+
+    "\1\0\11\11\13\0\6\11\1\u0151\7\11\1\0\1\112"+
     "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
     "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\6\11"+
-    "\1\u0151\7\11\1\0\1\111\1\0\6\11\3\0\15\11"+
+    "\1\u0152\7\11\1\0\1\112\1\0\6\11\3\0\15\11"+
     "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\7\11\1\u0152\5\11\1\0\5\11\1\0\3\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\7\11\1\u0153\5\11\1\0\5\11\1\0\3\11"+
     "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\12\11\1\u0153\2\11"+
+    "\1\0\1\112\1\0\6\11\3\0\12\11\1\u0154\2\11"+
     "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\12\11\1\u0154\2\11\1\0\5\11\1\0\3\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\12\11\1\u0155\2\11\1\0\5\11\1\0\3\11"+
     "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\10\11"+
-    "\1\u0155\5\11\1\0\1\111\1\0\6\11\3\0\15\11"+
+    "\1\u0156\5\11\1\0\1\112\1\0\6\11\3\0\15\11"+
     "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\6\11\1\u0156\7\11\1\0\1\111"+
+    "\1\0\11\11\13\0\6\11\1\u0157\7\11\1\0\1\112"+
     "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
     "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\12\11\1\u0157\2\11"+
+    "\1\0\1\112\1\0\6\11\3\0\12\11\1\u0158\2\11"+
     "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\1\u0158\11\11\1\u0159\2\11\1\0\5\11\1\0"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\1\u0159\11\11\1\u015a\2\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\7\11\1\357"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\7\11\1\360"+
     "\5\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\15\11\1\0\3\11\1\u015a\1\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\15\11\1\0\3\11\1\u015b\1\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\1\11\1\u0154"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\1\11\1\u015c"+
     "\13\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
     "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\1\u015b\1\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\12\11\1\u015c\2\11"+
+    "\1\u015d\1\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\12\11\1\u015e\2\11"+
     "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\10\11\1\u015d\4\11\1\0\5\11\1\0\3\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\10\11\1\u015f\4\11\1\0\5\11\1\0\3\11"+
     "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\1\u015e\14\11\1\0"+
+    "\1\0\1\112\1\0\6\11\3\0\1\u0160\14\11\1\0"+
     "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\2\11\1\u015f\13\11\1\0\1\111\1\0"+
+    "\11\11\13\0\2\11\1\u0161\13\11\1\0\1\112\1\0"+
     "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
     "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\12\11\1\u0160\2\11\1\0"+
+    "\1\112\1\0\6\11\3\0\12\11\1\u0162\2\11\1\0"+
     "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\4\11\1\u0161\10\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\10\11\1\u0162"+
-    "\5\11\1\0\1\111\1\0\6\11\3\0\15\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\6\11\1\u0163\6\11\1\0\5\11\1\0\3\11\4\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\4\11\1\u0163\10\11\1\0\5\11\1\0\3\11\4\0"+
     "\2\11\1\0\1\11\1\0\11\11\13\0\10\11\1\u0164"+
-    "\5\11\1\0\1\111\1\0\6\11\3\0\15\11\1\0"+
+    "\5\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
     "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\1\11\1\u0165\13\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\6\11\1\u0166"+
-    "\7\11\1\0\1\111\1\0\6\11\3\0\15\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\6\11\1\u0165\6\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\10\11\1\u0166"+
+    "\5\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
     "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\6\11\1\u0167\7\11\1\0\1\111\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\1\11\1\u0167\13\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\6\11\1\u0168"+
+    "\7\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\6\11\1\u0169\7\11\1\0\1\112\1\0"+
     "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
     "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\3\11\1\u0168\2\11\1\u0169"+
+    "\1\112\1\0\6\11\3\0\3\11\1\u016a\2\11\1\u016b"+
     "\6\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\6\11\1\u016a\7\11\1\0"+
-    "\1\111\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
+    "\1\11\1\0\11\11\13\0\6\11\1\u016c\7\11\1\0"+
+    "\1\112\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\11\11\1\u016b"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\11\11\1\u016d"+
     "\3\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\6\11\1\u016c\6\11\1\0\5\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\6\11\1\u016e\6\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\13\11\1\u016d"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\13\11\1\u016f"+
     "\1\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\10\11\1\u016e\5\11\1\0"+
-    "\1\111\1\0\6\11\3\0\1\11\1\u016f\13\11\1\0"+
+    "\1\11\1\0\11\11\13\0\10\11\1\u0170\5\11\1\0"+
+    "\1\112\1\0\6\11\3\0\1\11\1\u0171\13\11\1\0"+
     "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\1\11\1\u0170\13\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\2\11\1\u0171"+
-    "\13\11\1\0\1\111\1\0\6\11\3\0\15\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\1\11\1\u0172\13\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\2\11\1\u0173"+
+    "\13\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
     "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\6\11\1\u0172\6\11\1\0\5\11\1\0\3\11\4\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\6\11\1\u0174\6\11\1\0\5\11\1\0\3\11\4\0"+
     "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\13\11\1\u0173\1\11\1\0"+
+    "\1\112\1\0\6\11\3\0\13\11\1\u0175\1\11\1\0"+
     "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\2\11\1\u0174\12\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\2\11\1\u0175"+
-    "\13\11\1\0\1\111\1\0\6\11\3\0\15\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
     "\2\11\1\u0176\12\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\1\u0177\1\0"+
-    "\4\u0177\4\0\1\u0177\2\0\1\u0177\4\0\1\u0177\1\0"+
-    "\1\u0177\5\0\1\u0177\1\0\1\u0177\3\0\1\u0177\5\0"+
-    "\1\u0177\11\0\1\u0177\11\0\1\u0177\1\0\3\u0177\1\0"+
-    "\2\u0177\14\0\1\u0178\1\0\4\u0178\4\0\1\u0178\2\0"+
-    "\1\u0178\4\0\1\u0178\1\0\1\u0178\5\0\1\u0178\1\0"+
-    "\1\u0178\3\0\1\u0178\5\0\1\u0178\11\0\1\u0178\11\0"+
-    "\1\u0178\1\0\3\u0178\1\0\2\u0178\14\0\1\u0117\1\0"+
-    "\4\u0117\1\0\1\261\2\0\1\u0117\2\0\1\u0117\4\0"+
-    "\1\u0117\1\0\1\u0117\5\0\1\u0117\1\0\1\u0117\2\0"+
-    "\1\261\1\u0117\5\0\1\u0117\11\0\1\u0117\11\0\1\u0117"+
-    "\1\0\3\u0117\1\0\2\u0117\14\0\1\u0118\2\0\2\u0118"+
-    "\5\0\1\262\11\0\1\262\21\0\1\263\11\0\1\263"+
-    "\11\0\1\u0118\1\0\3\u0118\1\0\2\u0118\14\0\1\u0118"+
-    "\2\0\2\u0118\65\0\1\u0118\1\0\3\u0118\1\0\2\u0118"+
-    "\14\0\16\11\1\0\1\111\1\0\6\11\3\0\14\11"+
-    "\1\u0179\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\15\11\1\0\1\11\1\u017a\3\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\1\u011c\1\11\4\u011c\1\11\1\105\2\11\1\u011c\1\107"+
-    "\1\11\1\u011c\1\u0117\1\111\1\0\1\11\1\u011c\1\11"+
-    "\1\u011c\1\11\1\112\3\0\1\u011c\1\112\1\u011c\1\113"+
-    "\1\11\1\105\1\u011c\3\11\1\107\1\11\1\u011c\1\0"+
-    "\5\11\1\0\1\11\1\113\1\u011c\4\0\2\11\1\0"+
-    "\1\11\1\0\1\u011c\1\11\3\u011c\1\11\2\u011c\1\11"+
-    "\13\0\11\11\1\u017b\4\11\1\0\1\111\1\0\6\11"+
-    "\3\0\11\11\1\u017b\3\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\6\11\1\u017c\3\11"+
-    "\1\u017c\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\5\11\1\u017c\3\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\6\11"+
-    "\1\u017c\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\1\11\1\u017d\3\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\6\11\1\u017e\7\11\1\0\1\111\1\0\6\11"+
-    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\11\11\1\u017f\3\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\2\11"+
-    "\1\u0180\12\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\12\11\1\u0181\2\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\7\11"+
-    "\1\u0182\5\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\3\11\1\u0183\1\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\6\11\1\u0184\7\11\1\0\1\111\1\0\6\11"+
-    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\6\11\1\u0185\7\11"+
-    "\1\0\1\111\1\0\6\11\3\0\6\11\1\u0186\6\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\14\11\1\u0187\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\1\11\1\u015d\13\11\1\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\2\11\1\u0177"+
+    "\13\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
     "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\12\11\1\u0188\2\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\136\4\0"+
-    "\5\136\2\0\2\136\1\u0189\13\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\2\136\1\u018a\13\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\4\136\1\u018b\11\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\1\136\1\u018c\14\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\7\136\1\u018d\6\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\3\136\1\u018e\12\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\3\136\1\u018f\12\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\14\136\1\u0190\1\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\3\136\1\u0191\12\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\7\136\1\u0192\6\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\10\136\1\u0193\5\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\10\136\1\u0194\5\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\16\136\1\0\3\136\1\u0195\5\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\3\136\1\u0196\12\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\2\136\1\u0197\13\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\2\136\1\u0198\13\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\11\136\1\u0199\4\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\16\136\1\u019a\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\136\4\0\5\136\2\0"+
-    "\13\136\1\u019b\2\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\10\136\1\u019c\5\136\4\0"+
-    "\5\136\2\0\16\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\136\4\0\5\136\2\0"+
-    "\16\136\1\0\1\u019d\10\136\3\0\3\136\1\0\1\136"+
-    "\1\0\11\136\13\0\16\u0142\1\0\1\u0143\1\0\6\u0142"+
-    "\1\333\1\332\1\0\15\u0142\1\0\5\u0142\1\0\3\u0142"+
-    "\4\0\2\u0142\1\0\1\u0142\1\0\11\u0142\33\0\1\u0142"+
-    "\75\0\16\u0144\1\0\1\u0145\1\0\6\u0144\1\334\1\335"+
-    "\1\0\15\u0144\1\0\5\u0144\1\0\3\u0144\4\0\2\u0144"+
-    "\1\0\1\u0144\1\0\11\u0144\33\0\1\u0144\75\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\3\11\1\u019e\11\11"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\2\11\1\u0178\12\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\1\u0179\1\0"+
+    "\4\u0179\4\0\1\u0179\2\0\1\u0179\4\0\1\u0179\1\0"+
+    "\1\u0179\5\0\1\u0179\1\0\1\u0179\3\0\1\u0179\5\0"+
+    "\1\u0179\11\0\1\u0179\11\0\1\u0179\1\0\3\u0179\1\0"+
+    "\2\u0179\14\0\1\u017a\1\0\4\u017a\4\0\1\u017a\2\0"+
+    "\1\u017a\4\0\1\u017a\1\0\1\u017a\5\0\1\u017a\1\0"+
+    "\1\u017a\3\0\1\u017a\5\0\1\u017a\11\0\1\u017a\11\0"+
+    "\1\u017a\1\0\3\u017a\1\0\2\u017a\14\0\1\u0118\1\0"+
+    "\4\u0118\1\0\1\262\2\0\1\u0118\2\0\1\u0118\4\0"+
+    "\1\u0118\1\0\1\u0118\5\0\1\u0118\1\0\1\u0118\2\0"+
+    "\1\262\1\u0118\5\0\1\u0118\11\0\1\u0118\11\0\1\u0118"+
+    "\1\0\3\u0118\1\0\2\u0118\14\0\1\u0119\2\0\2\u0119"+
+    "\5\0\1\263\11\0\1\263\21\0\1\264\11\0\1\264"+
+    "\11\0\1\u0119\1\0\3\u0119\1\0\2\u0119\14\0\1\u0119"+
+    "\2\0\2\u0119\65\0\1\u0119\1\0\3\u0119\1\0\2\u0119"+
+    "\14\0\16\11\1\0\1\112\1\0\6\11\3\0\14\11"+
+    "\1\u017b\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\15\11\1\0\1\11\1\u017c\3\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\1\u011d\1\11\4\u011d\1\11\1\106\2\11\1\u011d\1\110"+
+    "\1\11\1\u011d\1\u0118\1\112\1\0\1\11\1\u011d\1\11"+
+    "\1\u011d\1\11\1\113\3\0\1\u011d\1\113\1\u011d\1\114"+
+    "\1\11\1\106\1\u011d\3\11\1\110\1\11\1\u011d\1\0"+
+    "\5\11\1\0\1\11\1\114\1\u011d\4\0\2\11\1\0"+
+    "\1\11\1\0\1\u011d\1\11\3\u011d\1\11\2\u011d\1\11"+
+    "\13\0\11\11\1\u017d\4\11\1\0\1\112\1\0\6\11"+
+    "\3\0\11\11\1\u017d\3\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\6\11\1\u017e\3\11"+
+    "\1\u017e\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\5\11\1\u017e\3\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\6\11"+
+    "\1\u017e\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\1\11\1\u017f\3\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\6\11\1\u0180\7\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\11\11\1\u0181\3\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\2\11"+
+    "\1\u0182\12\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\12\11\1\u0183\2\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\7\11"+
+    "\1\u0184\5\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\3\11\1\u0185\1\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\6\11\1\u0186\7\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\6\11\1\u0187\7\11"+
+    "\1\0\1\112\1\0\6\11\3\0\6\11\1\u0188\6\11"+
     "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\1\11\1\u019f\13\11\1\0\5\11\1\0\3\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\14\11\1\u0189\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\1\11\1\u015f\13\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\12\11\1\u018a\2\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\137\4\0"+
+    "\5\137\2\0\2\137\1\u018b\13\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\2\137\1\u018c\13\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\4\137\1\u018d\11\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\1\137\1\u018e\14\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\7\137\1\u018f\6\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\3\137\1\u0190\12\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\3\137\1\u0191\12\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\14\137\1\u0192\1\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\3\137\1\u0193\12\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\7\137\1\u0194\6\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\10\137\1\u0195\5\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\10\137\1\u0196\5\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\16\137\1\0\3\137\1\u0197\5\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\3\137\1\u0198\12\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\2\137\1\u0199\13\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\2\137\1\u019a\13\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\11\137\1\u019b\4\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\16\137\1\u019c\11\137\3\0\3\137\1\0"+
+    "\1\137\1\0\11\137\13\0\16\137\4\0\5\137\2\0"+
+    "\13\137\1\u019d\2\137\1\0\11\137\3\0\3\137\1\0"+
+    "\1\137\1\0\11\137\13\0\10\137\1\u019e\5\137\4\0"+
+    "\5\137\2\0\16\137\1\0\11\137\3\0\3\137\1\0"+
+    "\1\137\1\0\11\137\13\0\16\137\4\0\5\137\2\0"+
+    "\16\137\1\0\1\u019f\10\137\3\0\3\137\1\0\1\137"+
+    "\1\0\11\137\13\0\16\u0143\1\0\1\u0144\1\0\6\u0143"+
+    "\1\334\1\333\1\0\15\u0143\1\0\5\u0143\1\0\3\u0143"+
+    "\4\0\2\u0143\1\0\1\u0143\1\0\11\u0143\33\0\1\u0143"+
+    "\75\0\16\u0145\1\0\1\u0146\1\0\6\u0145\1\335\1\336"+
+    "\1\0\15\u0145\1\0\5\u0145\1\0\3\u0145\4\0\2\u0145"+
+    "\1\0\1\u0145\1\0\11\u0145\33\0\1\u0145\75\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\3\11\1\u01a0\11\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\1\11\1\u01a1\13\11\1\0\5\11\1\0\3\11"+
     "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\6\11"+
-    "\1\u01a0\7\11\1\0\1\111\1\0\6\11\3\0\15\11"+
+    "\1\u01a2\7\11\1\0\1\112\1\0\6\11\3\0\15\11"+
     "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\12\11\1\u01a1\2\11\1\0\5\11\1\0\3\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\12\11\1\u01a3\2\11\1\0\5\11\1\0\3\11"+
     "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\3\11"+
-    "\1\u01a2\1\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\6\11\1\u01a3\7\11\1\0\1\111"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\3\11"+
+    "\1\u01a4\1\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\6\11\1\u01a5\7\11\1\0\1\112"+
     "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
     "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\7\11\1\u01a4\5\11"+
+    "\1\0\1\112\1\0\6\11\3\0\7\11\1\u01a6\5\11"+
     "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\6\11\1\u01a5\7\11\1\0\1\111"+
+    "\1\0\11\11\13\0\6\11\1\u01a7\7\11\1\0\1\112"+
     "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
     "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\2\11"+
-    "\1\u01a6\2\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\12\11\1\u01a7\2\11\1\0\5\11\1\0\3\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\2\11"+
+    "\1\u01a8\2\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\12\11\1\u01a9\2\11\1\0\5\11\1\0\3\11"+
     "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\10\11"+
-    "\1\u016e\1\11\1\u01a8\3\11\1\0\1\111\1\0\6\11"+
-    "\3\0\1\11\1\u016f\12\11\1\u01a9\1\0\5\11\1\0"+
+    "\1\u0170\1\11\1\u01aa\3\11\1\0\1\112\1\0\6\11"+
+    "\3\0\1\11\1\u0171\12\11\1\u01ab\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\10\11\1\u01aa\1\11\1\u01a8\3\11\1\0\1\111\1\0"+
-    "\6\11\3\0\1\11\1\u016f\12\11\1\u01a9\1\0\5\11"+
+    "\10\11\1\u01ac\1\11\1\u01aa\3\11\1\0\1\112\1\0"+
+    "\6\11\3\0\1\11\1\u0171\12\11\1\u01ab\1\0\5\11"+
     "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\3\11"+
-    "\1\u01ab\11\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\6\11\1\u01ac\7\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\5\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\3\11"+
+    "\1\u01ad\11\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\6\11\1\u01ae\7\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\5\11"+
     "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\10\11\1\u01ad\5\11\1\0\1\111\1\0\6\11"+
+    "\13\0\10\11\1\u01af\5\11\1\0\1\112\1\0\6\11"+
     "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\1\u01ae\14\11\1\0\5\11\1\0"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\1\u01b0\14\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\10\11\1\u01af\5\11\1\0\1\111\1\0\6\11\3\0"+
-    "\1\11\1\u016f\13\11\1\0\5\11\1\0\3\11\4\0"+
+    "\10\11\1\u01b1\5\11\1\0\1\112\1\0\6\11\3\0"+
+    "\1\11\1\u0171\13\11\1\0\5\11\1\0\3\11\4\0"+
     "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\6\11\1\u01b0\6\11\1\0"+
+    "\1\112\1\0\6\11\3\0\6\11\1\u01b2\6\11\1\0"+
     "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\15\11\1\0\1\u01b1\4\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\1\u01b2\4\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\1\u01b3\4\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\1\u01b4\4\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\6\11\1\u01b3"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\6\11\1\u01b5"+
     "\6\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\2\11\1\u01b4\12\11\1\0\5\11\1\0"+
+    "\1\11\1\0\11\11\13\0\10\11\1\u01b6\5\11\1\0"+
+    "\1\112\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\6\11\1\u01b5"+
-    "\6\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\4\11\1\u01b6\10\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\6\11\1\u01b7\7\11\1\0\1\111\1\0\6\11\3\0"+
-    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\10\11\1\u01b8\5\11\1\0"+
-    "\1\111\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\7\11\1\u01b9"+
-    "\5\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\12\11\1\u01ba\2\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\6\11\1\u01bb\7\11\1\0\1\111\1\0\6\11\1\u01bc"+
-    "\2\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\1\u017a\1\11\1\0\1\11\1\0\11\11\13\0"+
-    "\10\11\1\u01bd\1\11\1\u01be\3\11\1\0\1\111\1\0"+
-    "\6\11\3\0\1\11\1\u01bf\12\11\1\u01c0\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\10\11\1\u01c1\5\11\1\0\1\111\1\0\6\11"+
-    "\3\0\2\11\1\u01c2\12\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\4\11\1\u01c3\10\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\7\11\1\u01c4\5\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\10\11"+
-    "\1\u01bd\5\11\1\0\1\111\1\0\6\11\3\0\1\11"+
-    "\1\u01bf\13\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\3\11\1\u01c5\11\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\4\11\1\u01c6\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\11\11\1\u01c7\3\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\13\11\1\u01c8"+
-    "\1\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\2\11\1\u01c9\12\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\1\11\1\u01ca"+
-    "\13\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\7\11\1\u01cb\5\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\1\u01cc\2\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\7\11\1\u01cd\5\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\1\11\1\u01ce\13\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\12\11\1\u01cf\2\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\1\u01d0"+
-    "\1\0\4\u01d0\4\0\1\u01d0\2\0\1\u01d0\4\0\1\u01d0"+
-    "\1\0\1\u01d0\5\0\1\u01d0\1\0\1\u01d0\3\0\1\u01d0"+
-    "\5\0\1\u01d0\11\0\1\u01d0\11\0\1\u01d0\1\0\3\u01d0"+
-    "\1\0\2\u01d0\14\0\1\u01d1\1\0\4\u01d1\4\0\1\u01d1"+
-    "\2\0\1\u01d1\4\0\1\u01d1\1\0\1\u01d1\5\0\1\u01d1"+
-    "\1\0\1\u01d1\3\0\1\u01d1\5\0\1\u01d1\11\0\1\u01d1"+
-    "\11\0\1\u01d1\1\0\3\u01d1\1\0\2\u01d1\14\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\6\11\1\u015d\6\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\10\11\1\u01d2\5\11\1\0\1\111"+
-    "\1\0\2\11\1\u01d2\3\11\3\0\15\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\1\11\1\u01d3\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\2\11\1\u01d4\12\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\2\11\1\u01d5\13\11\1\0\1\111\1\0\6\11\3\0"+
-    "\1\u01d6\2\11\1\u01d7\7\11\1\u01d8\1\11\1\0\4\11"+
-    "\1\u01d9\1\0\3\11\4\0\1\u01da\1\11\1\0\1\11"+
-    "\1\0\5\11\1\u01db\3\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\6\11\1\u01dc\6\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\11\11"+
-    "\1\u01dd\3\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\13\11\1\u01de\1\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\12\11\1\u01df\3\11\1\0\1\111\1\0\6\11"+
-    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\6\11\1\u01e0\6\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\2\11\1\u01e1\13\11\1\0\1\111\1\0\6\11"+
-    "\3\0\1\u01e2\2\11\1\u01e3\7\11\1\u01d8\1\11\1\0"+
-    "\4\11\1\u01d9\1\0\3\11\4\0\1\u01da\1\11\1\0"+
-    "\1\11\1\0\5\11\1\u01db\3\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\2\11\1\u01e4\12\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\14\11\1\u01e5\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\u01e6\1\11\1\0\11\11\13\0\6\11"+
-    "\1\u01e7\7\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\136\4\0\5\136\2\0\7\136"+
-    "\1\u01e8\6\136\1\0\11\136\3\0\3\136\1\0\1\136"+
-    "\1\0\11\136\13\0\16\136\4\0\5\136\2\0\15\136"+
-    "\1\u01e9\1\0\11\136\3\0\3\136\1\0\1\136\1\0"+
-    "\11\136\13\0\16\136\4\0\5\136\2\0\4\136\1\u01ea"+
-    "\11\136\1\0\11\136\3\0\3\136\1\0\1\136\1\0"+
-    "\11\136\13\0\16\136\4\0\5\136\2\0\16\136\1\0"+
-    "\1\u01eb\10\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\2\136\1\u01ec\13\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\16\136\1\0\2\136"+
-    "\1\u01ed\6\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\13\136\1\u01ee\2\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\12\136\1\u01ef\3\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\10\136\1\u01f0\5\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\4\136\1\u01f1\11\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\1\136\1\u01f2\14\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\7\136\1\u01f3\6\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\11\136\1\u01f4\4\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\14\136\1\u01f5\1\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\14\136\1\u01f6\1\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\12\136\1\u01f7\3\136\4\0\5\136\2\0\2\136"+
-    "\1\u01f8\1\u01f9\1\u01fa\1\136\1\u01fb\2\136\1\u01fc\4\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\3\136\1\u01fd\12\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\4\136\1\u01fe\11\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\14\136\1\u01ff\1\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\6\11\1\u0200\7\11\1\0\1\111\1\0\6\11"+
-    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\13\11\1\u0201\1\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\12\11\1\u0202\3\11\1\0\1\111\1\0\6\11"+
-    "\3\0\14\11\1\u0203\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\6\11\1\u0204"+
-    "\7\11\1\0\1\111\1\0\6\11\1\u0205\2\0\7\11"+
-    "\1\u0206\5\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\6\11\1\u0207\7\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\12\11"+
-    "\1\u0208\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\2\11\1\u0209\12\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\2\11\1\u020a\13\11\1\0\1\111\1\0\6\11"+
-    "\3\0\1\u020b\2\11\1\u020c\7\11\1\u020d\1\11\1\0"+
-    "\4\11\1\u020e\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\6\11\1\u020f\7\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\2\11\1\u0210\12\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\1\11\1\u0211\13\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\13\11\1\u0212\1\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\11\11\1\u0213\3\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\6\11\1\u0214\6\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\2\11\1\u0215\13\11\1\0\1\111"+
-    "\1\0\6\11\3\0\1\u0216\2\11\1\u0217\7\11\1\u0218"+
-    "\1\11\1\0\4\11\1\u0219\1\0\3\11\4\0\1\u021a"+
-    "\1\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\1\u015d\14\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\12\11"+
-    "\1\u021b\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\11\11\1\u021c\3\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\10\11"+
-    "\1\u0179\4\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\7\11\1\u021d\5\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\6\11"+
-    "\1\355\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\14\11\1\u0214\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\12\11\1\u017a"+
-    "\2\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\1\u021e\14\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\12\11\1\u021f\2\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\10\11\1\u0220\5\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\10\11\1\u0221\4\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\11\11\1\u0222\3\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\13\11\1\u0223\1\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\6\11\1\u0224\1\u0225\3\11\1\u0226\1\11\1\0"+
-    "\4\11\1\u0227\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\25\0\1\u0228\62\0\1\u0229\20\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\11\11\1\u022a\3\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\1\11\1\u022b\13\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\13\11\1\u022c\1\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\13\11\1\u022d\1\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\11\11\1\u022e\3\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\7\11\1\u022f\5\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\1\u0230\14\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\7\11\1\u0231\5\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\10\11\1\u0232"+
-    "\5\11\1\0\1\111\1\0\6\11\3\0\15\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\6\11\1\u0233\7\11\1\0\1\111\1\0"+
-    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\12\11\1\u0234\2\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\11\11\1\u0235\3\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\7\11\1\u0236\5\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\6\11\1\u0237\6\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\10\11\1\u0238"+
-    "\5\11\1\0\1\111\1\0\6\11\3\0\15\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\110\0\1\u0239\3\0\1\u023a\14\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\15\11\1\0\1\11\1\u023b"+
-    "\3\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\6\11\1\u023c\6\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\10\11\1\u023d"+
-    "\5\11\1\0\1\111\1\0\6\11\3\0\15\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\1\u023e\1\0\4\u023e\4\0\1\u023e\2\0"+
-    "\1\u023e\4\0\1\u023e\1\0\1\u023e\5\0\1\u023e\1\0"+
-    "\1\u023e\3\0\1\u023e\5\0\1\u023e\11\0\1\u023e\11\0"+
-    "\1\u023e\1\0\3\u023e\1\0\2\u023e\14\0\1\u023f\1\0"+
-    "\4\u023f\4\0\1\u023f\2\0\1\u023f\4\0\1\u023f\1\0"+
-    "\1\u023f\5\0\1\u023f\1\0\1\u023f\3\0\1\u023f\5\0"+
-    "\1\u023f\11\0\1\u023f\11\0\1\u023f\1\0\3\u023f\1\0"+
-    "\2\u023f\14\0\13\11\1\u0240\2\11\1\0\1\111\1\0"+
-    "\6\11\3\0\12\11\1\u0240\2\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\1\11\1\u0241"+
-    "\13\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\13\11\1\u0242\1\11\1\0\2\11\1\u0243"+
-    "\2\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\15\11\1\0\1\u0244\4\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\1\u0245\4\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\2\11\1\u0246\13\11\1\0\1\111\1\0\6\11\3\0"+
-    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\10\11\1\u0247\5\11\1\0"+
-    "\1\111\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\13\11\1\u0248"+
-    "\1\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\4\11\1\u0249\10\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\15\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\u024a\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\1\u024b\11\11\1\u024c\2\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\6\11"+
-    "\1\u024d\7\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\2\11\1\u024e\12\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\6\11"+
-    "\1\u024f\7\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\13\11\1\u0250\1\11\1\0\2\11\1\u0251\2\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\1\u0252\4\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\15\11\1\0\1\u0253\4\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\7\11\1\u0254\5\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\6\11\1\u0255\7\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\1\u0256"+
-    "\115\0\16\11\1\0\1\111\1\0\6\11\3\0\12\11"+
-    "\1\u0257\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\136\4\0\5\136"+
-    "\2\0\11\136\1\u0258\4\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\3\136\1\u0259\12\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\4\136\1\u025a\11\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\6\136\1\u025b\7\136"+
-    "\4\0\5\136\2\0\16\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\3\136\1\u025c\12\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\12\136\1\u025d\3\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\7\136\1\u025e\6\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\7\136\1\u025f\6\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\15\136\1\u0260\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\136\4\0\5\136\2\0"+
-    "\16\136\1\0\1\136\1\u0261\7\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\136\4\0\5\136\2\0"+
-    "\16\136\1\0\1\136\1\u0262\7\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\10\136\1\u0263\5\136\4\0"+
-    "\5\136\2\0\16\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\136\4\0\5\136\2\0"+
-    "\14\136\1\u0264\1\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\136\4\0\5\136\2\0"+
-    "\10\136\1\u0265\1\136\1\u0266\3\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\5\136\1\u0267\1\u0268\7\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\3\136\1\u0269\12\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\7\136\1\u026a\6\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\10\136\1\u026b\5\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\13\136\1\u026c\2\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\15\136\1\u026d\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\1\u026e\14\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\11\11"+
-    "\1\u026f\3\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\1\11\1\u0270\13\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\13\11"+
-    "\1\u0271\1\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\1\u0272\2\11\1\u0273\11\11\1\0"+
-    "\4\11\1\u0274\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\63\0\1\u0275\21\0\1\u0276\2\0\1\u0277"+
-    "\20\0\16\11\1\0\1\111\1\0\6\11\3\0\4\11"+
-    "\1\u0278\10\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\1\u0279\14\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\13\11\1\u027a"+
-    "\1\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\1\u027b\14\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\13\11\1\u027c\1\11"+
-    "\1\0\2\11\1\u027d\2\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\1\u027e\4\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\15\11\1\0"+
-    "\1\u027f\4\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\2\11\1\u0280\13\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\10\11"+
-    "\1\u0281\5\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\1\11\1\u0282\13\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\12\11\1\u0283\2\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\13\11\1\u0284\1\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\4\11\1\u0285\10\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\12\11\1\u0286\2\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\6\11"+
-    "\1\u0287\7\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\13\11\1\u0288\1\11\1\0\2\11\1\u0289\2\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\1\u028a\4\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\15\11\1\0\1\u028b\4\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\2\11"+
-    "\1\u028c\13\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\10\11\1\u028d\5\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\13\11\1\u028e\1\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\12\11\1\u028f\3\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\12\11\1\u0290\2\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\13\11\1\u0291\1\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\12\11\1\u0292\2\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\6\11\1\u0293\6\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\11\11\1\u0294\3\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\6\11\1\u0179\6\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\6\11"+
-    "\1\u0295\7\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\7\11\1\u0296\5\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\u0297\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\6\11"+
-    "\1\u0298\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\2\11\1\u0299\13\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\10\11\1\u029a\5\11\1\0\1\111\1\0\6\11"+
-    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\54\0\1\u029b\152\0\1\u029c"+
-    "\17\0\16\11\1\0\1\111\1\0\6\11\3\0\12\11"+
-    "\1\u029d\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\13\11\1\u029e\1\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\11\11"+
-    "\1\u029f\3\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\4\11\1\u02a0\10\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\3\11"+
-    "\1\u02a1\11\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\7\11\1\u02a2\5\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\1\u02a3\4\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\13\11\1\u02a4\1\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\6\11\1\u02a5"+
-    "\6\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\1\u02a6\1\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\1\u02a7\2\0\15\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\15\11\1\0\1\11\1\u0286\3\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\6\11\1\u02a8\6\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\6\11\1\u02a9\7\11\1\0\1\111\1\0"+
-    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\1\u02aa\14\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\111\0\1\u02ab\113\0\1\u02ac\21\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\3\11\1\u015d\11\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\u02ad\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\1\11\1\u017a\13\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\1\u02ae"+
-    "\1\0\4\u02ae\4\0\1\u02ae\2\0\1\u02ae\4\0\1\u02ae"+
-    "\1\0\1\u02ae\5\0\1\u02ae\1\0\1\u02ae\3\0\1\u02ae"+
-    "\5\0\1\u02ae\11\0\1\u02ae\11\0\1\u02ae\1\0\3\u02ae"+
-    "\1\0\2\u02ae\14\0\14\11\1\301\1\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\2\11\1\301\2\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\6\11\1\u02af\7\11\1\0\1\111\1\0\6\11"+
-    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\13\11\1\u02b0\1\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\12\11"+
-    "\1\u02b1\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\2\11\1\u02b2\12\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\13\11"+
-    "\1\u02b3\1\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\1\11\1\u02b4\7\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\14\11"+
-    "\1\u02b5\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\1\11\1\u02b6\13\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\10\11\1\u02b7\5\11\1\0\1\111\1\0\6\11\3\0"+
-    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\1\u02b8\115\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\6\11\1\u02b9\6\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\10\11\1\u02ba\5\11\1\0\1\111\1\0"+
-    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\2\11\1\u02bb"+
-    "\7\11\1\u01be\3\11\1\0\1\111\1\0\6\11\3\0"+
-    "\1\u02bc\1\u01bf\1\11\1\u02bd\10\11\1\u01c0\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\1\u017a"+
-    "\14\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\10\11\1\u02be\5\11\1\0"+
-    "\1\111\1\0\6\11\3\0\3\11\1\u02bf\1\11\1\u02c0"+
-    "\5\11\1\u02c1\1\u02c2\1\0\5\11\1\0\3\11\4\0"+
-    "\1\u02c3\1\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\13\11\1\u02c4\1\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\12\11\1\u02c5\2\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\2\11\1\u02c6\12\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\13\11\1\u02c7\1\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\7\11\1\u02c8\5\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\11\11\1\u02c9\3\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\103\0\1\u02ca"+
-    "\25\0\16\11\1\0\1\111\1\0\6\11\3\0\13\11"+
-    "\1\u02cb\1\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\136\4\0\5\136"+
-    "\2\0\7\136\1\u02cc\6\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\2\136\1\u02cd\13\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\15\136\1\u02ce\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\136\4\0\5\136\2\0"+
-    "\13\136\1\u02cf\2\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\136\4\0\5\136\2\0"+
-    "\14\136\1\u02d0\1\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\6\136\1\u02d1\7\136\4\0"+
-    "\5\136\2\0\16\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\6\136\1\u02d2\7\136\4\0"+
-    "\5\136\2\0\16\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\136\4\0\5\136\2\0"+
-    "\5\136\1\u02d3\10\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\136\4\0\5\136\2\0"+
-    "\5\136\1\u02d4\10\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\136\4\0\5\136\2\0"+
-    "\7\136\1\u02d5\6\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\136\4\0\5\136\2\0"+
-    "\1\136\1\u02d6\14\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\136\4\0\5\136\2\0"+
-    "\10\136\1\u02d7\5\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\136\4\0\5\136\2\0"+
-    "\12\136\1\u02d8\3\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\2\136\1\u02d9\13\136\4\0"+
-    "\5\136\2\0\16\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\136\4\0\5\136\2\0"+
-    "\3\136\1\u02da\12\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\136\4\0\5\136\2\0"+
-    "\1\136\1\u02db\6\136\1\u02dc\5\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\13\136\1\u02dd\2\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\13\136\1\u02de\2\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\7\136\1\u02df\6\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\15\11\1\0\1\u02e0\4\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\1\11\1\u02e1\3\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\13\11\1\u02e2\1\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\4\11"+
-    "\1\u02e3\10\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\1\11\1\u02e4\13\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\12\11"+
-    "\1\u02e5\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\10\11\1\u02e6\5\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\23\0\1\u02e7\203\0\1\u02e8\17\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\1\u02e9\14\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\2\11\1\u02ea"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\2\11\1\u01b7"+
     "\12\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\6\11\1\u02eb\7\11\1\0"+
-    "\1\111\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\6\11\1\u01b8\6\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\12\11\1\u015d"+
-    "\2\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\13\11\1\u02ec\1\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\12\11\1\u02ed"+
-    "\2\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\2\11\1\u02ee\12\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\13\11\1\u02ef"+
-    "\1\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\1\11\1\u02f0\7\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\14\11\1\u02ed"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\6\11\1\u02f1\6\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\10\11"+
-    "\1\u02f2\5\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\2\11\1\u0213\12\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\2\11"+
-    "\1\u02f3\13\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\1\u02f4\2\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\3\11\1\u02f5\11\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\13\11\1\u02f6\1\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\12\11\1\u02f7\2\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\2\11\1\u02f8\12\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\13\11\1\u02f9\1\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\1\11\1\u02fa\7\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\14\11\1\u02fb\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\1\11"+
-    "\1\u02fc\13\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\5\11\1\u015d\7\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\1\u02fd\2\0"+
-    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\11\11\1\u02fe\3\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\6\11\1\u02ff"+
-    "\6\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\6\11\1\u0300\7\11\1\0"+
-    "\1\111\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\12\11\1\u0301"+
-    "\2\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\13\11\1\u0302\1\11\1\0\4\11\1\u0303"+
-    "\1\0\3\11\4\0\1\u0304\1\11\1\0\1\11\1\0"+
-    "\11\11\13\0\6\11\1\u0305\7\11\1\0\1\111\1\0"+
-    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\1\u0306\14\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\3\11"+
-    "\1\u0307\11\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\1\11\1\u0308\7\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\14\11"+
-    "\1\u0309\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\60\0\1\u030a\50\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\2\11\1\u022a\12\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\15\11\1\0\1\11\1\u029d\3\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\2\11\1\u030b"+
-    "\13\11\1\0\1\111\1\0\6\11\3\0\15\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\12\11\1\u030c\2\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\2\11\1\u030d\12\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\6\11\1\u030e\7\11\1\0\1\111\1\0"+
-    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\7\11\1\u030f\5\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\11\11\1\u027b\3\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\6\11\1\u0310\6\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\46\0\1\u0311\40\0\1\u0312\21\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\14\11\1\u0313\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\12\11"+
-    "\1\u0314\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\6\11\1\u0315\7\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\1\u0316\115\0\12\11\1\u0317\3\11\1\0\1\111"+
-    "\1\0\6\11\3\0\1\u0318\7\11\1\u0319\4\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\1\11\1\u031a\13\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\6\11\1\u031b\6\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\7\11\1\u031b\5\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\7\11\1\u031c\5\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\6\11\1\u031d\6\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\6\11\1\u031e\6\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\2\11\1\u031f\12\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\1\u0320\14\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\103\0\1\u0321\25\0\6\11\1\u0322\7\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\2\11\1\u0323\12\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\15\11\1\0\2\11\1\u0324\2\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\1\u0325"+
-    "\4\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\15\11\1\0\1\u0326\4\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\11\11\1\u0327\3\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\4\11"+
-    "\1\u0328\5\11\1\u0329\2\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\13\11\1\u032a\1\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\2\11\1\u032b\13\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\10\11"+
-    "\1\u032c\5\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\10\11\1\u032d\5\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\1\11\1\u032e\13\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\6\11\1\u032f\6\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\7\11\1\u032f\5\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\7\11\1\u0330\5\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\2\11\1\u0331\12\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\6\11\1\u0332\6\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\1\u0333"+
-    "\1\0\4\u0333\4\0\1\u0333\2\0\1\u0333\4\0\1\u0333"+
-    "\1\0\1\u0333\5\0\1\u0333\1\0\1\u0333\3\0\1\u0333"+
-    "\5\0\1\u0333\11\0\1\u0333\11\0\1\u0333\1\0\3\u0333"+
-    "\1\0\2\u0333\14\0\6\11\1\u0334\7\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\136"+
-    "\4\0\5\136\2\0\12\136\1\u0335\3\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\2\136\1\u0336\13\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\3\136\1\u0337\12\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\10\136"+
-    "\1\u0338\5\136\4\0\5\136\2\0\16\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\13\136\1\u0339\2\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\4\136\1\u033a\11\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\4\136\1\u033b\11\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\7\136\1\u033c\6\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\7\136\1\u033d\6\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\2\136\1\u033e\13\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\3\136\1\u033f\12\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\3\136\1\u0340\12\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\14\136\1\u0341\1\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\3\136\1\u0342\12\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\10\136\1\u0343\5\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\16\136\1\0\3\136\1\u0344\5\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\3\136\1\u0345\12\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\16\136\1\0\1\u0346\10\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\16\136\1\u0347\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\136\4\0\5\136\2\0"+
-    "\10\136\1\u0348\5\136\1\0\11\136\3\0\3\136\1\0"+
-    "\1\136\1\0\11\136\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\2\11\1\u0349\12\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\2\11\1\u034a"+
-    "\12\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\2\11\1\u034b\13\11\1\0"+
-    "\1\111\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\2\11\1\u034c"+
-    "\12\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\7\11\1\u034d\5\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\14\11\1\u034e"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\64\0\1\u034f\44\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\12\11\1\u0350\2\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\3\11"+
-    "\1\u0351\11\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\10\11\1\u01bd\1\11"+
-    "\1\u01be\3\11\1\0\1\111\1\0\6\11\3\0\14\11"+
-    "\1\u01c0\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\1\11\1\u0352\13\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\6\11\1\u02e1"+
-    "\6\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\7\11\1\u02e1\5\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\7\11\1\u034a"+
-    "\5\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\6\11\1\u0353\6\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\11\11\1\u0354"+
-    "\3\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\13\11\1\u0355\1\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\1\11\1\u0356"+
-    "\13\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\107\0\1\u0312\21\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\15\11\1\0\4\11\1\u0357"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\1\11"+
-    "\1\u0358\13\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\6\11\1\u0359\6\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\7\11"+
-    "\1\u0359\5\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\7\11\1\u035a\5\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\6\11"+
-    "\1\u035b\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\6\11\1\u035c\6\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\2\11"+
-    "\1\u035d\12\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\46\0\1\u035e\40\0\1\u0312"+
-    "\21\0\10\11\1\u035f\5\11\1\0\1\111\1\0\6\11"+
-    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\14\11\1\u015d\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\10\11\1\u0360\5\11\1\0\1\111\1\0\6\11\3\0"+
-    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\1\u0361\2\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\2\11"+
-    "\1\u0362\13\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\10\11\1\u0363\5\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\13\11\1\u0364\1\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\6\11\1\u0365\6\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\6\11\1\u0366\6\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\4\11\1\u0367\10\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\6\11\1\u0368\6\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\6\11\1\u0369\6\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\55\0\1\u036a"+
-    "\53\0\16\11\1\0\1\111\1\0\6\11\3\0\1\11"+
-    "\1\u036b\13\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\2\11\1\u036c\12\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\2\11\1\u036d\2\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\12\11\1\u036e\3\11"+
-    "\1\0\1\111\1\0\6\11\3\0\1\u036f\7\11\1\u0370"+
-    "\4\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\7\11\1\u0371\5\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\23\0"+
-    "\1\u0372\141\0\1\u0373\61\0\6\11\1\u0374\7\11\1\0"+
-    "\1\111\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\13\11\1\u0375"+
-    "\1\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\6\11\1\u0169\6\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\103\0"+
-    "\1\u0376\25\0\10\11\1\u0377\5\11\1\0\1\111\1\0"+
-    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\1\11\1\u0378\13\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\6\11\1\u0379\6\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\6\11\1\u037a\6\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\6\11\1\u037b\7\11\1\0\1\111\1\0"+
-    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\12\11\1\u031b\2\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\1\u037c\14\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\6\11\1\u037d\7\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\12\11"+
-    "\1\u037e\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\3\11\1\u037f\1\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\1\u0380\1\0\4\u0380\4\0\1\u0380\2\0\1\u0380"+
-    "\4\0\1\u0380\1\0\1\u0380\5\0\1\u0380\1\0\1\u0380"+
-    "\3\0\1\u0380\5\0\1\u0380\11\0\1\u0380\11\0\1\u0380"+
-    "\1\0\3\u0380\1\0\2\u0380\14\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\13\11\1\u0381\1\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\12\11"+
-    "\1\u0382\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\12\11\1\u036b\2\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\2\11"+
-    "\1\u0383\12\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\13\11\1\u0384\1\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\12\11"+
-    "\1\u0385\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\5\11\1\u0386\7\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\2\11"+
-    "\1\u0387\12\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\1\11\1\u0388\13\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\1\11\1\u0389\7\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\7\11\1\u038a\5\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\7\11"+
-    "\1\u038b\5\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\6\11\1\u038c\6\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\12\11"+
-    "\1\u032f\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\2\11\1\u038d\2\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\4\11\1\u038e\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\10\11\1\u01bd\5\11\1\0"+
-    "\1\111\1\0\6\11\3\0\1\11\1\u01bf\12\11\1\u01c0"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\136\4\0\5\136\2\0\13\136"+
-    "\1\u038f\2\136\1\0\11\136\3\0\3\136\1\0\1\136"+
-    "\1\0\11\136\13\0\16\136\4\0\5\136\2\0\13\136"+
-    "\1\u0390\2\136\1\0\11\136\3\0\3\136\1\0\1\136"+
-    "\1\0\11\136\13\0\16\136\4\0\5\136\2\0\14\136"+
-    "\1\u0391\1\136\1\0\11\136\3\0\3\136\1\0\1\136"+
-    "\1\0\11\136\13\0\16\136\4\0\5\136\2\0\3\136"+
-    "\1\u0392\12\136\1\0\11\136\3\0\3\136\1\0\1\136"+
-    "\1\0\11\136\13\0\16\136\4\0\5\136\2\0\16\136"+
-    "\1\0\4\136\1\u0393\4\136\3\0\3\136\1\0\1\136"+
-    "\1\0\11\136\13\0\16\136\4\0\5\136\2\0\16\136"+
-    "\1\0\4\136\1\u0394\4\136\3\0\3\136\1\0\1\136"+
-    "\1\0\11\136\13\0\16\136\4\0\5\136\2\0\15\136"+
-    "\1\u0395\1\0\11\136\3\0\3\136\1\0\1\136\1\0"+
-    "\11\136\13\0\16\136\4\0\5\136\2\0\2\136\1\u0396"+
-    "\13\136\1\0\11\136\3\0\3\136\1\0\1\136\1\0"+
-    "\11\136\13\0\16\136\4\0\5\136\2\0\16\136\1\0"+
-    "\2\136\1\u0397\6\136\3\0\3\136\1\0\1\136\1\0"+
-    "\11\136\13\0\16\136\4\0\5\136\2\0\13\136\1\u0398"+
-    "\2\136\1\0\11\136\3\0\3\136\1\0\1\136\1\0"+
-    "\11\136\13\0\16\136\4\0\5\136\2\0\12\136\1\u0399"+
-    "\3\136\1\0\11\136\3\0\3\136\1\0\1\136\1\0"+
-    "\11\136\13\0\16\136\4\0\5\136\2\0\4\136\1\u039a"+
-    "\11\136\1\0\11\136\3\0\3\136\1\0\1\136\1\0"+
-    "\11\136\13\0\16\136\4\0\5\136\2\0\7\136\1\u039b"+
-    "\6\136\1\0\11\136\3\0\3\136\1\0\1\136\1\0"+
-    "\11\136\13\0\16\136\4\0\5\136\2\0\11\136\1\u039c"+
-    "\4\136\1\0\11\136\3\0\3\136\1\0\1\136\1\0"+
-    "\11\136\13\0\16\136\4\0\5\136\2\0\14\136\1\u039d"+
-    "\1\136\1\0\11\136\3\0\3\136\1\0\1\136\1\0"+
-    "\11\136\13\0\16\136\4\0\5\136\2\0\2\136\1\u039e"+
-    "\13\136\1\0\11\136\3\0\3\136\1\0\1\136\1\0"+
-    "\11\136\13\0\16\136\4\0\5\136\2\0\4\136\1\u039f"+
-    "\11\136\1\0\11\136\3\0\3\136\1\0\1\136\1\0"+
-    "\11\136\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\11\11\1\u03a0\3\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\12\11\1\u02e1\2\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\1\11\1\u02ed\13\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\3\11\1\u03a1\11\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\10\11\1\u03a2\5\11\1\0\1\111\1\0"+
-    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\6\11\1\u03a3\6\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\63\0\1\u03a4\45\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\13\11\1\u03a5\1\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\12\11\1\u03a6"+
-    "\2\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\6\11\1\u03a7\6\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\1\u034a\14\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\15\11\1\0\1\11\1\u03a8\3\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\11\11\1\u015d\3\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\6\11\1\u0286\6\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\10\11"+
-    "\1\u03a9\5\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\6\11\1\u03aa\6\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\12\11\1\u0359\2\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\1\u03ab\14\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\6\11\1\u03ac"+
-    "\7\11\1\0\1\111\1\0\6\11\3\0\15\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\12\11\1\u03ad\2\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\23\0\1\u03ae\105\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\15\11\1\0"+
-    "\5\11\1\0\3\11\4\0\1\11\1\u0292\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\11\11\1\u03af\3\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\46\0\1\u035e"+
-    "\62\0\16\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\1\11\1\u03b0\7\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\14\11\1\u03b1\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\10\11\1\u03b2\5\11\1\0\1\111\1\0\6\11\3\0"+
-    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\11\11\1\u03b3\3\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\u03b4\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\5\11\1\u03b5"+
-    "\7\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\1\11\1\u03b6\13\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\1\u03b7\14\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\1\u01bc\2\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\110\0\1\u03b8\20\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\6\11\1\u029d"+
-    "\6\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\11\11\1\u03b9\3\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\10\11\1\u03ba\5\11\1\0\1\111\1\0\6\11\3\0"+
-    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\1\11\1\u03bb\13\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\6\11\1\u03bc"+
-    "\6\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\10\11\1\u03bd\5\11\1\0"+
-    "\1\111\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\57\0"+
-    "\1\u03be\117\0\1\u03bf\47\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\3\11\1\u03c0\11\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\6\11\1\u03c1\7\11\1\0\1\111\1\0\6\11\3\0"+
-    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\1\u03c2\1\0\4\u03c2\4\0"+
-    "\1\u03c2\2\0\1\u03c2\4\0\1\u03c2\1\0\1\u03c2\5\0"+
-    "\1\u03c2\1\0\1\u03c2\3\0\1\u03c2\5\0\1\u03c2\11\0"+
-    "\1\u03c2\11\0\1\u03c2\1\0\3\u03c2\1\0\2\u03c2\14\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\6\11\1\u03c3"+
-    "\6\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\2\11\1\u03c4\12\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\12\11\1\u03c5"+
-    "\2\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\2\11\1\u03c6\12\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\15\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\5\11\1\u01db\3\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\12\11\1\u031e\2\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\15\11\1\0"+
-    "\5\11\1\0\3\11\4\0\1\u01da\1\11\1\0\1\11"+
-    "\1\0\5\11\1\u01db\3\11\13\0\10\11\1\u03c7\5\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\12\11\1\u036d\3\11\1\0\1\111\1\0\6\11"+
-    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\10\11\1\u03c8\5\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\7\11"+
-    "\1\u029d\5\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\7\11\1\u022a\5\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\6\11"+
-    "\1\u03c9\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\6\11\1\u03ca\6\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\12\11"+
-    "\1\u03cb\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\2\11\1\u03cc\2\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\6\11"+
-    "\1\u03cd\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\6\11\1\u03ce\6\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\12\11"+
-    "\1\u03cf\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\2\11\1\u03d0\12\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\6\11\1\u03d1\7\11\1\0\1\111\1\0\6\11"+
-    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\6\11\1\u03d2\7\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\136\4\0\5\136\2\0\4\136\1\u03d3\11\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\3\136\1\u03d4\12\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\12\136\1\u03d5\3\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\13\136\1\u03d6\2\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\10\136\1\u03d7\5\136\4\0\5\136\2\0\16\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\10\136\1\u03d8\5\136\4\0\5\136\2\0\16\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\6\136\1\u03d9\7\136\4\0\5\136\2\0\16\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\3\136\1\u03da\12\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\12\136\1\u03db\3\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\7\136\1\u03dc\6\136"+
-    "\1\0\11\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\13\0\16\136\4\0\5\136\2\0\15\136\1\u03dd\1\0"+
-    "\11\136\3\0\3\136\1\0\1\136\1\0\11\136\13\0"+
-    "\16\136\4\0\5\136\2\0\15\136\1\u03de\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\14\136\1\u03df\1\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\1\11"+
-    "\1\u03e0\3\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\3\11\1\u03a6\11\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\11\11\1\u03e1\3\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\1\u03e2\2\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\110\0\1\u03e3\20\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\7\11\1\u015d"+
-    "\5\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\2\11\1\u03e4\12\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\12\11\1\u03e5"+
-    "\2\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\12\11\1\u03e6\2\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\2\11\1\u03e7"+
-    "\12\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\12\11\1\u035c\2\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\15\11\1\0"+
-    "\5\11\1\0\3\11\4\0\1\u021a\1\11\1\0\1\11"+
-    "\1\0\11\11\13\0\10\11\1\u03e8\5\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\57\0\1\u03e9"+
-    "\51\0\16\11\1\0\1\111\1\0\6\11\3\0\1\11"+
-    "\1\u03ea\13\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\6\11\1\u03eb\6\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\6\11"+
-    "\1\u03ec\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\14\11\1\u03ed\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\12\11\1\u03ee"+
-    "\2\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\10\11\1\u03ef\5\11\1\0"+
-    "\1\111\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\12\11\1\u03f0"+
-    "\2\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\12\11\1\u03f1\2\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\12\11\1\u0369"+
-    "\2\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\111\0\1\u03f2\17\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\1\u03f3\14\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\6\11"+
-    "\1\u03f4\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\2\11\1\u03f5\12\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\12\11"+
-    "\1\u03f6\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\12\11\1\u03f7\3\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\110\0\1\u03f8\2\0\1\u03f9\63\0\1\u03fa\47\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\2\11"+
-    "\1\u03fb\2\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\10\11\1\u01bd\1\11\1\u01be\3\11"+
-    "\1\0\1\111\1\0\6\11\3\0\1\11\1\u01bf\13\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\1\11\1\u03fc\13\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\3\11\1\u03fd\11\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\15\11\1\0\1\u03fe\4\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\11\11\1\u031b\3\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\1\11\1\u03ff\13\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\13\11\1\u0400\1\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\7\11\1\u0401\5\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\7\11\1\u0402\5\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\10\11\1\u0403\5\11\1\0\1\111\1\0"+
-    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\10\11\1\u0404\4\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\1\u0405\14\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\1\u0406\14\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\4\11\1\u0407"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\4\11\1\u01b9"+
     "\10\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\11\11\1\u032f\3\11\1\0\5\11\1\0"+
+    "\1\11\1\0\11\11\13\0\6\11\1\u01ba\7\11\1\0"+
+    "\1\112\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\14\11\1\u0408"+
+    "\10\11\1\u01bb\5\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\7\11\1\u01bc\5\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\12\11\1\u01bd"+
+    "\2\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\6\11\1\u01be\7\11\1\0"+
+    "\1\112\1\0\6\11\1\u01bf\2\0\15\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\15\11"+
+    "\1\0\5\11\1\0\3\11\4\0\1\u017c\1\11\1\0"+
+    "\1\11\1\0\11\11\13\0\10\11\1\u01c0\1\11\1\u01c1"+
+    "\3\11\1\0\1\112\1\0\6\11\3\0\1\11\1\u01c2"+
+    "\12\11\1\u01c3\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\10\11\1\u01c4\5\11"+
+    "\1\0\1\112\1\0\6\11\3\0\2\11\1\u01c5\12\11"+
     "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\2\11\1\u0409\12\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\10\136"+
-    "\1\u040a\5\136\4\0\5\136\2\0\16\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\13\136\1\u040b\2\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\13\136\1\u040c\2\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\15\136\1\u040d\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\13\136\1\u040e\2\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\14\136\1\u040f\1\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\6\136\1\u0410"+
-    "\7\136\4\0\5\136\2\0\16\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\6\136\1\u0411"+
-    "\7\136\4\0\5\136\2\0\16\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\1\136\1\u0412\14\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\6\11\1\u02aa\6\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\15\11\1\0\1\11\1\u0413\3\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\63\0\1\u0414\24\0"+
-    "\1\u0277\3\0\1\u0415\112\0\1\u0416\17\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\11\11\1\u02e1\3\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\15\11\1\0\1\u029d\4\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\1\u0417\14\11\1\0\5\11\1\0"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\4\11\1\u01c6\10\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\7\11\1\u01c7\5\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\10\11\1\u01c0\5\11\1\0\1\112"+
+    "\1\0\6\11\3\0\1\11\1\u01c2\13\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\3\11"+
+    "\1\u01c8\11\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\4\11\1\u01c9\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\11\11\1\u0359"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\11\11\1\u01ca"+
     "\3\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\1\11\1\u0418\13\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\113\0"+
-    "\1\u03f9\15\0\10\11\1\u0419\5\11\1\0\1\111\1\0"+
-    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\1\u03ef\14\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\6\11\1\u041a\7\11\1\0\1\111\1\0\6\11"+
-    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\6\11\1\u041b\6\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\12\11"+
-    "\1\u03ec\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\10\11\1\u041c\5\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\6\11\1\u041d\7\11\1\0\1\111\1\0\6\11"+
-    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\6\11\1\u03a6\6\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\1\11"+
-    "\1\u041e\13\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\3\11\1\u041f\11\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\1\u0420\4\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\10\11\1\u0421\5\11\1\0"+
-    "\1\111\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\111\0"+
-    "\1\u0422\60\0\1\u0423\54\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\11\11\1\u0424\3\11\1\0\5\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\13\11\1\u01cb\1\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\14\11\1\u0425"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\3\11\1\u0425\11\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\13\11\1\u03fc\1\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\6\11\1\u0426\6\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\11\11\1\u02aa\3\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\12\11\1\u0427\3\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\6\11"+
-    "\1\u0428\7\11\1\0\1\111\1\0\6\11\1\u0429\2\0"+
-    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\1\u042a\14\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\13\11\1\u042b\1\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\12\11\1\u042c\2\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\12\11\1\u042d\2\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\2\11\1\u042e\12\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\2\11\1\u042f\12\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\7\11\1\u0430\5\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\136"+
-    "\4\0\5\136\2\0\14\136\1\u0431\1\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\1\136\1\u0432\14\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\1\136\1\u0433\14\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\3\136\1\u0434\12\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\10\136"+
-    "\1\u0435\5\136\4\0\5\136\2\0\16\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\13\136\1\u0436\2\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\4\136\1\u0437\11\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\4\136\1\u0438\11\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\3\136\1\u0439\12\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\1\u043a\2\0\15\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\23\0\1\u043b\201\0\1\u043c\21\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\15\11\1\0\1\u043d\4\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\6\11"+
-    "\1\u043e\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\11\11\1\u043f\3\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\2\11\1\u0440\13\11\1\0\1\111\1\0\6\11"+
-    "\3\0\11\11\1\u0441\3\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\7\11\1\u03ec\5\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\13\11\1\u0442\1\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\13\11\1\u0302\1\11"+
-    "\1\0\4\11\1\u0303\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\14\11\1\u030f\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\3\11\1\u030f\11\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\13\11\1\u041e\1\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\1\u0443\14\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\1\u0158\14\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\6\11\1\u0444\7\11"+
-    "\1\0\1\111\1\0\6\11\3\0\15\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\2\11"+
-    "\1\u0445\12\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\5\11\1\u0446\3\11"+
-    "\54\0\1\u0447\54\0\16\11\1\0\1\111\1\0\6\11"+
-    "\1\u0429\2\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\7\11\1\u0448\5\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\6\11\1\u0449\7\11\1\0\1\111\1\0"+
-    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\6\11\1\u044a"+
-    "\7\11\1\0\1\111\1\0\6\11\1\u0429\2\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\1\11\1\u0402\13\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\12\11\1\u044b\2\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\7\11\1\u044c\5\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\136"+
-    "\4\0\5\136\2\0\12\136\1\u044d\3\136\1\0\11\136"+
-    "\3\0\3\136\1\0\1\136\1\0\11\136\13\0\16\136"+
-    "\4\0\5\136\2\0\16\136\1\0\1\u044e\10\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\16\136\1\0\1\u044f\10\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\13\136\1\u0450\2\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\14\136\1\u0451\1\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\3\136\1\u0452\12\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\16\136\1\0\4\136\1\u0453\4\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\16\136\1\0\4\136\1\u0454\4\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\2\136\1\u0455\13\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\106\0\1\u0456\73\0\1\u0457"+
-    "\44\0\16\11\1\0\1\111\1\0\6\11\3\0\6\11"+
-    "\1\u0458\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\2\11\1\u0459\12\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\13\11"+
-    "\1\u045a\1\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\11\11\1\u03ec\3\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\2\11"+
-    "\1\u045b\12\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\2\11\1\u045c\12\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\1\u045d"+
-    "\14\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\4\11\1\u045e\10\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\47\0"+
-    "\1\u045f\61\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\5\11\1\u0460\7\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\10\11\1\u0461"+
-    "\5\11\1\0\1\111\1\0\6\11\3\0\15\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\6\11\1\u0462\6\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\2\11\1\u043d\12\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\2\11\1\u0463\12\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\136\4\0"+
-    "\5\136\2\0\3\136\1\u0464\12\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\12\136\1\u0465\3\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\13\136\1\u0466\2\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\10\136\1\u0467"+
-    "\5\136\4\0\5\136\2\0\16\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\10\136\1\u0468"+
-    "\5\136\4\0\5\136\2\0\16\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\51\0\1\u0469\127\0"+
-    "\1\u046a\45\0\16\11\1\0\1\111\1\0\6\11\1\u046b"+
-    "\2\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\7\11\1\u046c\5\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\6\11\1\u046d\7\11\1\0\1\111\1\0\6\11"+
-    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\12\11\1\u046e\2\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\1\u046f"+
-    "\14\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\6\11\1\u042a\6\11\1\0\5\11\1\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\2\11\1\u01cc"+
+    "\12\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\1\11\1\u01cd\13\11\1\0\5\11\1\0"+
     "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\10\11\1\u0470\5\11\1\0\1\111\1\0\6\11\3\0"+
-    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\56\0\1\u0471\52\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\15\11\1\0\1\u0472\4\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\11\11"+
-    "\1\u0473\3\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\10\11\1\u0474\4\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\2\11\1\u0475\2\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\10\136\1\u0476\5\136"+
-    "\4\0\5\136\2\0\16\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\13\136\1\u0477\2\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\13\0\16\136\4\0\5\136"+
-    "\2\0\13\136\1\u0478\2\136\1\0\11\136\3\0\3\136"+
-    "\1\0\1\136\1\0\11\136\55\0\1\u0479\150\0\1\u047a"+
-    "\61\0\1\u047b\54\0\16\11\1\0\1\111\1\0\6\11"+
-    "\3\0\7\11\1\u047c\5\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\2\11"+
-    "\1\u0440\13\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\10\11\1\u047d\5\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\1\u047e\14\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\1\u047f\14\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\64\0\1\u0480\44\0\10\11"+
-    "\1\u0481\5\11\1\0\1\111\1\0\6\11\3\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\10\11\1\u0482\5\11\1\0\1\111"+
-    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
-    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
-    "\1\0\1\111\1\0\6\11\3\0\5\11\1\u0483\7\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\1\u0484\2\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\136\4\0"+
-    "\5\136\2\0\14\136\1\u0485\1\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\1\136\1\u0486\14\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\13\0\16\136\4\0"+
-    "\5\136\2\0\1\136\1\u0487\14\136\1\0\11\136\3\0"+
-    "\3\136\1\0\1\136\1\0\11\136\15\0\1\u0488\211\0"+
-    "\1\u0489\53\0\1\u048a\61\0\10\11\1\u048b\5\11\1\0"+
-    "\1\111\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\13\11\1\u048c"+
-    "\1\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\13\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\6\11\1\u03f5\6\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\15\11\1\0"+
-    "\3\11\1\u048d\1\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\53\0\1\u048e\55\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\1\u048f\14\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\12\11"+
-    "\1\u0490\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\12\11\1\u0491\2\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\54\0\1\u0492\54\0\16\136\4\0\5\136\2\0\12\136"+
-    "\1\u0493\3\136\1\0\11\136\3\0\3\136\1\0\1\136"+
-    "\1\0\11\136\13\0\16\136\4\0\5\136\2\0\16\136"+
-    "\1\0\1\u0494\10\136\3\0\3\136\1\0\1\136\1\0"+
-    "\11\136\13\0\16\136\4\0\5\136\2\0\16\136\1\0"+
-    "\1\u0495\10\136\3\0\3\136\1\0\1\136\1\0\11\136"+
-    "\60\0\1\u0496\113\0\1\u0497\52\0\16\11\1\0\1\111"+
-    "\1\0\6\11\3\0\6\11\1\u0498\6\11\1\0\5\11"+
-    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
-    "\13\0\16\11\1\0\1\111\1\0\6\11\3\0\11\11"+
-    "\1\u0499\3\11\1\0\5\11\1\0\3\11\4\0\2\11"+
-    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\111"+
-    "\1\0\6\11\1\u049a\2\0\15\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
-    "\16\11\1\0\1\111\1\0\6\11\1\u049b\2\0\15\11"+
-    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
-    "\1\0\11\11\13\0\16\11\1\0\1\111\1\0\6\11"+
-    "\1\u049c\2\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\15\11\1\0\2\11\1\u049d"+
-    "\2\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\47\0\1\u049e\132\0\1\u049f\44\0\16\11\1\0"+
-    "\1\111\1\0\6\11\3\0\7\11\1\u04a0\5\11\1\0"+
-    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
-    "\11\11\13\0\6\11\1\u04a1\7\11\1\0\1\111\1\0"+
-    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\54\0\1\u04a2\115\0"+
-    "\1\u04a3\115\0\1\u04a4\117\0\1\u04a5\112\0\1\u04a6\55\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\6\11\1\u04a7"+
-    "\6\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\47\0\1\u04a8\115\0\1\u04a9\115\0"+
-    "\1\u04aa\132\0\1\u04ab\44\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\7\11\1\u04ac\5\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\56\0"+
-    "\1\u04ad\115\0\1\u04ae\115\0\1\u04af\112\0\1\u04b0\55\0"+
-    "\16\11\1\0\1\111\1\0\6\11\3\0\7\11\1\u04b1"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\7\11\1\u01ce"+
     "\5\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
-    "\1\11\1\0\11\11\64\0\1\u04b2\115\0\1\u04b3\115\0"+
-    "\1\u04b4\44\0\16\11\1\0\1\111\1\0\6\11\3\0"+
-    "\13\11\1\u04b5\1\11\1\0\5\11\1\0\3\11\4\0"+
-    "\2\11\1\0\1\11\1\0\11\11\53\0\1\u04b6\115\0"+
-    "\1\u04b7\115\0\1\u04b8\55\0\16\11\1\0\1\111\1\0"+
-    "\6\11\3\0\7\11\1\u04b9\5\11\1\0\5\11\1\0"+
-    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\12\0";
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\1\u01cf\2\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\7\11\1\u01d0\5\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\1\11\1\u01d1\13\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\12\11\1\u01d2\2\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\1\u01d3\1\0\4\u01d3\4\0\1\u01d3"+
+    "\2\0\1\u01d3\4\0\1\u01d3\1\0\1\u01d3\5\0\1\u01d3"+
+    "\1\0\1\u01d3\3\0\1\u01d3\5\0\1\u01d3\11\0\1\u01d3"+
+    "\11\0\1\u01d3\1\0\3\u01d3\1\0\2\u01d3\14\0\1\u01d4"+
+    "\1\0\4\u01d4\4\0\1\u01d4\2\0\1\u01d4\4\0\1\u01d4"+
+    "\1\0\1\u01d4\5\0\1\u01d4\1\0\1\u01d4\3\0\1\u01d4"+
+    "\5\0\1\u01d4\11\0\1\u01d4\11\0\1\u01d4\1\0\3\u01d4"+
+    "\1\0\2\u01d4\14\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\6\11\1\u015f\6\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\10\11"+
+    "\1\u01d5\5\11\1\0\1\112\1\0\2\11\1\u01d5\3\11"+
+    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\1\11\1\u01d6\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\2\11\1\u01d7"+
+    "\12\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\2\11\1\u01d8\13\11\1\0"+
+    "\1\112\1\0\6\11\3\0\1\u01d9\2\11\1\u01da\7\11"+
+    "\1\u01db\1\11\1\0\4\11\1\u01dc\1\0\3\11\4\0"+
+    "\1\u01dd\1\11\1\0\1\11\1\0\5\11\1\u01de\3\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\6\11"+
+    "\1\u01df\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\11\11\1\u01e0\3\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\13\11"+
+    "\1\u01e1\1\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\12\11\1\u01e2\3\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\6\11"+
+    "\1\u01e3\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\2\11\1\u01e4\13\11"+
+    "\1\0\1\112\1\0\6\11\3\0\1\u01e5\2\11\1\u01e6"+
+    "\7\11\1\u01db\1\11\1\0\4\11\1\u01dc\1\0\3\11"+
+    "\4\0\1\u01dd\1\11\1\0\1\11\1\0\5\11\1\u01de"+
+    "\3\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\2\11\1\u01e7\12\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\14\11\1\u01e8\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\15\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\u01e9\1\11"+
+    "\1\0\11\11\13\0\6\11\1\u01ea\7\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\137"+
+    "\4\0\5\137\2\0\7\137\1\u01eb\6\137\1\0\11\137"+
+    "\3\0\3\137\1\0\1\137\1\0\11\137\13\0\16\137"+
+    "\4\0\5\137\2\0\15\137\1\u01ec\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\4\137\1\u01ed\11\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\16\137\1\0\1\u01ee\10\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\2\137\1\u01ef\13\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\16\137\1\0\2\137\1\u01f0\6\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\13\137\1\u01f1\2\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\12\137\1\u01f2\3\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\10\137\1\u01f3\5\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\4\137\1\u01f4\11\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\1\137\1\u01f5\14\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\7\137\1\u01f6\6\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\11\137\1\u01f7\4\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\14\137\1\u01f8\1\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\14\137\1\u01f9\1\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\12\137\1\u01fa\3\137"+
+    "\4\0\5\137\2\0\2\137\1\u01fb\1\u01fc\1\u01fd\1\137"+
+    "\1\u01fe\2\137\1\u01ff\4\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\3\137\1\u0200\12\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\4\137\1\u0201\11\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\14\137\1\u0202\1\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\6\11\1\u0203\7\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\13\11"+
+    "\1\u0204\1\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\12\11\1\u0205\3\11"+
+    "\1\0\1\112\1\0\6\11\3\0\14\11\1\u0206\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\6\11\1\u0207\7\11\1\0\1\112\1\0"+
+    "\6\11\1\u0208\2\0\7\11\1\u0209\5\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\6\11\1\u020a\7\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\12\11\1\u020b\2\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\2\11"+
+    "\1\u020c\12\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\2\11\1\u020d\13\11"+
+    "\1\0\1\112\1\0\6\11\3\0\1\u020e\2\11\1\u020f"+
+    "\7\11\1\u0210\1\11\1\0\4\11\1\u0211\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\6\11"+
+    "\1\u0212\7\11\1\0\1\112\1\0\6\11\3\0\15\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\2\11\1\u0213\12\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\1\11\1\u0214\13\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\13\11\1\u0215\1\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\11\11\1\u0216\3\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\6\11\1\u0217\6\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\2\11"+
+    "\1\u0218\13\11\1\0\1\112\1\0\6\11\3\0\1\u0219"+
+    "\2\11\1\u021a\7\11\1\u021b\1\11\1\0\4\11\1\u021c"+
+    "\1\0\3\11\4\0\1\u021d\1\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\1\u021e\14\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\12\11\1\u021f\2\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\11\11"+
+    "\1\u0220\3\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\10\11\1\u017b\4\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\7\11"+
+    "\1\u0221\5\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\6\11\1\u0222\6\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\14\11"+
+    "\1\u0217\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\1\u015f\14\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\12\11\1\u017c\2\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\1\u0223\14\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\12\11\1\u0224\2\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\10\11\1\u0225\5\11\1\0\1\112\1\0"+
+    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\10\11\1\u0226\4\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\11\11\1\u0227\3\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\13\11\1\u0228\1\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\6\11\1\u0229\1\u022a\3\11\1\u022b\1\11\1\0\4\11"+
+    "\1\u022c\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\25\0\1\u022d\62\0\1\u022e\20\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\11\11\1\u022f\3\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\1\11\1\u0230\13\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\13\11\1\u0231\1\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\13\11\1\u0232\1\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\11\11\1\u0233\3\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\7\11\1\u0234\5\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\1\u0235\14\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\7\11"+
+    "\1\u0236\5\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\10\11\1\u0237\5\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\6\11\1\u0238\7\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\12\11\1\u0239\2\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\11\11"+
+    "\1\u023a\3\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\7\11\1\u023b\5\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\6\11"+
+    "\1\u023c\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\10\11\1\u023d\5\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\110\0\1\u023e\3\0\1\u023f\14\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\1\11\1\u0240\3\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\6\11"+
+    "\1\u0241\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\10\11\1\u0242\5\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\1\u0243\1\0\4\u0243\4\0\1\u0243\2\0\1\u0243"+
+    "\4\0\1\u0243\1\0\1\u0243\5\0\1\u0243\1\0\1\u0243"+
+    "\3\0\1\u0243\5\0\1\u0243\11\0\1\u0243\11\0\1\u0243"+
+    "\1\0\3\u0243\1\0\2\u0243\14\0\1\u0244\1\0\4\u0244"+
+    "\4\0\1\u0244\2\0\1\u0244\4\0\1\u0244\1\0\1\u0244"+
+    "\5\0\1\u0244\1\0\1\u0244\3\0\1\u0244\5\0\1\u0244"+
+    "\11\0\1\u0244\11\0\1\u0244\1\0\3\u0244\1\0\2\u0244"+
+    "\14\0\13\11\1\u0245\2\11\1\0\1\112\1\0\6\11"+
+    "\3\0\12\11\1\u0245\2\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\1\11\1\u0246\13\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\13\11\1\u0247\1\11\1\0\2\11\1\u0248\2\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\15\11"+
+    "\1\0\1\u0249\4\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\15\11\1\0\1\u024a\4\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\2\11"+
+    "\1\u024b\13\11\1\0\1\112\1\0\6\11\3\0\15\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\10\11\1\u024c\5\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\13\11\1\u024d\1\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\4\11\1\u024e\10\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\u024f\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\1\u0250"+
+    "\11\11\1\u0251\2\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\6\11\1\u0252"+
+    "\7\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\2\11\1\u0253\12\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\6\11\1\u0254"+
+    "\7\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\13\11\1\u0255\1\11\1\0\2\11\1\u0256\2\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
+    "\1\u0257\4\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\1\u0258\4\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\7\11\1\u0259\5\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\6\11\1\u025a\7\11\1\0\1\112\1\0"+
+    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\1\u025b\115\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\12\11\1\u025c"+
+    "\2\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\137\4\0\5\137\2\0"+
+    "\11\137\1\u025d\4\137\1\0\11\137\3\0\3\137\1\0"+
+    "\1\137\1\0\11\137\13\0\16\137\4\0\5\137\2\0"+
+    "\3\137\1\u025e\12\137\1\0\11\137\3\0\3\137\1\0"+
+    "\1\137\1\0\11\137\13\0\16\137\4\0\5\137\2\0"+
+    "\4\137\1\u025f\11\137\1\0\11\137\3\0\3\137\1\0"+
+    "\1\137\1\0\11\137\13\0\6\137\1\u0260\7\137\4\0"+
+    "\5\137\2\0\16\137\1\0\11\137\3\0\3\137\1\0"+
+    "\1\137\1\0\11\137\13\0\16\137\4\0\5\137\2\0"+
+    "\3\137\1\u0261\12\137\1\0\11\137\3\0\3\137\1\0"+
+    "\1\137\1\0\11\137\13\0\16\137\4\0\5\137\2\0"+
+    "\12\137\1\u0262\3\137\1\0\11\137\3\0\3\137\1\0"+
+    "\1\137\1\0\11\137\13\0\16\137\4\0\5\137\2\0"+
+    "\7\137\1\u0263\6\137\1\0\11\137\3\0\3\137\1\0"+
+    "\1\137\1\0\11\137\13\0\16\137\4\0\5\137\2\0"+
+    "\7\137\1\u0264\6\137\1\0\11\137\3\0\3\137\1\0"+
+    "\1\137\1\0\11\137\13\0\16\137\4\0\5\137\2\0"+
+    "\15\137\1\u0265\1\0\11\137\3\0\3\137\1\0\1\137"+
+    "\1\0\11\137\13\0\16\137\4\0\5\137\2\0\16\137"+
+    "\1\0\1\137\1\u0266\7\137\3\0\3\137\1\0\1\137"+
+    "\1\0\11\137\13\0\16\137\4\0\5\137\2\0\16\137"+
+    "\1\0\1\137\1\u0267\7\137\3\0\3\137\1\0\1\137"+
+    "\1\0\11\137\13\0\10\137\1\u0268\5\137\4\0\5\137"+
+    "\2\0\16\137\1\0\11\137\3\0\3\137\1\0\1\137"+
+    "\1\0\11\137\13\0\16\137\4\0\5\137\2\0\14\137"+
+    "\1\u0269\1\137\1\0\11\137\3\0\3\137\1\0\1\137"+
+    "\1\0\11\137\13\0\16\137\4\0\5\137\2\0\10\137"+
+    "\1\u026a\1\137\1\u026b\3\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\5\137\1\u026c\1\u026d\7\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\3\137\1\u026e\12\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\7\137\1\u026f\6\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\10\137\1\u0270\5\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\13\137\1\u0271\2\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\15\137\1\u0272\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\1\u0273\14\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\11\11\1\u0274"+
+    "\3\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\1\11\1\u0275\13\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\13\11\1\u0276"+
+    "\1\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\1\u0277\2\11\1\u0278\4\11\1\u0279\4\11"+
+    "\1\0\4\11\1\u027a\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\63\0\1\u027b\21\0\1\u027c\2\0"+
+    "\1\u027d\20\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\4\11\1\u027e\10\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\1\u027f\14\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\13\11"+
+    "\1\u0280\1\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\1\u0281\14\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\13\11\1\u0282"+
+    "\1\11\1\0\2\11\1\u0283\2\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\15\11\1\0\1\u0284\4\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\15\11"+
+    "\1\0\1\u0285\4\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\2\11\1\u0286\13\11\1\0"+
+    "\1\112\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\10\11\1\u0287\5\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\1\11\1\u0288\13\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\12\11\1\u0289"+
+    "\2\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\13\11\1\u028a\1\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\4\11\1\u028b"+
+    "\10\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\12\11\1\u028c\2\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\6\11\1\u028d\7\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\13\11\1\u028e\1\11\1\0\2\11\1\u028f"+
+    "\2\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\1\u0290\4\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\1\u0291\4\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\2\11\1\u0292\13\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\10\11\1\u0293\5\11\1\0"+
+    "\1\112\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\13\11\1\u0294"+
+    "\1\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\6\11\1\u0295\7\11\1\0"+
+    "\1\112\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\12\11\1\u0296\3\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\12\11\1\u0297\2\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\13\11\1\u0298"+
+    "\1\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\12\11\1\u015c\2\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\12\11\1\u0299"+
+    "\2\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\6\11\1\u029a\6\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\11\11\1\u029b"+
+    "\3\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\6\11\1\u017b\6\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\6\11\1\u029c\7\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\7\11\1\u029d\5\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\u029e\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\6\11\1\u029f\6\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\2\11\1\u02a0"+
+    "\13\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\10\11\1\u02a1\5\11\1\0\1\112\1\0"+
+    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\54\0\1\u02a2\152\0"+
+    "\1\u02a3\17\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\12\11\1\u02a4\2\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\13\11\1\u02a5\1\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\11\11\1\u02a6\3\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\4\11\1\u02a7\10\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\3\11\1\u02a8\11\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\7\11\1\u02a9\5\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\1\u02aa\4\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\13\11\1\u02ab\1\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\6\11"+
+    "\1\u02ac\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\1\u02ad\1\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\1\u02ae\2\0\15\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\1\11\1\u028c\3\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\6\11\1\u02af\6\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\6\11\1\u02b0\7\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\1\u02b1\14\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\111\0\1\u02b2\113\0\1\u02b3\21\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\3\11\1\u015f\11\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\u02b4"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\1\11\1\u017c\13\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\1\u02b5\1\0\4\u02b5\4\0\1\u02b5\2\0\1\u02b5\4\0"+
+    "\1\u02b5\1\0\1\u02b5\5\0\1\u02b5\1\0\1\u02b5\3\0"+
+    "\1\u02b5\5\0\1\u02b5\11\0\1\u02b5\11\0\1\u02b5\1\0"+
+    "\3\u02b5\1\0\2\u02b5\14\0\14\11\1\302\1\11\1\0"+
+    "\1\112\1\0\6\11\3\0\15\11\1\0\2\11\1\302"+
+    "\2\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\6\11\1\u02b6\7\11\1\0\1\112\1\0"+
+    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\13\11\1\u02b7\1\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\12\11\1\u02b8\2\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\2\11\1\u02b9\12\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\13\11\1\u02ba\1\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\1\11\1\u02bb"+
+    "\7\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\14\11\1\u02bc\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\1\11\1\u02bd\13\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\10\11\1\u02be\5\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\1\u02bf\115\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\6\11\1\u02c0\6\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\10\11\1\u02c1\5\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\2\11"+
+    "\1\u02c2\7\11\1\u01c1\3\11\1\0\1\112\1\0\6\11"+
+    "\3\0\1\u02c3\1\u01c2\1\11\1\u02c4\10\11\1\u01c3\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\1\u017c\14\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\10\11\1\u02c5\5\11"+
+    "\1\0\1\112\1\0\6\11\3\0\1\u02c6\2\11\1\u02c7"+
+    "\1\11\1\u02c8\5\11\1\u02c9\1\u02ca\1\0\5\11\1\0"+
+    "\3\11\4\0\1\u02cb\1\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\13\11"+
+    "\1\u02cc\1\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\12\11\1\u02cd\2\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\2\11"+
+    "\1\u02ce\12\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\13\11\1\u02cf\1\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\7\11"+
+    "\1\u02d0\5\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\11\11\1\u02d1\3\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\103\0\1\u02d2\25\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\13\11\1\u02d3\1\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\137"+
+    "\4\0\5\137\2\0\7\137\1\u02d4\6\137\1\0\11\137"+
+    "\3\0\3\137\1\0\1\137\1\0\11\137\13\0\16\137"+
+    "\4\0\5\137\2\0\2\137\1\u02d5\13\137\1\0\11\137"+
+    "\3\0\3\137\1\0\1\137\1\0\11\137\13\0\16\137"+
+    "\4\0\5\137\2\0\15\137\1\u02d6\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\13\137\1\u02d7\2\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\14\137\1\u02d8\1\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\6\137\1\u02d9"+
+    "\7\137\4\0\5\137\2\0\16\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\6\137\1\u02da"+
+    "\7\137\4\0\5\137\2\0\16\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\5\137\1\u02db\10\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\5\137\1\u02dc\10\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\7\137\1\u02dd\6\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\1\137\1\u02de\14\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\10\137\1\u02df\5\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\12\137\1\u02e0\3\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\2\137\1\u02e1"+
+    "\13\137\4\0\5\137\2\0\16\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\3\137\1\u02e2\12\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\1\137\1\u02e3\6\137\1\u02e4\5\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\16\137\4\0\5\137\2\0\13\137\1\u02e5\2\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\16\137\4\0\5\137\2\0\13\137\1\u02e6\2\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\16\137\4\0\5\137\2\0\7\137\1\u02e7\6\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
+    "\1\u02e8\4\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\1\11\1\u02e9\3\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\13\11\1\u02ea\1\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\4\11\1\u02eb\10\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\1\11\1\u02ec\13\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\12\11\1\u02ed\2\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\6\11\1\u02ee\6\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\10\11\1\u02ef\5\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\23\0\1\u02f0"+
+    "\203\0\1\u02f1\17\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\1\u02f2\14\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\2\11\1\u02f3\12\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\6\11\1\u02f4\7\11\1\0\1\112\1\0"+
+    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\12\11\1\u015f\2\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\13\11\1\u02f5\1\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\12\11\1\u02f6\2\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\2\11\1\u02f7\12\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\13\11\1\u02f8\1\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\1\11\1\u02f9\7\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\14\11\1\u02f6\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\6\11"+
+    "\1\u02fa\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\10\11\1\u02fb\5\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\2\11"+
+    "\1\u0216\12\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\2\11\1\u02fc\13\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\1\u02fd\2\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\3\11\1\u02fe\11\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\13\11\1\u02ff"+
+    "\1\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\12\11\1\u0300\2\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\2\11\1\u0301"+
+    "\12\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\13\11\1\u0302\1\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\1\11\1\u0303\7\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\14\11\1\u0304\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\1\11\1\u0305\13\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\5\11\1\u0306\7\11\1\0\1\11\1\u0307\3\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\5\11"+
+    "\1\u015f\7\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\1\u0308\2\0\15\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\11\11\1\u0309"+
+    "\3\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\6\11\1\u030a\6\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\6\11\1\u030b\7\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\12\11\1\u030c\2\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\13\11\1\u030d"+
+    "\1\11\1\0\4\11\1\u030e\1\0\3\11\4\0\1\u030f"+
+    "\1\11\1\0\1\11\1\0\11\11\13\0\6\11\1\u0310"+
+    "\7\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\1\u0311\14\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\3\11\1\u0312\11\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\15\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\1\11\1\u0313\7\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\14\11\1\u0314\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\60\0"+
+    "\1\u0315\50\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\2\11\1\u022f\12\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\15\11\1\0\1\11\1\u02a4"+
+    "\3\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\2\11\1\u0316\13\11\1\0\1\112\1\0"+
+    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\12\11\1\u0317\2\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\2\11\1\u0318\12\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\6\11\1\u0319"+
+    "\7\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\7\11\1\u031a\5\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\11\11\1\u0281\3\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\6\11\1\u031b\6\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\46\0\1\u031c\40\0"+
+    "\1\u031d\21\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\14\11\1\u031e\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\12\11\1\u031f\2\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\6\11\1\u0320\7\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\1\u0321\115\0\12\11"+
+    "\1\u0322\3\11\1\0\1\112\1\0\6\11\3\0\1\u0323"+
+    "\7\11\1\u0324\4\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\1\11\1\u0325\13\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\6\11\1\u0326\6\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\7\11\1\u0326\5\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\7\11\1\u0327\5\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\6\11\1\u0328\6\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\6\11\1\u0329\6\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\2\11\1\u032a\12\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\1\u032b\14\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\103\0\1\u032c\25\0\6\11"+
+    "\1\u032d\7\11\1\0\1\112\1\0\6\11\3\0\15\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\2\11\1\u032e\12\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\2\11"+
+    "\1\u032f\2\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\1\u0330\4\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\15\11\1\0\1\u0331\4\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\11\11"+
+    "\1\u0332\3\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\4\11\1\u0333\6\11\1\u0334\1\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\4\11\1\u0335\5\11\1\u0336\2\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\13\11"+
+    "\1\u0337\1\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\2\11\1\u0338\13\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\10\11\1\u0339\5\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\10\11\1\u033a\5\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\1\11"+
+    "\1\u033b\13\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\6\11\1\u033c\6\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\7\11"+
+    "\1\u033c\5\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\7\11\1\u033d\5\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\2\11"+
+    "\1\u033e\12\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\6\11\1\u033f\6\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\1\u0340\1\0\4\u0340\4\0\1\u0340\2\0\1\u0340"+
+    "\4\0\1\u0340\1\0\1\u0340\5\0\1\u0340\1\0\1\u0340"+
+    "\3\0\1\u0340\5\0\1\u0340\11\0\1\u0340\11\0\1\u0340"+
+    "\1\0\3\u0340\1\0\2\u0340\14\0\6\11\1\u0341\7\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\137\4\0\5\137\2\0\12\137\1\u0342\3\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\2\137\1\u0343\13\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\3\137\1\u0344\12\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\10\137\1\u0345\5\137\4\0\5\137\2\0\16\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\13\137\1\u0346\2\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\4\137\1\u0347\11\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\4\137\1\u0348\11\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\7\137\1\u0349\6\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\7\137\1\u034a\6\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\2\137\1\u034b\13\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\3\137\1\u034c\12\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\3\137\1\u034d\12\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\14\137\1\u034e\1\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\3\137\1\u034f\12\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\10\137\1\u0350\5\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\16\137\1\0\3\137"+
+    "\1\u0351\5\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\3\137\1\u0352\12\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\16\137\1\0\1\u0353"+
+    "\10\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\16\137\4\0\5\137\2\0\16\137\1\u0354\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\10\137\1\u0355\5\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\2\11\1\u0356\12\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\2\11\1\u0357\12\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\2\11\1\u0358"+
+    "\13\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\2\11\1\u0359\12\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\7\11\1\u035a\5\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\12\11\1\u035b\2\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\14\11\1\u035c\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\64\0\1\u035d\44\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\12\11\1\u035e\2\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\3\11\1\u035f\11\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\10\11\1\u01c0\1\11\1\u01c1\3\11"+
+    "\1\0\1\112\1\0\6\11\3\0\14\11\1\u01c3\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\1\11\1\u0360\13\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\6\11\1\u02e9\6\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\7\11\1\u02e9\5\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\7\11\1\u0357\5\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\6\11\1\u0361\6\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\11\11\1\u0362\3\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\13\11\1\u0363\1\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\1\11\1\u0364\13\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\107\0\1\u031d\21\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\15\11\1\0\4\11\1\u0365\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\1\11\1\u0366\13\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\6\11\1\u0367\6\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\7\11\1\u0367\5\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\7\11\1\u0368\5\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\6\11\1\u0369\6\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\6\11\1\u036a\6\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\2\11\1\u036b\12\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\4\11\1\u036c\10\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\6\11\1\u036c\6\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\46\0\1\u036d\40\0\1\u031d\21\0\10\11"+
+    "\1\u036e\5\11\1\0\1\112\1\0\6\11\3\0\15\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\14\11\1\u015f\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\10\11\1\u036f"+
+    "\5\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\1\u0370"+
+    "\2\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\2\11\1\u0371\13\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\10\11\1\u0372\5\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\13\11\1\u0373\1\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\6\11"+
+    "\1\u0374\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\6\11\1\u0375\6\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\4\11"+
+    "\1\u0376\10\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\6\11\1\u0377\6\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\6\11"+
+    "\1\u0378\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\55\0\1\u0379\53\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\1\11\1\u037a\13\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\2\11\1\u037b\12\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\2\11"+
+    "\1\u037c\2\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\12\11\1\u037d\3\11\1\0\1\112"+
+    "\1\0\6\11\3\0\1\u037e\7\11\1\u037f\4\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\7\11\1\u0380\5\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\23\0\1\u0381\141\0"+
+    "\1\u0382\61\0\6\11\1\u0383\7\11\1\0\1\112\1\0"+
+    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\13\11\1\u0384\1\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\6\11\1\u016b\6\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\103\0\1\u0385\25\0"+
+    "\10\11\1\u0386\5\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\1\11\1\u0387\13\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\6\11\1\u0388"+
+    "\6\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\6\11\1\u0389\6\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\6\11\1\u038a\7\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\12\11\1\u0326\2\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\1\u038b\14\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\6\11\1\u038c\7\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\12\11\1\u038d\2\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\3\11\1\u038e\1\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\1\u038f"+
+    "\1\0\4\u038f\4\0\1\u038f\2\0\1\u038f\4\0\1\u038f"+
+    "\1\0\1\u038f\5\0\1\u038f\1\0\1\u038f\3\0\1\u038f"+
+    "\5\0\1\u038f\11\0\1\u038f\11\0\1\u038f\1\0\3\u038f"+
+    "\1\0\2\u038f\14\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\5\11\1\u0306\5\11\1\u0390\1\11\1\0\1\11"+
+    "\1\u0307\3\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\12\11\1\u0391\2\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\12\11\1\u037a\2\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\2\11\1\u0392\12\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\13\11\1\u0393\1\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\3\11\1\u0394\6\11\1\u0395\2\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\3\11"+
+    "\1\u0396\11\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\11\11\1\u0397\3\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\5\11"+
+    "\1\u0398\7\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\2\11\1\u0399\12\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\1\11"+
+    "\1\u039a\13\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\1\11\1\u039b\7\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\7\11"+
+    "\1\u039c\5\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\7\11\1\u039d\5\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\6\11"+
+    "\1\u039e\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\12\11\1\u033c\2\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\15\11"+
+    "\1\0\2\11\1\u039f\2\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\4\11\1\u03a0\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\10\11\1\u01c0\5\11\1\0\1\112\1\0\6\11\3\0"+
+    "\1\11\1\u01c2\12\11\1\u01c3\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\137"+
+    "\4\0\5\137\2\0\13\137\1\u03a1\2\137\1\0\11\137"+
+    "\3\0\3\137\1\0\1\137\1\0\11\137\13\0\16\137"+
+    "\4\0\5\137\2\0\13\137\1\u03a2\2\137\1\0\11\137"+
+    "\3\0\3\137\1\0\1\137\1\0\11\137\13\0\16\137"+
+    "\4\0\5\137\2\0\14\137\1\u03a3\1\137\1\0\11\137"+
+    "\3\0\3\137\1\0\1\137\1\0\11\137\13\0\16\137"+
+    "\4\0\5\137\2\0\3\137\1\u03a4\12\137\1\0\11\137"+
+    "\3\0\3\137\1\0\1\137\1\0\11\137\13\0\16\137"+
+    "\4\0\5\137\2\0\16\137\1\0\4\137\1\u03a5\4\137"+
+    "\3\0\3\137\1\0\1\137\1\0\11\137\13\0\16\137"+
+    "\4\0\5\137\2\0\16\137\1\0\4\137\1\u03a6\4\137"+
+    "\3\0\3\137\1\0\1\137\1\0\11\137\13\0\16\137"+
+    "\4\0\5\137\2\0\15\137\1\u03a7\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\2\137\1\u03a8\13\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\16\137\1\0\2\137\1\u03a9\6\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\13\137\1\u03aa\2\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\12\137\1\u03ab\3\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\4\137\1\u03ac\11\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\7\137\1\u03ad\6\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\11\137\1\u03ae\4\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\14\137\1\u03af\1\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\2\137\1\u03b0\13\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\4\137\1\u03b1\11\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\11\11\1\u03b2\3\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\12\11\1\u02e9\2\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\1\11\1\u02f6\13\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\3\11\1\u03b3\11\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\10\11\1\u03b4"+
+    "\5\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\1\u03b5\4\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\6\11\1\u03b6\6\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\63\0\1\u03b7\45\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\13\11\1\u03b8\1\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\12\11\1\u03b9\2\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\6\11\1\u03ba\6\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\1\u0357\14\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\1\11\1\u03bb\3\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\11\11\1\u015f\3\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\6\11\1\u028c\6\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\10\11\1\u03bc"+
+    "\5\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\6\11\1\u03bd\6\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\12\11\1\u0367\2\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\1\u03be\14\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\6\11\1\u03bf\7\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\12\11"+
+    "\1\u03c0\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\12\11\1\u03c1\2\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\23\0\1\u03c2\105\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\1\11"+
+    "\1\u0299\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\11\11\1\u03c3\3\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\46\0\1\u036d\62\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\15\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\1\11\1\u03c4\7\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\14\11\1\u03c5"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\10\11\1\u03c6\5\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\11\11\1\u03c7\3\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\u03c8"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\5\11\1\u03c9\7\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\1\11\1\u03ca\13\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\1\u03cb\14\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\1\u01bf\2\0\15\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\110\0\1\u03cc\20\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\6\11\1\u02a4\6\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\11\11\1\u03cd\3\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\10\11\1\u03ce\5\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\1\11\1\u03cf\13\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\6\11\1\u03d0\6\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\10\11"+
+    "\1\u03d1\5\11\1\0\1\112\1\0\6\11\3\0\15\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\57\0\1\u03d2\117\0\1\u03d3\47\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\3\11\1\u03d4\11\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\6\11\1\u03d5\7\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\1\u03d6"+
+    "\1\0\4\u03d6\4\0\1\u03d6\2\0\1\u03d6\4\0\1\u03d6"+
+    "\1\0\1\u03d6\5\0\1\u03d6\1\0\1\u03d6\3\0\1\u03d6"+
+    "\5\0\1\u03d6\11\0\1\u03d6\11\0\1\u03d6\1\0\3\u03d6"+
+    "\1\0\2\u03d6\14\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\6\11\1\u03d7\6\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\2\11\1\u03d8\12\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\12\11\1\u03d9\2\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\2\11\1\u03da\12\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\5\11\1\u01de\3\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\12\11\1\u0329\2\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\1\u01dd"+
+    "\1\11\1\0\1\11\1\0\5\11\1\u01de\3\11\13\0"+
+    "\10\11\1\u03db\5\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\12\11\1\u037c\3\11\1\0"+
+    "\1\112\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\10\11\1\u03dc\5\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\7\11\1\u02a4\5\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\7\11\1\u022f"+
+    "\5\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\12\11\1\u03dd\2\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\6\11\1\u03de"+
+    "\6\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\12\11\1\u03df\2\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\3\11\1\u03e0"+
+    "\11\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\6\11\1\u03e1\6\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\12\11\1\u03e2"+
+    "\2\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\15\11\1\0\2\11\1\u03e3\2\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\6\11\1\u03e4"+
+    "\6\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\6\11\1\u03e5\6\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\12\11\1\u03e6"+
+    "\2\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\2\11\1\u03e7\12\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\6\11\1\u03e8\7\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\6\11\1\u03e9\7\11\1\0"+
+    "\1\112\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\137\4\0\5\137\2\0\4\137\1\u03ea\11\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\16\137\4\0\5\137\2\0\3\137\1\u03eb\12\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\16\137\4\0\5\137\2\0\12\137\1\u03ec\3\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\16\137\4\0\5\137\2\0\13\137\1\u03ed\2\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\10\137\1\u03ee\5\137\4\0\5\137\2\0\16\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\10\137\1\u03ef\5\137\4\0\5\137\2\0\16\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\6\137\1\u03f0\7\137\4\0\5\137\2\0\16\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\16\137\4\0\5\137\2\0\3\137\1\u03f1\12\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\16\137\4\0\5\137\2\0\12\137\1\u03f2\3\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\16\137\4\0\5\137\2\0\7\137\1\u03f3\6\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\16\137\4\0\5\137\2\0\15\137\1\u03f4\1\0\11\137"+
+    "\3\0\3\137\1\0\1\137\1\0\11\137\13\0\16\137"+
+    "\4\0\5\137\2\0\15\137\1\u03f5\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\14\137\1\u03f6\1\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\15\11\1\0\1\11\1\u03f7"+
+    "\3\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\3\11\1\u03b9\11\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\11\11\1\u03f8\3\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\13\11\1\u03f9\1\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\1\u03fa\2\0\15\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\110\0\1\u03fb\20\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\7\11\1\u015f\5\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\2\11\1\u03fc\12\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\12\11\1\u03fd\2\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\12\11\1\u03fe\2\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\2\11\1\u03ff\12\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\12\11\1\u036a\2\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\1\u021d"+
+    "\1\11\1\0\1\11\1\0\11\11\13\0\10\11\1\u0400"+
+    "\5\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\57\0\1\u0401\51\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\1\11\1\u0402\13\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\6\11\1\u0403"+
+    "\6\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\6\11\1\u0404\6\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\14\11\1\u0405"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\12\11\1\u0406\2\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\10\11"+
+    "\1\u0407\5\11\1\0\1\112\1\0\6\11\3\0\15\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\12\11\1\u0408\2\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\12\11\1\u0409\2\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\12\11\1\u0378\2\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\111\0\1\u040a"+
+    "\17\0\16\11\1\0\1\112\1\0\6\11\3\0\1\u040b"+
+    "\14\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\6\11\1\u040c\6\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\2\11\1\u040d"+
+    "\12\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\12\11\1\u040e\2\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\12\11\1\u040f\3\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\110\0\1\u0410\2\0\1\u0411\63\0"+
+    "\1\u0412\47\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\2\11\1\u0413\2\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\10\11\1\u01c0"+
+    "\1\11\1\u01c1\3\11\1\0\1\112\1\0\6\11\3\0"+
+    "\1\11\1\u01c2\13\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\1\11\1\u0414\13\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\3\11\1\u0415\11\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\15\11\1\0\1\u0416\4\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\11\11"+
+    "\1\u0326\3\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\1\11\1\u0417\13\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\13\11"+
+    "\1\u0418\1\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\2\11\1\u0419\12\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\7\11"+
+    "\1\u041a\5\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\13\11\1\u041b\1\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\12\11"+
+    "\1\u041c\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\7\11\1\u041d\5\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\10\11\1\u041e\5\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\10\11\1\u041f\4\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\1\u0420"+
+    "\14\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\1\u0421\14\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\4\11\1\u0422\10\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\11\11\1\u033c\3\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\14\11\1\u0423\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\2\11\1\u0424\12\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\10\137\1\u0425"+
+    "\5\137\4\0\5\137\2\0\16\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\13\137\1\u0426\2\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\13\137\1\u0427\2\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\15\137\1\u0428\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\13\137\1\u0429\2\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\14\137\1\u042a\1\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\6\137\1\u042b\7\137"+
+    "\4\0\5\137\2\0\16\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\6\137\1\u042c\7\137"+
+    "\4\0\5\137\2\0\16\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\1\137\1\u042d\14\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\6\11\1\u02b1\6\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\15\11"+
+    "\1\0\1\11\1\u042e\3\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\14\11\1\u042f\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\63\0"+
+    "\1\u0430\24\0\1\u027d\3\0\1\u0431\112\0\1\u0432\17\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\11\11\1\u02e9"+
+    "\3\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\15\11\1\0\1\u02a4\4\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\1\u0433\14\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\11\11\1\u0367\3\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\1\11\1\u0434\13\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\113\0\1\u0411\15\0\10\11\1\u0435\5\11\1\0"+
+    "\1\112\1\0\6\11\3\0\15\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\1\u0407\14\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\6\11\1\u0436\7\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\6\11\1\u0437\6\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\12\11\1\u0404\2\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\10\11"+
+    "\1\u0438\5\11\1\0\1\112\1\0\6\11\3\0\15\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\6\11\1\u0439\7\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\6\11\1\u03b9\6\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\1\11\1\u043a\13\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\3\11\1\u043b\11\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\1\u043c\4\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\10\11\1\u043d"+
+    "\5\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\111\0\1\u043e\60\0\1\u043f\54\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\11\11\1\u0440\3\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\14\11\1\u0441\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\3\11\1\u0441\11\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\13\11"+
+    "\1\u0414\1\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\6\11\1\u0442\6\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\11\11"+
+    "\1\u02b1\3\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\11\11\1\u0443\3\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\12\11\1\u0444\3\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\10\11\1\u0445\4\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\7\11"+
+    "\1\u0446\5\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\6\11\1\u0447\7\11"+
+    "\1\0\1\112\1\0\6\11\1\u0448\2\0\15\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\1\u0449\14\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\13\11\1\u044a\1\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\12\11"+
+    "\1\u044b\2\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\12\11\1\u044c\2\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\2\11"+
+    "\1\u044d\12\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\2\11\1\u044e\12\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\7\11"+
+    "\1\u044f\5\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\137\4\0\5\137"+
+    "\2\0\14\137\1\u0450\1\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\1\137\1\u0451\14\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\1\137\1\u0452\14\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\3\137\1\u0453\12\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\10\137\1\u0454\5\137"+
+    "\4\0\5\137\2\0\16\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\13\137\1\u0455\2\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\4\137\1\u0456\11\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\4\137\1\u0457\11\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\3\137\1\u0458\12\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\1\u0459\2\0\15\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\6\11\1\u045a\7\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\23\0\1\u045b\201\0\1\u045c\21\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
+    "\1\u045d\4\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\6\11\1\u045e\6\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\11\11\1\u045f\3\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\2\11\1\u0460\13\11\1\0\1\112"+
+    "\1\0\6\11\3\0\11\11\1\u0461\3\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\7\11"+
+    "\1\u0404\5\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\13\11\1\u0462\1\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\13\11"+
+    "\1\u030d\1\11\1\0\4\11\1\u030e\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\14\11\1\u031a\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\3\11"+
+    "\1\u031a\11\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\13\11\1\u043a\1\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\1\u0463"+
+    "\14\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\1\u0159\14\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\6\11"+
+    "\1\u0464\7\11\1\0\1\112\1\0\6\11\3\0\15\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\1\u0465\14\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\2\11\1\u0466\12\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\1\u0467"+
+    "\2\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\4\11\1\u0468\10\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\15\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\5\11\1\u0469\3\11\54\0\1\u046a\54\0\16\11"+
+    "\1\0\1\112\1\0\6\11\1\u0448\2\0\15\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\7\11\1\u046b\5\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\6\11\1\u046c"+
+    "\7\11\1\0\1\112\1\0\6\11\3\0\15\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\6\11\1\u046d\7\11\1\0\1\112\1\0"+
+    "\6\11\1\u0448\2\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\1\11\1\u041d\13\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\12\11\1\u046e\2\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\7\11\1\u046f\5\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\137\4\0\5\137\2\0\12\137"+
+    "\1\u0470\3\137\1\0\11\137\3\0\3\137\1\0\1\137"+
+    "\1\0\11\137\13\0\16\137\4\0\5\137\2\0\16\137"+
+    "\1\0\1\u0471\10\137\3\0\3\137\1\0\1\137\1\0"+
+    "\11\137\13\0\16\137\4\0\5\137\2\0\16\137\1\0"+
+    "\1\u0472\10\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\13\137\1\u0473\2\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\14\137\1\u0474\1\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\3\137\1\u0475\12\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\16\137\1\0\4\137"+
+    "\1\u0476\4\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\16\137\1\0\4\137"+
+    "\1\u0477\4\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\13\0\16\137\4\0\5\137\2\0\2\137\1\u0478\13\137"+
+    "\1\0\11\137\3\0\3\137\1\0\1\137\1\0\11\137"+
+    "\106\0\1\u0479\22\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\12\11\1\u047a\2\11\1\0\1\u047b\4\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\64\0"+
+    "\1\u047c\44\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\6\11\1\u047d\6\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\2\11\1\u047e\12\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\13\11\1\u047f\1\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\11\11\1\u0404\3\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\2\11\1\u0480\12\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\2\11\1\u0481\12\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\6\11\1\u0482\6\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\1\u0483\14\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\54\0\1\u0484\54\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\1\u0485\14\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\4\11\1\u0486\10\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\47\0\1\u0487\61\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\5\11\1\u0488\7\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\10\11\1\u0489\5\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\6\11\1\u048a\6\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\2\11\1\u045d"+
+    "\12\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\2\11\1\u048b\12\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\137\4\0\5\137\2\0\3\137\1\u048c\12\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\16\137\4\0\5\137\2\0\12\137\1\u048d\3\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\16\137\4\0\5\137\2\0\13\137\1\u048e\2\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\10\137\1\u048f\5\137\4\0\5\137\2\0\16\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\13\0"+
+    "\10\137\1\u0490\5\137\4\0\5\137\2\0\16\137\1\0"+
+    "\11\137\3\0\3\137\1\0\1\137\1\0\11\137\51\0"+
+    "\1\u0491\57\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\2\11\1\u0492\2\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\2\11\1\u0493\12\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\63\0\1\u0494\45\0\16\11\1\0\1\112\1\0"+
+    "\6\11\1\u0495\2\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\7\11\1\u0496\5\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\6\11\1\u0497\7\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\12\11\1\u0498\2\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\1\u0499\14\11\1\0\5\11\1\0\3\11\4\0"+
+    "\2\11\1\0\1\11\1\0\11\11\13\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\6\11\1\u0449\6\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\47\0\1\u049a\61\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\12\11\1\u049b\2\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\10\11\1\u049c\5\11\1\0\1\112\1\0\6\11\3\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\56\0\1\u049d\52\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\15\11\1\0\1\u049e\4\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\11\11"+
+    "\1\u049f\3\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\10\11\1\u04a0\4\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\15\11"+
+    "\1\0\2\11\1\u04a1\2\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\10\137\1\u04a2\5\137"+
+    "\4\0\5\137\2\0\16\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\13\137\1\u04a3\2\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\13\137\1\u04a4\2\137\1\0\11\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\55\0\1\u04a5\53\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\5\11\1\u04a6\7\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\11\11\1\u04a7\3\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\110\0\1\u04a8"+
+    "\61\0\1\u04a9\54\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\7\11\1\u04aa\5\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\2\11"+
+    "\1\u0460\13\11\1\0\1\112\1\0\6\11\3\0\15\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\10\11\1\u04ab\5\11\1\0\1\112"+
+    "\1\0\6\11\3\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\1\u04ac\14\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\56\0\1\u04ad\52\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\13\11\1\u04ae\1\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\1\u04af\14\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\64\0\1\u04b0\44\0\10\11\1\u04b1\5\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\10\11\1\u04b2\5\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\5\11\1\u04b3\7\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\1\u04b4\2\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\137\4\0\5\137\2\0"+
+    "\14\137\1\u04b5\1\137\1\0\11\137\3\0\3\137\1\0"+
+    "\1\137\1\0\11\137\13\0\16\137\4\0\5\137\2\0"+
+    "\1\137\1\u04b6\14\137\1\0\11\137\3\0\3\137\1\0"+
+    "\1\137\1\0\11\137\13\0\16\137\4\0\5\137\2\0"+
+    "\1\137\1\u04b7\14\137\1\0\11\137\3\0\3\137\1\0"+
+    "\1\137\1\0\11\137\15\0\1\u04b8\113\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\6\11\1\u04b9\6\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\13\0\16\11\1\0\1\112\1\0\6\11\3\0"+
+    "\14\11\1\u04ba\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\111\0\1\u04bb\53\0\1\u04bc"+
+    "\61\0\10\11\1\u04bd\5\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\13\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\13\11\1\u04be\1\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\3\0\6\11"+
+    "\1\u040d\6\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\64\0\1\u04bf\44\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\7\11\1\u0482\5\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\13\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\15\11\1\0\3\11\1\u04c0\1\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\53\0\1\u04c1"+
+    "\55\0\16\11\1\0\1\112\1\0\6\11\3\0\1\u04c2"+
+    "\14\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\12\11\1\u04c3\2\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\12\11\1\u04c4"+
+    "\2\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\54\0\1\u04c5\54\0\16\137\4\0"+
+    "\5\137\2\0\12\137\1\u04c6\3\137\1\0\11\137\3\0"+
+    "\3\137\1\0\1\137\1\0\11\137\13\0\16\137\4\0"+
+    "\5\137\2\0\16\137\1\0\1\u04c7\10\137\3\0\3\137"+
+    "\1\0\1\137\1\0\11\137\13\0\16\137\4\0\5\137"+
+    "\2\0\16\137\1\0\1\u04c8\10\137\3\0\3\137\1\0"+
+    "\1\137\1\0\11\137\60\0\1\u04c9\50\0\16\11\1\0"+
+    "\1\112\1\0\6\11\3\0\1\11\1\u04ca\13\11\1\0"+
+    "\5\11\1\0\3\11\4\0\2\11\1\0\1\11\1\0"+
+    "\11\11\56\0\1\u04cb\52\0\16\11\1\0\1\112\1\0"+
+    "\6\11\3\0\6\11\1\u04cc\6\11\1\0\5\11\1\0"+
+    "\3\11\4\0\2\11\1\0\1\11\1\0\11\11\13\0"+
+    "\16\11\1\0\1\112\1\0\6\11\3\0\11\11\1\u04cd"+
+    "\3\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\53\0\1\u04ce\55\0\16\11\1\0"+
+    "\1\112\1\0\6\11\1\u04cf\2\0\15\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\13\0\16\11\1\0\1\112\1\0\6\11\1\u04d0\2\0"+
+    "\15\11\1\0\5\11\1\0\3\11\4\0\2\11\1\0"+
+    "\1\11\1\0\11\11\13\0\16\11\1\0\1\112\1\0"+
+    "\6\11\1\u04d1\2\0\15\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\15\11\1\0\2\11"+
+    "\1\u04d2\2\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\47\0\1\u04d3\61\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\6\11\1\u04d4\6\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\64\0\1\u04d5\44\0\16\11\1\0\1\112\1\0\6\11"+
+    "\3\0\7\11\1\u04d6\5\11\1\0\5\11\1\0\3\11"+
+    "\4\0\2\11\1\0\1\11\1\0\11\11\13\0\6\11"+
+    "\1\u04d7\7\11\1\0\1\112\1\0\6\11\3\0\15\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\54\0\1\u04d8\115\0\1\u04d9\115\0\1\u04da"+
+    "\117\0\1\u04db\112\0\1\u04dc\55\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\6\11\1\u04dd\6\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\47\0\1\u04de\115\0\1\u04df\115\0\1\u04e0\132\0\1\u04e1"+
+    "\44\0\16\11\1\0\1\112\1\0\6\11\3\0\7\11"+
+    "\1\u04e2\5\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\56\0\1\u04e3\115\0\1\u04e4"+
+    "\115\0\1\u04e5\112\0\1\u04e6\55\0\16\11\1\0\1\112"+
+    "\1\0\6\11\3\0\7\11\1\u04e7\5\11\1\0\5\11"+
+    "\1\0\3\11\4\0\2\11\1\0\1\11\1\0\11\11"+
+    "\64\0\1\u04e8\115\0\1\u04e9\115\0\1\u04ea\44\0\16\11"+
+    "\1\0\1\112\1\0\6\11\3\0\13\11\1\u04eb\1\11"+
+    "\1\0\5\11\1\0\3\11\4\0\2\11\1\0\1\11"+
+    "\1\0\11\11\53\0\1\u04ec\115\0\1\u04ed\115\0\1\u04ee"+
+    "\55\0\16\11\1\0\1\112\1\0\6\11\3\0\7\11"+
+    "\1\u04ef\5\11\1\0\5\11\1\0\3\11\4\0\2\11"+
+    "\1\0\1\11\1\0\11\11\12\0";
 
   private static int [] zzUnpackTrans() {
-    int [] result = new int[85020];
+    int [] result = new int[88764];
     int offset = 0;
     offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
     return result;
@@ -2843,33 +2964,36 @@
   private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
 
   private static final String ZZ_ATTRIBUTE_PACKED_0 =
-    "\6\0\1\11\35\1\2\11\5\1\12\11\2\1\1\11"+
-    "\2\1\2\11\1\0\1\1\2\11\1\0\7\1\1\0"+
-    "\10\1\1\0\1\11\15\1\1\11\12\1\1\0\1\1"+
-    "\2\0\54\1\6\0\3\11\1\1\6\11\2\1\1\0"+
-    "\2\1\1\0\2\11\45\1\1\0\1\1\2\0\1\1"+
-    "\2\0\60\1\1\11\1\0\1\11\1\0\1\11\2\1"+
-    "\1\0\1\1\1\0\50\1\4\0\124\1\1\0\41\1"+
-    "\1\0\17\1\1\0\31\1\1\0\36\1\1\0\42\1"+
-    "\2\0\17\1\2\0\3\1\1\11\13\1\1\0\13\1"+
-    "\1\0\36\1\1\0\1\11\1\0\43\1\1\0\1\11"+
-    "\12\1\1\0\3\1\2\11\1\0\12\1\1\0\21\1"+
-    "\1\0\34\1\1\0\1\11\13\1\1\0\10\1\1\0"+
-    "\14\1\1\0\6\1\2\0\3\1\1\0\12\1\1\0"+
-    "\45\1\1\0\7\1\1\0\16\1\1\0\2\1\1\0"+
-    "\10\1\1\0\7\1\2\0\2\1\1\0\55\1\1\0"+
-    "\11\1\1\0\11\1\1\0\5\1\2\0\42\1\2\0"+
-    "\5\1\1\0\10\1\1\11\5\1\1\0\1\11\1\0"+
-    "\31\1\2\0\1\11\13\1\2\11\5\1\1\0\20\1"+
-    "\2\0\1\11\12\1\1\0\16\1\2\0\7\1\1\0"+
-    "\11\1\3\0\5\1\1\0\7\1\3\0\4\1\1\0"+
-    "\3\1\1\0\3\1\1\0\1\11\1\0\3\1\1\11"+
-    "\3\1\1\0\3\1\1\11\1\0\2\1\3\0\1\1"+
-    "\2\0\2\1\4\0\1\11\1\1\4\0\1\1\3\0"+
-    "\1\11\1\1\3\0\1\1\3\11\1\1";
+    "\6\0\1\11\35\1\2\11\1\1\1\11\4\1\12\11"+
+    "\2\1\1\11\2\1\2\11\1\0\1\1\2\11\1\0"+
+    "\7\1\1\0\10\1\1\0\1\11\15\1\1\11\12\1"+
+    "\1\0\1\1\2\0\54\1\6\0\3\11\1\1\6\11"+
+    "\2\1\1\0\2\1\1\0\2\11\45\1\1\0\1\1"+
+    "\2\0\1\1\2\0\60\1\1\11\1\0\1\11\1\0"+
+    "\1\11\2\1\1\0\1\1\1\0\50\1\4\0\125\1"+
+    "\1\0\42\1\1\0\17\1\1\0\31\1\1\0\36\1"+
+    "\1\0\44\1\2\0\17\1\2\0\3\1\1\11\13\1"+
+    "\1\0\13\1\1\0\37\1\1\0\1\11\1\0\44\1"+
+    "\1\0\1\11\12\1\1\0\3\1\2\11\1\0\12\1"+
+    "\1\0\22\1\1\0\35\1\1\0\1\11\13\1\1\0"+
+    "\12\1\1\0\14\1\1\0\6\1\2\0\3\1\1\0"+
+    "\12\1\1\0\47\1\1\0\10\1\1\0\17\1\1\0"+
+    "\2\1\1\0\10\1\1\0\7\1\2\0\2\1\1\0"+
+    "\61\1\1\0\12\1\1\0\11\1\1\0\5\1\2\0"+
+    "\46\1\2\0\5\1\1\0\10\1\1\11\5\1\1\0"+
+    "\1\11\1\0\35\1\2\0\1\11\13\1\2\11\10\1"+
+    "\1\0\20\1\1\0\1\1\1\0\1\11\12\1\1\0"+
+    "\2\1\1\0\16\1\1\0\2\1\1\0\7\1\1\0"+
+    "\2\1\1\0\11\1\1\0\2\1\2\0\4\1\1\0"+
+    "\2\1\1\0\7\1\1\0\2\1\2\0\3\1\1\0"+
+    "\2\1\1\0\3\1\1\0\3\1\1\0\2\1\1\11"+
+    "\1\0\2\1\1\0\1\1\1\11\3\1\1\0\3\1"+
+    "\1\11\1\1\1\0\2\1\1\11\3\0\1\1\1\0"+
+    "\1\1\1\0\2\1\4\0\1\11\1\1\4\0\1\1"+
+    "\3\0\1\11\1\1\3\0\1\1\3\11\1\1";
 
   private static int [] zzUnpackAttribute() {
-    int [] result = new int[1209];
+    int [] result = new int[1263];
     int offset = 0;
     offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
     return result;
@@ -2920,12 +3044,12 @@
   private int yychar;
 
   /**
-   * the number of characters from the last newline up to the start of the
+   * the number of characters from the last newline up to the start of the 
    * matched text
    */
   private int yycolumn;
 
-  /**
+  /** 
    * zzAtBOL == true <=> the scanner is currently at the beginning of a line
    */
   private boolean zzAtBOL = true;
@@ -2935,8 +3059,8 @@
 
   /** denotes if the user-EOF-code has already been executed */
   private boolean zzEOFDone;
-
-  /**
+  
+  /** 
    * The number of occupied positions in zzBuffer beyond zzEndRead.
    * When a lead/high surrogate has been read from the input stream
    * into the final zzBuffer position, this will have a value of 1;
@@ -3125,7 +3249,7 @@
   }
 
 
-  /**
+  /** 
    * Unpacks the compressed character translation table.
    *
    * @param packed   the packed character translation table
@@ -3148,7 +3272,7 @@
    * Refills the input buffer.
    *
    * @return      <code>false</code>, iff there was new input.
-   *
+   * 
    * @exception   java.io.IOException  if any I/O-Error occurs
    */
   private boolean zzRefill() throws java.io.IOException {
@@ -3205,7 +3329,7 @@
     return true;
   }
 
-
+    
   /**
    * Closes the input stream.
    */
@@ -3222,13 +3346,13 @@
    * Resets the scanner to read from a new input stream.
    * Does not close the old reader.
    *
-   * All internal variables are reset, the old input stream
+   * All internal variables are reset, the old input stream 
    * <b>cannot</b> be reused (internal buffer is discarded and lost).
    * Lexical state is set to <tt>ZZ_INITIAL</tt>.
    *
    * Internal scan buffer is resized down to its initial length, if it has grown.
    *
-   * @param reader   the new input stream
+   * @param reader   the new input stream 
    */
   public final void yyreset(java.io.Reader reader) {
     zzReader = reader;
@@ -3272,12 +3396,12 @@
 
 
   /**
-   * Returns the character at position <tt>pos</tt> from the
-   * matched text.
-   *
+   * Returns the character at position <tt>pos</tt> from the 
+   * matched text. 
+   * 
    * It is equivalent to yytext().charAt(pos), but faster
    *
-   * @param pos the position of the character to fetch.
+   * @param pos the position of the character to fetch. 
    *            A value from 0 to yylength()-1.
    *
    * @return the character at position pos
@@ -3298,8 +3422,8 @@
   /**
    * Reports an error that occured while scanning.
    *
-   * In a wellformed scanner (no or only correct usage of
-   * yypushback(int) and a match-all fallback rule) this method
+   * In a wellformed scanner (no or only correct usage of 
+   * yypushback(int) and a match-all fallback rule) this method 
    * will only be called with things that "Can't Possibly Happen".
    * If this method is called, something is seriously wrong
    * (e.g. a JFlex bug producing a faulty scanner etc.).
@@ -3319,7 +3443,7 @@
     }
 
     throw new Error(message);
-  }
+  } 
 
 
   /**
@@ -3414,9 +3538,9 @@
           zzEndReadL = zzEndRead;
           zzMarkedPosL = zzMarkedPos;
           zzBufferL = zzBuffer;
-          if (eof)
+          if (eof) 
             zzPeek = false;
-          else
+          else 
             zzPeek = zzBufferL[zzMarkedPosL] == '\n';
         }
         if (zzPeek) yyline--;
@@ -3424,7 +3548,7 @@
       zzAction = -1;
 
       zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
-
+  
       zzState = ZZ_LEXSTATE[zzLexicalState];
 
       // set up zzAction for empty match case:
@@ -3436,7 +3560,7 @@
 
       zzForAction: {
         while (true) {
-
+    
           if (zzCurrentPosL < zzEndReadL) {
             zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL);
             zzCurrentPosL += Character.charCount(zzInput);
@@ -3487,135 +3611,139 @@
             case YYINITIAL: {
               return newToken(EOF);
             }
-            case 1210: break;
+            case 1264: break;
             case PARAM_LIST_OR_ID: {
               yybegin(YYINITIAL);
             }
-            case 1211: break;
+            case 1265: break;
             case PARAM_LIST: {
               yybegin(YYINITIAL);
             }
-            case 1212: break;
+            case 1266: break;
             case ARRAY_DESCRIPTOR: {
               yybegin(YYINITIAL);
             }
-            case 1213: break;
+            case 1267: break;
             case STRING: {
               return invalidStringOrChar("Unterminated string literal");
             }
-            case 1214: break;
+            case 1268: break;
             case CHAR: {
               return invalidStringOrChar("Unterminated character literal");
             }
-            case 1215: break;
+            case 1269: break;
             default:
         return null;
         }
       }
       else {
         switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
-          case 1:
+          case 1: 
             { return invalidToken("Invalid text");
             }
-          case 141: break;
-          case 2:
+          case 149: break;
+          case 2: 
             { return newToken(POSITIVE_INTEGER_LITERAL);
             }
-          case 142: break;
-          case 3:
+          case 150: break;
+          case 3: 
             { return newToken(SIMPLE_NAME);
             }
-          case 143: break;
-          case 4:
+          case 151: break;
+          case 4: 
             { return invalidToken("Invalid directive");
             }
-          case 144: break;
-          case 5:
+          case 152: break;
+          case 5: 
             { return newToken(PRIMITIVE_TYPE);
             }
-          case 145: break;
-          case 6:
+          case 153: break;
+          case 6: 
             { yybegin(ARRAY_DESCRIPTOR);
       return newToken(ARRAY_TYPE_PREFIX);
             }
-          case 146: break;
-          case 7:
+          case 154: break;
+          case 7: 
             { return newToken(WHITE_SPACE, true);
             }
-          case 147: break;
-          case 8:
+          case 155: break;
+          case 8: 
             { beginStringOrChar(STRING); sb.append('"');
             }
-          case 148: break;
-          case 9:
+          case 156: break;
+          case 9: 
             { beginStringOrChar(CHAR); sb.append('\'');
             }
-          case 149: break;
-          case 10:
-            { return newToken(LINE_COMMENT, true);
-            }
-          case 150: break;
-          case 11:
-            { return newToken(VOID_TYPE);
-            }
-          case 151: break;
-          case 12:
-            { return newToken(EQUAL);
-            }
-          case 152: break;
-          case 13:
-            { return newToken(COLON);
-            }
-          case 153: break;
-          case 14:
-            { return newToken(COMMA);
-            }
-          case 154: break;
-          case 15:
-            { return newToken(OPEN_BRACE);
-            }
-          case 155: break;
-          case 16:
-            { return newToken(CLOSE_BRACE);
-            }
-          case 156: break;
-          case 17:
-            { return newToken(OPEN_PAREN);
-            }
           case 157: break;
-          case 18:
-            { return newToken(CLOSE_PAREN);
+          case 10: 
+            { return newToken(AT);
             }
           case 158: break;
-          case 19:
-            { yypushback(1); yybegin(YYINITIAL);
+          case 11: 
+            { return newToken(LINE_COMMENT, true);
             }
           case 159: break;
-          case 20:
-            { return newToken(PARAM_LIST_OR_ID_PRIMITIVE_TYPE);
+          case 12: 
+            { return newToken(VOID_TYPE);
             }
           case 160: break;
-          case 21:
-            { return newToken(ARRAY_TYPE_PREFIX);
+          case 13: 
+            { return newToken(EQUAL);
             }
           case 161: break;
-          case 22:
-            { yybegin(YYINITIAL); return newToken(PRIMITIVE_TYPE);
+          case 14: 
+            { return newToken(COLON);
             }
           case 162: break;
-          case 23:
-            { sb.append(yytext());
+          case 15: 
+            { return newToken(COMMA);
             }
           case 163: break;
-          case 24:
-            { sb.append('"'); return endStringOrChar(STRING_LITERAL);
+          case 16: 
+            { return newToken(OPEN_BRACE);
             }
           case 164: break;
-          case 25:
-            { return invalidStringOrChar("Unterminated string literal");
+          case 17: 
+            { return newToken(CLOSE_BRACE);
             }
           case 165: break;
-          case 26:
+          case 18: 
+            { return newToken(OPEN_PAREN);
+            }
+          case 166: break;
+          case 19: 
+            { return newToken(CLOSE_PAREN);
+            }
+          case 167: break;
+          case 20: 
+            { yypushback(1); yybegin(YYINITIAL);
+            }
+          case 168: break;
+          case 21: 
+            { return newToken(PARAM_LIST_OR_ID_PRIMITIVE_TYPE);
+            }
+          case 169: break;
+          case 22: 
+            { return newToken(ARRAY_TYPE_PREFIX);
+            }
+          case 170: break;
+          case 23: 
+            { yybegin(YYINITIAL); return newToken(PRIMITIVE_TYPE);
+            }
+          case 171: break;
+          case 24: 
+            { sb.append(yytext());
+            }
+          case 172: break;
+          case 25: 
+            { sb.append('"'); return endStringOrChar(STRING_LITERAL);
+            }
+          case 173: break;
+          case 26: 
+            { return invalidStringOrChar("Unterminated string literal");
+            }
+          case 174: break;
+          case 27: 
             { sb.append('\'');
         if (sb.length() == 2) {
             return invalidStringOrChar("Empty character literal");
@@ -3625,470 +3753,498 @@
 
         return endStringOrChar(CHAR_LITERAL);
             }
-          case 166: break;
-          case 27:
+          case 175: break;
+          case 28: 
             { return invalidStringOrChar("Unterminated character literal");
             }
-          case 167: break;
-          case 28:
+          case 176: break;
+          case 29: 
             { return newToken(FLOAT_LITERAL_OR_ID);
             }
-          case 168: break;
-          case 29:
+          case 177: break;
+          case 30: 
             { return newToken(BYTE_LITERAL);
             }
-          case 169: break;
-          case 30:
+          case 178: break;
+          case 31: 
             { return newToken(DOUBLE_LITERAL);
             }
-          case 170: break;
-          case 31:
+          case 179: break;
+          case 32: 
             { return newToken(LONG_LITERAL);
             }
-          case 171: break;
-          case 32:
+          case 180: break;
+          case 33: 
             { return newToken(SHORT_LITERAL);
             }
-          case 172: break;
-          case 33:
+          case 181: break;
+          case 34: 
             { return newToken(DOUBLE_LITERAL_OR_ID);
             }
-          case 173: break;
-          case 34:
+          case 182: break;
+          case 35: 
             { return newToken(NEGATIVE_INTEGER_LITERAL);
             }
-          case 174: break;
-          case 35:
+          case 183: break;
+          case 36: 
             { return newToken(ARROW);
             }
-          case 175: break;
-          case 36:
+          case 184: break;
+          case 37: 
             { return newToken(DOTDOT);
             }
-          case 176: break;
-          case 37:
+          case 185: break;
+          case 38: 
             { // go back and re-lex it as a PARAM_LIST_OR_ID
         yypushback(yylength());
         yybegin(PARAM_LIST_OR_ID);
             }
-          case 177: break;
-          case 38:
+          case 186: break;
+          case 39: 
             { return newToken(REGISTER);
             }
-          case 178: break;
-          case 39:
+          case 187: break;
+          case 40: 
             { sb.append(yytext());
         setStringOrCharError("Invalid escape sequence " + yytext());
             }
-          case 179: break;
-          case 40:
+          case 188: break;
+          case 41: 
             { sb.append('\b');
             }
-          case 180: break;
-          case 41:
+          case 189: break;
+          case 42: 
             { sb.append('\f');
             }
-          case 181: break;
-          case 42:
+          case 190: break;
+          case 43: 
             { sb.append(yytext());
         setStringOrCharError("Invalid \\u sequence. \\u must be followed by 4 hex digits");
             }
-          case 182: break;
-          case 43:
+          case 191: break;
+          case 44: 
             { sb.append('\r');
             }
-          case 183: break;
-          case 44:
+          case 192: break;
+          case 45: 
             { sb.append('\n');
             }
-          case 184: break;
-          case 45:
+          case 193: break;
+          case 46: 
             { sb.append('\t');
             }
-          case 185: break;
-          case 46:
+          case 194: break;
+          case 47: 
             { sb.append('"');
             }
-          case 186: break;
-          case 47:
+          case 195: break;
+          case 48: 
             { sb.append('\'');
             }
-          case 187: break;
-          case 48:
+          case 196: break;
+          case 49: 
             { sb.append('\\');
             }
-          case 188: break;
-          case 49:
+          case 197: break;
+          case 50: 
             { sb.append(yytext());
         setStringOrCharError("Invalid \\u sequence. \\u must be followed by exactly 4 hex digits");
             }
-          case 189: break;
-          case 50:
+          case 198: break;
+          case 51: 
             { return newToken(FLOAT_LITERAL);
             }
-          case 190: break;
-          case 51:
+          case 199: break;
+          case 52: 
             { // go back and re-lex it as a PARAM_LIST
         yypushback(yylength());
         yybegin(PARAM_LIST);
             }
-          case 191: break;
-          case 52:
+          case 200: break;
+          case 53: 
             { return newToken(CLASS_DESCRIPTOR);
             }
-          case 192: break;
-          case 53:
+          case 201: break;
+          case 54: 
             { return newToken(INSTRUCTION_FORMAT10x);
             }
-          case 193: break;
-          case 54:
+          case 202: break;
+          case 55: 
             { return newToken(MEMBER_NAME);
             }
-          case 194: break;
-          case 55:
+          case 203: break;
+          case 56: 
             { yybegin(YYINITIAL); return newToken(CLASS_DESCRIPTOR);
             }
-          case 195: break;
-          case 56:
+          case 204: break;
+          case 57: 
             { return newToken(INSTRUCTION_FORMAT22c_FIELD);
             }
-          case 196: break;
-          case 57:
+          case 205: break;
+          case 58: 
             { return newToken(INSTRUCTION_FORMAT23x);
             }
-          case 197: break;
-          case 58:
+          case 206: break;
+          case 59: 
             { return newToken(INSTRUCTION_FORMAT21c_FIELD);
             }
-          case 198: break;
-          case 59:
+          case 207: break;
+          case 60: 
             { return newToken(ACCESS_SPEC);
             }
-          case 199: break;
-          case 60:
+          case 208: break;
+          case 61: 
             { return newToken(INSTRUCTION_FORMAT12x_OR_ID);
             }
-          case 200: break;
-          case 61:
+          case 209: break;
+          case 62: 
             { return newToken(NULL_LITERAL);
             }
-          case 201: break;
-          case 62:
+          case 210: break;
+          case 63: 
             { return newToken(BOOL_LITERAL);
             }
-          case 202: break;
-          case 63:
+          case 211: break;
+          case 64: 
             { return newToken(INSTRUCTION_FORMAT10t);
             }
-          case 203: break;
-          case 64:
+          case 212: break;
+          case 65: 
             { return newToken(ANNOTATION_VISIBILITY);
             }
-          case 204: break;
-          case 65:
+          case 213: break;
+          case 66: 
             { return newToken(INSTRUCTION_FORMAT22t);
             }
-          case 205: break;
-          case 66:
+          case 214: break;
+          case 67: 
             { return newToken(LINE_DIRECTIVE);
             }
-          case 206: break;
-          case 67:
+          case 215: break;
+          case 68: 
             { return newToken(ENUM_DIRECTIVE);
             }
-          case 207: break;
-          case 68:
+          case 216: break;
+          case 69: 
             { return newToken(INSTRUCTION_FORMAT31i_OR_ID);
             }
-          case 208: break;
-          case 69:
+          case 217: break;
+          case 70: 
             { return newToken(INSTRUCTION_FORMAT11x);
             }
-          case 209: break;
-          case 70:
+          case 218: break;
+          case 71: 
             { return newToken(INSTRUCTION_FORMAT21t);
             }
-          case 210: break;
-          case 71:
+          case 219: break;
+          case 72: 
             { return newToken(FIELD_DIRECTIVE);
             }
-          case 211: break;
-          case 72:
+          case 220: break;
+          case 73: 
             { return newToken(CLASS_DIRECTIVE);
             }
-          case 212: break;
-          case 73:
+          case 221: break;
+          case 74: 
             { return newToken(CATCH_DIRECTIVE);
             }
-          case 213: break;
-          case 74:
+          case 222: break;
+          case 75: 
             { return newToken(LOCAL_DIRECTIVE);
             }
-          case 214: break;
-          case 75:
+          case 223: break;
+          case 76: 
             { return newToken(SUPER_DIRECTIVE);
             }
-          case 215: break;
-          case 76:
+          case 224: break;
+          case 77: 
             { return newToken(PARAMETER_DIRECTIVE);
             }
-          case 216: break;
-          case 77:
+          case 225: break;
+          case 78: 
             { sb.append((char)Integer.parseInt(yytext().substring(2,6), 16));
             }
-          case 217: break;
-          case 78:
+          case 226: break;
+          case 79: 
             { return newToken(LOCALS_DIRECTIVE);
             }
-          case 218: break;
-          case 79:
+          case 227: break;
+          case 80: 
             { return newToken(SOURCE_DIRECTIVE);
             }
-          case 219: break;
-          case 80:
+          case 228: break;
+          case 81: 
             { return newToken(METHOD_DIRECTIVE);
             }
-          case 220: break;
-          case 81:
+          case 229: break;
+          case 82: 
             { return newToken(INSTRUCTION_FORMAT11n);
             }
-          case 221: break;
-          case 82:
+          case 230: break;
+          case 83: 
             { return newToken(INSTRUCTION_FORMAT32x);
             }
-          case 222: break;
-          case 83:
+          case 231: break;
+          case 84: 
             { return newToken(INSTRUCTION_FORMAT20t);
             }
-          case 223: break;
-          case 84:
+          case 232: break;
+          case 85: 
             { return newToken(INSTRUCTION_FORMAT30t);
             }
-          case 224: break;
-          case 85:
+          case 233: break;
+          case 86: 
             { return newToken(INSTRUCTION_FORMAT21s);
             }
-          case 225: break;
-          case 86:
+          case 234: break;
+          case 87: 
             { return newToken(INSTRUCTION_FORMAT22s_OR_ID);
             }
-          case 226: break;
-          case 87:
+          case 235: break;
+          case 88: 
             { return newToken(VERIFICATION_ERROR_TYPE);
             }
-          case 227: break;
-          case 88:
+          case 236: break;
+          case 89: 
             { return newToken(FIELD_OFFSET);
             }
-          case 228: break;
-          case 89:
+          case 237: break;
+          case 90: 
             { return newToken(CATCHALL_DIRECTIVE);
             }
-          case 229: break;
-          case 90:
+          case 238: break;
+          case 91: 
             { return newToken(PROLOGUE_DIRECTIVE);
             }
-          case 230: break;
-          case 91:
+          case 239: break;
+          case 92: 
             { return newToken(EPILOGUE_DIRECTIVE);
             }
-          case 231: break;
-          case 92:
+          case 240: break;
+          case 93: 
             { return newToken(INSTRUCTION_FORMAT22c_TYPE);
             }
-          case 232: break;
-          case 93:
+          case 241: break;
+          case 94: 
             { return newToken(INSTRUCTION_FORMAT22cs_FIELD);
             }
-          case 233: break;
-          case 94:
+          case 242: break;
+          case 95: 
             { return newToken(INLINE_INDEX);
             }
-          case 234: break;
-          case 95:
+          case 243: break;
+          case 96: 
             { return newToken(END_FIELD_DIRECTIVE);
             }
-          case 235: break;
-          case 96:
+          case 244: break;
+          case 97: 
             { return newToken(END_LOCAL_DIRECTIVE);
             }
-          case 236: break;
-          case 97:
+          case 245: break;
+          case 98: 
             { return newToken(END_PARAMETER_DIRECTIVE);
             }
-          case 237: break;
-          case 98:
+          case 246: break;
+          case 99: 
             { return newToken(REGISTERS_DIRECTIVE);
             }
-          case 238: break;
-          case 99:
+          case 247: break;
+          case 100: 
             { return newToken(INSTRUCTION_FORMAT51l);
             }
-          case 239: break;
-          case 100:
+          case 248: break;
+          case 101: 
             { return newToken(INSTRUCTION_FORMAT21c_TYPE);
             }
-          case 240: break;
-          case 101:
-            { return newToken(VTABLE_INDEX);
-            }
-          case 241: break;
-          case 102:
-            { return newToken(IMPLEMENTS_DIRECTIVE);
-            }
-          case 242: break;
-          case 103:
-            { return newToken(ARRAY_DATA_DIRECTIVE);
-            }
-          case 243: break;
-          case 104:
-            { return newToken(ANNOTATION_DIRECTIVE);
-            }
-          case 244: break;
-          case 105:
-            { return newToken(END_METHOD_DIRECTIVE);
-            }
-          case 245: break;
-          case 106:
-            { return newToken(INSTRUCTION_FORMAT22x);
-            }
-          case 246: break;
-          case 107:
-            { return newToken(INSTRUCTION_FORMAT22b);
-            }
-          case 247: break;
-          case 108:
-            { return newToken(INSTRUCTION_FORMAT35c_METHOD);
-            }
-          case 248: break;
-          case 109:
-            { return newToken(INSTRUCTION_FORMAT21c_STRING);
-            }
           case 249: break;
-          case 110:
-            { return newToken(INSTRUCTION_FORMAT21ih);
+          case 102: 
+            { return newToken(METHOD_HANDLE_TYPE_FIELD);
             }
           case 250: break;
-          case 111:
-            { return newToken(INSTRUCTION_FORMAT22s);
+          case 103: 
+            { return newToken(VTABLE_INDEX);
             }
           case 251: break;
-          case 112:
-            { return newToken(INSTRUCTION_FORMAT12x);
+          case 104: 
+            { return newToken(IMPLEMENTS_DIRECTIVE);
             }
           case 252: break;
-          case 113:
-            { return newToken(INSTRUCTION_FORMAT22c_FIELD_ODEX);
+          case 105: 
+            { return newToken(ARRAY_DATA_DIRECTIVE);
             }
           case 253: break;
-          case 114:
-            { return newToken(INSTRUCTION_FORMAT31i);
+          case 106: 
+            { return newToken(ANNOTATION_DIRECTIVE);
             }
           case 254: break;
-          case 115:
-            { return newToken(INSTRUCTION_FORMAT31t);
+          case 107: 
+            { return newToken(END_METHOD_DIRECTIVE);
             }
           case 255: break;
-          case 116:
-            { return newToken(INSTRUCTION_FORMAT21c_FIELD_ODEX);
+          case 108: 
+            { return newToken(INSTRUCTION_FORMAT22x);
             }
           case 256: break;
-          case 117:
-            { return newToken(SUBANNOTATION_DIRECTIVE);
+          case 109: 
+            { return newToken(INSTRUCTION_FORMAT22b);
             }
           case 257: break;
-          case 118:
-            { return newToken(SPARSE_SWITCH_DIRECTIVE);
+          case 110: 
+            { return newToken(INSTRUCTION_FORMAT35c_METHOD);
             }
           case 258: break;
-          case 119:
-            { return newToken(PACKED_SWITCH_DIRECTIVE);
+          case 111: 
+            { return newToken(INSTRUCTION_FORMAT21c_STRING);
             }
           case 259: break;
-          case 120:
-            { return newToken(RESTART_LOCAL_DIRECTIVE);
+          case 112: 
+            { return newToken(INSTRUCTION_FORMAT21ih);
             }
           case 260: break;
-          case 121:
-            { return newToken(INSTRUCTION_FORMAT35mi_METHOD);
+          case 113: 
+            { return newToken(INSTRUCTION_FORMAT22s);
             }
           case 261: break;
-          case 122:
-            { return newToken(END_ARRAY_DATA_DIRECTIVE);
+          case 114: 
+            { return newToken(INSTRUCTION_FORMAT12x);
             }
           case 262: break;
-          case 123:
-            { return newToken(END_ANNOTATION_DIRECTIVE);
+          case 115: 
+            { return newToken(INSTRUCTION_FORMAT22c_FIELD_ODEX);
             }
           case 263: break;
-          case 124:
-            { return newToken(INSTRUCTION_FORMAT35c_TYPE);
+          case 116: 
+            { return newToken(INSTRUCTION_FORMAT35c_CALL_SITE);
             }
           case 264: break;
-          case 125:
-            { return newToken(INSTRUCTION_FORMAT21lh);
+          case 117: 
+            { return newToken(INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE);
             }
           case 265: break;
-          case 126:
-            { return newToken(INSTRUCTION_FORMAT35ms_METHOD);
+          case 118: 
+            { return newToken(INSTRUCTION_FORMAT31i);
             }
           case 266: break;
-          case 127:
-            { return newToken(INSTRUCTION_FORMAT3rc_METHOD);
+          case 119: 
+            { return newToken(INSTRUCTION_FORMAT31t);
             }
           case 267: break;
-          case 128:
-            { return newToken(INSTRUCTION_FORMAT45cc_METHOD);
+          case 120: 
+            { return newToken(INSTRUCTION_FORMAT21c_FIELD_ODEX);
             }
           case 268: break;
-          case 129:
-            { return newToken(END_SUBANNOTATION_DIRECTIVE);
+          case 121: 
+            { return newToken(SUBANNOTATION_DIRECTIVE);
             }
           case 269: break;
-          case 130:
-            { return newToken(END_SPARSE_SWITCH_DIRECTIVE);
+          case 122: 
+            { return newToken(SPARSE_SWITCH_DIRECTIVE);
             }
           case 270: break;
-          case 131:
-            { return newToken(END_PACKED_SWITCH_DIRECTIVE);
+          case 123: 
+            { return newToken(PACKED_SWITCH_DIRECTIVE);
             }
           case 271: break;
-          case 132:
-            { return newToken(INSTRUCTION_FORMAT31c);
+          case 124: 
+            { return newToken(RESTART_LOCAL_DIRECTIVE);
             }
           case 272: break;
-          case 133:
-            { return newToken(INSTRUCTION_FORMAT35c_METHOD_ODEX);
+          case 125: 
+            { return newToken(INSTRUCTION_FORMAT35mi_METHOD);
             }
           case 273: break;
-          case 134:
-            { return newToken(INSTRUCTION_FORMAT10x_ODEX);
+          case 126: 
+            { return newToken(METHOD_HANDLE_TYPE_METHOD);
             }
           case 274: break;
-          case 135:
-            { return newToken(INSTRUCTION_FORMAT3rmi_METHOD);
+          case 127: 
+            { return newToken(END_ARRAY_DATA_DIRECTIVE);
             }
           case 275: break;
-          case 136:
-            { return newToken(INSTRUCTION_FORMAT3rc_TYPE);
+          case 128: 
+            { return newToken(END_ANNOTATION_DIRECTIVE);
             }
           case 276: break;
-          case 137:
-            { return newToken(INSTRUCTION_FORMAT3rms_METHOD);
+          case 129: 
+            { return newToken(INSTRUCTION_FORMAT35c_TYPE);
             }
           case 277: break;
-          case 138:
-            { return newToken(INSTRUCTION_FORMAT4rcc_METHOD);
+          case 130: 
+            { return newToken(INSTRUCTION_FORMAT21c_METHOD_TYPE);
             }
           case 278: break;
-          case 139:
-            { return newToken(INSTRUCTION_FORMAT3rc_METHOD_ODEX);
+          case 131: 
+            { return newToken(INSTRUCTION_FORMAT21lh);
             }
           case 279: break;
-          case 140:
-            { return newToken(INSTRUCTION_FORMAT20bc);
+          case 132: 
+            { return newToken(INSTRUCTION_FORMAT35ms_METHOD);
             }
           case 280: break;
+          case 133: 
+            { return newToken(INSTRUCTION_FORMAT3rc_METHOD);
+            }
+          case 281: break;
+          case 134: 
+            { return newToken(INSTRUCTION_FORMAT45cc_METHOD);
+            }
+          case 282: break;
+          case 135: 
+            { return newToken(END_SUBANNOTATION_DIRECTIVE);
+            }
+          case 283: break;
+          case 136: 
+            { return newToken(END_SPARSE_SWITCH_DIRECTIVE);
+            }
+          case 284: break;
+          case 137: 
+            { return newToken(END_PACKED_SWITCH_DIRECTIVE);
+            }
+          case 285: break;
+          case 138: 
+            { return newToken(INSTRUCTION_FORMAT31c);
+            }
+          case 286: break;
+          case 139: 
+            { return newToken(INSTRUCTION_FORMAT3rc_CALL_SITE);
+            }
+          case 287: break;
+          case 140: 
+            { return newToken(INSTRUCTION_FORMAT35c_METHOD_ODEX);
+            }
+          case 288: break;
+          case 141: 
+            { return newToken(INSTRUCTION_FORMAT21c_METHOD_HANDLE);
+            }
+          case 289: break;
+          case 142: 
+            { return newToken(INSTRUCTION_FORMAT10x_ODEX);
+            }
+          case 290: break;
+          case 143: 
+            { return newToken(INSTRUCTION_FORMAT3rmi_METHOD);
+            }
+          case 291: break;
+          case 144: 
+            { return newToken(INSTRUCTION_FORMAT3rc_TYPE);
+            }
+          case 292: break;
+          case 145: 
+            { return newToken(INSTRUCTION_FORMAT3rms_METHOD);
+            }
+          case 293: break;
+          case 146: 
+            { return newToken(INSTRUCTION_FORMAT4rcc_METHOD);
+            }
+          case 294: break;
+          case 147: 
+            { return newToken(INSTRUCTION_FORMAT3rc_METHOD_ODEX);
+            }
+          case 295: break;
+          case 148: 
+            { return newToken(INSTRUCTION_FORMAT20bc);
+            }
+          case 296: break;
           default:
             zzScanError(ZZ_NO_MATCH);
         }
diff --git a/smali/src/main/java/org/jf/smali/smaliParser.java b/smali/src/main/java/org/jf/smali/smaliParser.java
index 72ef034..2159fc6 100644
--- a/smali/src/main/java/org/jf/smali/smaliParser.java
+++ b/smali/src/main/java/org/jf/smali/smaliParser.java
@@ -1,8 +1,7 @@
-// $ANTLR 3.5.2 smaliParser.g 2017-04-20 15:20:45
+// $ANTLR 3.5.2 smaliParser.g 2019-04-05 11:21:30
 
 package org.jf.smali;
 
-import org.jf.dexlib2.Format;
 import org.jf.dexlib2.Opcode;
 import org.jf.dexlib2.Opcodes;
 
@@ -20,7 +19,7 @@
 	public static final String[] tokenNames = new String[] {
 		"<invalid>", "<EOR>", "<DOWN>", "<UP>", "ACCESS_SPEC", "ANNOTATION_DIRECTIVE", 
 		"ANNOTATION_VISIBILITY", "ARRAY_DATA_DIRECTIVE", "ARRAY_TYPE_PREFIX", 
-		"ARROW", "BOOL_LITERAL", "BYTE_LITERAL", "CATCHALL_DIRECTIVE", "CATCH_DIRECTIVE", 
+		"ARROW", "AT", "BOOL_LITERAL", "BYTE_LITERAL", "CATCHALL_DIRECTIVE", "CATCH_DIRECTIVE", 
 		"CHAR_LITERAL", "CLASS_DESCRIPTOR", "CLASS_DIRECTIVE", "CLOSE_BRACE", 
 		"CLOSE_PAREN", "COLON", "COMMA", "DOTDOT", "DOUBLE_LITERAL", "DOUBLE_LITERAL_OR_ID", 
 		"END_ANNOTATION_DIRECTIVE", "END_ARRAY_DATA_DIRECTIVE", "END_FIELD_DIRECTIVE", 
@@ -31,49 +30,54 @@
 		"INSTRUCTION_FORMAT10t", "INSTRUCTION_FORMAT10x", "INSTRUCTION_FORMAT10x_ODEX", 
 		"INSTRUCTION_FORMAT11n", "INSTRUCTION_FORMAT11x", "INSTRUCTION_FORMAT12x", 
 		"INSTRUCTION_FORMAT12x_OR_ID", "INSTRUCTION_FORMAT20bc", "INSTRUCTION_FORMAT20t", 
-		"INSTRUCTION_FORMAT21c_FIELD", "INSTRUCTION_FORMAT21c_FIELD_ODEX", "INSTRUCTION_FORMAT21c_STRING", 
-		"INSTRUCTION_FORMAT21c_TYPE", "INSTRUCTION_FORMAT21ih", "INSTRUCTION_FORMAT21lh", 
-		"INSTRUCTION_FORMAT21s", "INSTRUCTION_FORMAT21t", "INSTRUCTION_FORMAT22b", 
-		"INSTRUCTION_FORMAT22c_FIELD", "INSTRUCTION_FORMAT22c_FIELD_ODEX", "INSTRUCTION_FORMAT22c_TYPE", 
-		"INSTRUCTION_FORMAT22cs_FIELD", "INSTRUCTION_FORMAT22s", "INSTRUCTION_FORMAT22s_OR_ID", 
-		"INSTRUCTION_FORMAT22t", "INSTRUCTION_FORMAT22x", "INSTRUCTION_FORMAT23x", 
-		"INSTRUCTION_FORMAT30t", "INSTRUCTION_FORMAT31c", "INSTRUCTION_FORMAT31i", 
-		"INSTRUCTION_FORMAT31i_OR_ID", "INSTRUCTION_FORMAT31t", "INSTRUCTION_FORMAT32x", 
-		"INSTRUCTION_FORMAT35c_METHOD", "INSTRUCTION_FORMAT35c_METHOD_ODEX", "INSTRUCTION_FORMAT35c_TYPE", 
-		"INSTRUCTION_FORMAT35mi_METHOD", "INSTRUCTION_FORMAT35ms_METHOD", "INSTRUCTION_FORMAT3rc_METHOD", 
-		"INSTRUCTION_FORMAT3rc_METHOD_ODEX", "INSTRUCTION_FORMAT3rc_TYPE", "INSTRUCTION_FORMAT3rmi_METHOD", 
-		"INSTRUCTION_FORMAT3rms_METHOD", "INSTRUCTION_FORMAT45cc_METHOD", "INSTRUCTION_FORMAT4rcc_METHOD", 
-		"INSTRUCTION_FORMAT51l", "INTEGER_LITERAL", "INVALID_TOKEN", "I_ACCESS_LIST", 
-		"I_ANNOTATION", "I_ANNOTATIONS", "I_ANNOTATION_ELEMENT", "I_ARRAY_ELEMENTS", 
-		"I_ARRAY_ELEMENT_SIZE", "I_CATCH", "I_CATCHALL", "I_CATCHES", "I_CLASS_DEF", 
+		"INSTRUCTION_FORMAT21c_FIELD", "INSTRUCTION_FORMAT21c_FIELD_ODEX", "INSTRUCTION_FORMAT21c_METHOD_HANDLE", 
+		"INSTRUCTION_FORMAT21c_METHOD_TYPE", "INSTRUCTION_FORMAT21c_STRING", "INSTRUCTION_FORMAT21c_TYPE", 
+		"INSTRUCTION_FORMAT21ih", "INSTRUCTION_FORMAT21lh", "INSTRUCTION_FORMAT21s", 
+		"INSTRUCTION_FORMAT21t", "INSTRUCTION_FORMAT22b", "INSTRUCTION_FORMAT22c_FIELD", 
+		"INSTRUCTION_FORMAT22c_FIELD_ODEX", "INSTRUCTION_FORMAT22c_TYPE", "INSTRUCTION_FORMAT22cs_FIELD", 
+		"INSTRUCTION_FORMAT22s", "INSTRUCTION_FORMAT22s_OR_ID", "INSTRUCTION_FORMAT22t", 
+		"INSTRUCTION_FORMAT22x", "INSTRUCTION_FORMAT23x", "INSTRUCTION_FORMAT30t", 
+		"INSTRUCTION_FORMAT31c", "INSTRUCTION_FORMAT31i", "INSTRUCTION_FORMAT31i_OR_ID", 
+		"INSTRUCTION_FORMAT31t", "INSTRUCTION_FORMAT32x", "INSTRUCTION_FORMAT35c_CALL_SITE", 
+		"INSTRUCTION_FORMAT35c_METHOD", "INSTRUCTION_FORMAT35c_METHOD_ODEX", "INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE", 
+		"INSTRUCTION_FORMAT35c_TYPE", "INSTRUCTION_FORMAT35mi_METHOD", "INSTRUCTION_FORMAT35ms_METHOD", 
+		"INSTRUCTION_FORMAT3rc_CALL_SITE", "INSTRUCTION_FORMAT3rc_METHOD", "INSTRUCTION_FORMAT3rc_METHOD_ODEX", 
+		"INSTRUCTION_FORMAT3rc_TYPE", "INSTRUCTION_FORMAT3rmi_METHOD", "INSTRUCTION_FORMAT3rms_METHOD", 
+		"INSTRUCTION_FORMAT45cc_METHOD", "INSTRUCTION_FORMAT4rcc_METHOD", "INSTRUCTION_FORMAT51l", 
+		"INTEGER_LITERAL", "INVALID_TOKEN", "I_ACCESS_LIST", "I_ANNOTATION", "I_ANNOTATIONS", 
+		"I_ANNOTATION_ELEMENT", "I_ARRAY_ELEMENTS", "I_ARRAY_ELEMENT_SIZE", "I_CALL_SITE_EXTRA_ARGUMENTS", 
+		"I_CALL_SITE_REFERENCE", "I_CATCH", "I_CATCHALL", "I_CATCHES", "I_CLASS_DEF", 
 		"I_ENCODED_ARRAY", "I_ENCODED_ENUM", "I_ENCODED_FIELD", "I_ENCODED_METHOD", 
-		"I_END_LOCAL", "I_EPILOGUE", "I_FIELD", "I_FIELDS", "I_FIELD_INITIAL_VALUE", 
-		"I_FIELD_TYPE", "I_IMPLEMENTS", "I_LABEL", "I_LINE", "I_LOCAL", "I_LOCALS", 
-		"I_METHOD", "I_METHODS", "I_METHOD_PROTOTYPE", "I_METHOD_RETURN_TYPE", 
-		"I_ORDERED_METHOD_ITEMS", "I_PACKED_SWITCH_ELEMENTS", "I_PACKED_SWITCH_START_KEY", 
-		"I_PARAMETER", "I_PARAMETERS", "I_PARAMETER_NOT_SPECIFIED", "I_PROLOGUE", 
-		"I_REGISTERS", "I_REGISTER_LIST", "I_REGISTER_RANGE", "I_RESTART_LOCAL", 
+		"I_ENCODED_METHOD_HANDLE", "I_END_LOCAL", "I_EPILOGUE", "I_FIELD", "I_FIELDS", 
+		"I_FIELD_INITIAL_VALUE", "I_FIELD_TYPE", "I_IMPLEMENTS", "I_LABEL", "I_LINE", 
+		"I_LOCAL", "I_LOCALS", "I_METHOD", "I_METHODS", "I_METHOD_PROTOTYPE", 
+		"I_METHOD_RETURN_TYPE", "I_ORDERED_METHOD_ITEMS", "I_PACKED_SWITCH_ELEMENTS", 
+		"I_PACKED_SWITCH_START_KEY", "I_PARAMETER", "I_PARAMETERS", "I_PARAMETER_NOT_SPECIFIED", 
+		"I_PROLOGUE", "I_REGISTERS", "I_REGISTER_LIST", "I_REGISTER_RANGE", "I_RESTART_LOCAL", 
 		"I_SOURCE", "I_SPARSE_SWITCH_ELEMENTS", "I_STATEMENT_ARRAY_DATA", "I_STATEMENT_FORMAT10t", 
 		"I_STATEMENT_FORMAT10x", "I_STATEMENT_FORMAT11n", "I_STATEMENT_FORMAT11x", 
 		"I_STATEMENT_FORMAT12x", "I_STATEMENT_FORMAT20bc", "I_STATEMENT_FORMAT20t", 
-		"I_STATEMENT_FORMAT21c_FIELD", "I_STATEMENT_FORMAT21c_STRING", "I_STATEMENT_FORMAT21c_TYPE", 
+		"I_STATEMENT_FORMAT21c_FIELD", "I_STATEMENT_FORMAT21c_METHOD_HANDLE", 
+		"I_STATEMENT_FORMAT21c_METHOD_TYPE", "I_STATEMENT_FORMAT21c_STRING", "I_STATEMENT_FORMAT21c_TYPE", 
 		"I_STATEMENT_FORMAT21ih", "I_STATEMENT_FORMAT21lh", "I_STATEMENT_FORMAT21s", 
 		"I_STATEMENT_FORMAT21t", "I_STATEMENT_FORMAT22b", "I_STATEMENT_FORMAT22c_FIELD", 
 		"I_STATEMENT_FORMAT22c_TYPE", "I_STATEMENT_FORMAT22s", "I_STATEMENT_FORMAT22t", 
 		"I_STATEMENT_FORMAT22x", "I_STATEMENT_FORMAT23x", "I_STATEMENT_FORMAT30t", 
 		"I_STATEMENT_FORMAT31c", "I_STATEMENT_FORMAT31i", "I_STATEMENT_FORMAT31t", 
-		"I_STATEMENT_FORMAT32x", "I_STATEMENT_FORMAT35c_METHOD", "I_STATEMENT_FORMAT35c_TYPE", 
-		"I_STATEMENT_FORMAT3rc_METHOD", "I_STATEMENT_FORMAT3rc_TYPE", "I_STATEMENT_FORMAT45cc_METHOD", 
-		"I_STATEMENT_FORMAT4rcc_METHOD", "I_STATEMENT_FORMAT51l", "I_STATEMENT_PACKED_SWITCH", 
-		"I_STATEMENT_SPARSE_SWITCH", "I_SUBANNOTATION", "I_SUPER", "LINE_COMMENT", 
-		"LINE_DIRECTIVE", "LOCALS_DIRECTIVE", "LOCAL_DIRECTIVE", "LONG_LITERAL", 
-		"MEMBER_NAME", "METHOD_DIRECTIVE", "NEGATIVE_INTEGER_LITERAL", "NULL_LITERAL", 
-		"OPEN_BRACE", "OPEN_PAREN", "PACKED_SWITCH_DIRECTIVE", "PARAMETER_DIRECTIVE", 
-		"PARAM_LIST_OR_ID_PRIMITIVE_TYPE", "POSITIVE_INTEGER_LITERAL", "PRIMITIVE_TYPE", 
-		"PROLOGUE_DIRECTIVE", "REGISTER", "REGISTERS_DIRECTIVE", "RESTART_LOCAL_DIRECTIVE", 
-		"SHORT_LITERAL", "SIMPLE_NAME", "SOURCE_DIRECTIVE", "SPARSE_SWITCH_DIRECTIVE", 
-		"STRING_LITERAL", "SUBANNOTATION_DIRECTIVE", "SUPER_DIRECTIVE", "VERIFICATION_ERROR_TYPE", 
-		"VOID_TYPE", "VTABLE_INDEX", "WHITE_SPACE"
+		"I_STATEMENT_FORMAT32x", "I_STATEMENT_FORMAT35c_CALL_SITE", "I_STATEMENT_FORMAT35c_METHOD", 
+		"I_STATEMENT_FORMAT35c_TYPE", "I_STATEMENT_FORMAT3rc_CALL_SITE", "I_STATEMENT_FORMAT3rc_METHOD", 
+		"I_STATEMENT_FORMAT3rc_TYPE", "I_STATEMENT_FORMAT45cc_METHOD", "I_STATEMENT_FORMAT4rcc_METHOD", 
+		"I_STATEMENT_FORMAT51l", "I_STATEMENT_PACKED_SWITCH", "I_STATEMENT_SPARSE_SWITCH", 
+		"I_SUBANNOTATION", "I_SUPER", "LINE_COMMENT", "LINE_DIRECTIVE", "LOCALS_DIRECTIVE", 
+		"LOCAL_DIRECTIVE", "LONG_LITERAL", "MEMBER_NAME", "METHOD_DIRECTIVE", 
+		"METHOD_HANDLE_TYPE_FIELD", "METHOD_HANDLE_TYPE_METHOD", "NEGATIVE_INTEGER_LITERAL", 
+		"NULL_LITERAL", "OPEN_BRACE", "OPEN_PAREN", "PACKED_SWITCH_DIRECTIVE", 
+		"PARAMETER_DIRECTIVE", "PARAM_LIST_OR_ID_PRIMITIVE_TYPE", "POSITIVE_INTEGER_LITERAL", 
+		"PRIMITIVE_TYPE", "PROLOGUE_DIRECTIVE", "REGISTER", "REGISTERS_DIRECTIVE", 
+		"RESTART_LOCAL_DIRECTIVE", "SHORT_LITERAL", "SIMPLE_NAME", "SOURCE_DIRECTIVE", 
+		"SPARSE_SWITCH_DIRECTIVE", "STRING_LITERAL", "SUBANNOTATION_DIRECTIVE", 
+		"SUPER_DIRECTIVE", "VERIFICATION_ERROR_TYPE", "VOID_TYPE", "VTABLE_INDEX", 
+		"WHITE_SPACE"
 	};
 	public static final int EOF=-1;
 	public static final int ACCESS_SPEC=4;
@@ -82,197 +86,212 @@
 	public static final int ARRAY_DATA_DIRECTIVE=7;
 	public static final int ARRAY_TYPE_PREFIX=8;
 	public static final int ARROW=9;
-	public static final int BOOL_LITERAL=10;
-	public static final int BYTE_LITERAL=11;
-	public static final int CATCHALL_DIRECTIVE=12;
-	public static final int CATCH_DIRECTIVE=13;
-	public static final int CHAR_LITERAL=14;
-	public static final int CLASS_DESCRIPTOR=15;
-	public static final int CLASS_DIRECTIVE=16;
-	public static final int CLOSE_BRACE=17;
-	public static final int CLOSE_PAREN=18;
-	public static final int COLON=19;
-	public static final int COMMA=20;
-	public static final int DOTDOT=21;
-	public static final int DOUBLE_LITERAL=22;
-	public static final int DOUBLE_LITERAL_OR_ID=23;
-	public static final int END_ANNOTATION_DIRECTIVE=24;
-	public static final int END_ARRAY_DATA_DIRECTIVE=25;
-	public static final int END_FIELD_DIRECTIVE=26;
-	public static final int END_LOCAL_DIRECTIVE=27;
-	public static final int END_METHOD_DIRECTIVE=28;
-	public static final int END_PACKED_SWITCH_DIRECTIVE=29;
-	public static final int END_PARAMETER_DIRECTIVE=30;
-	public static final int END_SPARSE_SWITCH_DIRECTIVE=31;
-	public static final int END_SUBANNOTATION_DIRECTIVE=32;
-	public static final int ENUM_DIRECTIVE=33;
-	public static final int EPILOGUE_DIRECTIVE=34;
-	public static final int EQUAL=35;
-	public static final int FIELD_DIRECTIVE=36;
-	public static final int FIELD_OFFSET=37;
-	public static final int FLOAT_LITERAL=38;
-	public static final int FLOAT_LITERAL_OR_ID=39;
-	public static final int IMPLEMENTS_DIRECTIVE=40;
-	public static final int INLINE_INDEX=41;
-	public static final int INSTRUCTION_FORMAT10t=42;
-	public static final int INSTRUCTION_FORMAT10x=43;
-	public static final int INSTRUCTION_FORMAT10x_ODEX=44;
-	public static final int INSTRUCTION_FORMAT11n=45;
-	public static final int INSTRUCTION_FORMAT11x=46;
-	public static final int INSTRUCTION_FORMAT12x=47;
-	public static final int INSTRUCTION_FORMAT12x_OR_ID=48;
-	public static final int INSTRUCTION_FORMAT20bc=49;
-	public static final int INSTRUCTION_FORMAT20t=50;
-	public static final int INSTRUCTION_FORMAT21c_FIELD=51;
-	public static final int INSTRUCTION_FORMAT21c_FIELD_ODEX=52;
-	public static final int INSTRUCTION_FORMAT21c_STRING=53;
-	public static final int INSTRUCTION_FORMAT21c_TYPE=54;
-	public static final int INSTRUCTION_FORMAT21ih=55;
-	public static final int INSTRUCTION_FORMAT21lh=56;
-	public static final int INSTRUCTION_FORMAT21s=57;
-	public static final int INSTRUCTION_FORMAT21t=58;
-	public static final int INSTRUCTION_FORMAT22b=59;
-	public static final int INSTRUCTION_FORMAT22c_FIELD=60;
-	public static final int INSTRUCTION_FORMAT22c_FIELD_ODEX=61;
-	public static final int INSTRUCTION_FORMAT22c_TYPE=62;
-	public static final int INSTRUCTION_FORMAT22cs_FIELD=63;
-	public static final int INSTRUCTION_FORMAT22s=64;
-	public static final int INSTRUCTION_FORMAT22s_OR_ID=65;
-	public static final int INSTRUCTION_FORMAT22t=66;
-	public static final int INSTRUCTION_FORMAT22x=67;
-	public static final int INSTRUCTION_FORMAT23x=68;
-	public static final int INSTRUCTION_FORMAT30t=69;
-	public static final int INSTRUCTION_FORMAT31c=70;
-	public static final int INSTRUCTION_FORMAT31i=71;
-	public static final int INSTRUCTION_FORMAT31i_OR_ID=72;
-	public static final int INSTRUCTION_FORMAT31t=73;
-	public static final int INSTRUCTION_FORMAT32x=74;
-	public static final int INSTRUCTION_FORMAT35c_METHOD=75;
-	public static final int INSTRUCTION_FORMAT35c_METHOD_ODEX=76;
-	public static final int INSTRUCTION_FORMAT35c_TYPE=77;
-	public static final int INSTRUCTION_FORMAT35mi_METHOD=78;
-	public static final int INSTRUCTION_FORMAT35ms_METHOD=79;
-	public static final int INSTRUCTION_FORMAT3rc_METHOD=80;
-	public static final int INSTRUCTION_FORMAT3rc_METHOD_ODEX=81;
-	public static final int INSTRUCTION_FORMAT3rc_TYPE=82;
-	public static final int INSTRUCTION_FORMAT3rmi_METHOD=83;
-	public static final int INSTRUCTION_FORMAT3rms_METHOD=84;
-	public static final int INSTRUCTION_FORMAT45cc_METHOD=85;
-	public static final int INSTRUCTION_FORMAT4rcc_METHOD=86;
-	public static final int INSTRUCTION_FORMAT51l=87;
-	public static final int INTEGER_LITERAL=88;
-	public static final int INVALID_TOKEN=89;
-	public static final int I_ACCESS_LIST=90;
-	public static final int I_ANNOTATION=91;
-	public static final int I_ANNOTATIONS=92;
-	public static final int I_ANNOTATION_ELEMENT=93;
-	public static final int I_ARRAY_ELEMENTS=94;
-	public static final int I_ARRAY_ELEMENT_SIZE=95;
-	public static final int I_CATCH=96;
-	public static final int I_CATCHALL=97;
-	public static final int I_CATCHES=98;
-	public static final int I_CLASS_DEF=99;
-	public static final int I_ENCODED_ARRAY=100;
-	public static final int I_ENCODED_ENUM=101;
-	public static final int I_ENCODED_FIELD=102;
-	public static final int I_ENCODED_METHOD=103;
-	public static final int I_END_LOCAL=104;
-	public static final int I_EPILOGUE=105;
-	public static final int I_FIELD=106;
-	public static final int I_FIELDS=107;
-	public static final int I_FIELD_INITIAL_VALUE=108;
-	public static final int I_FIELD_TYPE=109;
-	public static final int I_IMPLEMENTS=110;
-	public static final int I_LABEL=111;
-	public static final int I_LINE=112;
-	public static final int I_LOCAL=113;
-	public static final int I_LOCALS=114;
-	public static final int I_METHOD=115;
-	public static final int I_METHODS=116;
-	public static final int I_METHOD_PROTOTYPE=117;
-	public static final int I_METHOD_RETURN_TYPE=118;
-	public static final int I_ORDERED_METHOD_ITEMS=119;
-	public static final int I_PACKED_SWITCH_ELEMENTS=120;
-	public static final int I_PACKED_SWITCH_START_KEY=121;
-	public static final int I_PARAMETER=122;
-	public static final int I_PARAMETERS=123;
-	public static final int I_PARAMETER_NOT_SPECIFIED=124;
-	public static final int I_PROLOGUE=125;
-	public static final int I_REGISTERS=126;
-	public static final int I_REGISTER_LIST=127;
-	public static final int I_REGISTER_RANGE=128;
-	public static final int I_RESTART_LOCAL=129;
-	public static final int I_SOURCE=130;
-	public static final int I_SPARSE_SWITCH_ELEMENTS=131;
-	public static final int I_STATEMENT_ARRAY_DATA=132;
-	public static final int I_STATEMENT_FORMAT10t=133;
-	public static final int I_STATEMENT_FORMAT10x=134;
-	public static final int I_STATEMENT_FORMAT11n=135;
-	public static final int I_STATEMENT_FORMAT11x=136;
-	public static final int I_STATEMENT_FORMAT12x=137;
-	public static final int I_STATEMENT_FORMAT20bc=138;
-	public static final int I_STATEMENT_FORMAT20t=139;
-	public static final int I_STATEMENT_FORMAT21c_FIELD=140;
-	public static final int I_STATEMENT_FORMAT21c_STRING=141;
-	public static final int I_STATEMENT_FORMAT21c_TYPE=142;
-	public static final int I_STATEMENT_FORMAT21ih=143;
-	public static final int I_STATEMENT_FORMAT21lh=144;
-	public static final int I_STATEMENT_FORMAT21s=145;
-	public static final int I_STATEMENT_FORMAT21t=146;
-	public static final int I_STATEMENT_FORMAT22b=147;
-	public static final int I_STATEMENT_FORMAT22c_FIELD=148;
-	public static final int I_STATEMENT_FORMAT22c_TYPE=149;
-	public static final int I_STATEMENT_FORMAT22s=150;
-	public static final int I_STATEMENT_FORMAT22t=151;
-	public static final int I_STATEMENT_FORMAT22x=152;
-	public static final int I_STATEMENT_FORMAT23x=153;
-	public static final int I_STATEMENT_FORMAT30t=154;
-	public static final int I_STATEMENT_FORMAT31c=155;
-	public static final int I_STATEMENT_FORMAT31i=156;
-	public static final int I_STATEMENT_FORMAT31t=157;
-	public static final int I_STATEMENT_FORMAT32x=158;
-	public static final int I_STATEMENT_FORMAT35c_METHOD=159;
-	public static final int I_STATEMENT_FORMAT35c_TYPE=160;
-	public static final int I_STATEMENT_FORMAT3rc_METHOD=161;
-	public static final int I_STATEMENT_FORMAT3rc_TYPE=162;
-	public static final int I_STATEMENT_FORMAT45cc_METHOD=163;
-	public static final int I_STATEMENT_FORMAT4rcc_METHOD=164;
-	public static final int I_STATEMENT_FORMAT51l=165;
-	public static final int I_STATEMENT_PACKED_SWITCH=166;
-	public static final int I_STATEMENT_SPARSE_SWITCH=167;
-	public static final int I_SUBANNOTATION=168;
-	public static final int I_SUPER=169;
-	public static final int LINE_COMMENT=170;
-	public static final int LINE_DIRECTIVE=171;
-	public static final int LOCALS_DIRECTIVE=172;
-	public static final int LOCAL_DIRECTIVE=173;
-	public static final int LONG_LITERAL=174;
-	public static final int MEMBER_NAME=175;
-	public static final int METHOD_DIRECTIVE=176;
-	public static final int NEGATIVE_INTEGER_LITERAL=177;
-	public static final int NULL_LITERAL=178;
-	public static final int OPEN_BRACE=179;
-	public static final int OPEN_PAREN=180;
-	public static final int PACKED_SWITCH_DIRECTIVE=181;
-	public static final int PARAMETER_DIRECTIVE=182;
-	public static final int PARAM_LIST_OR_ID_PRIMITIVE_TYPE=183;
-	public static final int POSITIVE_INTEGER_LITERAL=184;
-	public static final int PRIMITIVE_TYPE=185;
-	public static final int PROLOGUE_DIRECTIVE=186;
-	public static final int REGISTER=187;
-	public static final int REGISTERS_DIRECTIVE=188;
-	public static final int RESTART_LOCAL_DIRECTIVE=189;
-	public static final int SHORT_LITERAL=190;
-	public static final int SIMPLE_NAME=191;
-	public static final int SOURCE_DIRECTIVE=192;
-	public static final int SPARSE_SWITCH_DIRECTIVE=193;
-	public static final int STRING_LITERAL=194;
-	public static final int SUBANNOTATION_DIRECTIVE=195;
-	public static final int SUPER_DIRECTIVE=196;
-	public static final int VERIFICATION_ERROR_TYPE=197;
-	public static final int VOID_TYPE=198;
-	public static final int VTABLE_INDEX=199;
-	public static final int WHITE_SPACE=200;
+	public static final int AT=10;
+	public static final int BOOL_LITERAL=11;
+	public static final int BYTE_LITERAL=12;
+	public static final int CATCHALL_DIRECTIVE=13;
+	public static final int CATCH_DIRECTIVE=14;
+	public static final int CHAR_LITERAL=15;
+	public static final int CLASS_DESCRIPTOR=16;
+	public static final int CLASS_DIRECTIVE=17;
+	public static final int CLOSE_BRACE=18;
+	public static final int CLOSE_PAREN=19;
+	public static final int COLON=20;
+	public static final int COMMA=21;
+	public static final int DOTDOT=22;
+	public static final int DOUBLE_LITERAL=23;
+	public static final int DOUBLE_LITERAL_OR_ID=24;
+	public static final int END_ANNOTATION_DIRECTIVE=25;
+	public static final int END_ARRAY_DATA_DIRECTIVE=26;
+	public static final int END_FIELD_DIRECTIVE=27;
+	public static final int END_LOCAL_DIRECTIVE=28;
+	public static final int END_METHOD_DIRECTIVE=29;
+	public static final int END_PACKED_SWITCH_DIRECTIVE=30;
+	public static final int END_PARAMETER_DIRECTIVE=31;
+	public static final int END_SPARSE_SWITCH_DIRECTIVE=32;
+	public static final int END_SUBANNOTATION_DIRECTIVE=33;
+	public static final int ENUM_DIRECTIVE=34;
+	public static final int EPILOGUE_DIRECTIVE=35;
+	public static final int EQUAL=36;
+	public static final int FIELD_DIRECTIVE=37;
+	public static final int FIELD_OFFSET=38;
+	public static final int FLOAT_LITERAL=39;
+	public static final int FLOAT_LITERAL_OR_ID=40;
+	public static final int IMPLEMENTS_DIRECTIVE=41;
+	public static final int INLINE_INDEX=42;
+	public static final int INSTRUCTION_FORMAT10t=43;
+	public static final int INSTRUCTION_FORMAT10x=44;
+	public static final int INSTRUCTION_FORMAT10x_ODEX=45;
+	public static final int INSTRUCTION_FORMAT11n=46;
+	public static final int INSTRUCTION_FORMAT11x=47;
+	public static final int INSTRUCTION_FORMAT12x=48;
+	public static final int INSTRUCTION_FORMAT12x_OR_ID=49;
+	public static final int INSTRUCTION_FORMAT20bc=50;
+	public static final int INSTRUCTION_FORMAT20t=51;
+	public static final int INSTRUCTION_FORMAT21c_FIELD=52;
+	public static final int INSTRUCTION_FORMAT21c_FIELD_ODEX=53;
+	public static final int INSTRUCTION_FORMAT21c_METHOD_HANDLE=54;
+	public static final int INSTRUCTION_FORMAT21c_METHOD_TYPE=55;
+	public static final int INSTRUCTION_FORMAT21c_STRING=56;
+	public static final int INSTRUCTION_FORMAT21c_TYPE=57;
+	public static final int INSTRUCTION_FORMAT21ih=58;
+	public static final int INSTRUCTION_FORMAT21lh=59;
+	public static final int INSTRUCTION_FORMAT21s=60;
+	public static final int INSTRUCTION_FORMAT21t=61;
+	public static final int INSTRUCTION_FORMAT22b=62;
+	public static final int INSTRUCTION_FORMAT22c_FIELD=63;
+	public static final int INSTRUCTION_FORMAT22c_FIELD_ODEX=64;
+	public static final int INSTRUCTION_FORMAT22c_TYPE=65;
+	public static final int INSTRUCTION_FORMAT22cs_FIELD=66;
+	public static final int INSTRUCTION_FORMAT22s=67;
+	public static final int INSTRUCTION_FORMAT22s_OR_ID=68;
+	public static final int INSTRUCTION_FORMAT22t=69;
+	public static final int INSTRUCTION_FORMAT22x=70;
+	public static final int INSTRUCTION_FORMAT23x=71;
+	public static final int INSTRUCTION_FORMAT30t=72;
+	public static final int INSTRUCTION_FORMAT31c=73;
+	public static final int INSTRUCTION_FORMAT31i=74;
+	public static final int INSTRUCTION_FORMAT31i_OR_ID=75;
+	public static final int INSTRUCTION_FORMAT31t=76;
+	public static final int INSTRUCTION_FORMAT32x=77;
+	public static final int INSTRUCTION_FORMAT35c_CALL_SITE=78;
+	public static final int INSTRUCTION_FORMAT35c_METHOD=79;
+	public static final int INSTRUCTION_FORMAT35c_METHOD_ODEX=80;
+	public static final int INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE=81;
+	public static final int INSTRUCTION_FORMAT35c_TYPE=82;
+	public static final int INSTRUCTION_FORMAT35mi_METHOD=83;
+	public static final int INSTRUCTION_FORMAT35ms_METHOD=84;
+	public static final int INSTRUCTION_FORMAT3rc_CALL_SITE=85;
+	public static final int INSTRUCTION_FORMAT3rc_METHOD=86;
+	public static final int INSTRUCTION_FORMAT3rc_METHOD_ODEX=87;
+	public static final int INSTRUCTION_FORMAT3rc_TYPE=88;
+	public static final int INSTRUCTION_FORMAT3rmi_METHOD=89;
+	public static final int INSTRUCTION_FORMAT3rms_METHOD=90;
+	public static final int INSTRUCTION_FORMAT45cc_METHOD=91;
+	public static final int INSTRUCTION_FORMAT4rcc_METHOD=92;
+	public static final int INSTRUCTION_FORMAT51l=93;
+	public static final int INTEGER_LITERAL=94;
+	public static final int INVALID_TOKEN=95;
+	public static final int I_ACCESS_LIST=96;
+	public static final int I_ANNOTATION=97;
+	public static final int I_ANNOTATIONS=98;
+	public static final int I_ANNOTATION_ELEMENT=99;
+	public static final int I_ARRAY_ELEMENTS=100;
+	public static final int I_ARRAY_ELEMENT_SIZE=101;
+	public static final int I_CALL_SITE_EXTRA_ARGUMENTS=102;
+	public static final int I_CALL_SITE_REFERENCE=103;
+	public static final int I_CATCH=104;
+	public static final int I_CATCHALL=105;
+	public static final int I_CATCHES=106;
+	public static final int I_CLASS_DEF=107;
+	public static final int I_ENCODED_ARRAY=108;
+	public static final int I_ENCODED_ENUM=109;
+	public static final int I_ENCODED_FIELD=110;
+	public static final int I_ENCODED_METHOD=111;
+	public static final int I_ENCODED_METHOD_HANDLE=112;
+	public static final int I_END_LOCAL=113;
+	public static final int I_EPILOGUE=114;
+	public static final int I_FIELD=115;
+	public static final int I_FIELDS=116;
+	public static final int I_FIELD_INITIAL_VALUE=117;
+	public static final int I_FIELD_TYPE=118;
+	public static final int I_IMPLEMENTS=119;
+	public static final int I_LABEL=120;
+	public static final int I_LINE=121;
+	public static final int I_LOCAL=122;
+	public static final int I_LOCALS=123;
+	public static final int I_METHOD=124;
+	public static final int I_METHODS=125;
+	public static final int I_METHOD_PROTOTYPE=126;
+	public static final int I_METHOD_RETURN_TYPE=127;
+	public static final int I_ORDERED_METHOD_ITEMS=128;
+	public static final int I_PACKED_SWITCH_ELEMENTS=129;
+	public static final int I_PACKED_SWITCH_START_KEY=130;
+	public static final int I_PARAMETER=131;
+	public static final int I_PARAMETERS=132;
+	public static final int I_PARAMETER_NOT_SPECIFIED=133;
+	public static final int I_PROLOGUE=134;
+	public static final int I_REGISTERS=135;
+	public static final int I_REGISTER_LIST=136;
+	public static final int I_REGISTER_RANGE=137;
+	public static final int I_RESTART_LOCAL=138;
+	public static final int I_SOURCE=139;
+	public static final int I_SPARSE_SWITCH_ELEMENTS=140;
+	public static final int I_STATEMENT_ARRAY_DATA=141;
+	public static final int I_STATEMENT_FORMAT10t=142;
+	public static final int I_STATEMENT_FORMAT10x=143;
+	public static final int I_STATEMENT_FORMAT11n=144;
+	public static final int I_STATEMENT_FORMAT11x=145;
+	public static final int I_STATEMENT_FORMAT12x=146;
+	public static final int I_STATEMENT_FORMAT20bc=147;
+	public static final int I_STATEMENT_FORMAT20t=148;
+	public static final int I_STATEMENT_FORMAT21c_FIELD=149;
+	public static final int I_STATEMENT_FORMAT21c_METHOD_HANDLE=150;
+	public static final int I_STATEMENT_FORMAT21c_METHOD_TYPE=151;
+	public static final int I_STATEMENT_FORMAT21c_STRING=152;
+	public static final int I_STATEMENT_FORMAT21c_TYPE=153;
+	public static final int I_STATEMENT_FORMAT21ih=154;
+	public static final int I_STATEMENT_FORMAT21lh=155;
+	public static final int I_STATEMENT_FORMAT21s=156;
+	public static final int I_STATEMENT_FORMAT21t=157;
+	public static final int I_STATEMENT_FORMAT22b=158;
+	public static final int I_STATEMENT_FORMAT22c_FIELD=159;
+	public static final int I_STATEMENT_FORMAT22c_TYPE=160;
+	public static final int I_STATEMENT_FORMAT22s=161;
+	public static final int I_STATEMENT_FORMAT22t=162;
+	public static final int I_STATEMENT_FORMAT22x=163;
+	public static final int I_STATEMENT_FORMAT23x=164;
+	public static final int I_STATEMENT_FORMAT30t=165;
+	public static final int I_STATEMENT_FORMAT31c=166;
+	public static final int I_STATEMENT_FORMAT31i=167;
+	public static final int I_STATEMENT_FORMAT31t=168;
+	public static final int I_STATEMENT_FORMAT32x=169;
+	public static final int I_STATEMENT_FORMAT35c_CALL_SITE=170;
+	public static final int I_STATEMENT_FORMAT35c_METHOD=171;
+	public static final int I_STATEMENT_FORMAT35c_TYPE=172;
+	public static final int I_STATEMENT_FORMAT3rc_CALL_SITE=173;
+	public static final int I_STATEMENT_FORMAT3rc_METHOD=174;
+	public static final int I_STATEMENT_FORMAT3rc_TYPE=175;
+	public static final int I_STATEMENT_FORMAT45cc_METHOD=176;
+	public static final int I_STATEMENT_FORMAT4rcc_METHOD=177;
+	public static final int I_STATEMENT_FORMAT51l=178;
+	public static final int I_STATEMENT_PACKED_SWITCH=179;
+	public static final int I_STATEMENT_SPARSE_SWITCH=180;
+	public static final int I_SUBANNOTATION=181;
+	public static final int I_SUPER=182;
+	public static final int LINE_COMMENT=183;
+	public static final int LINE_DIRECTIVE=184;
+	public static final int LOCALS_DIRECTIVE=185;
+	public static final int LOCAL_DIRECTIVE=186;
+	public static final int LONG_LITERAL=187;
+	public static final int MEMBER_NAME=188;
+	public static final int METHOD_DIRECTIVE=189;
+	public static final int METHOD_HANDLE_TYPE_FIELD=190;
+	public static final int METHOD_HANDLE_TYPE_METHOD=191;
+	public static final int NEGATIVE_INTEGER_LITERAL=192;
+	public static final int NULL_LITERAL=193;
+	public static final int OPEN_BRACE=194;
+	public static final int OPEN_PAREN=195;
+	public static final int PACKED_SWITCH_DIRECTIVE=196;
+	public static final int PARAMETER_DIRECTIVE=197;
+	public static final int PARAM_LIST_OR_ID_PRIMITIVE_TYPE=198;
+	public static final int POSITIVE_INTEGER_LITERAL=199;
+	public static final int PRIMITIVE_TYPE=200;
+	public static final int PROLOGUE_DIRECTIVE=201;
+	public static final int REGISTER=202;
+	public static final int REGISTERS_DIRECTIVE=203;
+	public static final int RESTART_LOCAL_DIRECTIVE=204;
+	public static final int SHORT_LITERAL=205;
+	public static final int SIMPLE_NAME=206;
+	public static final int SOURCE_DIRECTIVE=207;
+	public static final int SPARSE_SWITCH_DIRECTIVE=208;
+	public static final int STRING_LITERAL=209;
+	public static final int SUBANNOTATION_DIRECTIVE=210;
+	public static final int SUPER_DIRECTIVE=211;
+	public static final int VERIFICATION_ERROR_TYPE=212;
+	public static final int VOID_TYPE=213;
+	public static final int VTABLE_INDEX=214;
+	public static final int WHITE_SPACE=215;
 
 	// delegates
 	public Parser[] getDelegates() {
@@ -480,7 +499,7 @@
 
 
 	// $ANTLR start "smali_file"
-	// smaliParser.g:415:1: smali_file : ({...}? => class_spec |{...}? => super_spec | implements_spec |{...}? => source_spec | method | field | annotation )+ EOF -> ^( I_CLASS_DEF class_spec ( super_spec )? ( implements_spec )* ( source_spec )? ^( I_METHODS ( method )* ) ^( I_FIELDS ( field )* ) ) ;
+	// smaliParser.g:427:1: smali_file : ({...}? => class_spec |{...}? => super_spec | implements_spec |{...}? => source_spec | method | field | annotation )+ EOF -> ^( I_CLASS_DEF class_spec ( super_spec )? ( implements_spec )* ( source_spec )? ^( I_METHODS ( method )* ) ^( I_FIELDS ( field )* ) ) ;
 	public final smaliParser.smali_file_return smali_file() throws RecognitionException {
 		smali_file_stack.push(new smali_file_scope());
 		smaliParser.smali_file_return retval = new smaliParser.smali_file_return();
@@ -511,10 +530,10 @@
 		    smali_file_stack.peek().classAnnotations = new ArrayList<CommonTree>();
 		  
 		try {
-			// smaliParser.g:427:3: ( ({...}? => class_spec |{...}? => super_spec | implements_spec |{...}? => source_spec | method | field | annotation )+ EOF -> ^( I_CLASS_DEF class_spec ( super_spec )? ( implements_spec )* ( source_spec )? ^( I_METHODS ( method )* ) ^( I_FIELDS ( field )* ) ) )
-			// smaliParser.g:428:3: ({...}? => class_spec |{...}? => super_spec | implements_spec |{...}? => source_spec | method | field | annotation )+ EOF
+			// smaliParser.g:439:3: ( ({...}? => class_spec |{...}? => super_spec | implements_spec |{...}? => source_spec | method | field | annotation )+ EOF -> ^( I_CLASS_DEF class_spec ( super_spec )? ( implements_spec )* ( source_spec )? ^( I_METHODS ( method )* ) ^( I_FIELDS ( field )* ) ) )
+			// smaliParser.g:440:3: ({...}? => class_spec |{...}? => super_spec | implements_spec |{...}? => source_spec | method | field | annotation )+ EOF
 			{
-			// smaliParser.g:428:3: ({...}? => class_spec |{...}? => super_spec | implements_spec |{...}? => source_spec | method | field | annotation )+
+			// smaliParser.g:440:3: ({...}? => class_spec |{...}? => super_spec | implements_spec |{...}? => source_spec | method | field | annotation )+
 			int cnt1=0;
 			loop1:
 			while (true) {
@@ -544,12 +563,12 @@
 
 				switch (alt1) {
 				case 1 :
-					// smaliParser.g:428:5: {...}? => class_spec
+					// smaliParser.g:440:5: {...}? => class_spec
 					{
 					if ( !((!smali_file_stack.peek().hasClassSpec)) ) {
 						throw new FailedPredicateException(input, "smali_file", "!$smali_file::hasClassSpec");
 					}
-					pushFollow(FOLLOW_class_spec_in_smali_file1075);
+					pushFollow(FOLLOW_class_spec_in_smali_file1140);
 					class_spec1=class_spec();
 					state._fsp--;
 
@@ -558,12 +577,12 @@
 					}
 					break;
 				case 2 :
-					// smaliParser.g:429:5: {...}? => super_spec
+					// smaliParser.g:441:5: {...}? => super_spec
 					{
 					if ( !((!smali_file_stack.peek().hasSuperSpec)) ) {
 						throw new FailedPredicateException(input, "smali_file", "!$smali_file::hasSuperSpec");
 					}
-					pushFollow(FOLLOW_super_spec_in_smali_file1086);
+					pushFollow(FOLLOW_super_spec_in_smali_file1151);
 					super_spec2=super_spec();
 					state._fsp--;
 
@@ -572,9 +591,9 @@
 					}
 					break;
 				case 3 :
-					// smaliParser.g:430:5: implements_spec
+					// smaliParser.g:442:5: implements_spec
 					{
-					pushFollow(FOLLOW_implements_spec_in_smali_file1094);
+					pushFollow(FOLLOW_implements_spec_in_smali_file1159);
 					implements_spec3=implements_spec();
 					state._fsp--;
 
@@ -582,12 +601,12 @@
 					}
 					break;
 				case 4 :
-					// smaliParser.g:431:5: {...}? => source_spec
+					// smaliParser.g:443:5: {...}? => source_spec
 					{
 					if ( !((!smali_file_stack.peek().hasSourceSpec)) ) {
 						throw new FailedPredicateException(input, "smali_file", "!$smali_file::hasSourceSpec");
 					}
-					pushFollow(FOLLOW_source_spec_in_smali_file1103);
+					pushFollow(FOLLOW_source_spec_in_smali_file1168);
 					source_spec4=source_spec();
 					state._fsp--;
 
@@ -596,9 +615,9 @@
 					}
 					break;
 				case 5 :
-					// smaliParser.g:432:5: method
+					// smaliParser.g:444:5: method
 					{
-					pushFollow(FOLLOW_method_in_smali_file1111);
+					pushFollow(FOLLOW_method_in_smali_file1176);
 					method5=method();
 					state._fsp--;
 
@@ -606,9 +625,9 @@
 					}
 					break;
 				case 6 :
-					// smaliParser.g:433:5: field
+					// smaliParser.g:445:5: field
 					{
-					pushFollow(FOLLOW_field_in_smali_file1117);
+					pushFollow(FOLLOW_field_in_smali_file1182);
 					field6=field();
 					state._fsp--;
 
@@ -616,9 +635,9 @@
 					}
 					break;
 				case 7 :
-					// smaliParser.g:434:5: annotation
+					// smaliParser.g:446:5: annotation
 					{
-					pushFollow(FOLLOW_annotation_in_smali_file1123);
+					pushFollow(FOLLOW_annotation_in_smali_file1188);
 					annotation7=annotation();
 					state._fsp--;
 
@@ -635,7 +654,7 @@
 				cnt1++;
 			}
 
-			EOF8=(Token)match(input,EOF,FOLLOW_EOF_in_smali_file1134);  
+			EOF8=(Token)match(input,EOF,FOLLOW_EOF_in_smali_file1199);  
 			stream_EOF.add(EOF8);
 
 
@@ -650,7 +669,7 @@
 			    }
 			  
 			// AST REWRITE
-			// elements: super_spec, method, field, implements_spec, class_spec, source_spec
+			// elements: source_spec, super_spec, implements_spec, class_spec, method, field
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -660,36 +679,36 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 448:3: -> ^( I_CLASS_DEF class_spec ( super_spec )? ( implements_spec )* ( source_spec )? ^( I_METHODS ( method )* ) ^( I_FIELDS ( field )* ) )
+			// 460:3: -> ^( I_CLASS_DEF class_spec ( super_spec )? ( implements_spec )* ( source_spec )? ^( I_METHODS ( method )* ) ^( I_FIELDS ( field )* ) )
 			{
-				// smaliParser.g:448:6: ^( I_CLASS_DEF class_spec ( super_spec )? ( implements_spec )* ( source_spec )? ^( I_METHODS ( method )* ) ^( I_FIELDS ( field )* ) )
+				// smaliParser.g:460:6: ^( I_CLASS_DEF class_spec ( super_spec )? ( implements_spec )* ( source_spec )? ^( I_METHODS ( method )* ) ^( I_FIELDS ( field )* ) )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_CLASS_DEF, "I_CLASS_DEF"), root_1);
 				adaptor.addChild(root_1, stream_class_spec.nextTree());
-				// smaliParser.g:450:8: ( super_spec )?
+				// smaliParser.g:462:8: ( super_spec )?
 				if ( stream_super_spec.hasNext() ) {
 					adaptor.addChild(root_1, stream_super_spec.nextTree());
 				}
 				stream_super_spec.reset();
 
-				// smaliParser.g:451:8: ( implements_spec )*
+				// smaliParser.g:463:8: ( implements_spec )*
 				while ( stream_implements_spec.hasNext() ) {
 					adaptor.addChild(root_1, stream_implements_spec.nextTree());
 				}
 				stream_implements_spec.reset();
 
-				// smaliParser.g:452:8: ( source_spec )?
+				// smaliParser.g:464:8: ( source_spec )?
 				if ( stream_source_spec.hasNext() ) {
 					adaptor.addChild(root_1, stream_source_spec.nextTree());
 				}
 				stream_source_spec.reset();
 
-				// smaliParser.g:453:8: ^( I_METHODS ( method )* )
+				// smaliParser.g:465:8: ^( I_METHODS ( method )* )
 				{
 				CommonTree root_2 = (CommonTree)adaptor.nil();
 				root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_METHODS, "I_METHODS"), root_2);
-				// smaliParser.g:453:20: ( method )*
+				// smaliParser.g:465:20: ( method )*
 				while ( stream_method.hasNext() ) {
 					adaptor.addChild(root_2, stream_method.nextTree());
 				}
@@ -698,11 +717,11 @@
 				adaptor.addChild(root_1, root_2);
 				}
 
-				// smaliParser.g:453:29: ^( I_FIELDS ( field )* )
+				// smaliParser.g:465:29: ^( I_FIELDS ( field )* )
 				{
 				CommonTree root_2 = (CommonTree)adaptor.nil();
 				root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_FIELDS, "I_FIELDS"), root_2);
-				// smaliParser.g:453:40: ( field )*
+				// smaliParser.g:465:40: ( field )*
 				while ( stream_field.hasNext() ) {
 					adaptor.addChild(root_2, stream_field.nextTree());
 				}
@@ -751,7 +770,7 @@
 
 
 	// $ANTLR start "class_spec"
-	// smaliParser.g:455:1: class_spec returns [String className] : CLASS_DIRECTIVE access_list CLASS_DESCRIPTOR -> CLASS_DESCRIPTOR access_list ;
+	// smaliParser.g:467:1: class_spec returns [String className] : CLASS_DIRECTIVE access_list CLASS_DESCRIPTOR -> CLASS_DESCRIPTOR access_list ;
 	public final smaliParser.class_spec_return class_spec() throws RecognitionException {
 		smaliParser.class_spec_return retval = new smaliParser.class_spec_return();
 		retval.start = input.LT(1);
@@ -769,23 +788,23 @@
 		RewriteRuleSubtreeStream stream_access_list=new RewriteRuleSubtreeStream(adaptor,"rule access_list");
 
 		try {
-			// smaliParser.g:456:3: ( CLASS_DIRECTIVE access_list CLASS_DESCRIPTOR -> CLASS_DESCRIPTOR access_list )
-			// smaliParser.g:456:5: CLASS_DIRECTIVE access_list CLASS_DESCRIPTOR
+			// smaliParser.g:468:3: ( CLASS_DIRECTIVE access_list CLASS_DESCRIPTOR -> CLASS_DESCRIPTOR access_list )
+			// smaliParser.g:468:5: CLASS_DIRECTIVE access_list CLASS_DESCRIPTOR
 			{
-			CLASS_DIRECTIVE9=(Token)match(input,CLASS_DIRECTIVE,FOLLOW_CLASS_DIRECTIVE_in_class_spec1221);  
+			CLASS_DIRECTIVE9=(Token)match(input,CLASS_DIRECTIVE,FOLLOW_CLASS_DIRECTIVE_in_class_spec1286);  
 			stream_CLASS_DIRECTIVE.add(CLASS_DIRECTIVE9);
 
-			pushFollow(FOLLOW_access_list_in_class_spec1223);
+			pushFollow(FOLLOW_access_list_in_class_spec1288);
 			access_list10=access_list();
 			state._fsp--;
 
 			stream_access_list.add(access_list10.getTree());
-			CLASS_DESCRIPTOR11=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_class_spec1225);  
+			CLASS_DESCRIPTOR11=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_class_spec1290);  
 			stream_CLASS_DESCRIPTOR.add(CLASS_DESCRIPTOR11);
 
 			retval.className = (CLASS_DESCRIPTOR11!=null?CLASS_DESCRIPTOR11.getText():null);
 			// AST REWRITE
-			// elements: access_list, CLASS_DESCRIPTOR
+			// elements: CLASS_DESCRIPTOR, access_list
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -795,7 +814,7 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 456:89: -> CLASS_DESCRIPTOR access_list
+			// 468:89: -> CLASS_DESCRIPTOR access_list
 			{
 				adaptor.addChild(root_0, stream_CLASS_DESCRIPTOR.nextNode());
 				adaptor.addChild(root_0, stream_access_list.nextTree());
@@ -833,7 +852,7 @@
 
 
 	// $ANTLR start "super_spec"
-	// smaliParser.g:458:1: super_spec : SUPER_DIRECTIVE CLASS_DESCRIPTOR -> ^( I_SUPER[$start, \"I_SUPER\"] CLASS_DESCRIPTOR ) ;
+	// smaliParser.g:470:1: super_spec : SUPER_DIRECTIVE CLASS_DESCRIPTOR -> ^( I_SUPER[$start, \"I_SUPER\"] CLASS_DESCRIPTOR ) ;
 	public final smaliParser.super_spec_return super_spec() throws RecognitionException {
 		smaliParser.super_spec_return retval = new smaliParser.super_spec_return();
 		retval.start = input.LT(1);
@@ -849,13 +868,13 @@
 		RewriteRuleTokenStream stream_SUPER_DIRECTIVE=new RewriteRuleTokenStream(adaptor,"token SUPER_DIRECTIVE");
 
 		try {
-			// smaliParser.g:459:3: ( SUPER_DIRECTIVE CLASS_DESCRIPTOR -> ^( I_SUPER[$start, \"I_SUPER\"] CLASS_DESCRIPTOR ) )
-			// smaliParser.g:459:5: SUPER_DIRECTIVE CLASS_DESCRIPTOR
+			// smaliParser.g:471:3: ( SUPER_DIRECTIVE CLASS_DESCRIPTOR -> ^( I_SUPER[$start, \"I_SUPER\"] CLASS_DESCRIPTOR ) )
+			// smaliParser.g:471:5: SUPER_DIRECTIVE CLASS_DESCRIPTOR
 			{
-			SUPER_DIRECTIVE12=(Token)match(input,SUPER_DIRECTIVE,FOLLOW_SUPER_DIRECTIVE_in_super_spec1243);  
+			SUPER_DIRECTIVE12=(Token)match(input,SUPER_DIRECTIVE,FOLLOW_SUPER_DIRECTIVE_in_super_spec1308);  
 			stream_SUPER_DIRECTIVE.add(SUPER_DIRECTIVE12);
 
-			CLASS_DESCRIPTOR13=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_super_spec1245);  
+			CLASS_DESCRIPTOR13=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_super_spec1310);  
 			stream_CLASS_DESCRIPTOR.add(CLASS_DESCRIPTOR13);
 
 			// AST REWRITE
@@ -869,9 +888,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 459:38: -> ^( I_SUPER[$start, \"I_SUPER\"] CLASS_DESCRIPTOR )
+			// 471:38: -> ^( I_SUPER[$start, \"I_SUPER\"] CLASS_DESCRIPTOR )
 			{
-				// smaliParser.g:459:41: ^( I_SUPER[$start, \"I_SUPER\"] CLASS_DESCRIPTOR )
+				// smaliParser.g:471:41: ^( I_SUPER[$start, \"I_SUPER\"] CLASS_DESCRIPTOR )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_SUPER, (retval.start), "I_SUPER"), root_1);
@@ -913,7 +932,7 @@
 
 
 	// $ANTLR start "implements_spec"
-	// smaliParser.g:461:1: implements_spec : IMPLEMENTS_DIRECTIVE CLASS_DESCRIPTOR -> ^( I_IMPLEMENTS[$start, \"I_IMPLEMENTS\"] CLASS_DESCRIPTOR ) ;
+	// smaliParser.g:473:1: implements_spec : IMPLEMENTS_DIRECTIVE CLASS_DESCRIPTOR -> ^( I_IMPLEMENTS[$start, \"I_IMPLEMENTS\"] CLASS_DESCRIPTOR ) ;
 	public final smaliParser.implements_spec_return implements_spec() throws RecognitionException {
 		smaliParser.implements_spec_return retval = new smaliParser.implements_spec_return();
 		retval.start = input.LT(1);
@@ -929,13 +948,13 @@
 		RewriteRuleTokenStream stream_CLASS_DESCRIPTOR=new RewriteRuleTokenStream(adaptor,"token CLASS_DESCRIPTOR");
 
 		try {
-			// smaliParser.g:462:3: ( IMPLEMENTS_DIRECTIVE CLASS_DESCRIPTOR -> ^( I_IMPLEMENTS[$start, \"I_IMPLEMENTS\"] CLASS_DESCRIPTOR ) )
-			// smaliParser.g:462:5: IMPLEMENTS_DIRECTIVE CLASS_DESCRIPTOR
+			// smaliParser.g:474:3: ( IMPLEMENTS_DIRECTIVE CLASS_DESCRIPTOR -> ^( I_IMPLEMENTS[$start, \"I_IMPLEMENTS\"] CLASS_DESCRIPTOR ) )
+			// smaliParser.g:474:5: IMPLEMENTS_DIRECTIVE CLASS_DESCRIPTOR
 			{
-			IMPLEMENTS_DIRECTIVE14=(Token)match(input,IMPLEMENTS_DIRECTIVE,FOLLOW_IMPLEMENTS_DIRECTIVE_in_implements_spec1264);  
+			IMPLEMENTS_DIRECTIVE14=(Token)match(input,IMPLEMENTS_DIRECTIVE,FOLLOW_IMPLEMENTS_DIRECTIVE_in_implements_spec1329);  
 			stream_IMPLEMENTS_DIRECTIVE.add(IMPLEMENTS_DIRECTIVE14);
 
-			CLASS_DESCRIPTOR15=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_implements_spec1266);  
+			CLASS_DESCRIPTOR15=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_implements_spec1331);  
 			stream_CLASS_DESCRIPTOR.add(CLASS_DESCRIPTOR15);
 
 			// AST REWRITE
@@ -949,9 +968,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 462:43: -> ^( I_IMPLEMENTS[$start, \"I_IMPLEMENTS\"] CLASS_DESCRIPTOR )
+			// 474:43: -> ^( I_IMPLEMENTS[$start, \"I_IMPLEMENTS\"] CLASS_DESCRIPTOR )
 			{
-				// smaliParser.g:462:46: ^( I_IMPLEMENTS[$start, \"I_IMPLEMENTS\"] CLASS_DESCRIPTOR )
+				// smaliParser.g:474:46: ^( I_IMPLEMENTS[$start, \"I_IMPLEMENTS\"] CLASS_DESCRIPTOR )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_IMPLEMENTS, (retval.start), "I_IMPLEMENTS"), root_1);
@@ -993,7 +1012,7 @@
 
 
 	// $ANTLR start "source_spec"
-	// smaliParser.g:464:1: source_spec : SOURCE_DIRECTIVE STRING_LITERAL -> ^( I_SOURCE[$start, \"I_SOURCE\"] STRING_LITERAL ) ;
+	// smaliParser.g:476:1: source_spec : SOURCE_DIRECTIVE STRING_LITERAL -> ^( I_SOURCE[$start, \"I_SOURCE\"] STRING_LITERAL ) ;
 	public final smaliParser.source_spec_return source_spec() throws RecognitionException {
 		smaliParser.source_spec_return retval = new smaliParser.source_spec_return();
 		retval.start = input.LT(1);
@@ -1009,13 +1028,13 @@
 		RewriteRuleTokenStream stream_STRING_LITERAL=new RewriteRuleTokenStream(adaptor,"token STRING_LITERAL");
 
 		try {
-			// smaliParser.g:465:3: ( SOURCE_DIRECTIVE STRING_LITERAL -> ^( I_SOURCE[$start, \"I_SOURCE\"] STRING_LITERAL ) )
-			// smaliParser.g:465:5: SOURCE_DIRECTIVE STRING_LITERAL
+			// smaliParser.g:477:3: ( SOURCE_DIRECTIVE STRING_LITERAL -> ^( I_SOURCE[$start, \"I_SOURCE\"] STRING_LITERAL ) )
+			// smaliParser.g:477:5: SOURCE_DIRECTIVE STRING_LITERAL
 			{
-			SOURCE_DIRECTIVE16=(Token)match(input,SOURCE_DIRECTIVE,FOLLOW_SOURCE_DIRECTIVE_in_source_spec1285);  
+			SOURCE_DIRECTIVE16=(Token)match(input,SOURCE_DIRECTIVE,FOLLOW_SOURCE_DIRECTIVE_in_source_spec1350);  
 			stream_SOURCE_DIRECTIVE.add(SOURCE_DIRECTIVE16);
 
-			STRING_LITERAL17=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_source_spec1287);  
+			STRING_LITERAL17=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_source_spec1352);  
 			stream_STRING_LITERAL.add(STRING_LITERAL17);
 
 			// AST REWRITE
@@ -1029,9 +1048,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 465:37: -> ^( I_SOURCE[$start, \"I_SOURCE\"] STRING_LITERAL )
+			// 477:37: -> ^( I_SOURCE[$start, \"I_SOURCE\"] STRING_LITERAL )
 			{
-				// smaliParser.g:465:40: ^( I_SOURCE[$start, \"I_SOURCE\"] STRING_LITERAL )
+				// smaliParser.g:477:40: ^( I_SOURCE[$start, \"I_SOURCE\"] STRING_LITERAL )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_SOURCE, (retval.start), "I_SOURCE"), root_1);
@@ -1073,7 +1092,7 @@
 
 
 	// $ANTLR start "access_list"
-	// smaliParser.g:467:1: access_list : ( ACCESS_SPEC )* -> ^( I_ACCESS_LIST[$start,\"I_ACCESS_LIST\"] ( ACCESS_SPEC )* ) ;
+	// smaliParser.g:479:1: access_list : ( ACCESS_SPEC )* -> ^( I_ACCESS_LIST[$start,\"I_ACCESS_LIST\"] ( ACCESS_SPEC )* ) ;
 	public final smaliParser.access_list_return access_list() throws RecognitionException {
 		smaliParser.access_list_return retval = new smaliParser.access_list_return();
 		retval.start = input.LT(1);
@@ -1086,17 +1105,17 @@
 		RewriteRuleTokenStream stream_ACCESS_SPEC=new RewriteRuleTokenStream(adaptor,"token ACCESS_SPEC");
 
 		try {
-			// smaliParser.g:468:3: ( ( ACCESS_SPEC )* -> ^( I_ACCESS_LIST[$start,\"I_ACCESS_LIST\"] ( ACCESS_SPEC )* ) )
-			// smaliParser.g:468:5: ( ACCESS_SPEC )*
+			// smaliParser.g:480:3: ( ( ACCESS_SPEC )* -> ^( I_ACCESS_LIST[$start,\"I_ACCESS_LIST\"] ( ACCESS_SPEC )* ) )
+			// smaliParser.g:480:5: ( ACCESS_SPEC )*
 			{
-			// smaliParser.g:468:5: ( ACCESS_SPEC )*
+			// smaliParser.g:480:5: ( ACCESS_SPEC )*
 			loop2:
 			while (true) {
 				int alt2=2;
 				int LA2_0 = input.LA(1);
 				if ( (LA2_0==ACCESS_SPEC) ) {
 					int LA2_2 = input.LA(2);
-					if ( (LA2_2==ACCESS_SPEC||LA2_2==ANNOTATION_VISIBILITY||LA2_2==BOOL_LITERAL||LA2_2==CLASS_DESCRIPTOR||LA2_2==DOUBLE_LITERAL_OR_ID||LA2_2==FLOAT_LITERAL_OR_ID||(LA2_2 >= INSTRUCTION_FORMAT10t && LA2_2 <= INSTRUCTION_FORMAT10x_ODEX)||LA2_2==INSTRUCTION_FORMAT11x||LA2_2==INSTRUCTION_FORMAT12x_OR_ID||(LA2_2 >= INSTRUCTION_FORMAT21c_FIELD && LA2_2 <= INSTRUCTION_FORMAT21c_TYPE)||LA2_2==INSTRUCTION_FORMAT21t||(LA2_2 >= INSTRUCTION_FORMAT22c_FIELD && LA2_2 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA2_2 >= INSTRUCTION_FORMAT22s_OR_ID && LA2_2 <= INSTRUCTION_FORMAT22t)||LA2_2==INSTRUCTION_FORMAT23x||(LA2_2 >= INSTRUCTION_FORMAT31i_OR_ID && LA2_2 <= INSTRUCTION_FORMAT31t)||(LA2_2 >= INSTRUCTION_FORMAT35c_METHOD && LA2_2 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA2_2 >= INSTRUCTION_FORMAT45cc_METHOD && LA2_2 <= INSTRUCTION_FORMAT51l)||LA2_2==MEMBER_NAME||(LA2_2 >= NEGATIVE_INTEGER_LITERAL && LA2_2 <= NULL_LITERAL)||(LA2_2 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA2_2 <= PRIMITIVE_TYPE)||LA2_2==REGISTER||LA2_2==SIMPLE_NAME||(LA2_2 >= VERIFICATION_ERROR_TYPE && LA2_2 <= VOID_TYPE)) ) {
+					if ( (LA2_2==ACCESS_SPEC||LA2_2==ANNOTATION_VISIBILITY||LA2_2==BOOL_LITERAL||LA2_2==CLASS_DESCRIPTOR||LA2_2==DOUBLE_LITERAL_OR_ID||LA2_2==FLOAT_LITERAL_OR_ID||(LA2_2 >= INSTRUCTION_FORMAT10t && LA2_2 <= INSTRUCTION_FORMAT10x_ODEX)||LA2_2==INSTRUCTION_FORMAT11x||LA2_2==INSTRUCTION_FORMAT12x_OR_ID||(LA2_2 >= INSTRUCTION_FORMAT21c_FIELD && LA2_2 <= INSTRUCTION_FORMAT21c_TYPE)||LA2_2==INSTRUCTION_FORMAT21t||(LA2_2 >= INSTRUCTION_FORMAT22c_FIELD && LA2_2 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA2_2 >= INSTRUCTION_FORMAT22s_OR_ID && LA2_2 <= INSTRUCTION_FORMAT22t)||LA2_2==INSTRUCTION_FORMAT23x||(LA2_2 >= INSTRUCTION_FORMAT31i_OR_ID && LA2_2 <= INSTRUCTION_FORMAT31t)||(LA2_2 >= INSTRUCTION_FORMAT35c_CALL_SITE && LA2_2 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA2_2 >= INSTRUCTION_FORMAT45cc_METHOD && LA2_2 <= INSTRUCTION_FORMAT51l)||LA2_2==MEMBER_NAME||(LA2_2 >= METHOD_HANDLE_TYPE_FIELD && LA2_2 <= NULL_LITERAL)||(LA2_2 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA2_2 <= PRIMITIVE_TYPE)||LA2_2==REGISTER||LA2_2==SIMPLE_NAME||(LA2_2 >= VERIFICATION_ERROR_TYPE && LA2_2 <= VOID_TYPE)) ) {
 						alt2=1;
 					}
 
@@ -1104,9 +1123,9 @@
 
 				switch (alt2) {
 				case 1 :
-					// smaliParser.g:468:5: ACCESS_SPEC
+					// smaliParser.g:480:5: ACCESS_SPEC
 					{
-					ACCESS_SPEC18=(Token)match(input,ACCESS_SPEC,FOLLOW_ACCESS_SPEC_in_access_list1306);  
+					ACCESS_SPEC18=(Token)match(input,ACCESS_SPEC,FOLLOW_ACCESS_SPEC_in_access_list1371);  
 					stream_ACCESS_SPEC.add(ACCESS_SPEC18);
 
 					}
@@ -1128,13 +1147,13 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 468:18: -> ^( I_ACCESS_LIST[$start,\"I_ACCESS_LIST\"] ( ACCESS_SPEC )* )
+			// 480:18: -> ^( I_ACCESS_LIST[$start,\"I_ACCESS_LIST\"] ( ACCESS_SPEC )* )
 			{
-				// smaliParser.g:468:21: ^( I_ACCESS_LIST[$start,\"I_ACCESS_LIST\"] ( ACCESS_SPEC )* )
+				// smaliParser.g:480:21: ^( I_ACCESS_LIST[$start,\"I_ACCESS_LIST\"] ( ACCESS_SPEC )* )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_ACCESS_LIST, (retval.start), "I_ACCESS_LIST"), root_1);
-				// smaliParser.g:468:61: ( ACCESS_SPEC )*
+				// smaliParser.g:480:61: ( ACCESS_SPEC )*
 				while ( stream_ACCESS_SPEC.hasNext() ) {
 					adaptor.addChild(root_1, stream_ACCESS_SPEC.nextNode());
 				}
@@ -1177,7 +1196,7 @@
 
 
 	// $ANTLR start "field"
-	// smaliParser.g:475:1: field : FIELD_DIRECTIVE access_list member_name COLON nonvoid_type_descriptor ( EQUAL literal )? ( ({...}? annotation )* ( END_FIELD_DIRECTIVE -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ) ) ) ) ;
+	// smaliParser.g:487:1: field : FIELD_DIRECTIVE access_list member_name COLON nonvoid_type_descriptor ( EQUAL literal )? ( ({...}? annotation )* ( END_FIELD_DIRECTIVE -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ) ) ) ) ;
 	public final smaliParser.field_return field() throws RecognitionException {
 		smaliParser.field_return retval = new smaliParser.field_return();
 		retval.start = input.LT(1);
@@ -1210,31 +1229,31 @@
 
 		List<CommonTree> annotations = new ArrayList<CommonTree>();
 		try {
-			// smaliParser.g:477:3: ( FIELD_DIRECTIVE access_list member_name COLON nonvoid_type_descriptor ( EQUAL literal )? ( ({...}? annotation )* ( END_FIELD_DIRECTIVE -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ) ) ) ) )
-			// smaliParser.g:477:5: FIELD_DIRECTIVE access_list member_name COLON nonvoid_type_descriptor ( EQUAL literal )? ( ({...}? annotation )* ( END_FIELD_DIRECTIVE -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ) ) ) )
+			// smaliParser.g:489:3: ( FIELD_DIRECTIVE access_list member_name COLON nonvoid_type_descriptor ( EQUAL literal )? ( ({...}? annotation )* ( END_FIELD_DIRECTIVE -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ) ) ) ) )
+			// smaliParser.g:489:5: FIELD_DIRECTIVE access_list member_name COLON nonvoid_type_descriptor ( EQUAL literal )? ( ({...}? annotation )* ( END_FIELD_DIRECTIVE -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ) ) ) )
 			{
-			FIELD_DIRECTIVE19=(Token)match(input,FIELD_DIRECTIVE,FOLLOW_FIELD_DIRECTIVE_in_field1337);  
+			FIELD_DIRECTIVE19=(Token)match(input,FIELD_DIRECTIVE,FOLLOW_FIELD_DIRECTIVE_in_field1402);  
 			stream_FIELD_DIRECTIVE.add(FIELD_DIRECTIVE19);
 
-			pushFollow(FOLLOW_access_list_in_field1339);
+			pushFollow(FOLLOW_access_list_in_field1404);
 			access_list20=access_list();
 			state._fsp--;
 
 			stream_access_list.add(access_list20.getTree());
-			pushFollow(FOLLOW_member_name_in_field1341);
+			pushFollow(FOLLOW_member_name_in_field1406);
 			member_name21=member_name();
 			state._fsp--;
 
 			stream_member_name.add(member_name21.getTree());
-			COLON22=(Token)match(input,COLON,FOLLOW_COLON_in_field1343);  
+			COLON22=(Token)match(input,COLON,FOLLOW_COLON_in_field1408);  
 			stream_COLON.add(COLON22);
 
-			pushFollow(FOLLOW_nonvoid_type_descriptor_in_field1345);
+			pushFollow(FOLLOW_nonvoid_type_descriptor_in_field1410);
 			nonvoid_type_descriptor23=nonvoid_type_descriptor();
 			state._fsp--;
 
 			stream_nonvoid_type_descriptor.add(nonvoid_type_descriptor23.getTree());
-			// smaliParser.g:477:75: ( EQUAL literal )?
+			// smaliParser.g:489:75: ( EQUAL literal )?
 			int alt3=2;
 			int LA3_0 = input.LA(1);
 			if ( (LA3_0==EQUAL) ) {
@@ -1242,12 +1261,12 @@
 			}
 			switch (alt3) {
 				case 1 :
-					// smaliParser.g:477:76: EQUAL literal
+					// smaliParser.g:489:76: EQUAL literal
 					{
-					EQUAL24=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_field1348);  
+					EQUAL24=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_field1413);  
 					stream_EQUAL.add(EQUAL24);
 
-					pushFollow(FOLLOW_literal_in_field1350);
+					pushFollow(FOLLOW_literal_in_field1415);
 					literal25=literal();
 					state._fsp--;
 
@@ -1257,10 +1276,10 @@
 
 			}
 
-			// smaliParser.g:478:5: ( ({...}? annotation )* ( END_FIELD_DIRECTIVE -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ) ) ) )
-			// smaliParser.g:478:7: ({...}? annotation )* ( END_FIELD_DIRECTIVE -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ) ) )
+			// smaliParser.g:490:5: ( ({...}? annotation )* ( END_FIELD_DIRECTIVE -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ) ) ) )
+			// smaliParser.g:490:7: ({...}? annotation )* ( END_FIELD_DIRECTIVE -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ) ) )
 			{
-			// smaliParser.g:478:7: ({...}? annotation )*
+			// smaliParser.g:490:7: ({...}? annotation )*
 			loop4:
 			while (true) {
 				int alt4=2;
@@ -1275,12 +1294,12 @@
 
 				switch (alt4) {
 				case 1 :
-					// smaliParser.g:478:8: {...}? annotation
+					// smaliParser.g:490:8: {...}? annotation
 					{
 					if ( !((input.LA(1) == ANNOTATION_DIRECTIVE)) ) {
 						throw new FailedPredicateException(input, "field", "input.LA(1) == ANNOTATION_DIRECTIVE");
 					}
-					pushFollow(FOLLOW_annotation_in_field1363);
+					pushFollow(FOLLOW_annotation_in_field1428);
 					annotation26=annotation();
 					state._fsp--;
 
@@ -1294,7 +1313,7 @@
 				}
 			}
 
-			// smaliParser.g:479:7: ( END_FIELD_DIRECTIVE -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ) ) )
+			// smaliParser.g:491:7: ( END_FIELD_DIRECTIVE -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ) ) )
 			int alt5=2;
 			int LA5_0 = input.LA(1);
 			if ( (LA5_0==END_FIELD_DIRECTIVE) ) {
@@ -1312,13 +1331,13 @@
 
 			switch (alt5) {
 				case 1 :
-					// smaliParser.g:479:9: END_FIELD_DIRECTIVE
+					// smaliParser.g:491:9: END_FIELD_DIRECTIVE
 					{
-					END_FIELD_DIRECTIVE27=(Token)match(input,END_FIELD_DIRECTIVE,FOLLOW_END_FIELD_DIRECTIVE_in_field1377);  
+					END_FIELD_DIRECTIVE27=(Token)match(input,END_FIELD_DIRECTIVE,FOLLOW_END_FIELD_DIRECTIVE_in_field1442);  
 					stream_END_FIELD_DIRECTIVE.add(END_FIELD_DIRECTIVE27);
 
 					// AST REWRITE
-					// elements: access_list, nonvoid_type_descriptor, annotation, member_name, literal
+					// elements: member_name, literal, access_list, nonvoid_type_descriptor, annotation
 					// token labels: 
 					// rule labels: retval
 					// token list labels: 
@@ -1328,15 +1347,15 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 480:9: -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ( annotation )* ) )
+					// 492:9: -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ( annotation )* ) )
 					{
-						// smaliParser.g:480:12: ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ( annotation )* ) )
+						// smaliParser.g:492:12: ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ( annotation )* ) )
 						{
 						CommonTree root_1 = (CommonTree)adaptor.nil();
 						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_FIELD, (retval.start), "I_FIELD"), root_1);
 						adaptor.addChild(root_1, stream_member_name.nextTree());
 						adaptor.addChild(root_1, stream_access_list.nextTree());
-						// smaliParser.g:480:65: ^( I_FIELD_TYPE nonvoid_type_descriptor )
+						// smaliParser.g:492:65: ^( I_FIELD_TYPE nonvoid_type_descriptor )
 						{
 						CommonTree root_2 = (CommonTree)adaptor.nil();
 						root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_FIELD_TYPE, "I_FIELD_TYPE"), root_2);
@@ -1344,9 +1363,9 @@
 						adaptor.addChild(root_1, root_2);
 						}
 
-						// smaliParser.g:480:105: ( ^( I_FIELD_INITIAL_VALUE literal ) )?
+						// smaliParser.g:492:105: ( ^( I_FIELD_INITIAL_VALUE literal ) )?
 						if ( stream_literal.hasNext() ) {
-							// smaliParser.g:480:105: ^( I_FIELD_INITIAL_VALUE literal )
+							// smaliParser.g:492:105: ^( I_FIELD_INITIAL_VALUE literal )
 							{
 							CommonTree root_2 = (CommonTree)adaptor.nil();
 							root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_FIELD_INITIAL_VALUE, "I_FIELD_INITIAL_VALUE"), root_2);
@@ -1357,11 +1376,11 @@
 						}
 						stream_literal.reset();
 
-						// smaliParser.g:480:139: ^( I_ANNOTATIONS ( annotation )* )
+						// smaliParser.g:492:139: ^( I_ANNOTATIONS ( annotation )* )
 						{
 						CommonTree root_2 = (CommonTree)adaptor.nil();
 						root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_ANNOTATIONS, "I_ANNOTATIONS"), root_2);
-						// smaliParser.g:480:155: ( annotation )*
+						// smaliParser.g:492:155: ( annotation )*
 						while ( stream_annotation.hasNext() ) {
 							adaptor.addChild(root_2, stream_annotation.nextTree());
 						}
@@ -1381,11 +1400,11 @@
 					}
 					break;
 				case 2 :
-					// smaliParser.g:481:21: 
+					// smaliParser.g:493:21: 
 					{
 					smali_file_stack.peek().classAnnotations.addAll(annotations);
 					// AST REWRITE
-					// elements: member_name, access_list, literal, nonvoid_type_descriptor
+					// elements: literal, access_list, member_name, nonvoid_type_descriptor
 					// token labels: 
 					// rule labels: retval
 					// token list labels: 
@@ -1395,15 +1414,15 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 482:9: -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ) )
+					// 494:9: -> ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ) )
 					{
-						// smaliParser.g:482:12: ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ) )
+						// smaliParser.g:494:12: ^( I_FIELD[$start, \"I_FIELD\"] member_name access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) ( ^( I_FIELD_INITIAL_VALUE literal ) )? ^( I_ANNOTATIONS ) )
 						{
 						CommonTree root_1 = (CommonTree)adaptor.nil();
 						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_FIELD, (retval.start), "I_FIELD"), root_1);
 						adaptor.addChild(root_1, stream_member_name.nextTree());
 						adaptor.addChild(root_1, stream_access_list.nextTree());
-						// smaliParser.g:482:65: ^( I_FIELD_TYPE nonvoid_type_descriptor )
+						// smaliParser.g:494:65: ^( I_FIELD_TYPE nonvoid_type_descriptor )
 						{
 						CommonTree root_2 = (CommonTree)adaptor.nil();
 						root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_FIELD_TYPE, "I_FIELD_TYPE"), root_2);
@@ -1411,9 +1430,9 @@
 						adaptor.addChild(root_1, root_2);
 						}
 
-						// smaliParser.g:482:105: ( ^( I_FIELD_INITIAL_VALUE literal ) )?
+						// smaliParser.g:494:105: ( ^( I_FIELD_INITIAL_VALUE literal ) )?
 						if ( stream_literal.hasNext() ) {
-							// smaliParser.g:482:105: ^( I_FIELD_INITIAL_VALUE literal )
+							// smaliParser.g:494:105: ^( I_FIELD_INITIAL_VALUE literal )
 							{
 							CommonTree root_2 = (CommonTree)adaptor.nil();
 							root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_FIELD_INITIAL_VALUE, "I_FIELD_INITIAL_VALUE"), root_2);
@@ -1424,7 +1443,7 @@
 						}
 						stream_literal.reset();
 
-						// smaliParser.g:482:139: ^( I_ANNOTATIONS )
+						// smaliParser.g:494:139: ^( I_ANNOTATIONS )
 						{
 						CommonTree root_2 = (CommonTree)adaptor.nil();
 						root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_ANNOTATIONS, "I_ANNOTATIONS"), root_2);
@@ -1475,7 +1494,7 @@
 
 
 	// $ANTLR start "method"
-	// smaliParser.g:486:1: method : METHOD_DIRECTIVE access_list member_name method_prototype statements_and_directives END_METHOD_DIRECTIVE -> ^( I_METHOD[$start, \"I_METHOD\"] member_name method_prototype access_list statements_and_directives ) ;
+	// smaliParser.g:498:1: method : METHOD_DIRECTIVE access_list member_name method_prototype statements_and_directives END_METHOD_DIRECTIVE -> ^( I_METHOD[$start, \"I_METHOD\"] member_name method_prototype access_list statements_and_directives ) ;
 	public final smaliParser.method_return method() throws RecognitionException {
 		smaliParser.method_return retval = new smaliParser.method_return();
 		retval.start = input.LT(1);
@@ -1499,37 +1518,37 @@
 		RewriteRuleSubtreeStream stream_statements_and_directives=new RewriteRuleSubtreeStream(adaptor,"rule statements_and_directives");
 
 		try {
-			// smaliParser.g:487:3: ( METHOD_DIRECTIVE access_list member_name method_prototype statements_and_directives END_METHOD_DIRECTIVE -> ^( I_METHOD[$start, \"I_METHOD\"] member_name method_prototype access_list statements_and_directives ) )
-			// smaliParser.g:487:5: METHOD_DIRECTIVE access_list member_name method_prototype statements_and_directives END_METHOD_DIRECTIVE
+			// smaliParser.g:499:3: ( METHOD_DIRECTIVE access_list member_name method_prototype statements_and_directives END_METHOD_DIRECTIVE -> ^( I_METHOD[$start, \"I_METHOD\"] member_name method_prototype access_list statements_and_directives ) )
+			// smaliParser.g:499:5: METHOD_DIRECTIVE access_list member_name method_prototype statements_and_directives END_METHOD_DIRECTIVE
 			{
-			METHOD_DIRECTIVE28=(Token)match(input,METHOD_DIRECTIVE,FOLLOW_METHOD_DIRECTIVE_in_method1488);  
+			METHOD_DIRECTIVE28=(Token)match(input,METHOD_DIRECTIVE,FOLLOW_METHOD_DIRECTIVE_in_method1553);  
 			stream_METHOD_DIRECTIVE.add(METHOD_DIRECTIVE28);
 
-			pushFollow(FOLLOW_access_list_in_method1490);
+			pushFollow(FOLLOW_access_list_in_method1555);
 			access_list29=access_list();
 			state._fsp--;
 
 			stream_access_list.add(access_list29.getTree());
-			pushFollow(FOLLOW_member_name_in_method1492);
+			pushFollow(FOLLOW_member_name_in_method1557);
 			member_name30=member_name();
 			state._fsp--;
 
 			stream_member_name.add(member_name30.getTree());
-			pushFollow(FOLLOW_method_prototype_in_method1494);
+			pushFollow(FOLLOW_method_prototype_in_method1559);
 			method_prototype31=method_prototype();
 			state._fsp--;
 
 			stream_method_prototype.add(method_prototype31.getTree());
-			pushFollow(FOLLOW_statements_and_directives_in_method1496);
+			pushFollow(FOLLOW_statements_and_directives_in_method1561);
 			statements_and_directives32=statements_and_directives();
 			state._fsp--;
 
 			stream_statements_and_directives.add(statements_and_directives32.getTree());
-			END_METHOD_DIRECTIVE33=(Token)match(input,END_METHOD_DIRECTIVE,FOLLOW_END_METHOD_DIRECTIVE_in_method1502);  
+			END_METHOD_DIRECTIVE33=(Token)match(input,END_METHOD_DIRECTIVE,FOLLOW_END_METHOD_DIRECTIVE_in_method1567);  
 			stream_END_METHOD_DIRECTIVE.add(END_METHOD_DIRECTIVE33);
 
 			// AST REWRITE
-			// elements: method_prototype, access_list, member_name, statements_and_directives
+			// elements: method_prototype, member_name, statements_and_directives, access_list
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -1539,9 +1558,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 489:5: -> ^( I_METHOD[$start, \"I_METHOD\"] member_name method_prototype access_list statements_and_directives )
+			// 501:5: -> ^( I_METHOD[$start, \"I_METHOD\"] member_name method_prototype access_list statements_and_directives )
 			{
-				// smaliParser.g:489:8: ^( I_METHOD[$start, \"I_METHOD\"] member_name method_prototype access_list statements_and_directives )
+				// smaliParser.g:501:8: ^( I_METHOD[$start, \"I_METHOD\"] member_name method_prototype access_list statements_and_directives )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_METHOD, (retval.start), "I_METHOD"), root_1);
@@ -1592,7 +1611,7 @@
 
 
 	// $ANTLR start "statements_and_directives"
-	// smaliParser.g:491:1: statements_and_directives : ( ordered_method_item | registers_directive | catch_directive | catchall_directive | parameter_directive | annotation )* -> ( registers_directive )? ^( I_ORDERED_METHOD_ITEMS ( ordered_method_item )* ) ^( I_CATCHES ( catch_directive )* ( catchall_directive )* ) ^( I_PARAMETERS ( parameter_directive )* ) ;
+	// smaliParser.g:503:1: statements_and_directives : ( ordered_method_item | registers_directive | catch_directive | catchall_directive | parameter_directive | annotation )* -> ( registers_directive )? ^( I_ORDERED_METHOD_ITEMS ( ordered_method_item )* ) ^( I_CATCHES ( catch_directive )* ( catchall_directive )* ) ^( I_PARAMETERS ( parameter_directive )* ) ;
 	public final smaliParser.statements_and_directives_return statements_and_directives() throws RecognitionException {
 		statements_and_directives_stack.push(new statements_and_directives_scope());
 		smaliParser.statements_and_directives_return retval = new smaliParser.statements_and_directives_return();
@@ -1615,14 +1634,14 @@
 		RewriteRuleSubtreeStream stream_parameter_directive=new RewriteRuleSubtreeStream(adaptor,"rule parameter_directive");
 
 		try {
-			// smaliParser.g:497:3: ( ( ordered_method_item | registers_directive | catch_directive | catchall_directive | parameter_directive | annotation )* -> ( registers_directive )? ^( I_ORDERED_METHOD_ITEMS ( ordered_method_item )* ) ^( I_CATCHES ( catch_directive )* ( catchall_directive )* ) ^( I_PARAMETERS ( parameter_directive )* ) )
-			// smaliParser.g:497:5: ( ordered_method_item | registers_directive | catch_directive | catchall_directive | parameter_directive | annotation )*
+			// smaliParser.g:509:3: ( ( ordered_method_item | registers_directive | catch_directive | catchall_directive | parameter_directive | annotation )* -> ( registers_directive )? ^( I_ORDERED_METHOD_ITEMS ( ordered_method_item )* ) ^( I_CATCHES ( catch_directive )* ( catchall_directive )* ) ^( I_PARAMETERS ( parameter_directive )* ) )
+			// smaliParser.g:509:5: ( ordered_method_item | registers_directive | catch_directive | catchall_directive | parameter_directive | annotation )*
 			{
 
 			      statements_and_directives_stack.peek().hasRegistersDirective = false;
 			      statements_and_directives_stack.peek().methodAnnotations = new ArrayList<CommonTree>();
 			    
-			// smaliParser.g:501:5: ( ordered_method_item | registers_directive | catch_directive | catchall_directive | parameter_directive | annotation )*
+			// smaliParser.g:513:5: ( ordered_method_item | registers_directive | catch_directive | catchall_directive | parameter_directive | annotation )*
 			loop6:
 			while (true) {
 				int alt6=7;
@@ -1642,6 +1661,8 @@
 				case INSTRUCTION_FORMAT20t:
 				case INSTRUCTION_FORMAT21c_FIELD:
 				case INSTRUCTION_FORMAT21c_FIELD_ODEX:
+				case INSTRUCTION_FORMAT21c_METHOD_HANDLE:
+				case INSTRUCTION_FORMAT21c_METHOD_TYPE:
 				case INSTRUCTION_FORMAT21c_STRING:
 				case INSTRUCTION_FORMAT21c_TYPE:
 				case INSTRUCTION_FORMAT21ih:
@@ -1664,11 +1685,14 @@
 				case INSTRUCTION_FORMAT31i_OR_ID:
 				case INSTRUCTION_FORMAT31t:
 				case INSTRUCTION_FORMAT32x:
+				case INSTRUCTION_FORMAT35c_CALL_SITE:
 				case INSTRUCTION_FORMAT35c_METHOD:
 				case INSTRUCTION_FORMAT35c_METHOD_ODEX:
+				case INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE:
 				case INSTRUCTION_FORMAT35c_TYPE:
 				case INSTRUCTION_FORMAT35mi_METHOD:
 				case INSTRUCTION_FORMAT35ms_METHOD:
+				case INSTRUCTION_FORMAT3rc_CALL_SITE:
 				case INSTRUCTION_FORMAT3rc_METHOD:
 				case INSTRUCTION_FORMAT3rc_METHOD_ODEX:
 				case INSTRUCTION_FORMAT3rc_TYPE:
@@ -1717,9 +1741,9 @@
 				}
 				switch (alt6) {
 				case 1 :
-					// smaliParser.g:501:7: ordered_method_item
+					// smaliParser.g:513:7: ordered_method_item
 					{
-					pushFollow(FOLLOW_ordered_method_item_in_statements_and_directives1547);
+					pushFollow(FOLLOW_ordered_method_item_in_statements_and_directives1612);
 					ordered_method_item34=ordered_method_item();
 					state._fsp--;
 
@@ -1727,9 +1751,9 @@
 					}
 					break;
 				case 2 :
-					// smaliParser.g:502:7: registers_directive
+					// smaliParser.g:514:7: registers_directive
 					{
-					pushFollow(FOLLOW_registers_directive_in_statements_and_directives1555);
+					pushFollow(FOLLOW_registers_directive_in_statements_and_directives1620);
 					registers_directive35=registers_directive();
 					state._fsp--;
 
@@ -1737,9 +1761,9 @@
 					}
 					break;
 				case 3 :
-					// smaliParser.g:503:7: catch_directive
+					// smaliParser.g:515:7: catch_directive
 					{
-					pushFollow(FOLLOW_catch_directive_in_statements_and_directives1563);
+					pushFollow(FOLLOW_catch_directive_in_statements_and_directives1628);
 					catch_directive36=catch_directive();
 					state._fsp--;
 
@@ -1747,9 +1771,9 @@
 					}
 					break;
 				case 4 :
-					// smaliParser.g:504:7: catchall_directive
+					// smaliParser.g:516:7: catchall_directive
 					{
-					pushFollow(FOLLOW_catchall_directive_in_statements_and_directives1571);
+					pushFollow(FOLLOW_catchall_directive_in_statements_and_directives1636);
 					catchall_directive37=catchall_directive();
 					state._fsp--;
 
@@ -1757,9 +1781,9 @@
 					}
 					break;
 				case 5 :
-					// smaliParser.g:505:7: parameter_directive
+					// smaliParser.g:517:7: parameter_directive
 					{
-					pushFollow(FOLLOW_parameter_directive_in_statements_and_directives1579);
+					pushFollow(FOLLOW_parameter_directive_in_statements_and_directives1644);
 					parameter_directive38=parameter_directive();
 					state._fsp--;
 
@@ -1767,9 +1791,9 @@
 					}
 					break;
 				case 6 :
-					// smaliParser.g:506:7: annotation
+					// smaliParser.g:518:7: annotation
 					{
-					pushFollow(FOLLOW_annotation_in_statements_and_directives1587);
+					pushFollow(FOLLOW_annotation_in_statements_and_directives1652);
 					annotation39=annotation();
 					state._fsp--;
 
@@ -1794,19 +1818,19 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 508:5: -> ( registers_directive )? ^( I_ORDERED_METHOD_ITEMS ( ordered_method_item )* ) ^( I_CATCHES ( catch_directive )* ( catchall_directive )* ) ^( I_PARAMETERS ( parameter_directive )* )
+			// 520:5: -> ( registers_directive )? ^( I_ORDERED_METHOD_ITEMS ( ordered_method_item )* ) ^( I_CATCHES ( catch_directive )* ( catchall_directive )* ) ^( I_PARAMETERS ( parameter_directive )* )
 			{
-				// smaliParser.g:508:8: ( registers_directive )?
+				// smaliParser.g:520:8: ( registers_directive )?
 				if ( stream_registers_directive.hasNext() ) {
 					adaptor.addChild(root_0, stream_registers_directive.nextTree());
 				}
 				stream_registers_directive.reset();
 
-				// smaliParser.g:509:8: ^( I_ORDERED_METHOD_ITEMS ( ordered_method_item )* )
+				// smaliParser.g:521:8: ^( I_ORDERED_METHOD_ITEMS ( ordered_method_item )* )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_ORDERED_METHOD_ITEMS, "I_ORDERED_METHOD_ITEMS"), root_1);
-				// smaliParser.g:509:33: ( ordered_method_item )*
+				// smaliParser.g:521:33: ( ordered_method_item )*
 				while ( stream_ordered_method_item.hasNext() ) {
 					adaptor.addChild(root_1, stream_ordered_method_item.nextTree());
 				}
@@ -1815,17 +1839,17 @@
 				adaptor.addChild(root_0, root_1);
 				}
 
-				// smaliParser.g:510:8: ^( I_CATCHES ( catch_directive )* ( catchall_directive )* )
+				// smaliParser.g:522:8: ^( I_CATCHES ( catch_directive )* ( catchall_directive )* )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_CATCHES, "I_CATCHES"), root_1);
-				// smaliParser.g:510:20: ( catch_directive )*
+				// smaliParser.g:522:20: ( catch_directive )*
 				while ( stream_catch_directive.hasNext() ) {
 					adaptor.addChild(root_1, stream_catch_directive.nextTree());
 				}
 				stream_catch_directive.reset();
 
-				// smaliParser.g:510:37: ( catchall_directive )*
+				// smaliParser.g:522:37: ( catchall_directive )*
 				while ( stream_catchall_directive.hasNext() ) {
 					adaptor.addChild(root_1, stream_catchall_directive.nextTree());
 				}
@@ -1834,11 +1858,11 @@
 				adaptor.addChild(root_0, root_1);
 				}
 
-				// smaliParser.g:511:8: ^( I_PARAMETERS ( parameter_directive )* )
+				// smaliParser.g:523:8: ^( I_PARAMETERS ( parameter_directive )* )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_PARAMETERS, "I_PARAMETERS"), root_1);
-				// smaliParser.g:511:23: ( parameter_directive )*
+				// smaliParser.g:523:23: ( parameter_directive )*
 				while ( stream_parameter_directive.hasNext() ) {
 					adaptor.addChild(root_1, stream_parameter_directive.nextTree());
 				}
@@ -1883,7 +1907,7 @@
 
 
 	// $ANTLR start "ordered_method_item"
-	// smaliParser.g:515:1: ordered_method_item : ( label | instruction | debug_directive );
+	// smaliParser.g:527:1: ordered_method_item : ( label | instruction | debug_directive );
 	public final smaliParser.ordered_method_item_return ordered_method_item() throws RecognitionException {
 		smaliParser.ordered_method_item_return retval = new smaliParser.ordered_method_item_return();
 		retval.start = input.LT(1);
@@ -1896,7 +1920,7 @@
 
 
 		try {
-			// smaliParser.g:516:3: ( label | instruction | debug_directive )
+			// smaliParser.g:528:3: ( label | instruction | debug_directive )
 			int alt7=3;
 			switch ( input.LA(1) ) {
 			case COLON:
@@ -1916,6 +1940,8 @@
 			case INSTRUCTION_FORMAT20t:
 			case INSTRUCTION_FORMAT21c_FIELD:
 			case INSTRUCTION_FORMAT21c_FIELD_ODEX:
+			case INSTRUCTION_FORMAT21c_METHOD_HANDLE:
+			case INSTRUCTION_FORMAT21c_METHOD_TYPE:
 			case INSTRUCTION_FORMAT21c_STRING:
 			case INSTRUCTION_FORMAT21c_TYPE:
 			case INSTRUCTION_FORMAT21ih:
@@ -1938,11 +1964,14 @@
 			case INSTRUCTION_FORMAT31i_OR_ID:
 			case INSTRUCTION_FORMAT31t:
 			case INSTRUCTION_FORMAT32x:
+			case INSTRUCTION_FORMAT35c_CALL_SITE:
 			case INSTRUCTION_FORMAT35c_METHOD:
 			case INSTRUCTION_FORMAT35c_METHOD_ODEX:
+			case INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE:
 			case INSTRUCTION_FORMAT35c_TYPE:
 			case INSTRUCTION_FORMAT35mi_METHOD:
 			case INSTRUCTION_FORMAT35ms_METHOD:
+			case INSTRUCTION_FORMAT3rc_CALL_SITE:
 			case INSTRUCTION_FORMAT3rc_METHOD:
 			case INSTRUCTION_FORMAT3rc_METHOD_ODEX:
 			case INSTRUCTION_FORMAT3rc_TYPE:
@@ -1975,12 +2004,12 @@
 			}
 			switch (alt7) {
 				case 1 :
-					// smaliParser.g:516:5: label
+					// smaliParser.g:528:5: label
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_label_in_ordered_method_item1672);
+					pushFollow(FOLLOW_label_in_ordered_method_item1737);
 					label40=label();
 					state._fsp--;
 
@@ -1989,12 +2018,12 @@
 					}
 					break;
 				case 2 :
-					// smaliParser.g:517:5: instruction
+					// smaliParser.g:529:5: instruction
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_instruction_in_ordered_method_item1678);
+					pushFollow(FOLLOW_instruction_in_ordered_method_item1743);
 					instruction41=instruction();
 					state._fsp--;
 
@@ -2003,12 +2032,12 @@
 					}
 					break;
 				case 3 :
-					// smaliParser.g:518:5: debug_directive
+					// smaliParser.g:530:5: debug_directive
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_debug_directive_in_ordered_method_item1684);
+					pushFollow(FOLLOW_debug_directive_in_ordered_method_item1749);
 					debug_directive42=debug_directive();
 					state._fsp--;
 
@@ -2045,7 +2074,7 @@
 
 
 	// $ANTLR start "registers_directive"
-	// smaliParser.g:520:1: registers_directive : (directive= REGISTERS_DIRECTIVE regCount= integral_literal -> ^( I_REGISTERS[$REGISTERS_DIRECTIVE, \"I_REGISTERS\"] $regCount) |directive= LOCALS_DIRECTIVE regCount2= integral_literal -> ^( I_LOCALS[$LOCALS_DIRECTIVE, \"I_LOCALS\"] $regCount2) ) ;
+	// smaliParser.g:532:1: registers_directive : (directive= REGISTERS_DIRECTIVE regCount= integral_literal -> ^( I_REGISTERS[$REGISTERS_DIRECTIVE, \"I_REGISTERS\"] $regCount) |directive= LOCALS_DIRECTIVE regCount2= integral_literal -> ^( I_LOCALS[$LOCALS_DIRECTIVE, \"I_LOCALS\"] $regCount2) ) ;
 	public final smaliParser.registers_directive_return registers_directive() throws RecognitionException {
 		smaliParser.registers_directive_return retval = new smaliParser.registers_directive_return();
 		retval.start = input.LT(1);
@@ -2062,10 +2091,10 @@
 		RewriteRuleSubtreeStream stream_integral_literal=new RewriteRuleSubtreeStream(adaptor,"rule integral_literal");
 
 		try {
-			// smaliParser.g:521:3: ( (directive= REGISTERS_DIRECTIVE regCount= integral_literal -> ^( I_REGISTERS[$REGISTERS_DIRECTIVE, \"I_REGISTERS\"] $regCount) |directive= LOCALS_DIRECTIVE regCount2= integral_literal -> ^( I_LOCALS[$LOCALS_DIRECTIVE, \"I_LOCALS\"] $regCount2) ) )
-			// smaliParser.g:521:5: (directive= REGISTERS_DIRECTIVE regCount= integral_literal -> ^( I_REGISTERS[$REGISTERS_DIRECTIVE, \"I_REGISTERS\"] $regCount) |directive= LOCALS_DIRECTIVE regCount2= integral_literal -> ^( I_LOCALS[$LOCALS_DIRECTIVE, \"I_LOCALS\"] $regCount2) )
+			// smaliParser.g:533:3: ( (directive= REGISTERS_DIRECTIVE regCount= integral_literal -> ^( I_REGISTERS[$REGISTERS_DIRECTIVE, \"I_REGISTERS\"] $regCount) |directive= LOCALS_DIRECTIVE regCount2= integral_literal -> ^( I_LOCALS[$LOCALS_DIRECTIVE, \"I_LOCALS\"] $regCount2) ) )
+			// smaliParser.g:533:5: (directive= REGISTERS_DIRECTIVE regCount= integral_literal -> ^( I_REGISTERS[$REGISTERS_DIRECTIVE, \"I_REGISTERS\"] $regCount) |directive= LOCALS_DIRECTIVE regCount2= integral_literal -> ^( I_LOCALS[$LOCALS_DIRECTIVE, \"I_LOCALS\"] $regCount2) )
 			{
-			// smaliParser.g:521:5: (directive= REGISTERS_DIRECTIVE regCount= integral_literal -> ^( I_REGISTERS[$REGISTERS_DIRECTIVE, \"I_REGISTERS\"] $regCount) |directive= LOCALS_DIRECTIVE regCount2= integral_literal -> ^( I_LOCALS[$LOCALS_DIRECTIVE, \"I_LOCALS\"] $regCount2) )
+			// smaliParser.g:533:5: (directive= REGISTERS_DIRECTIVE regCount= integral_literal -> ^( I_REGISTERS[$REGISTERS_DIRECTIVE, \"I_REGISTERS\"] $regCount) |directive= LOCALS_DIRECTIVE regCount2= integral_literal -> ^( I_LOCALS[$LOCALS_DIRECTIVE, \"I_LOCALS\"] $regCount2) )
 			int alt8=2;
 			int LA8_0 = input.LA(1);
 			if ( (LA8_0==REGISTERS_DIRECTIVE) ) {
@@ -2083,12 +2112,12 @@
 
 			switch (alt8) {
 				case 1 :
-					// smaliParser.g:522:7: directive= REGISTERS_DIRECTIVE regCount= integral_literal
+					// smaliParser.g:534:7: directive= REGISTERS_DIRECTIVE regCount= integral_literal
 					{
-					directive=(Token)match(input,REGISTERS_DIRECTIVE,FOLLOW_REGISTERS_DIRECTIVE_in_registers_directive1704);  
+					directive=(Token)match(input,REGISTERS_DIRECTIVE,FOLLOW_REGISTERS_DIRECTIVE_in_registers_directive1769);  
 					stream_REGISTERS_DIRECTIVE.add(directive);
 
-					pushFollow(FOLLOW_integral_literal_in_registers_directive1708);
+					pushFollow(FOLLOW_integral_literal_in_registers_directive1773);
 					regCount=integral_literal();
 					state._fsp--;
 
@@ -2105,9 +2134,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 522:63: -> ^( I_REGISTERS[$REGISTERS_DIRECTIVE, \"I_REGISTERS\"] $regCount)
+					// 534:63: -> ^( I_REGISTERS[$REGISTERS_DIRECTIVE, \"I_REGISTERS\"] $regCount)
 					{
-						// smaliParser.g:522:66: ^( I_REGISTERS[$REGISTERS_DIRECTIVE, \"I_REGISTERS\"] $regCount)
+						// smaliParser.g:534:66: ^( I_REGISTERS[$REGISTERS_DIRECTIVE, \"I_REGISTERS\"] $regCount)
 						{
 						CommonTree root_1 = (CommonTree)adaptor.nil();
 						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_REGISTERS, directive, "I_REGISTERS"), root_1);
@@ -2123,12 +2152,12 @@
 					}
 					break;
 				case 2 :
-					// smaliParser.g:523:7: directive= LOCALS_DIRECTIVE regCount2= integral_literal
+					// smaliParser.g:535:7: directive= LOCALS_DIRECTIVE regCount2= integral_literal
 					{
-					directive=(Token)match(input,LOCALS_DIRECTIVE,FOLLOW_LOCALS_DIRECTIVE_in_registers_directive1728);  
+					directive=(Token)match(input,LOCALS_DIRECTIVE,FOLLOW_LOCALS_DIRECTIVE_in_registers_directive1793);  
 					stream_LOCALS_DIRECTIVE.add(directive);
 
-					pushFollow(FOLLOW_integral_literal_in_registers_directive1732);
+					pushFollow(FOLLOW_integral_literal_in_registers_directive1797);
 					regCount2=integral_literal();
 					state._fsp--;
 
@@ -2145,9 +2174,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 523:61: -> ^( I_LOCALS[$LOCALS_DIRECTIVE, \"I_LOCALS\"] $regCount2)
+					// 535:61: -> ^( I_LOCALS[$LOCALS_DIRECTIVE, \"I_LOCALS\"] $regCount2)
 					{
-						// smaliParser.g:523:64: ^( I_LOCALS[$LOCALS_DIRECTIVE, \"I_LOCALS\"] $regCount2)
+						// smaliParser.g:535:64: ^( I_LOCALS[$LOCALS_DIRECTIVE, \"I_LOCALS\"] $regCount2)
 						{
 						CommonTree root_1 = (CommonTree)adaptor.nil();
 						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_LOCALS, directive, "I_LOCALS"), root_1);
@@ -2200,7 +2229,7 @@
 
 
 	// $ANTLR start "param_list_or_id"
-	// smaliParser.g:532:1: param_list_or_id : ( PARAM_LIST_OR_ID_PRIMITIVE_TYPE )+ ;
+	// smaliParser.g:544:1: param_list_or_id : ( PARAM_LIST_OR_ID_PRIMITIVE_TYPE )+ ;
 	public final smaliParser.param_list_or_id_return param_list_or_id() throws RecognitionException {
 		smaliParser.param_list_or_id_return retval = new smaliParser.param_list_or_id_return();
 		retval.start = input.LT(1);
@@ -2212,13 +2241,13 @@
 		CommonTree PARAM_LIST_OR_ID_PRIMITIVE_TYPE43_tree=null;
 
 		try {
-			// smaliParser.g:533:3: ( ( PARAM_LIST_OR_ID_PRIMITIVE_TYPE )+ )
-			// smaliParser.g:533:5: ( PARAM_LIST_OR_ID_PRIMITIVE_TYPE )+
+			// smaliParser.g:545:3: ( ( PARAM_LIST_OR_ID_PRIMITIVE_TYPE )+ )
+			// smaliParser.g:545:5: ( PARAM_LIST_OR_ID_PRIMITIVE_TYPE )+
 			{
 			root_0 = (CommonTree)adaptor.nil();
 
 
-			// smaliParser.g:533:5: ( PARAM_LIST_OR_ID_PRIMITIVE_TYPE )+
+			// smaliParser.g:545:5: ( PARAM_LIST_OR_ID_PRIMITIVE_TYPE )+
 			int cnt9=0;
 			loop9:
 			while (true) {
@@ -2230,9 +2259,9 @@
 
 				switch (alt9) {
 				case 1 :
-					// smaliParser.g:533:5: PARAM_LIST_OR_ID_PRIMITIVE_TYPE
+					// smaliParser.g:545:5: PARAM_LIST_OR_ID_PRIMITIVE_TYPE
 					{
-					PARAM_LIST_OR_ID_PRIMITIVE_TYPE43=(Token)match(input,PARAM_LIST_OR_ID_PRIMITIVE_TYPE,FOLLOW_PARAM_LIST_OR_ID_PRIMITIVE_TYPE_in_param_list_or_id1764); 
+					PARAM_LIST_OR_ID_PRIMITIVE_TYPE43=(Token)match(input,PARAM_LIST_OR_ID_PRIMITIVE_TYPE,FOLLOW_PARAM_LIST_OR_ID_PRIMITIVE_TYPE_in_param_list_or_id1829); 
 					PARAM_LIST_OR_ID_PRIMITIVE_TYPE43_tree = (CommonTree)adaptor.create(PARAM_LIST_OR_ID_PRIMITIVE_TYPE43);
 					adaptor.addChild(root_0, PARAM_LIST_OR_ID_PRIMITIVE_TYPE43_tree);
 
@@ -2276,7 +2305,7 @@
 
 
 	// $ANTLR start "simple_name"
-	// smaliParser.g:537:1: simple_name : ( SIMPLE_NAME | ACCESS_SPEC -> SIMPLE_NAME[$ACCESS_SPEC] | VERIFICATION_ERROR_TYPE -> SIMPLE_NAME[$VERIFICATION_ERROR_TYPE] | POSITIVE_INTEGER_LITERAL -> SIMPLE_NAME[$POSITIVE_INTEGER_LITERAL] | NEGATIVE_INTEGER_LITERAL -> SIMPLE_NAME[$NEGATIVE_INTEGER_LITERAL] | FLOAT_LITERAL_OR_ID -> SIMPLE_NAME[$FLOAT_LITERAL_OR_ID] | DOUBLE_LITERAL_OR_ID -> SIMPLE_NAME[$DOUBLE_LITERAL_OR_ID] | BOOL_LITERAL -> SIMPLE_NAME[$BOOL_LITERAL] | NULL_LITERAL -> SIMPLE_NAME[$NULL_LITERAL] | REGISTER -> SIMPLE_NAME[$REGISTER] | param_list_or_id ->| PRIMITIVE_TYPE -> SIMPLE_NAME[$PRIMITIVE_TYPE] | VOID_TYPE -> SIMPLE_NAME[$VOID_TYPE] | ANNOTATION_VISIBILITY -> SIMPLE_NAME[$ANNOTATION_VISIBILITY] | INSTRUCTION_FORMAT10t -> SIMPLE_NAME[$INSTRUCTION_FORMAT10t] | INSTRUCTION_FORMAT10x -> SIMPLE_NAME[$INSTRUCTION_FORMAT10x] | INSTRUCTION_FORMAT10x_ODEX -> SIMPLE_NAME[$INSTRUCTION_FORMAT10x_ODEX] | INSTRUCTION_FORMAT11x -> SIMPLE_NAME[$INSTRUCTION_FORMAT11x] | INSTRUCTION_FORMAT12x_OR_ID -> SIMPLE_NAME[$INSTRUCTION_FORMAT12x_OR_ID] | INSTRUCTION_FORMAT21c_FIELD -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_FIELD] | INSTRUCTION_FORMAT21c_FIELD_ODEX -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_FIELD_ODEX] | INSTRUCTION_FORMAT21c_STRING -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_STRING] | INSTRUCTION_FORMAT21c_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_TYPE] | INSTRUCTION_FORMAT21t -> SIMPLE_NAME[$INSTRUCTION_FORMAT21t] | INSTRUCTION_FORMAT22c_FIELD -> SIMPLE_NAME[$INSTRUCTION_FORMAT22c_FIELD] | INSTRUCTION_FORMAT22c_FIELD_ODEX -> SIMPLE_NAME[$INSTRUCTION_FORMAT22c_FIELD_ODEX] | INSTRUCTION_FORMAT22c_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT22c_TYPE] | INSTRUCTION_FORMAT22cs_FIELD -> SIMPLE_NAME[$INSTRUCTION_FORMAT22cs_FIELD] | INSTRUCTION_FORMAT22s_OR_ID -> SIMPLE_NAME[$INSTRUCTION_FORMAT22s_OR_ID] | INSTRUCTION_FORMAT22t -> SIMPLE_NAME[$INSTRUCTION_FORMAT22t] | INSTRUCTION_FORMAT23x -> SIMPLE_NAME[$INSTRUCTION_FORMAT23x] | INSTRUCTION_FORMAT31i_OR_ID -> SIMPLE_NAME[$INSTRUCTION_FORMAT31i_OR_ID] | INSTRUCTION_FORMAT31t -> SIMPLE_NAME[$INSTRUCTION_FORMAT31t] | INSTRUCTION_FORMAT35c_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_METHOD] | INSTRUCTION_FORMAT35c_METHOD_ODEX -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_METHOD_ODEX] | INSTRUCTION_FORMAT35c_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_TYPE] | INSTRUCTION_FORMAT35mi_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT35mi_METHOD] | INSTRUCTION_FORMAT35ms_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT35ms_METHOD] | INSTRUCTION_FORMAT45cc_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT45cc_METHOD] | INSTRUCTION_FORMAT4rcc_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT4rcc_METHOD] | INSTRUCTION_FORMAT51l -> SIMPLE_NAME[$INSTRUCTION_FORMAT51l] );
+	// smaliParser.g:549:1: simple_name : ( SIMPLE_NAME | ACCESS_SPEC -> SIMPLE_NAME[$ACCESS_SPEC] | VERIFICATION_ERROR_TYPE -> SIMPLE_NAME[$VERIFICATION_ERROR_TYPE] | POSITIVE_INTEGER_LITERAL -> SIMPLE_NAME[$POSITIVE_INTEGER_LITERAL] | NEGATIVE_INTEGER_LITERAL -> SIMPLE_NAME[$NEGATIVE_INTEGER_LITERAL] | FLOAT_LITERAL_OR_ID -> SIMPLE_NAME[$FLOAT_LITERAL_OR_ID] | DOUBLE_LITERAL_OR_ID -> SIMPLE_NAME[$DOUBLE_LITERAL_OR_ID] | BOOL_LITERAL -> SIMPLE_NAME[$BOOL_LITERAL] | NULL_LITERAL -> SIMPLE_NAME[$NULL_LITERAL] | REGISTER -> SIMPLE_NAME[$REGISTER] | param_list_or_id ->| PRIMITIVE_TYPE -> SIMPLE_NAME[$PRIMITIVE_TYPE] | VOID_TYPE -> SIMPLE_NAME[$VOID_TYPE] | ANNOTATION_VISIBILITY -> SIMPLE_NAME[$ANNOTATION_VISIBILITY] | METHOD_HANDLE_TYPE_FIELD | METHOD_HANDLE_TYPE_METHOD | INSTRUCTION_FORMAT10t -> SIMPLE_NAME[$INSTRUCTION_FORMAT10t] | INSTRUCTION_FORMAT10x -> SIMPLE_NAME[$INSTRUCTION_FORMAT10x] | INSTRUCTION_FORMAT10x_ODEX -> SIMPLE_NAME[$INSTRUCTION_FORMAT10x_ODEX] | INSTRUCTION_FORMAT11x -> SIMPLE_NAME[$INSTRUCTION_FORMAT11x] | INSTRUCTION_FORMAT12x_OR_ID -> SIMPLE_NAME[$INSTRUCTION_FORMAT12x_OR_ID] | INSTRUCTION_FORMAT21c_FIELD -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_FIELD] | INSTRUCTION_FORMAT21c_FIELD_ODEX -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_FIELD_ODEX] | INSTRUCTION_FORMAT21c_METHOD_HANDLE -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_METHOD_HANDLE] | INSTRUCTION_FORMAT21c_METHOD_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_METHOD_TYPE] | INSTRUCTION_FORMAT21c_STRING -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_STRING] | INSTRUCTION_FORMAT21c_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_TYPE] | INSTRUCTION_FORMAT21t -> SIMPLE_NAME[$INSTRUCTION_FORMAT21t] | INSTRUCTION_FORMAT22c_FIELD -> SIMPLE_NAME[$INSTRUCTION_FORMAT22c_FIELD] | INSTRUCTION_FORMAT22c_FIELD_ODEX -> SIMPLE_NAME[$INSTRUCTION_FORMAT22c_FIELD_ODEX] | INSTRUCTION_FORMAT22c_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT22c_TYPE] | INSTRUCTION_FORMAT22cs_FIELD -> SIMPLE_NAME[$INSTRUCTION_FORMAT22cs_FIELD] | INSTRUCTION_FORMAT22s_OR_ID -> SIMPLE_NAME[$INSTRUCTION_FORMAT22s_OR_ID] | INSTRUCTION_FORMAT22t -> SIMPLE_NAME[$INSTRUCTION_FORMAT22t] | INSTRUCTION_FORMAT23x -> SIMPLE_NAME[$INSTRUCTION_FORMAT23x] | INSTRUCTION_FORMAT31i_OR_ID -> SIMPLE_NAME[$INSTRUCTION_FORMAT31i_OR_ID] | INSTRUCTION_FORMAT31t -> SIMPLE_NAME[$INSTRUCTION_FORMAT31t] | INSTRUCTION_FORMAT35c_CALL_SITE -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_CALL_SITE] | INSTRUCTION_FORMAT35c_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_METHOD] | INSTRUCTION_FORMAT35c_METHOD_ODEX -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_METHOD_ODEX] | INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE] | INSTRUCTION_FORMAT35c_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_TYPE] | INSTRUCTION_FORMAT35mi_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT35mi_METHOD] | INSTRUCTION_FORMAT35ms_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT35ms_METHOD] | INSTRUCTION_FORMAT45cc_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT45cc_METHOD] | INSTRUCTION_FORMAT4rcc_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT4rcc_METHOD] | INSTRUCTION_FORMAT51l -> SIMPLE_NAME[$INSTRUCTION_FORMAT51l] );
 	public final smaliParser.simple_name_return simple_name() throws RecognitionException {
 		smaliParser.simple_name_return retval = new smaliParser.simple_name_return();
 		retval.start = input.LT(1);
@@ -2296,33 +2325,39 @@
 		Token PRIMITIVE_TYPE55=null;
 		Token VOID_TYPE56=null;
 		Token ANNOTATION_VISIBILITY57=null;
-		Token INSTRUCTION_FORMAT10t58=null;
-		Token INSTRUCTION_FORMAT10x59=null;
-		Token INSTRUCTION_FORMAT10x_ODEX60=null;
-		Token INSTRUCTION_FORMAT11x61=null;
-		Token INSTRUCTION_FORMAT12x_OR_ID62=null;
-		Token INSTRUCTION_FORMAT21c_FIELD63=null;
-		Token INSTRUCTION_FORMAT21c_FIELD_ODEX64=null;
-		Token INSTRUCTION_FORMAT21c_STRING65=null;
-		Token INSTRUCTION_FORMAT21c_TYPE66=null;
-		Token INSTRUCTION_FORMAT21t67=null;
-		Token INSTRUCTION_FORMAT22c_FIELD68=null;
-		Token INSTRUCTION_FORMAT22c_FIELD_ODEX69=null;
-		Token INSTRUCTION_FORMAT22c_TYPE70=null;
-		Token INSTRUCTION_FORMAT22cs_FIELD71=null;
-		Token INSTRUCTION_FORMAT22s_OR_ID72=null;
-		Token INSTRUCTION_FORMAT22t73=null;
-		Token INSTRUCTION_FORMAT23x74=null;
-		Token INSTRUCTION_FORMAT31i_OR_ID75=null;
-		Token INSTRUCTION_FORMAT31t76=null;
-		Token INSTRUCTION_FORMAT35c_METHOD77=null;
-		Token INSTRUCTION_FORMAT35c_METHOD_ODEX78=null;
-		Token INSTRUCTION_FORMAT35c_TYPE79=null;
-		Token INSTRUCTION_FORMAT35mi_METHOD80=null;
-		Token INSTRUCTION_FORMAT35ms_METHOD81=null;
-		Token INSTRUCTION_FORMAT45cc_METHOD82=null;
-		Token INSTRUCTION_FORMAT4rcc_METHOD83=null;
-		Token INSTRUCTION_FORMAT51l84=null;
+		Token METHOD_HANDLE_TYPE_FIELD58=null;
+		Token METHOD_HANDLE_TYPE_METHOD59=null;
+		Token INSTRUCTION_FORMAT10t60=null;
+		Token INSTRUCTION_FORMAT10x61=null;
+		Token INSTRUCTION_FORMAT10x_ODEX62=null;
+		Token INSTRUCTION_FORMAT11x63=null;
+		Token INSTRUCTION_FORMAT12x_OR_ID64=null;
+		Token INSTRUCTION_FORMAT21c_FIELD65=null;
+		Token INSTRUCTION_FORMAT21c_FIELD_ODEX66=null;
+		Token INSTRUCTION_FORMAT21c_METHOD_HANDLE67=null;
+		Token INSTRUCTION_FORMAT21c_METHOD_TYPE68=null;
+		Token INSTRUCTION_FORMAT21c_STRING69=null;
+		Token INSTRUCTION_FORMAT21c_TYPE70=null;
+		Token INSTRUCTION_FORMAT21t71=null;
+		Token INSTRUCTION_FORMAT22c_FIELD72=null;
+		Token INSTRUCTION_FORMAT22c_FIELD_ODEX73=null;
+		Token INSTRUCTION_FORMAT22c_TYPE74=null;
+		Token INSTRUCTION_FORMAT22cs_FIELD75=null;
+		Token INSTRUCTION_FORMAT22s_OR_ID76=null;
+		Token INSTRUCTION_FORMAT22t77=null;
+		Token INSTRUCTION_FORMAT23x78=null;
+		Token INSTRUCTION_FORMAT31i_OR_ID79=null;
+		Token INSTRUCTION_FORMAT31t80=null;
+		Token INSTRUCTION_FORMAT35c_CALL_SITE81=null;
+		Token INSTRUCTION_FORMAT35c_METHOD82=null;
+		Token INSTRUCTION_FORMAT35c_METHOD_ODEX83=null;
+		Token INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE84=null;
+		Token INSTRUCTION_FORMAT35c_TYPE85=null;
+		Token INSTRUCTION_FORMAT35mi_METHOD86=null;
+		Token INSTRUCTION_FORMAT35ms_METHOD87=null;
+		Token INSTRUCTION_FORMAT45cc_METHOD88=null;
+		Token INSTRUCTION_FORMAT4rcc_METHOD89=null;
+		Token INSTRUCTION_FORMAT51l90=null;
 		ParserRuleReturnScope param_list_or_id54 =null;
 
 		CommonTree SIMPLE_NAME44_tree=null;
@@ -2338,33 +2373,40 @@
 		CommonTree PRIMITIVE_TYPE55_tree=null;
 		CommonTree VOID_TYPE56_tree=null;
 		CommonTree ANNOTATION_VISIBILITY57_tree=null;
-		CommonTree INSTRUCTION_FORMAT10t58_tree=null;
-		CommonTree INSTRUCTION_FORMAT10x59_tree=null;
-		CommonTree INSTRUCTION_FORMAT10x_ODEX60_tree=null;
-		CommonTree INSTRUCTION_FORMAT11x61_tree=null;
-		CommonTree INSTRUCTION_FORMAT12x_OR_ID62_tree=null;
-		CommonTree INSTRUCTION_FORMAT21c_FIELD63_tree=null;
-		CommonTree INSTRUCTION_FORMAT21c_FIELD_ODEX64_tree=null;
-		CommonTree INSTRUCTION_FORMAT21c_STRING65_tree=null;
-		CommonTree INSTRUCTION_FORMAT21c_TYPE66_tree=null;
-		CommonTree INSTRUCTION_FORMAT21t67_tree=null;
-		CommonTree INSTRUCTION_FORMAT22c_FIELD68_tree=null;
-		CommonTree INSTRUCTION_FORMAT22c_FIELD_ODEX69_tree=null;
-		CommonTree INSTRUCTION_FORMAT22c_TYPE70_tree=null;
-		CommonTree INSTRUCTION_FORMAT22cs_FIELD71_tree=null;
-		CommonTree INSTRUCTION_FORMAT22s_OR_ID72_tree=null;
-		CommonTree INSTRUCTION_FORMAT22t73_tree=null;
-		CommonTree INSTRUCTION_FORMAT23x74_tree=null;
-		CommonTree INSTRUCTION_FORMAT31i_OR_ID75_tree=null;
-		CommonTree INSTRUCTION_FORMAT31t76_tree=null;
-		CommonTree INSTRUCTION_FORMAT35c_METHOD77_tree=null;
-		CommonTree INSTRUCTION_FORMAT35c_METHOD_ODEX78_tree=null;
-		CommonTree INSTRUCTION_FORMAT35c_TYPE79_tree=null;
-		CommonTree INSTRUCTION_FORMAT35mi_METHOD80_tree=null;
-		CommonTree INSTRUCTION_FORMAT35ms_METHOD81_tree=null;
-		CommonTree INSTRUCTION_FORMAT45cc_METHOD82_tree=null;
-		CommonTree INSTRUCTION_FORMAT4rcc_METHOD83_tree=null;
-		CommonTree INSTRUCTION_FORMAT51l84_tree=null;
+		CommonTree METHOD_HANDLE_TYPE_FIELD58_tree=null;
+		CommonTree METHOD_HANDLE_TYPE_METHOD59_tree=null;
+		CommonTree INSTRUCTION_FORMAT10t60_tree=null;
+		CommonTree INSTRUCTION_FORMAT10x61_tree=null;
+		CommonTree INSTRUCTION_FORMAT10x_ODEX62_tree=null;
+		CommonTree INSTRUCTION_FORMAT11x63_tree=null;
+		CommonTree INSTRUCTION_FORMAT12x_OR_ID64_tree=null;
+		CommonTree INSTRUCTION_FORMAT21c_FIELD65_tree=null;
+		CommonTree INSTRUCTION_FORMAT21c_FIELD_ODEX66_tree=null;
+		CommonTree INSTRUCTION_FORMAT21c_METHOD_HANDLE67_tree=null;
+		CommonTree INSTRUCTION_FORMAT21c_METHOD_TYPE68_tree=null;
+		CommonTree INSTRUCTION_FORMAT21c_STRING69_tree=null;
+		CommonTree INSTRUCTION_FORMAT21c_TYPE70_tree=null;
+		CommonTree INSTRUCTION_FORMAT21t71_tree=null;
+		CommonTree INSTRUCTION_FORMAT22c_FIELD72_tree=null;
+		CommonTree INSTRUCTION_FORMAT22c_FIELD_ODEX73_tree=null;
+		CommonTree INSTRUCTION_FORMAT22c_TYPE74_tree=null;
+		CommonTree INSTRUCTION_FORMAT22cs_FIELD75_tree=null;
+		CommonTree INSTRUCTION_FORMAT22s_OR_ID76_tree=null;
+		CommonTree INSTRUCTION_FORMAT22t77_tree=null;
+		CommonTree INSTRUCTION_FORMAT23x78_tree=null;
+		CommonTree INSTRUCTION_FORMAT31i_OR_ID79_tree=null;
+		CommonTree INSTRUCTION_FORMAT31t80_tree=null;
+		CommonTree INSTRUCTION_FORMAT35c_CALL_SITE81_tree=null;
+		CommonTree INSTRUCTION_FORMAT35c_METHOD82_tree=null;
+		CommonTree INSTRUCTION_FORMAT35c_METHOD_ODEX83_tree=null;
+		CommonTree INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE84_tree=null;
+		CommonTree INSTRUCTION_FORMAT35c_TYPE85_tree=null;
+		CommonTree INSTRUCTION_FORMAT35mi_METHOD86_tree=null;
+		CommonTree INSTRUCTION_FORMAT35ms_METHOD87_tree=null;
+		CommonTree INSTRUCTION_FORMAT45cc_METHOD88_tree=null;
+		CommonTree INSTRUCTION_FORMAT4rcc_METHOD89_tree=null;
+		CommonTree INSTRUCTION_FORMAT51l90_tree=null;
+		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE");
 		RewriteRuleTokenStream stream_ANNOTATION_VISIBILITY=new RewriteRuleTokenStream(adaptor,"token ANNOTATION_VISIBILITY");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT21c_TYPE=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT21c_TYPE");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT22t=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT22t");
@@ -2379,6 +2421,7 @@
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT45cc_METHOD=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT45cc_METHOD");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT35c_TYPE=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT35c_TYPE");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT10x=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT10x");
+		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT21c_METHOD_HANDLE=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT21c_METHOD_HANDLE");
 		RewriteRuleTokenStream stream_FLOAT_LITERAL_OR_ID=new RewriteRuleTokenStream(adaptor,"token FLOAT_LITERAL_OR_ID");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT22c_TYPE=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT22c_TYPE");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT21c_STRING=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT21c_STRING");
@@ -2391,6 +2434,7 @@
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT21t=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT21t");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT31t=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT31t");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT23x=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT23x");
+		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT35c_CALL_SITE=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT35c_CALL_SITE");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT51l=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT51l");
 		RewriteRuleTokenStream stream_POSITIVE_INTEGER_LITERAL=new RewriteRuleTokenStream(adaptor,"token POSITIVE_INTEGER_LITERAL");
 		RewriteRuleTokenStream stream_BOOL_LITERAL=new RewriteRuleTokenStream(adaptor,"token BOOL_LITERAL");
@@ -2399,6 +2443,7 @@
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT22c_FIELD=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT22c_FIELD");
 		RewriteRuleTokenStream stream_VERIFICATION_ERROR_TYPE=new RewriteRuleTokenStream(adaptor,"token VERIFICATION_ERROR_TYPE");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT11x=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT11x");
+		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT21c_METHOD_TYPE=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT21c_METHOD_TYPE");
 		RewriteRuleTokenStream stream_ACCESS_SPEC=new RewriteRuleTokenStream(adaptor,"token ACCESS_SPEC");
 		RewriteRuleTokenStream stream_NULL_LITERAL=new RewriteRuleTokenStream(adaptor,"token NULL_LITERAL");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT4rcc_METHOD=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT4rcc_METHOD");
@@ -2407,8 +2452,8 @@
 		RewriteRuleSubtreeStream stream_param_list_or_id=new RewriteRuleSubtreeStream(adaptor,"rule param_list_or_id");
 
 		try {
-			// smaliParser.g:538:3: ( SIMPLE_NAME | ACCESS_SPEC -> SIMPLE_NAME[$ACCESS_SPEC] | VERIFICATION_ERROR_TYPE -> SIMPLE_NAME[$VERIFICATION_ERROR_TYPE] | POSITIVE_INTEGER_LITERAL -> SIMPLE_NAME[$POSITIVE_INTEGER_LITERAL] | NEGATIVE_INTEGER_LITERAL -> SIMPLE_NAME[$NEGATIVE_INTEGER_LITERAL] | FLOAT_LITERAL_OR_ID -> SIMPLE_NAME[$FLOAT_LITERAL_OR_ID] | DOUBLE_LITERAL_OR_ID -> SIMPLE_NAME[$DOUBLE_LITERAL_OR_ID] | BOOL_LITERAL -> SIMPLE_NAME[$BOOL_LITERAL] | NULL_LITERAL -> SIMPLE_NAME[$NULL_LITERAL] | REGISTER -> SIMPLE_NAME[$REGISTER] | param_list_or_id ->| PRIMITIVE_TYPE -> SIMPLE_NAME[$PRIMITIVE_TYPE] | VOID_TYPE -> SIMPLE_NAME[$VOID_TYPE] | ANNOTATION_VISIBILITY -> SIMPLE_NAME[$ANNOTATION_VISIBILITY] | INSTRUCTION_FORMAT10t -> SIMPLE_NAME[$INSTRUCTION_FORMAT10t] | INSTRUCTION_FORMAT10x -> SIMPLE_NAME[$INSTRUCTION_FORMAT10x] | INSTRUCTION_FORMAT10x_ODEX -> SIMPLE_NAME[$INSTRUCTION_FORMAT10x_ODEX] | INSTRUCTION_FORMAT11x -> SIMPLE_NAME[$INSTRUCTION_FORMAT11x] | INSTRUCTION_FORMAT12x_OR_ID -> SIMPLE_NAME[$INSTRUCTION_FORMAT12x_OR_ID] | INSTRUCTION_FORMAT21c_FIELD -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_FIELD] | INSTRUCTION_FORMAT21c_FIELD_ODEX -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_FIELD_ODEX] | INSTRUCTION_FORMAT21c_STRING -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_STRING] | INSTRUCTION_FORMAT21c_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_TYPE] | INSTRUCTION_FORMAT21t -> SIMPLE_NAME[$INSTRUCTION_FORMAT21t] | INSTRUCTION_FORMAT22c_FIELD -> SIMPLE_NAME[$INSTRUCTION_FORMAT22c_FIELD] | INSTRUCTION_FORMAT22c_FIELD_ODEX -> SIMPLE_NAME[$INSTRUCTION_FORMAT22c_FIELD_ODEX] | INSTRUCTION_FORMAT22c_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT22c_TYPE] | INSTRUCTION_FORMAT22cs_FIELD -> SIMPLE_NAME[$INSTRUCTION_FORMAT22cs_FIELD] | INSTRUCTION_FORMAT22s_OR_ID -> SIMPLE_NAME[$INSTRUCTION_FORMAT22s_OR_ID] | INSTRUCTION_FORMAT22t -> SIMPLE_NAME[$INSTRUCTION_FORMAT22t] | INSTRUCTION_FORMAT23x -> SIMPLE_NAME[$INSTRUCTION_FORMAT23x] | INSTRUCTION_FORMAT31i_OR_ID -> SIMPLE_NAME[$INSTRUCTION_FORMAT31i_OR_ID] | INSTRUCTION_FORMAT31t -> SIMPLE_NAME[$INSTRUCTION_FORMAT31t] | INSTRUCTION_FORMAT35c_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_METHOD] | INSTRUCTION_FORMAT35c_METHOD_ODEX -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_METHOD_ODEX] | INSTRUCTION_FORMAT35c_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_TYPE] | INSTRUCTION_FORMAT35mi_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT35mi_METHOD] | INSTRUCTION_FORMAT35ms_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT35ms_METHOD] | INSTRUCTION_FORMAT45cc_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT45cc_METHOD] | INSTRUCTION_FORMAT4rcc_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT4rcc_METHOD] | INSTRUCTION_FORMAT51l -> SIMPLE_NAME[$INSTRUCTION_FORMAT51l] )
-			int alt10=41;
+			// smaliParser.g:550:3: ( SIMPLE_NAME | ACCESS_SPEC -> SIMPLE_NAME[$ACCESS_SPEC] | VERIFICATION_ERROR_TYPE -> SIMPLE_NAME[$VERIFICATION_ERROR_TYPE] | POSITIVE_INTEGER_LITERAL -> SIMPLE_NAME[$POSITIVE_INTEGER_LITERAL] | NEGATIVE_INTEGER_LITERAL -> SIMPLE_NAME[$NEGATIVE_INTEGER_LITERAL] | FLOAT_LITERAL_OR_ID -> SIMPLE_NAME[$FLOAT_LITERAL_OR_ID] | DOUBLE_LITERAL_OR_ID -> SIMPLE_NAME[$DOUBLE_LITERAL_OR_ID] | BOOL_LITERAL -> SIMPLE_NAME[$BOOL_LITERAL] | NULL_LITERAL -> SIMPLE_NAME[$NULL_LITERAL] | REGISTER -> SIMPLE_NAME[$REGISTER] | param_list_or_id ->| PRIMITIVE_TYPE -> SIMPLE_NAME[$PRIMITIVE_TYPE] | VOID_TYPE -> SIMPLE_NAME[$VOID_TYPE] | ANNOTATION_VISIBILITY -> SIMPLE_NAME[$ANNOTATION_VISIBILITY] | METHOD_HANDLE_TYPE_FIELD | METHOD_HANDLE_TYPE_METHOD | INSTRUCTION_FORMAT10t -> SIMPLE_NAME[$INSTRUCTION_FORMAT10t] | INSTRUCTION_FORMAT10x -> SIMPLE_NAME[$INSTRUCTION_FORMAT10x] | INSTRUCTION_FORMAT10x_ODEX -> SIMPLE_NAME[$INSTRUCTION_FORMAT10x_ODEX] | INSTRUCTION_FORMAT11x -> SIMPLE_NAME[$INSTRUCTION_FORMAT11x] | INSTRUCTION_FORMAT12x_OR_ID -> SIMPLE_NAME[$INSTRUCTION_FORMAT12x_OR_ID] | INSTRUCTION_FORMAT21c_FIELD -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_FIELD] | INSTRUCTION_FORMAT21c_FIELD_ODEX -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_FIELD_ODEX] | INSTRUCTION_FORMAT21c_METHOD_HANDLE -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_METHOD_HANDLE] | INSTRUCTION_FORMAT21c_METHOD_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_METHOD_TYPE] | INSTRUCTION_FORMAT21c_STRING -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_STRING] | INSTRUCTION_FORMAT21c_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_TYPE] | INSTRUCTION_FORMAT21t -> SIMPLE_NAME[$INSTRUCTION_FORMAT21t] | INSTRUCTION_FORMAT22c_FIELD -> SIMPLE_NAME[$INSTRUCTION_FORMAT22c_FIELD] | INSTRUCTION_FORMAT22c_FIELD_ODEX -> SIMPLE_NAME[$INSTRUCTION_FORMAT22c_FIELD_ODEX] | INSTRUCTION_FORMAT22c_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT22c_TYPE] | INSTRUCTION_FORMAT22cs_FIELD -> SIMPLE_NAME[$INSTRUCTION_FORMAT22cs_FIELD] | INSTRUCTION_FORMAT22s_OR_ID -> SIMPLE_NAME[$INSTRUCTION_FORMAT22s_OR_ID] | INSTRUCTION_FORMAT22t -> SIMPLE_NAME[$INSTRUCTION_FORMAT22t] | INSTRUCTION_FORMAT23x -> SIMPLE_NAME[$INSTRUCTION_FORMAT23x] | INSTRUCTION_FORMAT31i_OR_ID -> SIMPLE_NAME[$INSTRUCTION_FORMAT31i_OR_ID] | INSTRUCTION_FORMAT31t -> SIMPLE_NAME[$INSTRUCTION_FORMAT31t] | INSTRUCTION_FORMAT35c_CALL_SITE -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_CALL_SITE] | INSTRUCTION_FORMAT35c_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_METHOD] | INSTRUCTION_FORMAT35c_METHOD_ODEX -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_METHOD_ODEX] | INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE] | INSTRUCTION_FORMAT35c_TYPE -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_TYPE] | INSTRUCTION_FORMAT35mi_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT35mi_METHOD] | INSTRUCTION_FORMAT35ms_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT35ms_METHOD] | INSTRUCTION_FORMAT45cc_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT45cc_METHOD] | INSTRUCTION_FORMAT4rcc_METHOD -> SIMPLE_NAME[$INSTRUCTION_FORMAT4rcc_METHOD] | INSTRUCTION_FORMAT51l -> SIMPLE_NAME[$INSTRUCTION_FORMAT51l] )
+			int alt10=47;
 			switch ( input.LA(1) ) {
 			case SIMPLE_NAME:
 				{
@@ -2480,141 +2525,171 @@
 				alt10=14;
 				}
 				break;
-			case INSTRUCTION_FORMAT10t:
+			case METHOD_HANDLE_TYPE_FIELD:
 				{
 				alt10=15;
 				}
 				break;
-			case INSTRUCTION_FORMAT10x:
+			case METHOD_HANDLE_TYPE_METHOD:
 				{
 				alt10=16;
 				}
 				break;
-			case INSTRUCTION_FORMAT10x_ODEX:
+			case INSTRUCTION_FORMAT10t:
 				{
 				alt10=17;
 				}
 				break;
-			case INSTRUCTION_FORMAT11x:
+			case INSTRUCTION_FORMAT10x:
 				{
 				alt10=18;
 				}
 				break;
-			case INSTRUCTION_FORMAT12x_OR_ID:
+			case INSTRUCTION_FORMAT10x_ODEX:
 				{
 				alt10=19;
 				}
 				break;
-			case INSTRUCTION_FORMAT21c_FIELD:
+			case INSTRUCTION_FORMAT11x:
 				{
 				alt10=20;
 				}
 				break;
-			case INSTRUCTION_FORMAT21c_FIELD_ODEX:
+			case INSTRUCTION_FORMAT12x_OR_ID:
 				{
 				alt10=21;
 				}
 				break;
-			case INSTRUCTION_FORMAT21c_STRING:
+			case INSTRUCTION_FORMAT21c_FIELD:
 				{
 				alt10=22;
 				}
 				break;
-			case INSTRUCTION_FORMAT21c_TYPE:
+			case INSTRUCTION_FORMAT21c_FIELD_ODEX:
 				{
 				alt10=23;
 				}
 				break;
-			case INSTRUCTION_FORMAT21t:
+			case INSTRUCTION_FORMAT21c_METHOD_HANDLE:
 				{
 				alt10=24;
 				}
 				break;
-			case INSTRUCTION_FORMAT22c_FIELD:
+			case INSTRUCTION_FORMAT21c_METHOD_TYPE:
 				{
 				alt10=25;
 				}
 				break;
-			case INSTRUCTION_FORMAT22c_FIELD_ODEX:
+			case INSTRUCTION_FORMAT21c_STRING:
 				{
 				alt10=26;
 				}
 				break;
-			case INSTRUCTION_FORMAT22c_TYPE:
+			case INSTRUCTION_FORMAT21c_TYPE:
 				{
 				alt10=27;
 				}
 				break;
-			case INSTRUCTION_FORMAT22cs_FIELD:
+			case INSTRUCTION_FORMAT21t:
 				{
 				alt10=28;
 				}
 				break;
-			case INSTRUCTION_FORMAT22s_OR_ID:
+			case INSTRUCTION_FORMAT22c_FIELD:
 				{
 				alt10=29;
 				}
 				break;
-			case INSTRUCTION_FORMAT22t:
+			case INSTRUCTION_FORMAT22c_FIELD_ODEX:
 				{
 				alt10=30;
 				}
 				break;
-			case INSTRUCTION_FORMAT23x:
+			case INSTRUCTION_FORMAT22c_TYPE:
 				{
 				alt10=31;
 				}
 				break;
-			case INSTRUCTION_FORMAT31i_OR_ID:
+			case INSTRUCTION_FORMAT22cs_FIELD:
 				{
 				alt10=32;
 				}
 				break;
-			case INSTRUCTION_FORMAT31t:
+			case INSTRUCTION_FORMAT22s_OR_ID:
 				{
 				alt10=33;
 				}
 				break;
-			case INSTRUCTION_FORMAT35c_METHOD:
+			case INSTRUCTION_FORMAT22t:
 				{
 				alt10=34;
 				}
 				break;
-			case INSTRUCTION_FORMAT35c_METHOD_ODEX:
+			case INSTRUCTION_FORMAT23x:
 				{
 				alt10=35;
 				}
 				break;
-			case INSTRUCTION_FORMAT35c_TYPE:
+			case INSTRUCTION_FORMAT31i_OR_ID:
 				{
 				alt10=36;
 				}
 				break;
-			case INSTRUCTION_FORMAT35mi_METHOD:
+			case INSTRUCTION_FORMAT31t:
 				{
 				alt10=37;
 				}
 				break;
-			case INSTRUCTION_FORMAT35ms_METHOD:
+			case INSTRUCTION_FORMAT35c_CALL_SITE:
 				{
 				alt10=38;
 				}
 				break;
-			case INSTRUCTION_FORMAT45cc_METHOD:
+			case INSTRUCTION_FORMAT35c_METHOD:
 				{
 				alt10=39;
 				}
 				break;
-			case INSTRUCTION_FORMAT4rcc_METHOD:
+			case INSTRUCTION_FORMAT35c_METHOD_ODEX:
 				{
 				alt10=40;
 				}
 				break;
-			case INSTRUCTION_FORMAT51l:
+			case INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE:
 				{
 				alt10=41;
 				}
 				break;
+			case INSTRUCTION_FORMAT35c_TYPE:
+				{
+				alt10=42;
+				}
+				break;
+			case INSTRUCTION_FORMAT35mi_METHOD:
+				{
+				alt10=43;
+				}
+				break;
+			case INSTRUCTION_FORMAT35ms_METHOD:
+				{
+				alt10=44;
+				}
+				break;
+			case INSTRUCTION_FORMAT45cc_METHOD:
+				{
+				alt10=45;
+				}
+				break;
+			case INSTRUCTION_FORMAT4rcc_METHOD:
+				{
+				alt10=46;
+				}
+				break;
+			case INSTRUCTION_FORMAT51l:
+				{
+				alt10=47;
+				}
+				break;
 			default:
 				NoViableAltException nvae =
 					new NoViableAltException("", 10, 0, input);
@@ -2622,21 +2697,21 @@
 			}
 			switch (alt10) {
 				case 1 :
-					// smaliParser.g:538:5: SIMPLE_NAME
+					// smaliParser.g:550:5: SIMPLE_NAME
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					SIMPLE_NAME44=(Token)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_simple_name1777); 
+					SIMPLE_NAME44=(Token)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_simple_name1842); 
 					SIMPLE_NAME44_tree = (CommonTree)adaptor.create(SIMPLE_NAME44);
 					adaptor.addChild(root_0, SIMPLE_NAME44_tree);
 
 					}
 					break;
 				case 2 :
-					// smaliParser.g:539:5: ACCESS_SPEC
+					// smaliParser.g:551:5: ACCESS_SPEC
 					{
-					ACCESS_SPEC45=(Token)match(input,ACCESS_SPEC,FOLLOW_ACCESS_SPEC_in_simple_name1783);  
+					ACCESS_SPEC45=(Token)match(input,ACCESS_SPEC,FOLLOW_ACCESS_SPEC_in_simple_name1848);  
 					stream_ACCESS_SPEC.add(ACCESS_SPEC45);
 
 					// AST REWRITE
@@ -2650,7 +2725,7 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 539:17: -> SIMPLE_NAME[$ACCESS_SPEC]
+					// 551:17: -> SIMPLE_NAME[$ACCESS_SPEC]
 					{
 						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, ACCESS_SPEC45));
 					}
@@ -2661,9 +2736,9 @@
 					}
 					break;
 				case 3 :
-					// smaliParser.g:540:5: VERIFICATION_ERROR_TYPE
+					// smaliParser.g:552:5: VERIFICATION_ERROR_TYPE
 					{
-					VERIFICATION_ERROR_TYPE46=(Token)match(input,VERIFICATION_ERROR_TYPE,FOLLOW_VERIFICATION_ERROR_TYPE_in_simple_name1794);  
+					VERIFICATION_ERROR_TYPE46=(Token)match(input,VERIFICATION_ERROR_TYPE,FOLLOW_VERIFICATION_ERROR_TYPE_in_simple_name1859);  
 					stream_VERIFICATION_ERROR_TYPE.add(VERIFICATION_ERROR_TYPE46);
 
 					// AST REWRITE
@@ -2677,7 +2752,7 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 540:29: -> SIMPLE_NAME[$VERIFICATION_ERROR_TYPE]
+					// 552:29: -> SIMPLE_NAME[$VERIFICATION_ERROR_TYPE]
 					{
 						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, VERIFICATION_ERROR_TYPE46));
 					}
@@ -2688,9 +2763,9 @@
 					}
 					break;
 				case 4 :
-					// smaliParser.g:541:5: POSITIVE_INTEGER_LITERAL
+					// smaliParser.g:553:5: POSITIVE_INTEGER_LITERAL
 					{
-					POSITIVE_INTEGER_LITERAL47=(Token)match(input,POSITIVE_INTEGER_LITERAL,FOLLOW_POSITIVE_INTEGER_LITERAL_in_simple_name1805);  
+					POSITIVE_INTEGER_LITERAL47=(Token)match(input,POSITIVE_INTEGER_LITERAL,FOLLOW_POSITIVE_INTEGER_LITERAL_in_simple_name1870);  
 					stream_POSITIVE_INTEGER_LITERAL.add(POSITIVE_INTEGER_LITERAL47);
 
 					// AST REWRITE
@@ -2704,7 +2779,7 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 541:30: -> SIMPLE_NAME[$POSITIVE_INTEGER_LITERAL]
+					// 553:30: -> SIMPLE_NAME[$POSITIVE_INTEGER_LITERAL]
 					{
 						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, POSITIVE_INTEGER_LITERAL47));
 					}
@@ -2715,9 +2790,9 @@
 					}
 					break;
 				case 5 :
-					// smaliParser.g:542:5: NEGATIVE_INTEGER_LITERAL
+					// smaliParser.g:554:5: NEGATIVE_INTEGER_LITERAL
 					{
-					NEGATIVE_INTEGER_LITERAL48=(Token)match(input,NEGATIVE_INTEGER_LITERAL,FOLLOW_NEGATIVE_INTEGER_LITERAL_in_simple_name1816);  
+					NEGATIVE_INTEGER_LITERAL48=(Token)match(input,NEGATIVE_INTEGER_LITERAL,FOLLOW_NEGATIVE_INTEGER_LITERAL_in_simple_name1881);  
 					stream_NEGATIVE_INTEGER_LITERAL.add(NEGATIVE_INTEGER_LITERAL48);
 
 					// AST REWRITE
@@ -2731,7 +2806,7 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 542:30: -> SIMPLE_NAME[$NEGATIVE_INTEGER_LITERAL]
+					// 554:30: -> SIMPLE_NAME[$NEGATIVE_INTEGER_LITERAL]
 					{
 						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, NEGATIVE_INTEGER_LITERAL48));
 					}
@@ -2742,9 +2817,9 @@
 					}
 					break;
 				case 6 :
-					// smaliParser.g:543:5: FLOAT_LITERAL_OR_ID
+					// smaliParser.g:555:5: FLOAT_LITERAL_OR_ID
 					{
-					FLOAT_LITERAL_OR_ID49=(Token)match(input,FLOAT_LITERAL_OR_ID,FOLLOW_FLOAT_LITERAL_OR_ID_in_simple_name1827);  
+					FLOAT_LITERAL_OR_ID49=(Token)match(input,FLOAT_LITERAL_OR_ID,FOLLOW_FLOAT_LITERAL_OR_ID_in_simple_name1892);  
 					stream_FLOAT_LITERAL_OR_ID.add(FLOAT_LITERAL_OR_ID49);
 
 					// AST REWRITE
@@ -2758,7 +2833,7 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 543:25: -> SIMPLE_NAME[$FLOAT_LITERAL_OR_ID]
+					// 555:25: -> SIMPLE_NAME[$FLOAT_LITERAL_OR_ID]
 					{
 						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, FLOAT_LITERAL_OR_ID49));
 					}
@@ -2769,9 +2844,9 @@
 					}
 					break;
 				case 7 :
-					// smaliParser.g:544:5: DOUBLE_LITERAL_OR_ID
+					// smaliParser.g:556:5: DOUBLE_LITERAL_OR_ID
 					{
-					DOUBLE_LITERAL_OR_ID50=(Token)match(input,DOUBLE_LITERAL_OR_ID,FOLLOW_DOUBLE_LITERAL_OR_ID_in_simple_name1838);  
+					DOUBLE_LITERAL_OR_ID50=(Token)match(input,DOUBLE_LITERAL_OR_ID,FOLLOW_DOUBLE_LITERAL_OR_ID_in_simple_name1903);  
 					stream_DOUBLE_LITERAL_OR_ID.add(DOUBLE_LITERAL_OR_ID50);
 
 					// AST REWRITE
@@ -2785,7 +2860,7 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 544:26: -> SIMPLE_NAME[$DOUBLE_LITERAL_OR_ID]
+					// 556:26: -> SIMPLE_NAME[$DOUBLE_LITERAL_OR_ID]
 					{
 						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, DOUBLE_LITERAL_OR_ID50));
 					}
@@ -2796,9 +2871,9 @@
 					}
 					break;
 				case 8 :
-					// smaliParser.g:545:5: BOOL_LITERAL
+					// smaliParser.g:557:5: BOOL_LITERAL
 					{
-					BOOL_LITERAL51=(Token)match(input,BOOL_LITERAL,FOLLOW_BOOL_LITERAL_in_simple_name1849);  
+					BOOL_LITERAL51=(Token)match(input,BOOL_LITERAL,FOLLOW_BOOL_LITERAL_in_simple_name1914);  
 					stream_BOOL_LITERAL.add(BOOL_LITERAL51);
 
 					// AST REWRITE
@@ -2812,7 +2887,7 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 545:18: -> SIMPLE_NAME[$BOOL_LITERAL]
+					// 557:18: -> SIMPLE_NAME[$BOOL_LITERAL]
 					{
 						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, BOOL_LITERAL51));
 					}
@@ -2823,9 +2898,9 @@
 					}
 					break;
 				case 9 :
-					// smaliParser.g:546:5: NULL_LITERAL
+					// smaliParser.g:558:5: NULL_LITERAL
 					{
-					NULL_LITERAL52=(Token)match(input,NULL_LITERAL,FOLLOW_NULL_LITERAL_in_simple_name1860);  
+					NULL_LITERAL52=(Token)match(input,NULL_LITERAL,FOLLOW_NULL_LITERAL_in_simple_name1925);  
 					stream_NULL_LITERAL.add(NULL_LITERAL52);
 
 					// AST REWRITE
@@ -2839,7 +2914,7 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 546:18: -> SIMPLE_NAME[$NULL_LITERAL]
+					// 558:18: -> SIMPLE_NAME[$NULL_LITERAL]
 					{
 						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, NULL_LITERAL52));
 					}
@@ -2850,9 +2925,9 @@
 					}
 					break;
 				case 10 :
-					// smaliParser.g:547:5: REGISTER
+					// smaliParser.g:559:5: REGISTER
 					{
-					REGISTER53=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_simple_name1871);  
+					REGISTER53=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_simple_name1936);  
 					stream_REGISTER.add(REGISTER53);
 
 					// AST REWRITE
@@ -2866,7 +2941,7 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 547:14: -> SIMPLE_NAME[$REGISTER]
+					// 559:14: -> SIMPLE_NAME[$REGISTER]
 					{
 						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, REGISTER53));
 					}
@@ -2877,9 +2952,9 @@
 					}
 					break;
 				case 11 :
-					// smaliParser.g:548:5: param_list_or_id
+					// smaliParser.g:560:5: param_list_or_id
 					{
-					pushFollow(FOLLOW_param_list_or_id_in_simple_name1882);
+					pushFollow(FOLLOW_param_list_or_id_in_simple_name1947);
 					param_list_or_id54=param_list_or_id();
 					state._fsp--;
 
@@ -2895,7 +2970,7 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 548:22: ->
+					// 560:22: ->
 					{
 						adaptor.addChild(root_0,  adaptor.create(SIMPLE_NAME, (param_list_or_id54!=null?input.toString(param_list_or_id54.start,param_list_or_id54.stop):null)) );
 					}
@@ -2906,9 +2981,9 @@
 					}
 					break;
 				case 12 :
-					// smaliParser.g:549:5: PRIMITIVE_TYPE
+					// smaliParser.g:561:5: PRIMITIVE_TYPE
 					{
-					PRIMITIVE_TYPE55=(Token)match(input,PRIMITIVE_TYPE,FOLLOW_PRIMITIVE_TYPE_in_simple_name1892);  
+					PRIMITIVE_TYPE55=(Token)match(input,PRIMITIVE_TYPE,FOLLOW_PRIMITIVE_TYPE_in_simple_name1957);  
 					stream_PRIMITIVE_TYPE.add(PRIMITIVE_TYPE55);
 
 					// AST REWRITE
@@ -2922,7 +2997,7 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 549:20: -> SIMPLE_NAME[$PRIMITIVE_TYPE]
+					// 561:20: -> SIMPLE_NAME[$PRIMITIVE_TYPE]
 					{
 						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, PRIMITIVE_TYPE55));
 					}
@@ -2933,9 +3008,9 @@
 					}
 					break;
 				case 13 :
-					// smaliParser.g:550:5: VOID_TYPE
+					// smaliParser.g:562:5: VOID_TYPE
 					{
-					VOID_TYPE56=(Token)match(input,VOID_TYPE,FOLLOW_VOID_TYPE_in_simple_name1903);  
+					VOID_TYPE56=(Token)match(input,VOID_TYPE,FOLLOW_VOID_TYPE_in_simple_name1968);  
 					stream_VOID_TYPE.add(VOID_TYPE56);
 
 					// AST REWRITE
@@ -2949,7 +3024,7 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 550:15: -> SIMPLE_NAME[$VOID_TYPE]
+					// 562:15: -> SIMPLE_NAME[$VOID_TYPE]
 					{
 						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, VOID_TYPE56));
 					}
@@ -2960,9 +3035,9 @@
 					}
 					break;
 				case 14 :
-					// smaliParser.g:551:5: ANNOTATION_VISIBILITY
+					// smaliParser.g:563:5: ANNOTATION_VISIBILITY
 					{
-					ANNOTATION_VISIBILITY57=(Token)match(input,ANNOTATION_VISIBILITY,FOLLOW_ANNOTATION_VISIBILITY_in_simple_name1914);  
+					ANNOTATION_VISIBILITY57=(Token)match(input,ANNOTATION_VISIBILITY,FOLLOW_ANNOTATION_VISIBILITY_in_simple_name1979);  
 					stream_ANNOTATION_VISIBILITY.add(ANNOTATION_VISIBILITY57);
 
 					// AST REWRITE
@@ -2976,7 +3051,7 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 551:27: -> SIMPLE_NAME[$ANNOTATION_VISIBILITY]
+					// 563:27: -> SIMPLE_NAME[$ANNOTATION_VISIBILITY]
 					{
 						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, ANNOTATION_VISIBILITY57));
 					}
@@ -2987,64 +3062,34 @@
 					}
 					break;
 				case 15 :
-					// smaliParser.g:552:5: INSTRUCTION_FORMAT10t
+					// smaliParser.g:564:5: METHOD_HANDLE_TYPE_FIELD
 					{
-					INSTRUCTION_FORMAT10t58=(Token)match(input,INSTRUCTION_FORMAT10t,FOLLOW_INSTRUCTION_FORMAT10t_in_simple_name1925);  
-					stream_INSTRUCTION_FORMAT10t.add(INSTRUCTION_FORMAT10t58);
-
-					// AST REWRITE
-					// elements: 
-					// token labels: 
-					// rule labels: retval
-					// token list labels: 
-					// rule list labels: 
-					// wildcard labels: 
-					retval.tree = root_0;
-					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
-
 					root_0 = (CommonTree)adaptor.nil();
-					// 552:27: -> SIMPLE_NAME[$INSTRUCTION_FORMAT10t]
-					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT10t58));
-					}
 
 
-					retval.tree = root_0;
+					METHOD_HANDLE_TYPE_FIELD58=(Token)match(input,METHOD_HANDLE_TYPE_FIELD,FOLLOW_METHOD_HANDLE_TYPE_FIELD_in_simple_name1990); 
+					METHOD_HANDLE_TYPE_FIELD58_tree = (CommonTree)adaptor.create(METHOD_HANDLE_TYPE_FIELD58);
+					adaptor.addChild(root_0, METHOD_HANDLE_TYPE_FIELD58_tree);
 
 					}
 					break;
 				case 16 :
-					// smaliParser.g:553:5: INSTRUCTION_FORMAT10x
+					// smaliParser.g:565:5: METHOD_HANDLE_TYPE_METHOD
 					{
-					INSTRUCTION_FORMAT10x59=(Token)match(input,INSTRUCTION_FORMAT10x,FOLLOW_INSTRUCTION_FORMAT10x_in_simple_name1936);  
-					stream_INSTRUCTION_FORMAT10x.add(INSTRUCTION_FORMAT10x59);
-
-					// AST REWRITE
-					// elements: 
-					// token labels: 
-					// rule labels: retval
-					// token list labels: 
-					// rule list labels: 
-					// wildcard labels: 
-					retval.tree = root_0;
-					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
-
 					root_0 = (CommonTree)adaptor.nil();
-					// 553:27: -> SIMPLE_NAME[$INSTRUCTION_FORMAT10x]
-					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT10x59));
-					}
 
 
-					retval.tree = root_0;
+					METHOD_HANDLE_TYPE_METHOD59=(Token)match(input,METHOD_HANDLE_TYPE_METHOD,FOLLOW_METHOD_HANDLE_TYPE_METHOD_in_simple_name1996); 
+					METHOD_HANDLE_TYPE_METHOD59_tree = (CommonTree)adaptor.create(METHOD_HANDLE_TYPE_METHOD59);
+					adaptor.addChild(root_0, METHOD_HANDLE_TYPE_METHOD59_tree);
 
 					}
 					break;
 				case 17 :
-					// smaliParser.g:554:5: INSTRUCTION_FORMAT10x_ODEX
+					// smaliParser.g:566:5: INSTRUCTION_FORMAT10t
 					{
-					INSTRUCTION_FORMAT10x_ODEX60=(Token)match(input,INSTRUCTION_FORMAT10x_ODEX,FOLLOW_INSTRUCTION_FORMAT10x_ODEX_in_simple_name1947);  
-					stream_INSTRUCTION_FORMAT10x_ODEX.add(INSTRUCTION_FORMAT10x_ODEX60);
+					INSTRUCTION_FORMAT10t60=(Token)match(input,INSTRUCTION_FORMAT10t,FOLLOW_INSTRUCTION_FORMAT10t_in_simple_name2002);  
+					stream_INSTRUCTION_FORMAT10t.add(INSTRUCTION_FORMAT10t60);
 
 					// AST REWRITE
 					// elements: 
@@ -3057,9 +3102,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 554:32: -> SIMPLE_NAME[$INSTRUCTION_FORMAT10x_ODEX]
+					// 566:27: -> SIMPLE_NAME[$INSTRUCTION_FORMAT10t]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT10x_ODEX60));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT10t60));
 					}
 
 
@@ -3068,10 +3113,10 @@
 					}
 					break;
 				case 18 :
-					// smaliParser.g:555:5: INSTRUCTION_FORMAT11x
+					// smaliParser.g:567:5: INSTRUCTION_FORMAT10x
 					{
-					INSTRUCTION_FORMAT11x61=(Token)match(input,INSTRUCTION_FORMAT11x,FOLLOW_INSTRUCTION_FORMAT11x_in_simple_name1958);  
-					stream_INSTRUCTION_FORMAT11x.add(INSTRUCTION_FORMAT11x61);
+					INSTRUCTION_FORMAT10x61=(Token)match(input,INSTRUCTION_FORMAT10x,FOLLOW_INSTRUCTION_FORMAT10x_in_simple_name2013);  
+					stream_INSTRUCTION_FORMAT10x.add(INSTRUCTION_FORMAT10x61);
 
 					// AST REWRITE
 					// elements: 
@@ -3084,9 +3129,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 555:27: -> SIMPLE_NAME[$INSTRUCTION_FORMAT11x]
+					// 567:27: -> SIMPLE_NAME[$INSTRUCTION_FORMAT10x]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT11x61));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT10x61));
 					}
 
 
@@ -3095,10 +3140,10 @@
 					}
 					break;
 				case 19 :
-					// smaliParser.g:556:5: INSTRUCTION_FORMAT12x_OR_ID
+					// smaliParser.g:568:5: INSTRUCTION_FORMAT10x_ODEX
 					{
-					INSTRUCTION_FORMAT12x_OR_ID62=(Token)match(input,INSTRUCTION_FORMAT12x_OR_ID,FOLLOW_INSTRUCTION_FORMAT12x_OR_ID_in_simple_name1969);  
-					stream_INSTRUCTION_FORMAT12x_OR_ID.add(INSTRUCTION_FORMAT12x_OR_ID62);
+					INSTRUCTION_FORMAT10x_ODEX62=(Token)match(input,INSTRUCTION_FORMAT10x_ODEX,FOLLOW_INSTRUCTION_FORMAT10x_ODEX_in_simple_name2024);  
+					stream_INSTRUCTION_FORMAT10x_ODEX.add(INSTRUCTION_FORMAT10x_ODEX62);
 
 					// AST REWRITE
 					// elements: 
@@ -3111,9 +3156,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 556:33: -> SIMPLE_NAME[$INSTRUCTION_FORMAT12x_OR_ID]
+					// 568:32: -> SIMPLE_NAME[$INSTRUCTION_FORMAT10x_ODEX]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT12x_OR_ID62));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT10x_ODEX62));
 					}
 
 
@@ -3122,10 +3167,10 @@
 					}
 					break;
 				case 20 :
-					// smaliParser.g:557:5: INSTRUCTION_FORMAT21c_FIELD
+					// smaliParser.g:569:5: INSTRUCTION_FORMAT11x
 					{
-					INSTRUCTION_FORMAT21c_FIELD63=(Token)match(input,INSTRUCTION_FORMAT21c_FIELD,FOLLOW_INSTRUCTION_FORMAT21c_FIELD_in_simple_name1980);  
-					stream_INSTRUCTION_FORMAT21c_FIELD.add(INSTRUCTION_FORMAT21c_FIELD63);
+					INSTRUCTION_FORMAT11x63=(Token)match(input,INSTRUCTION_FORMAT11x,FOLLOW_INSTRUCTION_FORMAT11x_in_simple_name2035);  
+					stream_INSTRUCTION_FORMAT11x.add(INSTRUCTION_FORMAT11x63);
 
 					// AST REWRITE
 					// elements: 
@@ -3138,9 +3183,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 557:33: -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_FIELD]
+					// 569:27: -> SIMPLE_NAME[$INSTRUCTION_FORMAT11x]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT21c_FIELD63));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT11x63));
 					}
 
 
@@ -3149,10 +3194,10 @@
 					}
 					break;
 				case 21 :
-					// smaliParser.g:558:5: INSTRUCTION_FORMAT21c_FIELD_ODEX
+					// smaliParser.g:570:5: INSTRUCTION_FORMAT12x_OR_ID
 					{
-					INSTRUCTION_FORMAT21c_FIELD_ODEX64=(Token)match(input,INSTRUCTION_FORMAT21c_FIELD_ODEX,FOLLOW_INSTRUCTION_FORMAT21c_FIELD_ODEX_in_simple_name1991);  
-					stream_INSTRUCTION_FORMAT21c_FIELD_ODEX.add(INSTRUCTION_FORMAT21c_FIELD_ODEX64);
+					INSTRUCTION_FORMAT12x_OR_ID64=(Token)match(input,INSTRUCTION_FORMAT12x_OR_ID,FOLLOW_INSTRUCTION_FORMAT12x_OR_ID_in_simple_name2046);  
+					stream_INSTRUCTION_FORMAT12x_OR_ID.add(INSTRUCTION_FORMAT12x_OR_ID64);
 
 					// AST REWRITE
 					// elements: 
@@ -3165,9 +3210,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 558:38: -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_FIELD_ODEX]
+					// 570:33: -> SIMPLE_NAME[$INSTRUCTION_FORMAT12x_OR_ID]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT21c_FIELD_ODEX64));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT12x_OR_ID64));
 					}
 
 
@@ -3176,10 +3221,10 @@
 					}
 					break;
 				case 22 :
-					// smaliParser.g:559:5: INSTRUCTION_FORMAT21c_STRING
+					// smaliParser.g:571:5: INSTRUCTION_FORMAT21c_FIELD
 					{
-					INSTRUCTION_FORMAT21c_STRING65=(Token)match(input,INSTRUCTION_FORMAT21c_STRING,FOLLOW_INSTRUCTION_FORMAT21c_STRING_in_simple_name2002);  
-					stream_INSTRUCTION_FORMAT21c_STRING.add(INSTRUCTION_FORMAT21c_STRING65);
+					INSTRUCTION_FORMAT21c_FIELD65=(Token)match(input,INSTRUCTION_FORMAT21c_FIELD,FOLLOW_INSTRUCTION_FORMAT21c_FIELD_in_simple_name2057);  
+					stream_INSTRUCTION_FORMAT21c_FIELD.add(INSTRUCTION_FORMAT21c_FIELD65);
 
 					// AST REWRITE
 					// elements: 
@@ -3192,9 +3237,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 559:34: -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_STRING]
+					// 571:33: -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_FIELD]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT21c_STRING65));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT21c_FIELD65));
 					}
 
 
@@ -3203,10 +3248,10 @@
 					}
 					break;
 				case 23 :
-					// smaliParser.g:560:5: INSTRUCTION_FORMAT21c_TYPE
+					// smaliParser.g:572:5: INSTRUCTION_FORMAT21c_FIELD_ODEX
 					{
-					INSTRUCTION_FORMAT21c_TYPE66=(Token)match(input,INSTRUCTION_FORMAT21c_TYPE,FOLLOW_INSTRUCTION_FORMAT21c_TYPE_in_simple_name2013);  
-					stream_INSTRUCTION_FORMAT21c_TYPE.add(INSTRUCTION_FORMAT21c_TYPE66);
+					INSTRUCTION_FORMAT21c_FIELD_ODEX66=(Token)match(input,INSTRUCTION_FORMAT21c_FIELD_ODEX,FOLLOW_INSTRUCTION_FORMAT21c_FIELD_ODEX_in_simple_name2068);  
+					stream_INSTRUCTION_FORMAT21c_FIELD_ODEX.add(INSTRUCTION_FORMAT21c_FIELD_ODEX66);
 
 					// AST REWRITE
 					// elements: 
@@ -3219,9 +3264,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 560:32: -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_TYPE]
+					// 572:38: -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_FIELD_ODEX]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT21c_TYPE66));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT21c_FIELD_ODEX66));
 					}
 
 
@@ -3230,10 +3275,10 @@
 					}
 					break;
 				case 24 :
-					// smaliParser.g:561:5: INSTRUCTION_FORMAT21t
+					// smaliParser.g:573:5: INSTRUCTION_FORMAT21c_METHOD_HANDLE
 					{
-					INSTRUCTION_FORMAT21t67=(Token)match(input,INSTRUCTION_FORMAT21t,FOLLOW_INSTRUCTION_FORMAT21t_in_simple_name2024);  
-					stream_INSTRUCTION_FORMAT21t.add(INSTRUCTION_FORMAT21t67);
+					INSTRUCTION_FORMAT21c_METHOD_HANDLE67=(Token)match(input,INSTRUCTION_FORMAT21c_METHOD_HANDLE,FOLLOW_INSTRUCTION_FORMAT21c_METHOD_HANDLE_in_simple_name2079);  
+					stream_INSTRUCTION_FORMAT21c_METHOD_HANDLE.add(INSTRUCTION_FORMAT21c_METHOD_HANDLE67);
 
 					// AST REWRITE
 					// elements: 
@@ -3246,9 +3291,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 561:27: -> SIMPLE_NAME[$INSTRUCTION_FORMAT21t]
+					// 573:41: -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_METHOD_HANDLE]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT21t67));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT21c_METHOD_HANDLE67));
 					}
 
 
@@ -3257,10 +3302,10 @@
 					}
 					break;
 				case 25 :
-					// smaliParser.g:562:5: INSTRUCTION_FORMAT22c_FIELD
+					// smaliParser.g:574:5: INSTRUCTION_FORMAT21c_METHOD_TYPE
 					{
-					INSTRUCTION_FORMAT22c_FIELD68=(Token)match(input,INSTRUCTION_FORMAT22c_FIELD,FOLLOW_INSTRUCTION_FORMAT22c_FIELD_in_simple_name2035);  
-					stream_INSTRUCTION_FORMAT22c_FIELD.add(INSTRUCTION_FORMAT22c_FIELD68);
+					INSTRUCTION_FORMAT21c_METHOD_TYPE68=(Token)match(input,INSTRUCTION_FORMAT21c_METHOD_TYPE,FOLLOW_INSTRUCTION_FORMAT21c_METHOD_TYPE_in_simple_name2090);  
+					stream_INSTRUCTION_FORMAT21c_METHOD_TYPE.add(INSTRUCTION_FORMAT21c_METHOD_TYPE68);
 
 					// AST REWRITE
 					// elements: 
@@ -3273,9 +3318,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 562:33: -> SIMPLE_NAME[$INSTRUCTION_FORMAT22c_FIELD]
+					// 574:39: -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_METHOD_TYPE]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT22c_FIELD68));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT21c_METHOD_TYPE68));
 					}
 
 
@@ -3284,10 +3329,10 @@
 					}
 					break;
 				case 26 :
-					// smaliParser.g:563:5: INSTRUCTION_FORMAT22c_FIELD_ODEX
+					// smaliParser.g:575:5: INSTRUCTION_FORMAT21c_STRING
 					{
-					INSTRUCTION_FORMAT22c_FIELD_ODEX69=(Token)match(input,INSTRUCTION_FORMAT22c_FIELD_ODEX,FOLLOW_INSTRUCTION_FORMAT22c_FIELD_ODEX_in_simple_name2046);  
-					stream_INSTRUCTION_FORMAT22c_FIELD_ODEX.add(INSTRUCTION_FORMAT22c_FIELD_ODEX69);
+					INSTRUCTION_FORMAT21c_STRING69=(Token)match(input,INSTRUCTION_FORMAT21c_STRING,FOLLOW_INSTRUCTION_FORMAT21c_STRING_in_simple_name2101);  
+					stream_INSTRUCTION_FORMAT21c_STRING.add(INSTRUCTION_FORMAT21c_STRING69);
 
 					// AST REWRITE
 					// elements: 
@@ -3300,9 +3345,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 563:38: -> SIMPLE_NAME[$INSTRUCTION_FORMAT22c_FIELD_ODEX]
+					// 575:34: -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_STRING]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT22c_FIELD_ODEX69));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT21c_STRING69));
 					}
 
 
@@ -3311,10 +3356,10 @@
 					}
 					break;
 				case 27 :
-					// smaliParser.g:564:5: INSTRUCTION_FORMAT22c_TYPE
+					// smaliParser.g:576:5: INSTRUCTION_FORMAT21c_TYPE
 					{
-					INSTRUCTION_FORMAT22c_TYPE70=(Token)match(input,INSTRUCTION_FORMAT22c_TYPE,FOLLOW_INSTRUCTION_FORMAT22c_TYPE_in_simple_name2057);  
-					stream_INSTRUCTION_FORMAT22c_TYPE.add(INSTRUCTION_FORMAT22c_TYPE70);
+					INSTRUCTION_FORMAT21c_TYPE70=(Token)match(input,INSTRUCTION_FORMAT21c_TYPE,FOLLOW_INSTRUCTION_FORMAT21c_TYPE_in_simple_name2112);  
+					stream_INSTRUCTION_FORMAT21c_TYPE.add(INSTRUCTION_FORMAT21c_TYPE70);
 
 					// AST REWRITE
 					// elements: 
@@ -3327,9 +3372,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 564:32: -> SIMPLE_NAME[$INSTRUCTION_FORMAT22c_TYPE]
+					// 576:32: -> SIMPLE_NAME[$INSTRUCTION_FORMAT21c_TYPE]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT22c_TYPE70));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT21c_TYPE70));
 					}
 
 
@@ -3338,10 +3383,10 @@
 					}
 					break;
 				case 28 :
-					// smaliParser.g:565:5: INSTRUCTION_FORMAT22cs_FIELD
+					// smaliParser.g:577:5: INSTRUCTION_FORMAT21t
 					{
-					INSTRUCTION_FORMAT22cs_FIELD71=(Token)match(input,INSTRUCTION_FORMAT22cs_FIELD,FOLLOW_INSTRUCTION_FORMAT22cs_FIELD_in_simple_name2068);  
-					stream_INSTRUCTION_FORMAT22cs_FIELD.add(INSTRUCTION_FORMAT22cs_FIELD71);
+					INSTRUCTION_FORMAT21t71=(Token)match(input,INSTRUCTION_FORMAT21t,FOLLOW_INSTRUCTION_FORMAT21t_in_simple_name2123);  
+					stream_INSTRUCTION_FORMAT21t.add(INSTRUCTION_FORMAT21t71);
 
 					// AST REWRITE
 					// elements: 
@@ -3354,9 +3399,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 565:34: -> SIMPLE_NAME[$INSTRUCTION_FORMAT22cs_FIELD]
+					// 577:27: -> SIMPLE_NAME[$INSTRUCTION_FORMAT21t]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT22cs_FIELD71));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT21t71));
 					}
 
 
@@ -3365,10 +3410,10 @@
 					}
 					break;
 				case 29 :
-					// smaliParser.g:566:5: INSTRUCTION_FORMAT22s_OR_ID
+					// smaliParser.g:578:5: INSTRUCTION_FORMAT22c_FIELD
 					{
-					INSTRUCTION_FORMAT22s_OR_ID72=(Token)match(input,INSTRUCTION_FORMAT22s_OR_ID,FOLLOW_INSTRUCTION_FORMAT22s_OR_ID_in_simple_name2079);  
-					stream_INSTRUCTION_FORMAT22s_OR_ID.add(INSTRUCTION_FORMAT22s_OR_ID72);
+					INSTRUCTION_FORMAT22c_FIELD72=(Token)match(input,INSTRUCTION_FORMAT22c_FIELD,FOLLOW_INSTRUCTION_FORMAT22c_FIELD_in_simple_name2134);  
+					stream_INSTRUCTION_FORMAT22c_FIELD.add(INSTRUCTION_FORMAT22c_FIELD72);
 
 					// AST REWRITE
 					// elements: 
@@ -3381,9 +3426,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 566:33: -> SIMPLE_NAME[$INSTRUCTION_FORMAT22s_OR_ID]
+					// 578:33: -> SIMPLE_NAME[$INSTRUCTION_FORMAT22c_FIELD]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT22s_OR_ID72));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT22c_FIELD72));
 					}
 
 
@@ -3392,10 +3437,10 @@
 					}
 					break;
 				case 30 :
-					// smaliParser.g:567:5: INSTRUCTION_FORMAT22t
+					// smaliParser.g:579:5: INSTRUCTION_FORMAT22c_FIELD_ODEX
 					{
-					INSTRUCTION_FORMAT22t73=(Token)match(input,INSTRUCTION_FORMAT22t,FOLLOW_INSTRUCTION_FORMAT22t_in_simple_name2090);  
-					stream_INSTRUCTION_FORMAT22t.add(INSTRUCTION_FORMAT22t73);
+					INSTRUCTION_FORMAT22c_FIELD_ODEX73=(Token)match(input,INSTRUCTION_FORMAT22c_FIELD_ODEX,FOLLOW_INSTRUCTION_FORMAT22c_FIELD_ODEX_in_simple_name2145);  
+					stream_INSTRUCTION_FORMAT22c_FIELD_ODEX.add(INSTRUCTION_FORMAT22c_FIELD_ODEX73);
 
 					// AST REWRITE
 					// elements: 
@@ -3408,9 +3453,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 567:27: -> SIMPLE_NAME[$INSTRUCTION_FORMAT22t]
+					// 579:38: -> SIMPLE_NAME[$INSTRUCTION_FORMAT22c_FIELD_ODEX]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT22t73));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT22c_FIELD_ODEX73));
 					}
 
 
@@ -3419,10 +3464,10 @@
 					}
 					break;
 				case 31 :
-					// smaliParser.g:568:5: INSTRUCTION_FORMAT23x
+					// smaliParser.g:580:5: INSTRUCTION_FORMAT22c_TYPE
 					{
-					INSTRUCTION_FORMAT23x74=(Token)match(input,INSTRUCTION_FORMAT23x,FOLLOW_INSTRUCTION_FORMAT23x_in_simple_name2101);  
-					stream_INSTRUCTION_FORMAT23x.add(INSTRUCTION_FORMAT23x74);
+					INSTRUCTION_FORMAT22c_TYPE74=(Token)match(input,INSTRUCTION_FORMAT22c_TYPE,FOLLOW_INSTRUCTION_FORMAT22c_TYPE_in_simple_name2156);  
+					stream_INSTRUCTION_FORMAT22c_TYPE.add(INSTRUCTION_FORMAT22c_TYPE74);
 
 					// AST REWRITE
 					// elements: 
@@ -3435,9 +3480,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 568:27: -> SIMPLE_NAME[$INSTRUCTION_FORMAT23x]
+					// 580:32: -> SIMPLE_NAME[$INSTRUCTION_FORMAT22c_TYPE]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT23x74));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT22c_TYPE74));
 					}
 
 
@@ -3446,10 +3491,10 @@
 					}
 					break;
 				case 32 :
-					// smaliParser.g:569:5: INSTRUCTION_FORMAT31i_OR_ID
+					// smaliParser.g:581:5: INSTRUCTION_FORMAT22cs_FIELD
 					{
-					INSTRUCTION_FORMAT31i_OR_ID75=(Token)match(input,INSTRUCTION_FORMAT31i_OR_ID,FOLLOW_INSTRUCTION_FORMAT31i_OR_ID_in_simple_name2112);  
-					stream_INSTRUCTION_FORMAT31i_OR_ID.add(INSTRUCTION_FORMAT31i_OR_ID75);
+					INSTRUCTION_FORMAT22cs_FIELD75=(Token)match(input,INSTRUCTION_FORMAT22cs_FIELD,FOLLOW_INSTRUCTION_FORMAT22cs_FIELD_in_simple_name2167);  
+					stream_INSTRUCTION_FORMAT22cs_FIELD.add(INSTRUCTION_FORMAT22cs_FIELD75);
 
 					// AST REWRITE
 					// elements: 
@@ -3462,9 +3507,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 569:33: -> SIMPLE_NAME[$INSTRUCTION_FORMAT31i_OR_ID]
+					// 581:34: -> SIMPLE_NAME[$INSTRUCTION_FORMAT22cs_FIELD]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT31i_OR_ID75));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT22cs_FIELD75));
 					}
 
 
@@ -3473,10 +3518,10 @@
 					}
 					break;
 				case 33 :
-					// smaliParser.g:570:5: INSTRUCTION_FORMAT31t
+					// smaliParser.g:582:5: INSTRUCTION_FORMAT22s_OR_ID
 					{
-					INSTRUCTION_FORMAT31t76=(Token)match(input,INSTRUCTION_FORMAT31t,FOLLOW_INSTRUCTION_FORMAT31t_in_simple_name2123);  
-					stream_INSTRUCTION_FORMAT31t.add(INSTRUCTION_FORMAT31t76);
+					INSTRUCTION_FORMAT22s_OR_ID76=(Token)match(input,INSTRUCTION_FORMAT22s_OR_ID,FOLLOW_INSTRUCTION_FORMAT22s_OR_ID_in_simple_name2178);  
+					stream_INSTRUCTION_FORMAT22s_OR_ID.add(INSTRUCTION_FORMAT22s_OR_ID76);
 
 					// AST REWRITE
 					// elements: 
@@ -3489,9 +3534,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 570:27: -> SIMPLE_NAME[$INSTRUCTION_FORMAT31t]
+					// 582:33: -> SIMPLE_NAME[$INSTRUCTION_FORMAT22s_OR_ID]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT31t76));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT22s_OR_ID76));
 					}
 
 
@@ -3500,10 +3545,10 @@
 					}
 					break;
 				case 34 :
-					// smaliParser.g:571:5: INSTRUCTION_FORMAT35c_METHOD
+					// smaliParser.g:583:5: INSTRUCTION_FORMAT22t
 					{
-					INSTRUCTION_FORMAT35c_METHOD77=(Token)match(input,INSTRUCTION_FORMAT35c_METHOD,FOLLOW_INSTRUCTION_FORMAT35c_METHOD_in_simple_name2134);  
-					stream_INSTRUCTION_FORMAT35c_METHOD.add(INSTRUCTION_FORMAT35c_METHOD77);
+					INSTRUCTION_FORMAT22t77=(Token)match(input,INSTRUCTION_FORMAT22t,FOLLOW_INSTRUCTION_FORMAT22t_in_simple_name2189);  
+					stream_INSTRUCTION_FORMAT22t.add(INSTRUCTION_FORMAT22t77);
 
 					// AST REWRITE
 					// elements: 
@@ -3516,9 +3561,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 571:34: -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_METHOD]
+					// 583:27: -> SIMPLE_NAME[$INSTRUCTION_FORMAT22t]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT35c_METHOD77));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT22t77));
 					}
 
 
@@ -3527,10 +3572,10 @@
 					}
 					break;
 				case 35 :
-					// smaliParser.g:572:5: INSTRUCTION_FORMAT35c_METHOD_ODEX
+					// smaliParser.g:584:5: INSTRUCTION_FORMAT23x
 					{
-					INSTRUCTION_FORMAT35c_METHOD_ODEX78=(Token)match(input,INSTRUCTION_FORMAT35c_METHOD_ODEX,FOLLOW_INSTRUCTION_FORMAT35c_METHOD_ODEX_in_simple_name2145);  
-					stream_INSTRUCTION_FORMAT35c_METHOD_ODEX.add(INSTRUCTION_FORMAT35c_METHOD_ODEX78);
+					INSTRUCTION_FORMAT23x78=(Token)match(input,INSTRUCTION_FORMAT23x,FOLLOW_INSTRUCTION_FORMAT23x_in_simple_name2200);  
+					stream_INSTRUCTION_FORMAT23x.add(INSTRUCTION_FORMAT23x78);
 
 					// AST REWRITE
 					// elements: 
@@ -3543,9 +3588,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 572:39: -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_METHOD_ODEX]
+					// 584:27: -> SIMPLE_NAME[$INSTRUCTION_FORMAT23x]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT35c_METHOD_ODEX78));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT23x78));
 					}
 
 
@@ -3554,10 +3599,10 @@
 					}
 					break;
 				case 36 :
-					// smaliParser.g:573:5: INSTRUCTION_FORMAT35c_TYPE
+					// smaliParser.g:585:5: INSTRUCTION_FORMAT31i_OR_ID
 					{
-					INSTRUCTION_FORMAT35c_TYPE79=(Token)match(input,INSTRUCTION_FORMAT35c_TYPE,FOLLOW_INSTRUCTION_FORMAT35c_TYPE_in_simple_name2156);  
-					stream_INSTRUCTION_FORMAT35c_TYPE.add(INSTRUCTION_FORMAT35c_TYPE79);
+					INSTRUCTION_FORMAT31i_OR_ID79=(Token)match(input,INSTRUCTION_FORMAT31i_OR_ID,FOLLOW_INSTRUCTION_FORMAT31i_OR_ID_in_simple_name2211);  
+					stream_INSTRUCTION_FORMAT31i_OR_ID.add(INSTRUCTION_FORMAT31i_OR_ID79);
 
 					// AST REWRITE
 					// elements: 
@@ -3570,9 +3615,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 573:32: -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_TYPE]
+					// 585:33: -> SIMPLE_NAME[$INSTRUCTION_FORMAT31i_OR_ID]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT35c_TYPE79));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT31i_OR_ID79));
 					}
 
 
@@ -3581,10 +3626,10 @@
 					}
 					break;
 				case 37 :
-					// smaliParser.g:574:5: INSTRUCTION_FORMAT35mi_METHOD
+					// smaliParser.g:586:5: INSTRUCTION_FORMAT31t
 					{
-					INSTRUCTION_FORMAT35mi_METHOD80=(Token)match(input,INSTRUCTION_FORMAT35mi_METHOD,FOLLOW_INSTRUCTION_FORMAT35mi_METHOD_in_simple_name2167);  
-					stream_INSTRUCTION_FORMAT35mi_METHOD.add(INSTRUCTION_FORMAT35mi_METHOD80);
+					INSTRUCTION_FORMAT31t80=(Token)match(input,INSTRUCTION_FORMAT31t,FOLLOW_INSTRUCTION_FORMAT31t_in_simple_name2222);  
+					stream_INSTRUCTION_FORMAT31t.add(INSTRUCTION_FORMAT31t80);
 
 					// AST REWRITE
 					// elements: 
@@ -3597,9 +3642,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 574:35: -> SIMPLE_NAME[$INSTRUCTION_FORMAT35mi_METHOD]
+					// 586:27: -> SIMPLE_NAME[$INSTRUCTION_FORMAT31t]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT35mi_METHOD80));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT31t80));
 					}
 
 
@@ -3608,10 +3653,10 @@
 					}
 					break;
 				case 38 :
-					// smaliParser.g:575:5: INSTRUCTION_FORMAT35ms_METHOD
+					// smaliParser.g:587:5: INSTRUCTION_FORMAT35c_CALL_SITE
 					{
-					INSTRUCTION_FORMAT35ms_METHOD81=(Token)match(input,INSTRUCTION_FORMAT35ms_METHOD,FOLLOW_INSTRUCTION_FORMAT35ms_METHOD_in_simple_name2178);  
-					stream_INSTRUCTION_FORMAT35ms_METHOD.add(INSTRUCTION_FORMAT35ms_METHOD81);
+					INSTRUCTION_FORMAT35c_CALL_SITE81=(Token)match(input,INSTRUCTION_FORMAT35c_CALL_SITE,FOLLOW_INSTRUCTION_FORMAT35c_CALL_SITE_in_simple_name2233);  
+					stream_INSTRUCTION_FORMAT35c_CALL_SITE.add(INSTRUCTION_FORMAT35c_CALL_SITE81);
 
 					// AST REWRITE
 					// elements: 
@@ -3624,9 +3669,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 575:35: -> SIMPLE_NAME[$INSTRUCTION_FORMAT35ms_METHOD]
+					// 587:37: -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_CALL_SITE]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT35ms_METHOD81));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT35c_CALL_SITE81));
 					}
 
 
@@ -3635,10 +3680,10 @@
 					}
 					break;
 				case 39 :
-					// smaliParser.g:576:5: INSTRUCTION_FORMAT45cc_METHOD
+					// smaliParser.g:588:5: INSTRUCTION_FORMAT35c_METHOD
 					{
-					INSTRUCTION_FORMAT45cc_METHOD82=(Token)match(input,INSTRUCTION_FORMAT45cc_METHOD,FOLLOW_INSTRUCTION_FORMAT45cc_METHOD_in_simple_name2189);  
-					stream_INSTRUCTION_FORMAT45cc_METHOD.add(INSTRUCTION_FORMAT45cc_METHOD82);
+					INSTRUCTION_FORMAT35c_METHOD82=(Token)match(input,INSTRUCTION_FORMAT35c_METHOD,FOLLOW_INSTRUCTION_FORMAT35c_METHOD_in_simple_name2244);  
+					stream_INSTRUCTION_FORMAT35c_METHOD.add(INSTRUCTION_FORMAT35c_METHOD82);
 
 					// AST REWRITE
 					// elements: 
@@ -3651,9 +3696,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 576:35: -> SIMPLE_NAME[$INSTRUCTION_FORMAT45cc_METHOD]
+					// 588:34: -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_METHOD]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT45cc_METHOD82));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT35c_METHOD82));
 					}
 
 
@@ -3662,10 +3707,10 @@
 					}
 					break;
 				case 40 :
-					// smaliParser.g:577:5: INSTRUCTION_FORMAT4rcc_METHOD
+					// smaliParser.g:589:5: INSTRUCTION_FORMAT35c_METHOD_ODEX
 					{
-					INSTRUCTION_FORMAT4rcc_METHOD83=(Token)match(input,INSTRUCTION_FORMAT4rcc_METHOD,FOLLOW_INSTRUCTION_FORMAT4rcc_METHOD_in_simple_name2200);  
-					stream_INSTRUCTION_FORMAT4rcc_METHOD.add(INSTRUCTION_FORMAT4rcc_METHOD83);
+					INSTRUCTION_FORMAT35c_METHOD_ODEX83=(Token)match(input,INSTRUCTION_FORMAT35c_METHOD_ODEX,FOLLOW_INSTRUCTION_FORMAT35c_METHOD_ODEX_in_simple_name2255);  
+					stream_INSTRUCTION_FORMAT35c_METHOD_ODEX.add(INSTRUCTION_FORMAT35c_METHOD_ODEX83);
 
 					// AST REWRITE
 					// elements: 
@@ -3678,9 +3723,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 577:35: -> SIMPLE_NAME[$INSTRUCTION_FORMAT4rcc_METHOD]
+					// 589:39: -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_METHOD_ODEX]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT4rcc_METHOD83));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT35c_METHOD_ODEX83));
 					}
 
 
@@ -3689,10 +3734,10 @@
 					}
 					break;
 				case 41 :
-					// smaliParser.g:578:5: INSTRUCTION_FORMAT51l
+					// smaliParser.g:590:5: INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE
 					{
-					INSTRUCTION_FORMAT51l84=(Token)match(input,INSTRUCTION_FORMAT51l,FOLLOW_INSTRUCTION_FORMAT51l_in_simple_name2211);  
-					stream_INSTRUCTION_FORMAT51l.add(INSTRUCTION_FORMAT51l84);
+					INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE84=(Token)match(input,INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE,FOLLOW_INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE_in_simple_name2266);  
+					stream_INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE.add(INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE84);
 
 					// AST REWRITE
 					// elements: 
@@ -3705,9 +3750,171 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 578:27: -> SIMPLE_NAME[$INSTRUCTION_FORMAT51l]
+					// 590:56: -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT51l84));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE84));
+					}
+
+
+					retval.tree = root_0;
+
+					}
+					break;
+				case 42 :
+					// smaliParser.g:591:5: INSTRUCTION_FORMAT35c_TYPE
+					{
+					INSTRUCTION_FORMAT35c_TYPE85=(Token)match(input,INSTRUCTION_FORMAT35c_TYPE,FOLLOW_INSTRUCTION_FORMAT35c_TYPE_in_simple_name2277);  
+					stream_INSTRUCTION_FORMAT35c_TYPE.add(INSTRUCTION_FORMAT35c_TYPE85);
+
+					// AST REWRITE
+					// elements: 
+					// token labels: 
+					// rule labels: retval
+					// token list labels: 
+					// rule list labels: 
+					// wildcard labels: 
+					retval.tree = root_0;
+					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
+
+					root_0 = (CommonTree)adaptor.nil();
+					// 591:32: -> SIMPLE_NAME[$INSTRUCTION_FORMAT35c_TYPE]
+					{
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT35c_TYPE85));
+					}
+
+
+					retval.tree = root_0;
+
+					}
+					break;
+				case 43 :
+					// smaliParser.g:592:5: INSTRUCTION_FORMAT35mi_METHOD
+					{
+					INSTRUCTION_FORMAT35mi_METHOD86=(Token)match(input,INSTRUCTION_FORMAT35mi_METHOD,FOLLOW_INSTRUCTION_FORMAT35mi_METHOD_in_simple_name2288);  
+					stream_INSTRUCTION_FORMAT35mi_METHOD.add(INSTRUCTION_FORMAT35mi_METHOD86);
+
+					// AST REWRITE
+					// elements: 
+					// token labels: 
+					// rule labels: retval
+					// token list labels: 
+					// rule list labels: 
+					// wildcard labels: 
+					retval.tree = root_0;
+					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
+
+					root_0 = (CommonTree)adaptor.nil();
+					// 592:35: -> SIMPLE_NAME[$INSTRUCTION_FORMAT35mi_METHOD]
+					{
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT35mi_METHOD86));
+					}
+
+
+					retval.tree = root_0;
+
+					}
+					break;
+				case 44 :
+					// smaliParser.g:593:5: INSTRUCTION_FORMAT35ms_METHOD
+					{
+					INSTRUCTION_FORMAT35ms_METHOD87=(Token)match(input,INSTRUCTION_FORMAT35ms_METHOD,FOLLOW_INSTRUCTION_FORMAT35ms_METHOD_in_simple_name2299);  
+					stream_INSTRUCTION_FORMAT35ms_METHOD.add(INSTRUCTION_FORMAT35ms_METHOD87);
+
+					// AST REWRITE
+					// elements: 
+					// token labels: 
+					// rule labels: retval
+					// token list labels: 
+					// rule list labels: 
+					// wildcard labels: 
+					retval.tree = root_0;
+					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
+
+					root_0 = (CommonTree)adaptor.nil();
+					// 593:35: -> SIMPLE_NAME[$INSTRUCTION_FORMAT35ms_METHOD]
+					{
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT35ms_METHOD87));
+					}
+
+
+					retval.tree = root_0;
+
+					}
+					break;
+				case 45 :
+					// smaliParser.g:594:5: INSTRUCTION_FORMAT45cc_METHOD
+					{
+					INSTRUCTION_FORMAT45cc_METHOD88=(Token)match(input,INSTRUCTION_FORMAT45cc_METHOD,FOLLOW_INSTRUCTION_FORMAT45cc_METHOD_in_simple_name2310);  
+					stream_INSTRUCTION_FORMAT45cc_METHOD.add(INSTRUCTION_FORMAT45cc_METHOD88);
+
+					// AST REWRITE
+					// elements: 
+					// token labels: 
+					// rule labels: retval
+					// token list labels: 
+					// rule list labels: 
+					// wildcard labels: 
+					retval.tree = root_0;
+					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
+
+					root_0 = (CommonTree)adaptor.nil();
+					// 594:35: -> SIMPLE_NAME[$INSTRUCTION_FORMAT45cc_METHOD]
+					{
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT45cc_METHOD88));
+					}
+
+
+					retval.tree = root_0;
+
+					}
+					break;
+				case 46 :
+					// smaliParser.g:595:5: INSTRUCTION_FORMAT4rcc_METHOD
+					{
+					INSTRUCTION_FORMAT4rcc_METHOD89=(Token)match(input,INSTRUCTION_FORMAT4rcc_METHOD,FOLLOW_INSTRUCTION_FORMAT4rcc_METHOD_in_simple_name2321);  
+					stream_INSTRUCTION_FORMAT4rcc_METHOD.add(INSTRUCTION_FORMAT4rcc_METHOD89);
+
+					// AST REWRITE
+					// elements: 
+					// token labels: 
+					// rule labels: retval
+					// token list labels: 
+					// rule list labels: 
+					// wildcard labels: 
+					retval.tree = root_0;
+					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
+
+					root_0 = (CommonTree)adaptor.nil();
+					// 595:35: -> SIMPLE_NAME[$INSTRUCTION_FORMAT4rcc_METHOD]
+					{
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT4rcc_METHOD89));
+					}
+
+
+					retval.tree = root_0;
+
+					}
+					break;
+				case 47 :
+					// smaliParser.g:596:5: INSTRUCTION_FORMAT51l
+					{
+					INSTRUCTION_FORMAT51l90=(Token)match(input,INSTRUCTION_FORMAT51l,FOLLOW_INSTRUCTION_FORMAT51l_in_simple_name2332);  
+					stream_INSTRUCTION_FORMAT51l.add(INSTRUCTION_FORMAT51l90);
+
+					// AST REWRITE
+					// elements: 
+					// token labels: 
+					// rule labels: retval
+					// token list labels: 
+					// rule list labels: 
+					// wildcard labels: 
+					retval.tree = root_0;
+					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
+
+					root_0 = (CommonTree)adaptor.nil();
+					// 596:27: -> SIMPLE_NAME[$INSTRUCTION_FORMAT51l]
+					{
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, INSTRUCTION_FORMAT51l90));
 					}
 
 
@@ -3744,24 +3951,24 @@
 
 
 	// $ANTLR start "member_name"
-	// smaliParser.g:580:1: member_name : ( simple_name | MEMBER_NAME -> SIMPLE_NAME[$MEMBER_NAME] );
+	// smaliParser.g:598:1: member_name : ( simple_name | MEMBER_NAME -> SIMPLE_NAME[$MEMBER_NAME] );
 	public final smaliParser.member_name_return member_name() throws RecognitionException {
 		smaliParser.member_name_return retval = new smaliParser.member_name_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token MEMBER_NAME86=null;
-		ParserRuleReturnScope simple_name85 =null;
+		Token MEMBER_NAME92=null;
+		ParserRuleReturnScope simple_name91 =null;
 
-		CommonTree MEMBER_NAME86_tree=null;
+		CommonTree MEMBER_NAME92_tree=null;
 		RewriteRuleTokenStream stream_MEMBER_NAME=new RewriteRuleTokenStream(adaptor,"token MEMBER_NAME");
 
 		try {
-			// smaliParser.g:581:3: ( simple_name | MEMBER_NAME -> SIMPLE_NAME[$MEMBER_NAME] )
+			// smaliParser.g:599:3: ( simple_name | MEMBER_NAME -> SIMPLE_NAME[$MEMBER_NAME] )
 			int alt11=2;
 			int LA11_0 = input.LA(1);
-			if ( (LA11_0==ACCESS_SPEC||LA11_0==ANNOTATION_VISIBILITY||LA11_0==BOOL_LITERAL||LA11_0==DOUBLE_LITERAL_OR_ID||LA11_0==FLOAT_LITERAL_OR_ID||(LA11_0 >= INSTRUCTION_FORMAT10t && LA11_0 <= INSTRUCTION_FORMAT10x_ODEX)||LA11_0==INSTRUCTION_FORMAT11x||LA11_0==INSTRUCTION_FORMAT12x_OR_ID||(LA11_0 >= INSTRUCTION_FORMAT21c_FIELD && LA11_0 <= INSTRUCTION_FORMAT21c_TYPE)||LA11_0==INSTRUCTION_FORMAT21t||(LA11_0 >= INSTRUCTION_FORMAT22c_FIELD && LA11_0 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA11_0 >= INSTRUCTION_FORMAT22s_OR_ID && LA11_0 <= INSTRUCTION_FORMAT22t)||LA11_0==INSTRUCTION_FORMAT23x||(LA11_0 >= INSTRUCTION_FORMAT31i_OR_ID && LA11_0 <= INSTRUCTION_FORMAT31t)||(LA11_0 >= INSTRUCTION_FORMAT35c_METHOD && LA11_0 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA11_0 >= INSTRUCTION_FORMAT45cc_METHOD && LA11_0 <= INSTRUCTION_FORMAT51l)||(LA11_0 >= NEGATIVE_INTEGER_LITERAL && LA11_0 <= NULL_LITERAL)||(LA11_0 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA11_0 <= PRIMITIVE_TYPE)||LA11_0==REGISTER||LA11_0==SIMPLE_NAME||(LA11_0 >= VERIFICATION_ERROR_TYPE && LA11_0 <= VOID_TYPE)) ) {
+			if ( (LA11_0==ACCESS_SPEC||LA11_0==ANNOTATION_VISIBILITY||LA11_0==BOOL_LITERAL||LA11_0==DOUBLE_LITERAL_OR_ID||LA11_0==FLOAT_LITERAL_OR_ID||(LA11_0 >= INSTRUCTION_FORMAT10t && LA11_0 <= INSTRUCTION_FORMAT10x_ODEX)||LA11_0==INSTRUCTION_FORMAT11x||LA11_0==INSTRUCTION_FORMAT12x_OR_ID||(LA11_0 >= INSTRUCTION_FORMAT21c_FIELD && LA11_0 <= INSTRUCTION_FORMAT21c_TYPE)||LA11_0==INSTRUCTION_FORMAT21t||(LA11_0 >= INSTRUCTION_FORMAT22c_FIELD && LA11_0 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA11_0 >= INSTRUCTION_FORMAT22s_OR_ID && LA11_0 <= INSTRUCTION_FORMAT22t)||LA11_0==INSTRUCTION_FORMAT23x||(LA11_0 >= INSTRUCTION_FORMAT31i_OR_ID && LA11_0 <= INSTRUCTION_FORMAT31t)||(LA11_0 >= INSTRUCTION_FORMAT35c_CALL_SITE && LA11_0 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA11_0 >= INSTRUCTION_FORMAT45cc_METHOD && LA11_0 <= INSTRUCTION_FORMAT51l)||(LA11_0 >= METHOD_HANDLE_TYPE_FIELD && LA11_0 <= NULL_LITERAL)||(LA11_0 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA11_0 <= PRIMITIVE_TYPE)||LA11_0==REGISTER||LA11_0==SIMPLE_NAME||(LA11_0 >= VERIFICATION_ERROR_TYPE && LA11_0 <= VOID_TYPE)) ) {
 				alt11=1;
 			}
 			else if ( (LA11_0==MEMBER_NAME) ) {
@@ -3776,24 +3983,24 @@
 
 			switch (alt11) {
 				case 1 :
-					// smaliParser.g:581:5: simple_name
+					// smaliParser.g:599:5: simple_name
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_simple_name_in_member_name2226);
-					simple_name85=simple_name();
+					pushFollow(FOLLOW_simple_name_in_member_name2347);
+					simple_name91=simple_name();
 					state._fsp--;
 
-					adaptor.addChild(root_0, simple_name85.getTree());
+					adaptor.addChild(root_0, simple_name91.getTree());
 
 					}
 					break;
 				case 2 :
-					// smaliParser.g:582:5: MEMBER_NAME
+					// smaliParser.g:600:5: MEMBER_NAME
 					{
-					MEMBER_NAME86=(Token)match(input,MEMBER_NAME,FOLLOW_MEMBER_NAME_in_member_name2232);  
-					stream_MEMBER_NAME.add(MEMBER_NAME86);
+					MEMBER_NAME92=(Token)match(input,MEMBER_NAME,FOLLOW_MEMBER_NAME_in_member_name2353);  
+					stream_MEMBER_NAME.add(MEMBER_NAME92);
 
 					// AST REWRITE
 					// elements: 
@@ -3806,9 +4013,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 582:17: -> SIMPLE_NAME[$MEMBER_NAME]
+					// 600:17: -> SIMPLE_NAME[$MEMBER_NAME]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, MEMBER_NAME86));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(SIMPLE_NAME, MEMBER_NAME92));
 					}
 
 
@@ -3845,47 +4052,47 @@
 
 
 	// $ANTLR start "method_prototype"
-	// smaliParser.g:584:1: method_prototype : OPEN_PAREN param_list CLOSE_PAREN type_descriptor -> ^( I_METHOD_PROTOTYPE[$start, \"I_METHOD_PROTOTYPE\"] ^( I_METHOD_RETURN_TYPE type_descriptor ) ( param_list )? ) ;
+	// smaliParser.g:602:1: method_prototype : OPEN_PAREN param_list CLOSE_PAREN type_descriptor -> ^( I_METHOD_PROTOTYPE[$start, \"I_METHOD_PROTOTYPE\"] ^( I_METHOD_RETURN_TYPE type_descriptor ) ( param_list )? ) ;
 	public final smaliParser.method_prototype_return method_prototype() throws RecognitionException {
 		smaliParser.method_prototype_return retval = new smaliParser.method_prototype_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token OPEN_PAREN87=null;
-		Token CLOSE_PAREN89=null;
-		ParserRuleReturnScope param_list88 =null;
-		ParserRuleReturnScope type_descriptor90 =null;
+		Token OPEN_PAREN93=null;
+		Token CLOSE_PAREN95=null;
+		ParserRuleReturnScope param_list94 =null;
+		ParserRuleReturnScope type_descriptor96 =null;
 
-		CommonTree OPEN_PAREN87_tree=null;
-		CommonTree CLOSE_PAREN89_tree=null;
+		CommonTree OPEN_PAREN93_tree=null;
+		CommonTree CLOSE_PAREN95_tree=null;
 		RewriteRuleTokenStream stream_OPEN_PAREN=new RewriteRuleTokenStream(adaptor,"token OPEN_PAREN");
 		RewriteRuleTokenStream stream_CLOSE_PAREN=new RewriteRuleTokenStream(adaptor,"token CLOSE_PAREN");
 		RewriteRuleSubtreeStream stream_type_descriptor=new RewriteRuleSubtreeStream(adaptor,"rule type_descriptor");
 		RewriteRuleSubtreeStream stream_param_list=new RewriteRuleSubtreeStream(adaptor,"rule param_list");
 
 		try {
-			// smaliParser.g:585:3: ( OPEN_PAREN param_list CLOSE_PAREN type_descriptor -> ^( I_METHOD_PROTOTYPE[$start, \"I_METHOD_PROTOTYPE\"] ^( I_METHOD_RETURN_TYPE type_descriptor ) ( param_list )? ) )
-			// smaliParser.g:585:5: OPEN_PAREN param_list CLOSE_PAREN type_descriptor
+			// smaliParser.g:603:3: ( OPEN_PAREN param_list CLOSE_PAREN type_descriptor -> ^( I_METHOD_PROTOTYPE[$start, \"I_METHOD_PROTOTYPE\"] ^( I_METHOD_RETURN_TYPE type_descriptor ) ( param_list )? ) )
+			// smaliParser.g:603:5: OPEN_PAREN param_list CLOSE_PAREN type_descriptor
 			{
-			OPEN_PAREN87=(Token)match(input,OPEN_PAREN,FOLLOW_OPEN_PAREN_in_method_prototype2247);  
-			stream_OPEN_PAREN.add(OPEN_PAREN87);
+			OPEN_PAREN93=(Token)match(input,OPEN_PAREN,FOLLOW_OPEN_PAREN_in_method_prototype2368);  
+			stream_OPEN_PAREN.add(OPEN_PAREN93);
 
-			pushFollow(FOLLOW_param_list_in_method_prototype2249);
-			param_list88=param_list();
+			pushFollow(FOLLOW_param_list_in_method_prototype2370);
+			param_list94=param_list();
 			state._fsp--;
 
-			stream_param_list.add(param_list88.getTree());
-			CLOSE_PAREN89=(Token)match(input,CLOSE_PAREN,FOLLOW_CLOSE_PAREN_in_method_prototype2251);  
-			stream_CLOSE_PAREN.add(CLOSE_PAREN89);
+			stream_param_list.add(param_list94.getTree());
+			CLOSE_PAREN95=(Token)match(input,CLOSE_PAREN,FOLLOW_CLOSE_PAREN_in_method_prototype2372);  
+			stream_CLOSE_PAREN.add(CLOSE_PAREN95);
 
-			pushFollow(FOLLOW_type_descriptor_in_method_prototype2253);
-			type_descriptor90=type_descriptor();
+			pushFollow(FOLLOW_type_descriptor_in_method_prototype2374);
+			type_descriptor96=type_descriptor();
 			state._fsp--;
 
-			stream_type_descriptor.add(type_descriptor90.getTree());
+			stream_type_descriptor.add(type_descriptor96.getTree());
 			// AST REWRITE
-			// elements: type_descriptor, param_list
+			// elements: param_list, type_descriptor
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -3895,13 +4102,13 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 586:5: -> ^( I_METHOD_PROTOTYPE[$start, \"I_METHOD_PROTOTYPE\"] ^( I_METHOD_RETURN_TYPE type_descriptor ) ( param_list )? )
+			// 604:5: -> ^( I_METHOD_PROTOTYPE[$start, \"I_METHOD_PROTOTYPE\"] ^( I_METHOD_RETURN_TYPE type_descriptor ) ( param_list )? )
 			{
-				// smaliParser.g:586:8: ^( I_METHOD_PROTOTYPE[$start, \"I_METHOD_PROTOTYPE\"] ^( I_METHOD_RETURN_TYPE type_descriptor ) ( param_list )? )
+				// smaliParser.g:604:8: ^( I_METHOD_PROTOTYPE[$start, \"I_METHOD_PROTOTYPE\"] ^( I_METHOD_RETURN_TYPE type_descriptor ) ( param_list )? )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_METHOD_PROTOTYPE, (retval.start), "I_METHOD_PROTOTYPE"), root_1);
-				// smaliParser.g:586:59: ^( I_METHOD_RETURN_TYPE type_descriptor )
+				// smaliParser.g:604:59: ^( I_METHOD_RETURN_TYPE type_descriptor )
 				{
 				CommonTree root_2 = (CommonTree)adaptor.nil();
 				root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_METHOD_RETURN_TYPE, "I_METHOD_RETURN_TYPE"), root_2);
@@ -3909,7 +4116,7 @@
 				adaptor.addChild(root_1, root_2);
 				}
 
-				// smaliParser.g:586:99: ( param_list )?
+				// smaliParser.g:604:99: ( param_list )?
 				if ( stream_param_list.hasNext() ) {
 					adaptor.addChild(root_1, stream_param_list.nextTree());
 				}
@@ -3952,24 +4159,24 @@
 
 
 	// $ANTLR start "param_list_or_id_primitive_type"
-	// smaliParser.g:588:1: param_list_or_id_primitive_type : PARAM_LIST_OR_ID_PRIMITIVE_TYPE -> PRIMITIVE_TYPE[$PARAM_LIST_OR_ID_PRIMITIVE_TYPE] ;
+	// smaliParser.g:606:1: param_list_or_id_primitive_type : PARAM_LIST_OR_ID_PRIMITIVE_TYPE -> PRIMITIVE_TYPE[$PARAM_LIST_OR_ID_PRIMITIVE_TYPE] ;
 	public final smaliParser.param_list_or_id_primitive_type_return param_list_or_id_primitive_type() throws RecognitionException {
 		smaliParser.param_list_or_id_primitive_type_return retval = new smaliParser.param_list_or_id_primitive_type_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token PARAM_LIST_OR_ID_PRIMITIVE_TYPE91=null;
+		Token PARAM_LIST_OR_ID_PRIMITIVE_TYPE97=null;
 
-		CommonTree PARAM_LIST_OR_ID_PRIMITIVE_TYPE91_tree=null;
+		CommonTree PARAM_LIST_OR_ID_PRIMITIVE_TYPE97_tree=null;
 		RewriteRuleTokenStream stream_PARAM_LIST_OR_ID_PRIMITIVE_TYPE=new RewriteRuleTokenStream(adaptor,"token PARAM_LIST_OR_ID_PRIMITIVE_TYPE");
 
 		try {
-			// smaliParser.g:589:3: ( PARAM_LIST_OR_ID_PRIMITIVE_TYPE -> PRIMITIVE_TYPE[$PARAM_LIST_OR_ID_PRIMITIVE_TYPE] )
-			// smaliParser.g:589:5: PARAM_LIST_OR_ID_PRIMITIVE_TYPE
+			// smaliParser.g:607:3: ( PARAM_LIST_OR_ID_PRIMITIVE_TYPE -> PRIMITIVE_TYPE[$PARAM_LIST_OR_ID_PRIMITIVE_TYPE] )
+			// smaliParser.g:607:5: PARAM_LIST_OR_ID_PRIMITIVE_TYPE
 			{
-			PARAM_LIST_OR_ID_PRIMITIVE_TYPE91=(Token)match(input,PARAM_LIST_OR_ID_PRIMITIVE_TYPE,FOLLOW_PARAM_LIST_OR_ID_PRIMITIVE_TYPE_in_param_list_or_id_primitive_type2283);  
-			stream_PARAM_LIST_OR_ID_PRIMITIVE_TYPE.add(PARAM_LIST_OR_ID_PRIMITIVE_TYPE91);
+			PARAM_LIST_OR_ID_PRIMITIVE_TYPE97=(Token)match(input,PARAM_LIST_OR_ID_PRIMITIVE_TYPE,FOLLOW_PARAM_LIST_OR_ID_PRIMITIVE_TYPE_in_param_list_or_id_primitive_type2404);  
+			stream_PARAM_LIST_OR_ID_PRIMITIVE_TYPE.add(PARAM_LIST_OR_ID_PRIMITIVE_TYPE97);
 
 			// AST REWRITE
 			// elements: 
@@ -3982,9 +4189,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 589:37: -> PRIMITIVE_TYPE[$PARAM_LIST_OR_ID_PRIMITIVE_TYPE]
+			// 607:37: -> PRIMITIVE_TYPE[$PARAM_LIST_OR_ID_PRIMITIVE_TYPE]
 			{
-				adaptor.addChild(root_0, (CommonTree)adaptor.create(PRIMITIVE_TYPE, PARAM_LIST_OR_ID_PRIMITIVE_TYPE91));
+				adaptor.addChild(root_0, (CommonTree)adaptor.create(PRIMITIVE_TYPE, PARAM_LIST_OR_ID_PRIMITIVE_TYPE97));
 			}
 
 
@@ -4019,19 +4226,19 @@
 
 
 	// $ANTLR start "param_list"
-	// smaliParser.g:591:1: param_list : ( ( param_list_or_id_primitive_type )+ | ( nonvoid_type_descriptor )* );
+	// smaliParser.g:609:1: param_list : ( ( param_list_or_id_primitive_type )+ | ( nonvoid_type_descriptor )* );
 	public final smaliParser.param_list_return param_list() throws RecognitionException {
 		smaliParser.param_list_return retval = new smaliParser.param_list_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		ParserRuleReturnScope param_list_or_id_primitive_type92 =null;
-		ParserRuleReturnScope nonvoid_type_descriptor93 =null;
+		ParserRuleReturnScope param_list_or_id_primitive_type98 =null;
+		ParserRuleReturnScope nonvoid_type_descriptor99 =null;
 
 
 		try {
-			// smaliParser.g:592:3: ( ( param_list_or_id_primitive_type )+ | ( nonvoid_type_descriptor )* )
+			// smaliParser.g:610:3: ( ( param_list_or_id_primitive_type )+ | ( nonvoid_type_descriptor )* )
 			int alt14=2;
 			int LA14_0 = input.LA(1);
 			if ( (LA14_0==PARAM_LIST_OR_ID_PRIMITIVE_TYPE) ) {
@@ -4049,12 +4256,12 @@
 
 			switch (alt14) {
 				case 1 :
-					// smaliParser.g:592:5: ( param_list_or_id_primitive_type )+
+					// smaliParser.g:610:5: ( param_list_or_id_primitive_type )+
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					// smaliParser.g:592:5: ( param_list_or_id_primitive_type )+
+					// smaliParser.g:610:5: ( param_list_or_id_primitive_type )+
 					int cnt12=0;
 					loop12:
 					while (true) {
@@ -4066,13 +4273,13 @@
 
 						switch (alt12) {
 						case 1 :
-							// smaliParser.g:592:5: param_list_or_id_primitive_type
+							// smaliParser.g:610:5: param_list_or_id_primitive_type
 							{
-							pushFollow(FOLLOW_param_list_or_id_primitive_type_in_param_list2298);
-							param_list_or_id_primitive_type92=param_list_or_id_primitive_type();
+							pushFollow(FOLLOW_param_list_or_id_primitive_type_in_param_list2419);
+							param_list_or_id_primitive_type98=param_list_or_id_primitive_type();
 							state._fsp--;
 
-							adaptor.addChild(root_0, param_list_or_id_primitive_type92.getTree());
+							adaptor.addChild(root_0, param_list_or_id_primitive_type98.getTree());
 
 							}
 							break;
@@ -4088,12 +4295,12 @@
 					}
 					break;
 				case 2 :
-					// smaliParser.g:593:5: ( nonvoid_type_descriptor )*
+					// smaliParser.g:611:5: ( nonvoid_type_descriptor )*
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					// smaliParser.g:593:5: ( nonvoid_type_descriptor )*
+					// smaliParser.g:611:5: ( nonvoid_type_descriptor )*
 					loop13:
 					while (true) {
 						int alt13=2;
@@ -4104,13 +4311,13 @@
 
 						switch (alt13) {
 						case 1 :
-							// smaliParser.g:593:5: nonvoid_type_descriptor
+							// smaliParser.g:611:5: nonvoid_type_descriptor
 							{
-							pushFollow(FOLLOW_nonvoid_type_descriptor_in_param_list2305);
-							nonvoid_type_descriptor93=nonvoid_type_descriptor();
+							pushFollow(FOLLOW_nonvoid_type_descriptor_in_param_list2426);
+							nonvoid_type_descriptor99=nonvoid_type_descriptor();
 							state._fsp--;
 
-							adaptor.addChild(root_0, nonvoid_type_descriptor93.getTree());
+							adaptor.addChild(root_0, nonvoid_type_descriptor99.getTree());
 
 							}
 							break;
@@ -4151,34 +4358,34 @@
 
 
 	// $ANTLR start "array_descriptor"
-	// smaliParser.g:595:1: array_descriptor : ARRAY_TYPE_PREFIX ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR ) ;
+	// smaliParser.g:613:1: array_descriptor : ARRAY_TYPE_PREFIX ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR ) ;
 	public final smaliParser.array_descriptor_return array_descriptor() throws RecognitionException {
 		smaliParser.array_descriptor_return retval = new smaliParser.array_descriptor_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token ARRAY_TYPE_PREFIX94=null;
-		Token set95=null;
+		Token ARRAY_TYPE_PREFIX100=null;
+		Token set101=null;
 
-		CommonTree ARRAY_TYPE_PREFIX94_tree=null;
-		CommonTree set95_tree=null;
+		CommonTree ARRAY_TYPE_PREFIX100_tree=null;
+		CommonTree set101_tree=null;
 
 		try {
-			// smaliParser.g:596:3: ( ARRAY_TYPE_PREFIX ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR ) )
-			// smaliParser.g:596:5: ARRAY_TYPE_PREFIX ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR )
+			// smaliParser.g:614:3: ( ARRAY_TYPE_PREFIX ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR ) )
+			// smaliParser.g:614:5: ARRAY_TYPE_PREFIX ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR )
 			{
 			root_0 = (CommonTree)adaptor.nil();
 
 
-			ARRAY_TYPE_PREFIX94=(Token)match(input,ARRAY_TYPE_PREFIX,FOLLOW_ARRAY_TYPE_PREFIX_in_array_descriptor2316); 
-			ARRAY_TYPE_PREFIX94_tree = (CommonTree)adaptor.create(ARRAY_TYPE_PREFIX94);
-			adaptor.addChild(root_0, ARRAY_TYPE_PREFIX94_tree);
+			ARRAY_TYPE_PREFIX100=(Token)match(input,ARRAY_TYPE_PREFIX,FOLLOW_ARRAY_TYPE_PREFIX_in_array_descriptor2437); 
+			ARRAY_TYPE_PREFIX100_tree = (CommonTree)adaptor.create(ARRAY_TYPE_PREFIX100);
+			adaptor.addChild(root_0, ARRAY_TYPE_PREFIX100_tree);
 
-			set95=input.LT(1);
+			set101=input.LT(1);
 			if ( input.LA(1)==CLASS_DESCRIPTOR||input.LA(1)==PRIMITIVE_TYPE ) {
 				input.consume();
-				adaptor.addChild(root_0, (CommonTree)adaptor.create(set95));
+				adaptor.addChild(root_0, (CommonTree)adaptor.create(set101));
 				state.errorRecovery=false;
 			}
 			else {
@@ -4214,24 +4421,24 @@
 
 
 	// $ANTLR start "type_descriptor"
-	// smaliParser.g:598:1: type_descriptor : ( VOID_TYPE | PRIMITIVE_TYPE | CLASS_DESCRIPTOR | array_descriptor );
+	// smaliParser.g:616:1: type_descriptor : ( VOID_TYPE | PRIMITIVE_TYPE | CLASS_DESCRIPTOR | array_descriptor );
 	public final smaliParser.type_descriptor_return type_descriptor() throws RecognitionException {
 		smaliParser.type_descriptor_return retval = new smaliParser.type_descriptor_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token VOID_TYPE96=null;
-		Token PRIMITIVE_TYPE97=null;
-		Token CLASS_DESCRIPTOR98=null;
-		ParserRuleReturnScope array_descriptor99 =null;
+		Token VOID_TYPE102=null;
+		Token PRIMITIVE_TYPE103=null;
+		Token CLASS_DESCRIPTOR104=null;
+		ParserRuleReturnScope array_descriptor105 =null;
 
-		CommonTree VOID_TYPE96_tree=null;
-		CommonTree PRIMITIVE_TYPE97_tree=null;
-		CommonTree CLASS_DESCRIPTOR98_tree=null;
+		CommonTree VOID_TYPE102_tree=null;
+		CommonTree PRIMITIVE_TYPE103_tree=null;
+		CommonTree CLASS_DESCRIPTOR104_tree=null;
 
 		try {
-			// smaliParser.g:599:3: ( VOID_TYPE | PRIMITIVE_TYPE | CLASS_DESCRIPTOR | array_descriptor )
+			// smaliParser.g:617:3: ( VOID_TYPE | PRIMITIVE_TYPE | CLASS_DESCRIPTOR | array_descriptor )
 			int alt15=4;
 			switch ( input.LA(1) ) {
 			case VOID_TYPE:
@@ -4261,52 +4468,52 @@
 			}
 			switch (alt15) {
 				case 1 :
-					// smaliParser.g:599:5: VOID_TYPE
+					// smaliParser.g:617:5: VOID_TYPE
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					VOID_TYPE96=(Token)match(input,VOID_TYPE,FOLLOW_VOID_TYPE_in_type_descriptor2334); 
-					VOID_TYPE96_tree = (CommonTree)adaptor.create(VOID_TYPE96);
-					adaptor.addChild(root_0, VOID_TYPE96_tree);
+					VOID_TYPE102=(Token)match(input,VOID_TYPE,FOLLOW_VOID_TYPE_in_type_descriptor2455); 
+					VOID_TYPE102_tree = (CommonTree)adaptor.create(VOID_TYPE102);
+					adaptor.addChild(root_0, VOID_TYPE102_tree);
 
 					}
 					break;
 				case 2 :
-					// smaliParser.g:600:5: PRIMITIVE_TYPE
+					// smaliParser.g:618:5: PRIMITIVE_TYPE
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					PRIMITIVE_TYPE97=(Token)match(input,PRIMITIVE_TYPE,FOLLOW_PRIMITIVE_TYPE_in_type_descriptor2340); 
-					PRIMITIVE_TYPE97_tree = (CommonTree)adaptor.create(PRIMITIVE_TYPE97);
-					adaptor.addChild(root_0, PRIMITIVE_TYPE97_tree);
+					PRIMITIVE_TYPE103=(Token)match(input,PRIMITIVE_TYPE,FOLLOW_PRIMITIVE_TYPE_in_type_descriptor2461); 
+					PRIMITIVE_TYPE103_tree = (CommonTree)adaptor.create(PRIMITIVE_TYPE103);
+					adaptor.addChild(root_0, PRIMITIVE_TYPE103_tree);
 
 					}
 					break;
 				case 3 :
-					// smaliParser.g:601:5: CLASS_DESCRIPTOR
+					// smaliParser.g:619:5: CLASS_DESCRIPTOR
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					CLASS_DESCRIPTOR98=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_type_descriptor2346); 
-					CLASS_DESCRIPTOR98_tree = (CommonTree)adaptor.create(CLASS_DESCRIPTOR98);
-					adaptor.addChild(root_0, CLASS_DESCRIPTOR98_tree);
+					CLASS_DESCRIPTOR104=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_type_descriptor2467); 
+					CLASS_DESCRIPTOR104_tree = (CommonTree)adaptor.create(CLASS_DESCRIPTOR104);
+					adaptor.addChild(root_0, CLASS_DESCRIPTOR104_tree);
 
 					}
 					break;
 				case 4 :
-					// smaliParser.g:602:5: array_descriptor
+					// smaliParser.g:620:5: array_descriptor
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_array_descriptor_in_type_descriptor2352);
-					array_descriptor99=array_descriptor();
+					pushFollow(FOLLOW_array_descriptor_in_type_descriptor2473);
+					array_descriptor105=array_descriptor();
 					state._fsp--;
 
-					adaptor.addChild(root_0, array_descriptor99.getTree());
+					adaptor.addChild(root_0, array_descriptor105.getTree());
 
 					}
 					break;
@@ -4339,22 +4546,22 @@
 
 
 	// $ANTLR start "nonvoid_type_descriptor"
-	// smaliParser.g:604:1: nonvoid_type_descriptor : ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR | array_descriptor );
+	// smaliParser.g:622:1: nonvoid_type_descriptor : ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR | array_descriptor );
 	public final smaliParser.nonvoid_type_descriptor_return nonvoid_type_descriptor() throws RecognitionException {
 		smaliParser.nonvoid_type_descriptor_return retval = new smaliParser.nonvoid_type_descriptor_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token PRIMITIVE_TYPE100=null;
-		Token CLASS_DESCRIPTOR101=null;
-		ParserRuleReturnScope array_descriptor102 =null;
+		Token PRIMITIVE_TYPE106=null;
+		Token CLASS_DESCRIPTOR107=null;
+		ParserRuleReturnScope array_descriptor108 =null;
 
-		CommonTree PRIMITIVE_TYPE100_tree=null;
-		CommonTree CLASS_DESCRIPTOR101_tree=null;
+		CommonTree PRIMITIVE_TYPE106_tree=null;
+		CommonTree CLASS_DESCRIPTOR107_tree=null;
 
 		try {
-			// smaliParser.g:605:3: ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR | array_descriptor )
+			// smaliParser.g:623:3: ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR | array_descriptor )
 			int alt16=3;
 			switch ( input.LA(1) ) {
 			case PRIMITIVE_TYPE:
@@ -4379,40 +4586,40 @@
 			}
 			switch (alt16) {
 				case 1 :
-					// smaliParser.g:605:5: PRIMITIVE_TYPE
+					// smaliParser.g:623:5: PRIMITIVE_TYPE
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					PRIMITIVE_TYPE100=(Token)match(input,PRIMITIVE_TYPE,FOLLOW_PRIMITIVE_TYPE_in_nonvoid_type_descriptor2362); 
-					PRIMITIVE_TYPE100_tree = (CommonTree)adaptor.create(PRIMITIVE_TYPE100);
-					adaptor.addChild(root_0, PRIMITIVE_TYPE100_tree);
+					PRIMITIVE_TYPE106=(Token)match(input,PRIMITIVE_TYPE,FOLLOW_PRIMITIVE_TYPE_in_nonvoid_type_descriptor2483); 
+					PRIMITIVE_TYPE106_tree = (CommonTree)adaptor.create(PRIMITIVE_TYPE106);
+					adaptor.addChild(root_0, PRIMITIVE_TYPE106_tree);
 
 					}
 					break;
 				case 2 :
-					// smaliParser.g:606:5: CLASS_DESCRIPTOR
+					// smaliParser.g:624:5: CLASS_DESCRIPTOR
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					CLASS_DESCRIPTOR101=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_nonvoid_type_descriptor2368); 
-					CLASS_DESCRIPTOR101_tree = (CommonTree)adaptor.create(CLASS_DESCRIPTOR101);
-					adaptor.addChild(root_0, CLASS_DESCRIPTOR101_tree);
+					CLASS_DESCRIPTOR107=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_nonvoid_type_descriptor2489); 
+					CLASS_DESCRIPTOR107_tree = (CommonTree)adaptor.create(CLASS_DESCRIPTOR107);
+					adaptor.addChild(root_0, CLASS_DESCRIPTOR107_tree);
 
 					}
 					break;
 				case 3 :
-					// smaliParser.g:607:5: array_descriptor
+					// smaliParser.g:625:5: array_descriptor
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_array_descriptor_in_nonvoid_type_descriptor2374);
-					array_descriptor102=array_descriptor();
+					pushFollow(FOLLOW_array_descriptor_in_nonvoid_type_descriptor2495);
+					array_descriptor108=array_descriptor();
 					state._fsp--;
 
-					adaptor.addChild(root_0, array_descriptor102.getTree());
+					adaptor.addChild(root_0, array_descriptor108.getTree());
 
 					}
 					break;
@@ -4445,20 +4652,20 @@
 
 
 	// $ANTLR start "reference_type_descriptor"
-	// smaliParser.g:609:1: reference_type_descriptor : ( CLASS_DESCRIPTOR | array_descriptor );
+	// smaliParser.g:627:1: reference_type_descriptor : ( CLASS_DESCRIPTOR | array_descriptor );
 	public final smaliParser.reference_type_descriptor_return reference_type_descriptor() throws RecognitionException {
 		smaliParser.reference_type_descriptor_return retval = new smaliParser.reference_type_descriptor_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token CLASS_DESCRIPTOR103=null;
-		ParserRuleReturnScope array_descriptor104 =null;
+		Token CLASS_DESCRIPTOR109=null;
+		ParserRuleReturnScope array_descriptor110 =null;
 
-		CommonTree CLASS_DESCRIPTOR103_tree=null;
+		CommonTree CLASS_DESCRIPTOR109_tree=null;
 
 		try {
-			// smaliParser.g:610:3: ( CLASS_DESCRIPTOR | array_descriptor )
+			// smaliParser.g:628:3: ( CLASS_DESCRIPTOR | array_descriptor )
 			int alt17=2;
 			int LA17_0 = input.LA(1);
 			if ( (LA17_0==CLASS_DESCRIPTOR) ) {
@@ -4476,28 +4683,28 @@
 
 			switch (alt17) {
 				case 1 :
-					// smaliParser.g:610:5: CLASS_DESCRIPTOR
+					// smaliParser.g:628:5: CLASS_DESCRIPTOR
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					CLASS_DESCRIPTOR103=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_reference_type_descriptor2384); 
-					CLASS_DESCRIPTOR103_tree = (CommonTree)adaptor.create(CLASS_DESCRIPTOR103);
-					adaptor.addChild(root_0, CLASS_DESCRIPTOR103_tree);
+					CLASS_DESCRIPTOR109=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_reference_type_descriptor2505); 
+					CLASS_DESCRIPTOR109_tree = (CommonTree)adaptor.create(CLASS_DESCRIPTOR109);
+					adaptor.addChild(root_0, CLASS_DESCRIPTOR109_tree);
 
 					}
 					break;
 				case 2 :
-					// smaliParser.g:611:5: array_descriptor
+					// smaliParser.g:629:5: array_descriptor
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_array_descriptor_in_reference_type_descriptor2390);
-					array_descriptor104=array_descriptor();
+					pushFollow(FOLLOW_array_descriptor_in_reference_type_descriptor2511);
+					array_descriptor110=array_descriptor();
 					state._fsp--;
 
-					adaptor.addChild(root_0, array_descriptor104.getTree());
+					adaptor.addChild(root_0, array_descriptor110.getTree());
 
 					}
 					break;
@@ -4530,23 +4737,23 @@
 
 
 	// $ANTLR start "integer_literal"
-	// smaliParser.g:613:1: integer_literal : ( POSITIVE_INTEGER_LITERAL -> INTEGER_LITERAL[$POSITIVE_INTEGER_LITERAL] | NEGATIVE_INTEGER_LITERAL -> INTEGER_LITERAL[$NEGATIVE_INTEGER_LITERAL] );
+	// smaliParser.g:631:1: integer_literal : ( POSITIVE_INTEGER_LITERAL -> INTEGER_LITERAL[$POSITIVE_INTEGER_LITERAL] | NEGATIVE_INTEGER_LITERAL -> INTEGER_LITERAL[$NEGATIVE_INTEGER_LITERAL] );
 	public final smaliParser.integer_literal_return integer_literal() throws RecognitionException {
 		smaliParser.integer_literal_return retval = new smaliParser.integer_literal_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token POSITIVE_INTEGER_LITERAL105=null;
-		Token NEGATIVE_INTEGER_LITERAL106=null;
+		Token POSITIVE_INTEGER_LITERAL111=null;
+		Token NEGATIVE_INTEGER_LITERAL112=null;
 
-		CommonTree POSITIVE_INTEGER_LITERAL105_tree=null;
-		CommonTree NEGATIVE_INTEGER_LITERAL106_tree=null;
+		CommonTree POSITIVE_INTEGER_LITERAL111_tree=null;
+		CommonTree NEGATIVE_INTEGER_LITERAL112_tree=null;
 		RewriteRuleTokenStream stream_NEGATIVE_INTEGER_LITERAL=new RewriteRuleTokenStream(adaptor,"token NEGATIVE_INTEGER_LITERAL");
 		RewriteRuleTokenStream stream_POSITIVE_INTEGER_LITERAL=new RewriteRuleTokenStream(adaptor,"token POSITIVE_INTEGER_LITERAL");
 
 		try {
-			// smaliParser.g:614:3: ( POSITIVE_INTEGER_LITERAL -> INTEGER_LITERAL[$POSITIVE_INTEGER_LITERAL] | NEGATIVE_INTEGER_LITERAL -> INTEGER_LITERAL[$NEGATIVE_INTEGER_LITERAL] )
+			// smaliParser.g:632:3: ( POSITIVE_INTEGER_LITERAL -> INTEGER_LITERAL[$POSITIVE_INTEGER_LITERAL] | NEGATIVE_INTEGER_LITERAL -> INTEGER_LITERAL[$NEGATIVE_INTEGER_LITERAL] )
 			int alt18=2;
 			int LA18_0 = input.LA(1);
 			if ( (LA18_0==POSITIVE_INTEGER_LITERAL) ) {
@@ -4564,10 +4771,10 @@
 
 			switch (alt18) {
 				case 1 :
-					// smaliParser.g:614:5: POSITIVE_INTEGER_LITERAL
+					// smaliParser.g:632:5: POSITIVE_INTEGER_LITERAL
 					{
-					POSITIVE_INTEGER_LITERAL105=(Token)match(input,POSITIVE_INTEGER_LITERAL,FOLLOW_POSITIVE_INTEGER_LITERAL_in_integer_literal2400);  
-					stream_POSITIVE_INTEGER_LITERAL.add(POSITIVE_INTEGER_LITERAL105);
+					POSITIVE_INTEGER_LITERAL111=(Token)match(input,POSITIVE_INTEGER_LITERAL,FOLLOW_POSITIVE_INTEGER_LITERAL_in_integer_literal2521);  
+					stream_POSITIVE_INTEGER_LITERAL.add(POSITIVE_INTEGER_LITERAL111);
 
 					// AST REWRITE
 					// elements: 
@@ -4580,9 +4787,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 614:30: -> INTEGER_LITERAL[$POSITIVE_INTEGER_LITERAL]
+					// 632:30: -> INTEGER_LITERAL[$POSITIVE_INTEGER_LITERAL]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(INTEGER_LITERAL, POSITIVE_INTEGER_LITERAL105));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(INTEGER_LITERAL, POSITIVE_INTEGER_LITERAL111));
 					}
 
 
@@ -4591,10 +4798,10 @@
 					}
 					break;
 				case 2 :
-					// smaliParser.g:615:5: NEGATIVE_INTEGER_LITERAL
+					// smaliParser.g:633:5: NEGATIVE_INTEGER_LITERAL
 					{
-					NEGATIVE_INTEGER_LITERAL106=(Token)match(input,NEGATIVE_INTEGER_LITERAL,FOLLOW_NEGATIVE_INTEGER_LITERAL_in_integer_literal2411);  
-					stream_NEGATIVE_INTEGER_LITERAL.add(NEGATIVE_INTEGER_LITERAL106);
+					NEGATIVE_INTEGER_LITERAL112=(Token)match(input,NEGATIVE_INTEGER_LITERAL,FOLLOW_NEGATIVE_INTEGER_LITERAL_in_integer_literal2532);  
+					stream_NEGATIVE_INTEGER_LITERAL.add(NEGATIVE_INTEGER_LITERAL112);
 
 					// AST REWRITE
 					// elements: 
@@ -4607,9 +4814,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 615:30: -> INTEGER_LITERAL[$NEGATIVE_INTEGER_LITERAL]
+					// 633:30: -> INTEGER_LITERAL[$NEGATIVE_INTEGER_LITERAL]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(INTEGER_LITERAL, NEGATIVE_INTEGER_LITERAL106));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(INTEGER_LITERAL, NEGATIVE_INTEGER_LITERAL112));
 					}
 
 
@@ -4646,22 +4853,22 @@
 
 
 	// $ANTLR start "float_literal"
-	// smaliParser.g:617:1: float_literal : ( FLOAT_LITERAL_OR_ID -> FLOAT_LITERAL[$FLOAT_LITERAL_OR_ID] | FLOAT_LITERAL );
+	// smaliParser.g:635:1: float_literal : ( FLOAT_LITERAL_OR_ID -> FLOAT_LITERAL[$FLOAT_LITERAL_OR_ID] | FLOAT_LITERAL );
 	public final smaliParser.float_literal_return float_literal() throws RecognitionException {
 		smaliParser.float_literal_return retval = new smaliParser.float_literal_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token FLOAT_LITERAL_OR_ID107=null;
-		Token FLOAT_LITERAL108=null;
+		Token FLOAT_LITERAL_OR_ID113=null;
+		Token FLOAT_LITERAL114=null;
 
-		CommonTree FLOAT_LITERAL_OR_ID107_tree=null;
-		CommonTree FLOAT_LITERAL108_tree=null;
+		CommonTree FLOAT_LITERAL_OR_ID113_tree=null;
+		CommonTree FLOAT_LITERAL114_tree=null;
 		RewriteRuleTokenStream stream_FLOAT_LITERAL_OR_ID=new RewriteRuleTokenStream(adaptor,"token FLOAT_LITERAL_OR_ID");
 
 		try {
-			// smaliParser.g:618:3: ( FLOAT_LITERAL_OR_ID -> FLOAT_LITERAL[$FLOAT_LITERAL_OR_ID] | FLOAT_LITERAL )
+			// smaliParser.g:636:3: ( FLOAT_LITERAL_OR_ID -> FLOAT_LITERAL[$FLOAT_LITERAL_OR_ID] | FLOAT_LITERAL )
 			int alt19=2;
 			int LA19_0 = input.LA(1);
 			if ( (LA19_0==FLOAT_LITERAL_OR_ID) ) {
@@ -4679,10 +4886,10 @@
 
 			switch (alt19) {
 				case 1 :
-					// smaliParser.g:618:5: FLOAT_LITERAL_OR_ID
+					// smaliParser.g:636:5: FLOAT_LITERAL_OR_ID
 					{
-					FLOAT_LITERAL_OR_ID107=(Token)match(input,FLOAT_LITERAL_OR_ID,FOLLOW_FLOAT_LITERAL_OR_ID_in_float_literal2426);  
-					stream_FLOAT_LITERAL_OR_ID.add(FLOAT_LITERAL_OR_ID107);
+					FLOAT_LITERAL_OR_ID113=(Token)match(input,FLOAT_LITERAL_OR_ID,FOLLOW_FLOAT_LITERAL_OR_ID_in_float_literal2547);  
+					stream_FLOAT_LITERAL_OR_ID.add(FLOAT_LITERAL_OR_ID113);
 
 					// AST REWRITE
 					// elements: 
@@ -4695,9 +4902,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 618:25: -> FLOAT_LITERAL[$FLOAT_LITERAL_OR_ID]
+					// 636:25: -> FLOAT_LITERAL[$FLOAT_LITERAL_OR_ID]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(FLOAT_LITERAL, FLOAT_LITERAL_OR_ID107));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(FLOAT_LITERAL, FLOAT_LITERAL_OR_ID113));
 					}
 
 
@@ -4706,14 +4913,14 @@
 					}
 					break;
 				case 2 :
-					// smaliParser.g:619:5: FLOAT_LITERAL
+					// smaliParser.g:637:5: FLOAT_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					FLOAT_LITERAL108=(Token)match(input,FLOAT_LITERAL,FOLLOW_FLOAT_LITERAL_in_float_literal2437); 
-					FLOAT_LITERAL108_tree = (CommonTree)adaptor.create(FLOAT_LITERAL108);
-					adaptor.addChild(root_0, FLOAT_LITERAL108_tree);
+					FLOAT_LITERAL114=(Token)match(input,FLOAT_LITERAL,FOLLOW_FLOAT_LITERAL_in_float_literal2558); 
+					FLOAT_LITERAL114_tree = (CommonTree)adaptor.create(FLOAT_LITERAL114);
+					adaptor.addChild(root_0, FLOAT_LITERAL114_tree);
 
 					}
 					break;
@@ -4746,22 +4953,22 @@
 
 
 	// $ANTLR start "double_literal"
-	// smaliParser.g:621:1: double_literal : ( DOUBLE_LITERAL_OR_ID -> DOUBLE_LITERAL[$DOUBLE_LITERAL_OR_ID] | DOUBLE_LITERAL );
+	// smaliParser.g:639:1: double_literal : ( DOUBLE_LITERAL_OR_ID -> DOUBLE_LITERAL[$DOUBLE_LITERAL_OR_ID] | DOUBLE_LITERAL );
 	public final smaliParser.double_literal_return double_literal() throws RecognitionException {
 		smaliParser.double_literal_return retval = new smaliParser.double_literal_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token DOUBLE_LITERAL_OR_ID109=null;
-		Token DOUBLE_LITERAL110=null;
+		Token DOUBLE_LITERAL_OR_ID115=null;
+		Token DOUBLE_LITERAL116=null;
 
-		CommonTree DOUBLE_LITERAL_OR_ID109_tree=null;
-		CommonTree DOUBLE_LITERAL110_tree=null;
+		CommonTree DOUBLE_LITERAL_OR_ID115_tree=null;
+		CommonTree DOUBLE_LITERAL116_tree=null;
 		RewriteRuleTokenStream stream_DOUBLE_LITERAL_OR_ID=new RewriteRuleTokenStream(adaptor,"token DOUBLE_LITERAL_OR_ID");
 
 		try {
-			// smaliParser.g:622:3: ( DOUBLE_LITERAL_OR_ID -> DOUBLE_LITERAL[$DOUBLE_LITERAL_OR_ID] | DOUBLE_LITERAL )
+			// smaliParser.g:640:3: ( DOUBLE_LITERAL_OR_ID -> DOUBLE_LITERAL[$DOUBLE_LITERAL_OR_ID] | DOUBLE_LITERAL )
 			int alt20=2;
 			int LA20_0 = input.LA(1);
 			if ( (LA20_0==DOUBLE_LITERAL_OR_ID) ) {
@@ -4779,10 +4986,10 @@
 
 			switch (alt20) {
 				case 1 :
-					// smaliParser.g:622:5: DOUBLE_LITERAL_OR_ID
+					// smaliParser.g:640:5: DOUBLE_LITERAL_OR_ID
 					{
-					DOUBLE_LITERAL_OR_ID109=(Token)match(input,DOUBLE_LITERAL_OR_ID,FOLLOW_DOUBLE_LITERAL_OR_ID_in_double_literal2447);  
-					stream_DOUBLE_LITERAL_OR_ID.add(DOUBLE_LITERAL_OR_ID109);
+					DOUBLE_LITERAL_OR_ID115=(Token)match(input,DOUBLE_LITERAL_OR_ID,FOLLOW_DOUBLE_LITERAL_OR_ID_in_double_literal2568);  
+					stream_DOUBLE_LITERAL_OR_ID.add(DOUBLE_LITERAL_OR_ID115);
 
 					// AST REWRITE
 					// elements: 
@@ -4795,9 +5002,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 622:26: -> DOUBLE_LITERAL[$DOUBLE_LITERAL_OR_ID]
+					// 640:26: -> DOUBLE_LITERAL[$DOUBLE_LITERAL_OR_ID]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(DOUBLE_LITERAL, DOUBLE_LITERAL_OR_ID109));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(DOUBLE_LITERAL, DOUBLE_LITERAL_OR_ID115));
 					}
 
 
@@ -4806,14 +5013,14 @@
 					}
 					break;
 				case 2 :
-					// smaliParser.g:623:5: DOUBLE_LITERAL
+					// smaliParser.g:641:5: DOUBLE_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					DOUBLE_LITERAL110=(Token)match(input,DOUBLE_LITERAL,FOLLOW_DOUBLE_LITERAL_in_double_literal2458); 
-					DOUBLE_LITERAL110_tree = (CommonTree)adaptor.create(DOUBLE_LITERAL110);
-					adaptor.addChild(root_0, DOUBLE_LITERAL110_tree);
+					DOUBLE_LITERAL116=(Token)match(input,DOUBLE_LITERAL,FOLLOW_DOUBLE_LITERAL_in_double_literal2579); 
+					DOUBLE_LITERAL116_tree = (CommonTree)adaptor.create(DOUBLE_LITERAL116);
+					adaptor.addChild(root_0, DOUBLE_LITERAL116_tree);
 
 					}
 					break;
@@ -4846,39 +5053,41 @@
 
 
 	// $ANTLR start "literal"
-	// smaliParser.g:625:1: literal : ( LONG_LITERAL | integer_literal | SHORT_LITERAL | BYTE_LITERAL | float_literal | double_literal | CHAR_LITERAL | STRING_LITERAL | BOOL_LITERAL | NULL_LITERAL | array_literal | subannotation | type_field_method_literal | enum_literal );
+	// smaliParser.g:643:1: literal : ( LONG_LITERAL | integer_literal | SHORT_LITERAL | BYTE_LITERAL | float_literal | double_literal | CHAR_LITERAL | STRING_LITERAL | BOOL_LITERAL | NULL_LITERAL | array_literal | subannotation | type_field_method_literal | enum_literal | method_handle_literal | method_prototype );
 	public final smaliParser.literal_return literal() throws RecognitionException {
 		smaliParser.literal_return retval = new smaliParser.literal_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token LONG_LITERAL111=null;
-		Token SHORT_LITERAL113=null;
-		Token BYTE_LITERAL114=null;
-		Token CHAR_LITERAL117=null;
-		Token STRING_LITERAL118=null;
-		Token BOOL_LITERAL119=null;
-		Token NULL_LITERAL120=null;
-		ParserRuleReturnScope integer_literal112 =null;
-		ParserRuleReturnScope float_literal115 =null;
-		ParserRuleReturnScope double_literal116 =null;
-		ParserRuleReturnScope array_literal121 =null;
-		ParserRuleReturnScope subannotation122 =null;
-		ParserRuleReturnScope type_field_method_literal123 =null;
-		ParserRuleReturnScope enum_literal124 =null;
+		Token LONG_LITERAL117=null;
+		Token SHORT_LITERAL119=null;
+		Token BYTE_LITERAL120=null;
+		Token CHAR_LITERAL123=null;
+		Token STRING_LITERAL124=null;
+		Token BOOL_LITERAL125=null;
+		Token NULL_LITERAL126=null;
+		ParserRuleReturnScope integer_literal118 =null;
+		ParserRuleReturnScope float_literal121 =null;
+		ParserRuleReturnScope double_literal122 =null;
+		ParserRuleReturnScope array_literal127 =null;
+		ParserRuleReturnScope subannotation128 =null;
+		ParserRuleReturnScope type_field_method_literal129 =null;
+		ParserRuleReturnScope enum_literal130 =null;
+		ParserRuleReturnScope method_handle_literal131 =null;
+		ParserRuleReturnScope method_prototype132 =null;
 
-		CommonTree LONG_LITERAL111_tree=null;
-		CommonTree SHORT_LITERAL113_tree=null;
-		CommonTree BYTE_LITERAL114_tree=null;
-		CommonTree CHAR_LITERAL117_tree=null;
-		CommonTree STRING_LITERAL118_tree=null;
-		CommonTree BOOL_LITERAL119_tree=null;
-		CommonTree NULL_LITERAL120_tree=null;
+		CommonTree LONG_LITERAL117_tree=null;
+		CommonTree SHORT_LITERAL119_tree=null;
+		CommonTree BYTE_LITERAL120_tree=null;
+		CommonTree CHAR_LITERAL123_tree=null;
+		CommonTree STRING_LITERAL124_tree=null;
+		CommonTree BOOL_LITERAL125_tree=null;
+		CommonTree NULL_LITERAL126_tree=null;
 
 		try {
-			// smaliParser.g:626:3: ( LONG_LITERAL | integer_literal | SHORT_LITERAL | BYTE_LITERAL | float_literal | double_literal | CHAR_LITERAL | STRING_LITERAL | BOOL_LITERAL | NULL_LITERAL | array_literal | subannotation | type_field_method_literal | enum_literal )
-			int alt21=14;
+			// smaliParser.g:644:3: ( LONG_LITERAL | integer_literal | SHORT_LITERAL | BYTE_LITERAL | float_literal | double_literal | CHAR_LITERAL | STRING_LITERAL | BOOL_LITERAL | NULL_LITERAL | array_literal | subannotation | type_field_method_literal | enum_literal | method_handle_literal | method_prototype )
+			int alt21=16;
 			switch ( input.LA(1) ) {
 			case LONG_LITERAL:
 				{
@@ -4888,7 +5097,7 @@
 			case POSITIVE_INTEGER_LITERAL:
 				{
 				int LA21_2 = input.LA(2);
-				if ( (LA21_2==EOF||(LA21_2 >= ACCESS_SPEC && LA21_2 <= ANNOTATION_VISIBILITY)||LA21_2==BOOL_LITERAL||(LA21_2 >= CLASS_DIRECTIVE && LA21_2 <= CLOSE_BRACE)||LA21_2==COMMA||(LA21_2 >= DOUBLE_LITERAL_OR_ID && LA21_2 <= END_ANNOTATION_DIRECTIVE)||LA21_2==END_FIELD_DIRECTIVE||LA21_2==END_SUBANNOTATION_DIRECTIVE||LA21_2==FIELD_DIRECTIVE||(LA21_2 >= FLOAT_LITERAL_OR_ID && LA21_2 <= IMPLEMENTS_DIRECTIVE)||(LA21_2 >= INSTRUCTION_FORMAT10t && LA21_2 <= INSTRUCTION_FORMAT10x_ODEX)||LA21_2==INSTRUCTION_FORMAT11x||LA21_2==INSTRUCTION_FORMAT12x_OR_ID||(LA21_2 >= INSTRUCTION_FORMAT21c_FIELD && LA21_2 <= INSTRUCTION_FORMAT21c_TYPE)||LA21_2==INSTRUCTION_FORMAT21t||(LA21_2 >= INSTRUCTION_FORMAT22c_FIELD && LA21_2 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA21_2 >= INSTRUCTION_FORMAT22s_OR_ID && LA21_2 <= INSTRUCTION_FORMAT22t)||LA21_2==INSTRUCTION_FORMAT23x||(LA21_2 >= INSTRUCTION_FORMAT31i_OR_ID && LA21_2 <= INSTRUCTION_FORMAT31t)||(LA21_2 >= INSTRUCTION_FORMAT35c_METHOD && LA21_2 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA21_2 >= INSTRUCTION_FORMAT45cc_METHOD && LA21_2 <= INSTRUCTION_FORMAT51l)||(LA21_2 >= METHOD_DIRECTIVE && LA21_2 <= NULL_LITERAL)||(LA21_2 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA21_2 <= PRIMITIVE_TYPE)||LA21_2==REGISTER||(LA21_2 >= SIMPLE_NAME && LA21_2 <= SOURCE_DIRECTIVE)||(LA21_2 >= SUPER_DIRECTIVE && LA21_2 <= VOID_TYPE)) ) {
+				if ( (LA21_2==EOF||(LA21_2 >= ACCESS_SPEC && LA21_2 <= ANNOTATION_VISIBILITY)||LA21_2==BOOL_LITERAL||(LA21_2 >= CLASS_DIRECTIVE && LA21_2 <= CLOSE_PAREN)||LA21_2==COMMA||(LA21_2 >= DOUBLE_LITERAL_OR_ID && LA21_2 <= END_ANNOTATION_DIRECTIVE)||LA21_2==END_FIELD_DIRECTIVE||LA21_2==END_SUBANNOTATION_DIRECTIVE||LA21_2==FIELD_DIRECTIVE||(LA21_2 >= FLOAT_LITERAL_OR_ID && LA21_2 <= IMPLEMENTS_DIRECTIVE)||(LA21_2 >= INSTRUCTION_FORMAT10t && LA21_2 <= INSTRUCTION_FORMAT10x_ODEX)||LA21_2==INSTRUCTION_FORMAT11x||LA21_2==INSTRUCTION_FORMAT12x_OR_ID||(LA21_2 >= INSTRUCTION_FORMAT21c_FIELD && LA21_2 <= INSTRUCTION_FORMAT21c_TYPE)||LA21_2==INSTRUCTION_FORMAT21t||(LA21_2 >= INSTRUCTION_FORMAT22c_FIELD && LA21_2 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA21_2 >= INSTRUCTION_FORMAT22s_OR_ID && LA21_2 <= INSTRUCTION_FORMAT22t)||LA21_2==INSTRUCTION_FORMAT23x||(LA21_2 >= INSTRUCTION_FORMAT31i_OR_ID && LA21_2 <= INSTRUCTION_FORMAT31t)||(LA21_2 >= INSTRUCTION_FORMAT35c_CALL_SITE && LA21_2 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA21_2 >= INSTRUCTION_FORMAT45cc_METHOD && LA21_2 <= INSTRUCTION_FORMAT51l)||(LA21_2 >= METHOD_DIRECTIVE && LA21_2 <= NULL_LITERAL)||(LA21_2 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA21_2 <= PRIMITIVE_TYPE)||LA21_2==REGISTER||(LA21_2 >= SIMPLE_NAME && LA21_2 <= SOURCE_DIRECTIVE)||(LA21_2 >= SUPER_DIRECTIVE && LA21_2 <= VOID_TYPE)) ) {
 					alt21=2;
 				}
 				else if ( (LA21_2==COLON||LA21_2==OPEN_PAREN) ) {
@@ -4912,7 +5121,7 @@
 			case NEGATIVE_INTEGER_LITERAL:
 				{
 				int LA21_3 = input.LA(2);
-				if ( (LA21_3==EOF||(LA21_3 >= ACCESS_SPEC && LA21_3 <= ANNOTATION_VISIBILITY)||LA21_3==BOOL_LITERAL||(LA21_3 >= CLASS_DIRECTIVE && LA21_3 <= CLOSE_BRACE)||LA21_3==COMMA||(LA21_3 >= DOUBLE_LITERAL_OR_ID && LA21_3 <= END_ANNOTATION_DIRECTIVE)||LA21_3==END_FIELD_DIRECTIVE||LA21_3==END_SUBANNOTATION_DIRECTIVE||LA21_3==FIELD_DIRECTIVE||(LA21_3 >= FLOAT_LITERAL_OR_ID && LA21_3 <= IMPLEMENTS_DIRECTIVE)||(LA21_3 >= INSTRUCTION_FORMAT10t && LA21_3 <= INSTRUCTION_FORMAT10x_ODEX)||LA21_3==INSTRUCTION_FORMAT11x||LA21_3==INSTRUCTION_FORMAT12x_OR_ID||(LA21_3 >= INSTRUCTION_FORMAT21c_FIELD && LA21_3 <= INSTRUCTION_FORMAT21c_TYPE)||LA21_3==INSTRUCTION_FORMAT21t||(LA21_3 >= INSTRUCTION_FORMAT22c_FIELD && LA21_3 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA21_3 >= INSTRUCTION_FORMAT22s_OR_ID && LA21_3 <= INSTRUCTION_FORMAT22t)||LA21_3==INSTRUCTION_FORMAT23x||(LA21_3 >= INSTRUCTION_FORMAT31i_OR_ID && LA21_3 <= INSTRUCTION_FORMAT31t)||(LA21_3 >= INSTRUCTION_FORMAT35c_METHOD && LA21_3 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA21_3 >= INSTRUCTION_FORMAT45cc_METHOD && LA21_3 <= INSTRUCTION_FORMAT51l)||(LA21_3 >= METHOD_DIRECTIVE && LA21_3 <= NULL_LITERAL)||(LA21_3 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA21_3 <= PRIMITIVE_TYPE)||LA21_3==REGISTER||(LA21_3 >= SIMPLE_NAME && LA21_3 <= SOURCE_DIRECTIVE)||(LA21_3 >= SUPER_DIRECTIVE && LA21_3 <= VOID_TYPE)) ) {
+				if ( (LA21_3==EOF||(LA21_3 >= ACCESS_SPEC && LA21_3 <= ANNOTATION_VISIBILITY)||LA21_3==BOOL_LITERAL||(LA21_3 >= CLASS_DIRECTIVE && LA21_3 <= CLOSE_PAREN)||LA21_3==COMMA||(LA21_3 >= DOUBLE_LITERAL_OR_ID && LA21_3 <= END_ANNOTATION_DIRECTIVE)||LA21_3==END_FIELD_DIRECTIVE||LA21_3==END_SUBANNOTATION_DIRECTIVE||LA21_3==FIELD_DIRECTIVE||(LA21_3 >= FLOAT_LITERAL_OR_ID && LA21_3 <= IMPLEMENTS_DIRECTIVE)||(LA21_3 >= INSTRUCTION_FORMAT10t && LA21_3 <= INSTRUCTION_FORMAT10x_ODEX)||LA21_3==INSTRUCTION_FORMAT11x||LA21_3==INSTRUCTION_FORMAT12x_OR_ID||(LA21_3 >= INSTRUCTION_FORMAT21c_FIELD && LA21_3 <= INSTRUCTION_FORMAT21c_TYPE)||LA21_3==INSTRUCTION_FORMAT21t||(LA21_3 >= INSTRUCTION_FORMAT22c_FIELD && LA21_3 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA21_3 >= INSTRUCTION_FORMAT22s_OR_ID && LA21_3 <= INSTRUCTION_FORMAT22t)||LA21_3==INSTRUCTION_FORMAT23x||(LA21_3 >= INSTRUCTION_FORMAT31i_OR_ID && LA21_3 <= INSTRUCTION_FORMAT31t)||(LA21_3 >= INSTRUCTION_FORMAT35c_CALL_SITE && LA21_3 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA21_3 >= INSTRUCTION_FORMAT45cc_METHOD && LA21_3 <= INSTRUCTION_FORMAT51l)||(LA21_3 >= METHOD_DIRECTIVE && LA21_3 <= NULL_LITERAL)||(LA21_3 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA21_3 <= PRIMITIVE_TYPE)||LA21_3==REGISTER||(LA21_3 >= SIMPLE_NAME && LA21_3 <= SOURCE_DIRECTIVE)||(LA21_3 >= SUPER_DIRECTIVE && LA21_3 <= VOID_TYPE)) ) {
 					alt21=2;
 				}
 				else if ( (LA21_3==COLON||LA21_3==OPEN_PAREN) ) {
@@ -4946,7 +5155,7 @@
 			case FLOAT_LITERAL_OR_ID:
 				{
 				int LA21_6 = input.LA(2);
-				if ( (LA21_6==EOF||(LA21_6 >= ACCESS_SPEC && LA21_6 <= ANNOTATION_VISIBILITY)||LA21_6==BOOL_LITERAL||(LA21_6 >= CLASS_DIRECTIVE && LA21_6 <= CLOSE_BRACE)||LA21_6==COMMA||(LA21_6 >= DOUBLE_LITERAL_OR_ID && LA21_6 <= END_ANNOTATION_DIRECTIVE)||LA21_6==END_FIELD_DIRECTIVE||LA21_6==END_SUBANNOTATION_DIRECTIVE||LA21_6==FIELD_DIRECTIVE||(LA21_6 >= FLOAT_LITERAL_OR_ID && LA21_6 <= IMPLEMENTS_DIRECTIVE)||(LA21_6 >= INSTRUCTION_FORMAT10t && LA21_6 <= INSTRUCTION_FORMAT10x_ODEX)||LA21_6==INSTRUCTION_FORMAT11x||LA21_6==INSTRUCTION_FORMAT12x_OR_ID||(LA21_6 >= INSTRUCTION_FORMAT21c_FIELD && LA21_6 <= INSTRUCTION_FORMAT21c_TYPE)||LA21_6==INSTRUCTION_FORMAT21t||(LA21_6 >= INSTRUCTION_FORMAT22c_FIELD && LA21_6 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA21_6 >= INSTRUCTION_FORMAT22s_OR_ID && LA21_6 <= INSTRUCTION_FORMAT22t)||LA21_6==INSTRUCTION_FORMAT23x||(LA21_6 >= INSTRUCTION_FORMAT31i_OR_ID && LA21_6 <= INSTRUCTION_FORMAT31t)||(LA21_6 >= INSTRUCTION_FORMAT35c_METHOD && LA21_6 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA21_6 >= INSTRUCTION_FORMAT45cc_METHOD && LA21_6 <= INSTRUCTION_FORMAT51l)||(LA21_6 >= METHOD_DIRECTIVE && LA21_6 <= NULL_LITERAL)||(LA21_6 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA21_6 <= PRIMITIVE_TYPE)||LA21_6==REGISTER||(LA21_6 >= SIMPLE_NAME && LA21_6 <= SOURCE_DIRECTIVE)||(LA21_6 >= SUPER_DIRECTIVE && LA21_6 <= VOID_TYPE)) ) {
+				if ( (LA21_6==EOF||(LA21_6 >= ACCESS_SPEC && LA21_6 <= ANNOTATION_VISIBILITY)||LA21_6==BOOL_LITERAL||(LA21_6 >= CLASS_DIRECTIVE && LA21_6 <= CLOSE_PAREN)||LA21_6==COMMA||(LA21_6 >= DOUBLE_LITERAL_OR_ID && LA21_6 <= END_ANNOTATION_DIRECTIVE)||LA21_6==END_FIELD_DIRECTIVE||LA21_6==END_SUBANNOTATION_DIRECTIVE||LA21_6==FIELD_DIRECTIVE||(LA21_6 >= FLOAT_LITERAL_OR_ID && LA21_6 <= IMPLEMENTS_DIRECTIVE)||(LA21_6 >= INSTRUCTION_FORMAT10t && LA21_6 <= INSTRUCTION_FORMAT10x_ODEX)||LA21_6==INSTRUCTION_FORMAT11x||LA21_6==INSTRUCTION_FORMAT12x_OR_ID||(LA21_6 >= INSTRUCTION_FORMAT21c_FIELD && LA21_6 <= INSTRUCTION_FORMAT21c_TYPE)||LA21_6==INSTRUCTION_FORMAT21t||(LA21_6 >= INSTRUCTION_FORMAT22c_FIELD && LA21_6 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA21_6 >= INSTRUCTION_FORMAT22s_OR_ID && LA21_6 <= INSTRUCTION_FORMAT22t)||LA21_6==INSTRUCTION_FORMAT23x||(LA21_6 >= INSTRUCTION_FORMAT31i_OR_ID && LA21_6 <= INSTRUCTION_FORMAT31t)||(LA21_6 >= INSTRUCTION_FORMAT35c_CALL_SITE && LA21_6 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA21_6 >= INSTRUCTION_FORMAT45cc_METHOD && LA21_6 <= INSTRUCTION_FORMAT51l)||(LA21_6 >= METHOD_DIRECTIVE && LA21_6 <= NULL_LITERAL)||(LA21_6 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA21_6 <= PRIMITIVE_TYPE)||LA21_6==REGISTER||(LA21_6 >= SIMPLE_NAME && LA21_6 <= SOURCE_DIRECTIVE)||(LA21_6 >= SUPER_DIRECTIVE && LA21_6 <= VOID_TYPE)) ) {
 					alt21=5;
 				}
 				else if ( (LA21_6==COLON||LA21_6==OPEN_PAREN) ) {
@@ -4975,7 +5184,7 @@
 			case DOUBLE_LITERAL_OR_ID:
 				{
 				int LA21_8 = input.LA(2);
-				if ( (LA21_8==EOF||(LA21_8 >= ACCESS_SPEC && LA21_8 <= ANNOTATION_VISIBILITY)||LA21_8==BOOL_LITERAL||(LA21_8 >= CLASS_DIRECTIVE && LA21_8 <= CLOSE_BRACE)||LA21_8==COMMA||(LA21_8 >= DOUBLE_LITERAL_OR_ID && LA21_8 <= END_ANNOTATION_DIRECTIVE)||LA21_8==END_FIELD_DIRECTIVE||LA21_8==END_SUBANNOTATION_DIRECTIVE||LA21_8==FIELD_DIRECTIVE||(LA21_8 >= FLOAT_LITERAL_OR_ID && LA21_8 <= IMPLEMENTS_DIRECTIVE)||(LA21_8 >= INSTRUCTION_FORMAT10t && LA21_8 <= INSTRUCTION_FORMAT10x_ODEX)||LA21_8==INSTRUCTION_FORMAT11x||LA21_8==INSTRUCTION_FORMAT12x_OR_ID||(LA21_8 >= INSTRUCTION_FORMAT21c_FIELD && LA21_8 <= INSTRUCTION_FORMAT21c_TYPE)||LA21_8==INSTRUCTION_FORMAT21t||(LA21_8 >= INSTRUCTION_FORMAT22c_FIELD && LA21_8 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA21_8 >= INSTRUCTION_FORMAT22s_OR_ID && LA21_8 <= INSTRUCTION_FORMAT22t)||LA21_8==INSTRUCTION_FORMAT23x||(LA21_8 >= INSTRUCTION_FORMAT31i_OR_ID && LA21_8 <= INSTRUCTION_FORMAT31t)||(LA21_8 >= INSTRUCTION_FORMAT35c_METHOD && LA21_8 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA21_8 >= INSTRUCTION_FORMAT45cc_METHOD && LA21_8 <= INSTRUCTION_FORMAT51l)||(LA21_8 >= METHOD_DIRECTIVE && LA21_8 <= NULL_LITERAL)||(LA21_8 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA21_8 <= PRIMITIVE_TYPE)||LA21_8==REGISTER||(LA21_8 >= SIMPLE_NAME && LA21_8 <= SOURCE_DIRECTIVE)||(LA21_8 >= SUPER_DIRECTIVE && LA21_8 <= VOID_TYPE)) ) {
+				if ( (LA21_8==EOF||(LA21_8 >= ACCESS_SPEC && LA21_8 <= ANNOTATION_VISIBILITY)||LA21_8==BOOL_LITERAL||(LA21_8 >= CLASS_DIRECTIVE && LA21_8 <= CLOSE_PAREN)||LA21_8==COMMA||(LA21_8 >= DOUBLE_LITERAL_OR_ID && LA21_8 <= END_ANNOTATION_DIRECTIVE)||LA21_8==END_FIELD_DIRECTIVE||LA21_8==END_SUBANNOTATION_DIRECTIVE||LA21_8==FIELD_DIRECTIVE||(LA21_8 >= FLOAT_LITERAL_OR_ID && LA21_8 <= IMPLEMENTS_DIRECTIVE)||(LA21_8 >= INSTRUCTION_FORMAT10t && LA21_8 <= INSTRUCTION_FORMAT10x_ODEX)||LA21_8==INSTRUCTION_FORMAT11x||LA21_8==INSTRUCTION_FORMAT12x_OR_ID||(LA21_8 >= INSTRUCTION_FORMAT21c_FIELD && LA21_8 <= INSTRUCTION_FORMAT21c_TYPE)||LA21_8==INSTRUCTION_FORMAT21t||(LA21_8 >= INSTRUCTION_FORMAT22c_FIELD && LA21_8 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA21_8 >= INSTRUCTION_FORMAT22s_OR_ID && LA21_8 <= INSTRUCTION_FORMAT22t)||LA21_8==INSTRUCTION_FORMAT23x||(LA21_8 >= INSTRUCTION_FORMAT31i_OR_ID && LA21_8 <= INSTRUCTION_FORMAT31t)||(LA21_8 >= INSTRUCTION_FORMAT35c_CALL_SITE && LA21_8 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA21_8 >= INSTRUCTION_FORMAT45cc_METHOD && LA21_8 <= INSTRUCTION_FORMAT51l)||(LA21_8 >= METHOD_DIRECTIVE && LA21_8 <= NULL_LITERAL)||(LA21_8 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA21_8 <= PRIMITIVE_TYPE)||LA21_8==REGISTER||(LA21_8 >= SIMPLE_NAME && LA21_8 <= SOURCE_DIRECTIVE)||(LA21_8 >= SUPER_DIRECTIVE && LA21_8 <= VOID_TYPE)) ) {
 					alt21=6;
 				}
 				else if ( (LA21_8==COLON||LA21_8==OPEN_PAREN) ) {
@@ -5014,7 +5223,7 @@
 			case BOOL_LITERAL:
 				{
 				int LA21_12 = input.LA(2);
-				if ( (LA21_12==EOF||(LA21_12 >= ACCESS_SPEC && LA21_12 <= ANNOTATION_VISIBILITY)||LA21_12==BOOL_LITERAL||(LA21_12 >= CLASS_DIRECTIVE && LA21_12 <= CLOSE_BRACE)||LA21_12==COMMA||(LA21_12 >= DOUBLE_LITERAL_OR_ID && LA21_12 <= END_ANNOTATION_DIRECTIVE)||LA21_12==END_FIELD_DIRECTIVE||LA21_12==END_SUBANNOTATION_DIRECTIVE||LA21_12==FIELD_DIRECTIVE||(LA21_12 >= FLOAT_LITERAL_OR_ID && LA21_12 <= IMPLEMENTS_DIRECTIVE)||(LA21_12 >= INSTRUCTION_FORMAT10t && LA21_12 <= INSTRUCTION_FORMAT10x_ODEX)||LA21_12==INSTRUCTION_FORMAT11x||LA21_12==INSTRUCTION_FORMAT12x_OR_ID||(LA21_12 >= INSTRUCTION_FORMAT21c_FIELD && LA21_12 <= INSTRUCTION_FORMAT21c_TYPE)||LA21_12==INSTRUCTION_FORMAT21t||(LA21_12 >= INSTRUCTION_FORMAT22c_FIELD && LA21_12 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA21_12 >= INSTRUCTION_FORMAT22s_OR_ID && LA21_12 <= INSTRUCTION_FORMAT22t)||LA21_12==INSTRUCTION_FORMAT23x||(LA21_12 >= INSTRUCTION_FORMAT31i_OR_ID && LA21_12 <= INSTRUCTION_FORMAT31t)||(LA21_12 >= INSTRUCTION_FORMAT35c_METHOD && LA21_12 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA21_12 >= INSTRUCTION_FORMAT45cc_METHOD && LA21_12 <= INSTRUCTION_FORMAT51l)||(LA21_12 >= METHOD_DIRECTIVE && LA21_12 <= NULL_LITERAL)||(LA21_12 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA21_12 <= PRIMITIVE_TYPE)||LA21_12==REGISTER||(LA21_12 >= SIMPLE_NAME && LA21_12 <= SOURCE_DIRECTIVE)||(LA21_12 >= SUPER_DIRECTIVE && LA21_12 <= VOID_TYPE)) ) {
+				if ( (LA21_12==EOF||(LA21_12 >= ACCESS_SPEC && LA21_12 <= ANNOTATION_VISIBILITY)||LA21_12==BOOL_LITERAL||(LA21_12 >= CLASS_DIRECTIVE && LA21_12 <= CLOSE_PAREN)||LA21_12==COMMA||(LA21_12 >= DOUBLE_LITERAL_OR_ID && LA21_12 <= END_ANNOTATION_DIRECTIVE)||LA21_12==END_FIELD_DIRECTIVE||LA21_12==END_SUBANNOTATION_DIRECTIVE||LA21_12==FIELD_DIRECTIVE||(LA21_12 >= FLOAT_LITERAL_OR_ID && LA21_12 <= IMPLEMENTS_DIRECTIVE)||(LA21_12 >= INSTRUCTION_FORMAT10t && LA21_12 <= INSTRUCTION_FORMAT10x_ODEX)||LA21_12==INSTRUCTION_FORMAT11x||LA21_12==INSTRUCTION_FORMAT12x_OR_ID||(LA21_12 >= INSTRUCTION_FORMAT21c_FIELD && LA21_12 <= INSTRUCTION_FORMAT21c_TYPE)||LA21_12==INSTRUCTION_FORMAT21t||(LA21_12 >= INSTRUCTION_FORMAT22c_FIELD && LA21_12 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA21_12 >= INSTRUCTION_FORMAT22s_OR_ID && LA21_12 <= INSTRUCTION_FORMAT22t)||LA21_12==INSTRUCTION_FORMAT23x||(LA21_12 >= INSTRUCTION_FORMAT31i_OR_ID && LA21_12 <= INSTRUCTION_FORMAT31t)||(LA21_12 >= INSTRUCTION_FORMAT35c_CALL_SITE && LA21_12 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA21_12 >= INSTRUCTION_FORMAT45cc_METHOD && LA21_12 <= INSTRUCTION_FORMAT51l)||(LA21_12 >= METHOD_DIRECTIVE && LA21_12 <= NULL_LITERAL)||(LA21_12 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA21_12 <= PRIMITIVE_TYPE)||LA21_12==REGISTER||(LA21_12 >= SIMPLE_NAME && LA21_12 <= SOURCE_DIRECTIVE)||(LA21_12 >= SUPER_DIRECTIVE && LA21_12 <= VOID_TYPE)) ) {
 					alt21=9;
 				}
 				else if ( (LA21_12==COLON||LA21_12==OPEN_PAREN) ) {
@@ -5038,7 +5247,7 @@
 			case NULL_LITERAL:
 				{
 				int LA21_13 = input.LA(2);
-				if ( (LA21_13==EOF||(LA21_13 >= ACCESS_SPEC && LA21_13 <= ANNOTATION_VISIBILITY)||LA21_13==BOOL_LITERAL||(LA21_13 >= CLASS_DIRECTIVE && LA21_13 <= CLOSE_BRACE)||LA21_13==COMMA||(LA21_13 >= DOUBLE_LITERAL_OR_ID && LA21_13 <= END_ANNOTATION_DIRECTIVE)||LA21_13==END_FIELD_DIRECTIVE||LA21_13==END_SUBANNOTATION_DIRECTIVE||LA21_13==FIELD_DIRECTIVE||(LA21_13 >= FLOAT_LITERAL_OR_ID && LA21_13 <= IMPLEMENTS_DIRECTIVE)||(LA21_13 >= INSTRUCTION_FORMAT10t && LA21_13 <= INSTRUCTION_FORMAT10x_ODEX)||LA21_13==INSTRUCTION_FORMAT11x||LA21_13==INSTRUCTION_FORMAT12x_OR_ID||(LA21_13 >= INSTRUCTION_FORMAT21c_FIELD && LA21_13 <= INSTRUCTION_FORMAT21c_TYPE)||LA21_13==INSTRUCTION_FORMAT21t||(LA21_13 >= INSTRUCTION_FORMAT22c_FIELD && LA21_13 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA21_13 >= INSTRUCTION_FORMAT22s_OR_ID && LA21_13 <= INSTRUCTION_FORMAT22t)||LA21_13==INSTRUCTION_FORMAT23x||(LA21_13 >= INSTRUCTION_FORMAT31i_OR_ID && LA21_13 <= INSTRUCTION_FORMAT31t)||(LA21_13 >= INSTRUCTION_FORMAT35c_METHOD && LA21_13 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA21_13 >= INSTRUCTION_FORMAT45cc_METHOD && LA21_13 <= INSTRUCTION_FORMAT51l)||(LA21_13 >= METHOD_DIRECTIVE && LA21_13 <= NULL_LITERAL)||(LA21_13 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA21_13 <= PRIMITIVE_TYPE)||LA21_13==REGISTER||(LA21_13 >= SIMPLE_NAME && LA21_13 <= SOURCE_DIRECTIVE)||(LA21_13 >= SUPER_DIRECTIVE && LA21_13 <= VOID_TYPE)) ) {
+				if ( (LA21_13==EOF||(LA21_13 >= ACCESS_SPEC && LA21_13 <= ANNOTATION_VISIBILITY)||LA21_13==BOOL_LITERAL||(LA21_13 >= CLASS_DIRECTIVE && LA21_13 <= CLOSE_PAREN)||LA21_13==COMMA||(LA21_13 >= DOUBLE_LITERAL_OR_ID && LA21_13 <= END_ANNOTATION_DIRECTIVE)||LA21_13==END_FIELD_DIRECTIVE||LA21_13==END_SUBANNOTATION_DIRECTIVE||LA21_13==FIELD_DIRECTIVE||(LA21_13 >= FLOAT_LITERAL_OR_ID && LA21_13 <= IMPLEMENTS_DIRECTIVE)||(LA21_13 >= INSTRUCTION_FORMAT10t && LA21_13 <= INSTRUCTION_FORMAT10x_ODEX)||LA21_13==INSTRUCTION_FORMAT11x||LA21_13==INSTRUCTION_FORMAT12x_OR_ID||(LA21_13 >= INSTRUCTION_FORMAT21c_FIELD && LA21_13 <= INSTRUCTION_FORMAT21c_TYPE)||LA21_13==INSTRUCTION_FORMAT21t||(LA21_13 >= INSTRUCTION_FORMAT22c_FIELD && LA21_13 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA21_13 >= INSTRUCTION_FORMAT22s_OR_ID && LA21_13 <= INSTRUCTION_FORMAT22t)||LA21_13==INSTRUCTION_FORMAT23x||(LA21_13 >= INSTRUCTION_FORMAT31i_OR_ID && LA21_13 <= INSTRUCTION_FORMAT31t)||(LA21_13 >= INSTRUCTION_FORMAT35c_CALL_SITE && LA21_13 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA21_13 >= INSTRUCTION_FORMAT45cc_METHOD && LA21_13 <= INSTRUCTION_FORMAT51l)||(LA21_13 >= METHOD_DIRECTIVE && LA21_13 <= NULL_LITERAL)||(LA21_13 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA21_13 <= PRIMITIVE_TYPE)||LA21_13==REGISTER||(LA21_13 >= SIMPLE_NAME && LA21_13 <= SOURCE_DIRECTIVE)||(LA21_13 >= SUPER_DIRECTIVE && LA21_13 <= VOID_TYPE)) ) {
 					alt21=10;
 				}
 				else if ( (LA21_13==COLON||LA21_13==OPEN_PAREN) ) {
@@ -5080,6 +5289,8 @@
 			case INSTRUCTION_FORMAT12x_OR_ID:
 			case INSTRUCTION_FORMAT21c_FIELD:
 			case INSTRUCTION_FORMAT21c_FIELD_ODEX:
+			case INSTRUCTION_FORMAT21c_METHOD_HANDLE:
+			case INSTRUCTION_FORMAT21c_METHOD_TYPE:
 			case INSTRUCTION_FORMAT21c_STRING:
 			case INSTRUCTION_FORMAT21c_TYPE:
 			case INSTRUCTION_FORMAT21t:
@@ -5092,6 +5303,7 @@
 			case INSTRUCTION_FORMAT23x:
 			case INSTRUCTION_FORMAT31i_OR_ID:
 			case INSTRUCTION_FORMAT31t:
+			case INSTRUCTION_FORMAT35c_CALL_SITE:
 			case INSTRUCTION_FORMAT35c_METHOD:
 			case INSTRUCTION_FORMAT35c_METHOD_ODEX:
 			case INSTRUCTION_FORMAT35c_TYPE:
@@ -5111,11 +5323,88 @@
 				alt21=13;
 				}
 				break;
+			case METHOD_HANDLE_TYPE_FIELD:
+				{
+				int LA21_17 = input.LA(2);
+				if ( (LA21_17==AT) ) {
+					alt21=15;
+				}
+				else if ( (LA21_17==COLON||LA21_17==OPEN_PAREN) ) {
+					alt21=13;
+				}
+
+				else {
+					int nvaeMark = input.mark();
+					try {
+						input.consume();
+						NoViableAltException nvae =
+							new NoViableAltException("", 21, 17, input);
+						throw nvae;
+					} finally {
+						input.rewind(nvaeMark);
+					}
+				}
+
+				}
+				break;
+			case METHOD_HANDLE_TYPE_METHOD:
+				{
+				int LA21_18 = input.LA(2);
+				if ( (LA21_18==AT) ) {
+					alt21=15;
+				}
+				else if ( (LA21_18==COLON||LA21_18==OPEN_PAREN) ) {
+					alt21=13;
+				}
+
+				else {
+					int nvaeMark = input.mark();
+					try {
+						input.consume();
+						NoViableAltException nvae =
+							new NoViableAltException("", 21, 18, input);
+						throw nvae;
+					} finally {
+						input.rewind(nvaeMark);
+					}
+				}
+
+				}
+				break;
+			case INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE:
+				{
+				int LA21_19 = input.LA(2);
+				if ( (LA21_19==AT) ) {
+					alt21=15;
+				}
+				else if ( (LA21_19==COLON||LA21_19==OPEN_PAREN) ) {
+					alt21=13;
+				}
+
+				else {
+					int nvaeMark = input.mark();
+					try {
+						input.consume();
+						NoViableAltException nvae =
+							new NoViableAltException("", 21, 19, input);
+						throw nvae;
+					} finally {
+						input.rewind(nvaeMark);
+					}
+				}
+
+				}
+				break;
 			case ENUM_DIRECTIVE:
 				{
 				alt21=14;
 				}
 				break;
+			case OPEN_PAREN:
+				{
+				alt21=16;
+				}
+				break;
 			default:
 				NoViableAltException nvae =
 					new NoViableAltException("", 21, 0, input);
@@ -5123,184 +5412,212 @@
 			}
 			switch (alt21) {
 				case 1 :
-					// smaliParser.g:626:5: LONG_LITERAL
+					// smaliParser.g:644:5: LONG_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					LONG_LITERAL111=(Token)match(input,LONG_LITERAL,FOLLOW_LONG_LITERAL_in_literal2468); 
-					LONG_LITERAL111_tree = (CommonTree)adaptor.create(LONG_LITERAL111);
-					adaptor.addChild(root_0, LONG_LITERAL111_tree);
+					LONG_LITERAL117=(Token)match(input,LONG_LITERAL,FOLLOW_LONG_LITERAL_in_literal2589); 
+					LONG_LITERAL117_tree = (CommonTree)adaptor.create(LONG_LITERAL117);
+					adaptor.addChild(root_0, LONG_LITERAL117_tree);
 
 					}
 					break;
 				case 2 :
-					// smaliParser.g:627:5: integer_literal
+					// smaliParser.g:645:5: integer_literal
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_integer_literal_in_literal2474);
-					integer_literal112=integer_literal();
+					pushFollow(FOLLOW_integer_literal_in_literal2595);
+					integer_literal118=integer_literal();
 					state._fsp--;
 
-					adaptor.addChild(root_0, integer_literal112.getTree());
+					adaptor.addChild(root_0, integer_literal118.getTree());
 
 					}
 					break;
 				case 3 :
-					// smaliParser.g:628:5: SHORT_LITERAL
+					// smaliParser.g:646:5: SHORT_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					SHORT_LITERAL113=(Token)match(input,SHORT_LITERAL,FOLLOW_SHORT_LITERAL_in_literal2480); 
-					SHORT_LITERAL113_tree = (CommonTree)adaptor.create(SHORT_LITERAL113);
-					adaptor.addChild(root_0, SHORT_LITERAL113_tree);
+					SHORT_LITERAL119=(Token)match(input,SHORT_LITERAL,FOLLOW_SHORT_LITERAL_in_literal2601); 
+					SHORT_LITERAL119_tree = (CommonTree)adaptor.create(SHORT_LITERAL119);
+					adaptor.addChild(root_0, SHORT_LITERAL119_tree);
 
 					}
 					break;
 				case 4 :
-					// smaliParser.g:629:5: BYTE_LITERAL
+					// smaliParser.g:647:5: BYTE_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					BYTE_LITERAL114=(Token)match(input,BYTE_LITERAL,FOLLOW_BYTE_LITERAL_in_literal2486); 
-					BYTE_LITERAL114_tree = (CommonTree)adaptor.create(BYTE_LITERAL114);
-					adaptor.addChild(root_0, BYTE_LITERAL114_tree);
+					BYTE_LITERAL120=(Token)match(input,BYTE_LITERAL,FOLLOW_BYTE_LITERAL_in_literal2607); 
+					BYTE_LITERAL120_tree = (CommonTree)adaptor.create(BYTE_LITERAL120);
+					adaptor.addChild(root_0, BYTE_LITERAL120_tree);
 
 					}
 					break;
 				case 5 :
-					// smaliParser.g:630:5: float_literal
+					// smaliParser.g:648:5: float_literal
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_float_literal_in_literal2492);
-					float_literal115=float_literal();
+					pushFollow(FOLLOW_float_literal_in_literal2613);
+					float_literal121=float_literal();
 					state._fsp--;
 
-					adaptor.addChild(root_0, float_literal115.getTree());
+					adaptor.addChild(root_0, float_literal121.getTree());
 
 					}
 					break;
 				case 6 :
-					// smaliParser.g:631:5: double_literal
+					// smaliParser.g:649:5: double_literal
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_double_literal_in_literal2498);
-					double_literal116=double_literal();
+					pushFollow(FOLLOW_double_literal_in_literal2619);
+					double_literal122=double_literal();
 					state._fsp--;
 
-					adaptor.addChild(root_0, double_literal116.getTree());
+					adaptor.addChild(root_0, double_literal122.getTree());
 
 					}
 					break;
 				case 7 :
-					// smaliParser.g:632:5: CHAR_LITERAL
+					// smaliParser.g:650:5: CHAR_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					CHAR_LITERAL117=(Token)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_literal2504); 
-					CHAR_LITERAL117_tree = (CommonTree)adaptor.create(CHAR_LITERAL117);
-					adaptor.addChild(root_0, CHAR_LITERAL117_tree);
+					CHAR_LITERAL123=(Token)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_literal2625); 
+					CHAR_LITERAL123_tree = (CommonTree)adaptor.create(CHAR_LITERAL123);
+					adaptor.addChild(root_0, CHAR_LITERAL123_tree);
 
 					}
 					break;
 				case 8 :
-					// smaliParser.g:633:5: STRING_LITERAL
+					// smaliParser.g:651:5: STRING_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					STRING_LITERAL118=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_literal2510); 
-					STRING_LITERAL118_tree = (CommonTree)adaptor.create(STRING_LITERAL118);
-					adaptor.addChild(root_0, STRING_LITERAL118_tree);
+					STRING_LITERAL124=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_literal2631); 
+					STRING_LITERAL124_tree = (CommonTree)adaptor.create(STRING_LITERAL124);
+					adaptor.addChild(root_0, STRING_LITERAL124_tree);
 
 					}
 					break;
 				case 9 :
-					// smaliParser.g:634:5: BOOL_LITERAL
+					// smaliParser.g:652:5: BOOL_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					BOOL_LITERAL119=(Token)match(input,BOOL_LITERAL,FOLLOW_BOOL_LITERAL_in_literal2516); 
-					BOOL_LITERAL119_tree = (CommonTree)adaptor.create(BOOL_LITERAL119);
-					adaptor.addChild(root_0, BOOL_LITERAL119_tree);
+					BOOL_LITERAL125=(Token)match(input,BOOL_LITERAL,FOLLOW_BOOL_LITERAL_in_literal2637); 
+					BOOL_LITERAL125_tree = (CommonTree)adaptor.create(BOOL_LITERAL125);
+					adaptor.addChild(root_0, BOOL_LITERAL125_tree);
 
 					}
 					break;
 				case 10 :
-					// smaliParser.g:635:5: NULL_LITERAL
+					// smaliParser.g:653:5: NULL_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					NULL_LITERAL120=(Token)match(input,NULL_LITERAL,FOLLOW_NULL_LITERAL_in_literal2522); 
-					NULL_LITERAL120_tree = (CommonTree)adaptor.create(NULL_LITERAL120);
-					adaptor.addChild(root_0, NULL_LITERAL120_tree);
+					NULL_LITERAL126=(Token)match(input,NULL_LITERAL,FOLLOW_NULL_LITERAL_in_literal2643); 
+					NULL_LITERAL126_tree = (CommonTree)adaptor.create(NULL_LITERAL126);
+					adaptor.addChild(root_0, NULL_LITERAL126_tree);
 
 					}
 					break;
 				case 11 :
-					// smaliParser.g:636:5: array_literal
+					// smaliParser.g:654:5: array_literal
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_array_literal_in_literal2528);
-					array_literal121=array_literal();
+					pushFollow(FOLLOW_array_literal_in_literal2649);
+					array_literal127=array_literal();
 					state._fsp--;
 
-					adaptor.addChild(root_0, array_literal121.getTree());
+					adaptor.addChild(root_0, array_literal127.getTree());
 
 					}
 					break;
 				case 12 :
-					// smaliParser.g:637:5: subannotation
+					// smaliParser.g:655:5: subannotation
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_subannotation_in_literal2534);
-					subannotation122=subannotation();
+					pushFollow(FOLLOW_subannotation_in_literal2655);
+					subannotation128=subannotation();
 					state._fsp--;
 
-					adaptor.addChild(root_0, subannotation122.getTree());
+					adaptor.addChild(root_0, subannotation128.getTree());
 
 					}
 					break;
 				case 13 :
-					// smaliParser.g:638:5: type_field_method_literal
+					// smaliParser.g:656:5: type_field_method_literal
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_type_field_method_literal_in_literal2540);
-					type_field_method_literal123=type_field_method_literal();
+					pushFollow(FOLLOW_type_field_method_literal_in_literal2661);
+					type_field_method_literal129=type_field_method_literal();
 					state._fsp--;
 
-					adaptor.addChild(root_0, type_field_method_literal123.getTree());
+					adaptor.addChild(root_0, type_field_method_literal129.getTree());
 
 					}
 					break;
 				case 14 :
-					// smaliParser.g:639:5: enum_literal
+					// smaliParser.g:657:5: enum_literal
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_enum_literal_in_literal2546);
-					enum_literal124=enum_literal();
+					pushFollow(FOLLOW_enum_literal_in_literal2667);
+					enum_literal130=enum_literal();
 					state._fsp--;
 
-					adaptor.addChild(root_0, enum_literal124.getTree());
+					adaptor.addChild(root_0, enum_literal130.getTree());
+
+					}
+					break;
+				case 15 :
+					// smaliParser.g:658:5: method_handle_literal
+					{
+					root_0 = (CommonTree)adaptor.nil();
+
+
+					pushFollow(FOLLOW_method_handle_literal_in_literal2673);
+					method_handle_literal131=method_handle_literal();
+					state._fsp--;
+
+					adaptor.addChild(root_0, method_handle_literal131.getTree());
+
+					}
+					break;
+				case 16 :
+					// smaliParser.g:659:5: method_prototype
+					{
+					root_0 = (CommonTree)adaptor.nil();
+
+
+					pushFollow(FOLLOW_method_prototype_in_literal2679);
+					method_prototype132=method_prototype();
+					state._fsp--;
+
+					adaptor.addChild(root_0, method_prototype132.getTree());
 
 					}
 					break;
@@ -5334,30 +5651,30 @@
 
 
 	// $ANTLR start "parsed_integer_literal"
-	// smaliParser.g:641:1: parsed_integer_literal returns [int value] : integer_literal ;
+	// smaliParser.g:661:1: parsed_integer_literal returns [int value] : integer_literal ;
 	public final smaliParser.parsed_integer_literal_return parsed_integer_literal() throws RecognitionException {
 		smaliParser.parsed_integer_literal_return retval = new smaliParser.parsed_integer_literal_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		ParserRuleReturnScope integer_literal125 =null;
+		ParserRuleReturnScope integer_literal133 =null;
 
 
 		try {
-			// smaliParser.g:642:3: ( integer_literal )
-			// smaliParser.g:642:5: integer_literal
+			// smaliParser.g:662:3: ( integer_literal )
+			// smaliParser.g:662:5: integer_literal
 			{
 			root_0 = (CommonTree)adaptor.nil();
 
 
-			pushFollow(FOLLOW_integer_literal_in_parsed_integer_literal2559);
-			integer_literal125=integer_literal();
+			pushFollow(FOLLOW_integer_literal_in_parsed_integer_literal2692);
+			integer_literal133=integer_literal();
 			state._fsp--;
 
-			adaptor.addChild(root_0, integer_literal125.getTree());
+			adaptor.addChild(root_0, integer_literal133.getTree());
 
-			 retval.value = LiteralTools.parseInt((integer_literal125!=null?input.toString(integer_literal125.start,integer_literal125.stop):null)); 
+			 retval.value = LiteralTools.parseInt((integer_literal133!=null?input.toString(integer_literal133.start,integer_literal133.stop):null)); 
 			}
 
 			retval.stop = input.LT(-1);
@@ -5387,26 +5704,26 @@
 
 
 	// $ANTLR start "integral_literal"
-	// smaliParser.g:644:1: integral_literal : ( LONG_LITERAL | integer_literal | SHORT_LITERAL | CHAR_LITERAL | BYTE_LITERAL );
+	// smaliParser.g:664:1: integral_literal : ( LONG_LITERAL | integer_literal | SHORT_LITERAL | CHAR_LITERAL | BYTE_LITERAL );
 	public final smaliParser.integral_literal_return integral_literal() throws RecognitionException {
 		smaliParser.integral_literal_return retval = new smaliParser.integral_literal_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token LONG_LITERAL126=null;
-		Token SHORT_LITERAL128=null;
-		Token CHAR_LITERAL129=null;
-		Token BYTE_LITERAL130=null;
-		ParserRuleReturnScope integer_literal127 =null;
+		Token LONG_LITERAL134=null;
+		Token SHORT_LITERAL136=null;
+		Token CHAR_LITERAL137=null;
+		Token BYTE_LITERAL138=null;
+		ParserRuleReturnScope integer_literal135 =null;
 
-		CommonTree LONG_LITERAL126_tree=null;
-		CommonTree SHORT_LITERAL128_tree=null;
-		CommonTree CHAR_LITERAL129_tree=null;
-		CommonTree BYTE_LITERAL130_tree=null;
+		CommonTree LONG_LITERAL134_tree=null;
+		CommonTree SHORT_LITERAL136_tree=null;
+		CommonTree CHAR_LITERAL137_tree=null;
+		CommonTree BYTE_LITERAL138_tree=null;
 
 		try {
-			// smaliParser.g:645:3: ( LONG_LITERAL | integer_literal | SHORT_LITERAL | CHAR_LITERAL | BYTE_LITERAL )
+			// smaliParser.g:665:3: ( LONG_LITERAL | integer_literal | SHORT_LITERAL | CHAR_LITERAL | BYTE_LITERAL )
 			int alt22=5;
 			switch ( input.LA(1) ) {
 			case LONG_LITERAL:
@@ -5442,64 +5759,64 @@
 			}
 			switch (alt22) {
 				case 1 :
-					// smaliParser.g:645:5: LONG_LITERAL
+					// smaliParser.g:665:5: LONG_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					LONG_LITERAL126=(Token)match(input,LONG_LITERAL,FOLLOW_LONG_LITERAL_in_integral_literal2571); 
-					LONG_LITERAL126_tree = (CommonTree)adaptor.create(LONG_LITERAL126);
-					adaptor.addChild(root_0, LONG_LITERAL126_tree);
+					LONG_LITERAL134=(Token)match(input,LONG_LITERAL,FOLLOW_LONG_LITERAL_in_integral_literal2704); 
+					LONG_LITERAL134_tree = (CommonTree)adaptor.create(LONG_LITERAL134);
+					adaptor.addChild(root_0, LONG_LITERAL134_tree);
 
 					}
 					break;
 				case 2 :
-					// smaliParser.g:646:5: integer_literal
+					// smaliParser.g:666:5: integer_literal
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_integer_literal_in_integral_literal2577);
-					integer_literal127=integer_literal();
+					pushFollow(FOLLOW_integer_literal_in_integral_literal2710);
+					integer_literal135=integer_literal();
 					state._fsp--;
 
-					adaptor.addChild(root_0, integer_literal127.getTree());
+					adaptor.addChild(root_0, integer_literal135.getTree());
 
 					}
 					break;
 				case 3 :
-					// smaliParser.g:647:5: SHORT_LITERAL
+					// smaliParser.g:667:5: SHORT_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					SHORT_LITERAL128=(Token)match(input,SHORT_LITERAL,FOLLOW_SHORT_LITERAL_in_integral_literal2583); 
-					SHORT_LITERAL128_tree = (CommonTree)adaptor.create(SHORT_LITERAL128);
-					adaptor.addChild(root_0, SHORT_LITERAL128_tree);
+					SHORT_LITERAL136=(Token)match(input,SHORT_LITERAL,FOLLOW_SHORT_LITERAL_in_integral_literal2716); 
+					SHORT_LITERAL136_tree = (CommonTree)adaptor.create(SHORT_LITERAL136);
+					adaptor.addChild(root_0, SHORT_LITERAL136_tree);
 
 					}
 					break;
 				case 4 :
-					// smaliParser.g:648:5: CHAR_LITERAL
+					// smaliParser.g:668:5: CHAR_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					CHAR_LITERAL129=(Token)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_integral_literal2589); 
-					CHAR_LITERAL129_tree = (CommonTree)adaptor.create(CHAR_LITERAL129);
-					adaptor.addChild(root_0, CHAR_LITERAL129_tree);
+					CHAR_LITERAL137=(Token)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_integral_literal2722); 
+					CHAR_LITERAL137_tree = (CommonTree)adaptor.create(CHAR_LITERAL137);
+					adaptor.addChild(root_0, CHAR_LITERAL137_tree);
 
 					}
 					break;
 				case 5 :
-					// smaliParser.g:649:5: BYTE_LITERAL
+					// smaliParser.g:669:5: BYTE_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					BYTE_LITERAL130=(Token)match(input,BYTE_LITERAL,FOLLOW_BYTE_LITERAL_in_integral_literal2595); 
-					BYTE_LITERAL130_tree = (CommonTree)adaptor.create(BYTE_LITERAL130);
-					adaptor.addChild(root_0, BYTE_LITERAL130_tree);
+					BYTE_LITERAL138=(Token)match(input,BYTE_LITERAL,FOLLOW_BYTE_LITERAL_in_integral_literal2728); 
+					BYTE_LITERAL138_tree = (CommonTree)adaptor.create(BYTE_LITERAL138);
+					adaptor.addChild(root_0, BYTE_LITERAL138_tree);
 
 					}
 					break;
@@ -5532,29 +5849,29 @@
 
 
 	// $ANTLR start "fixed_32bit_literal"
-	// smaliParser.g:651:1: fixed_32bit_literal : ( LONG_LITERAL | integer_literal | SHORT_LITERAL | BYTE_LITERAL | float_literal | CHAR_LITERAL | BOOL_LITERAL );
+	// smaliParser.g:671:1: fixed_32bit_literal : ( LONG_LITERAL | integer_literal | SHORT_LITERAL | BYTE_LITERAL | float_literal | CHAR_LITERAL | BOOL_LITERAL );
 	public final smaliParser.fixed_32bit_literal_return fixed_32bit_literal() throws RecognitionException {
 		smaliParser.fixed_32bit_literal_return retval = new smaliParser.fixed_32bit_literal_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token LONG_LITERAL131=null;
-		Token SHORT_LITERAL133=null;
-		Token BYTE_LITERAL134=null;
-		Token CHAR_LITERAL136=null;
-		Token BOOL_LITERAL137=null;
-		ParserRuleReturnScope integer_literal132 =null;
-		ParserRuleReturnScope float_literal135 =null;
+		Token LONG_LITERAL139=null;
+		Token SHORT_LITERAL141=null;
+		Token BYTE_LITERAL142=null;
+		Token CHAR_LITERAL144=null;
+		Token BOOL_LITERAL145=null;
+		ParserRuleReturnScope integer_literal140 =null;
+		ParserRuleReturnScope float_literal143 =null;
 
-		CommonTree LONG_LITERAL131_tree=null;
-		CommonTree SHORT_LITERAL133_tree=null;
-		CommonTree BYTE_LITERAL134_tree=null;
-		CommonTree CHAR_LITERAL136_tree=null;
-		CommonTree BOOL_LITERAL137_tree=null;
+		CommonTree LONG_LITERAL139_tree=null;
+		CommonTree SHORT_LITERAL141_tree=null;
+		CommonTree BYTE_LITERAL142_tree=null;
+		CommonTree CHAR_LITERAL144_tree=null;
+		CommonTree BOOL_LITERAL145_tree=null;
 
 		try {
-			// smaliParser.g:652:3: ( LONG_LITERAL | integer_literal | SHORT_LITERAL | BYTE_LITERAL | float_literal | CHAR_LITERAL | BOOL_LITERAL )
+			// smaliParser.g:672:3: ( LONG_LITERAL | integer_literal | SHORT_LITERAL | BYTE_LITERAL | float_literal | CHAR_LITERAL | BOOL_LITERAL )
 			int alt23=7;
 			switch ( input.LA(1) ) {
 			case LONG_LITERAL:
@@ -5601,90 +5918,90 @@
 			}
 			switch (alt23) {
 				case 1 :
-					// smaliParser.g:652:5: LONG_LITERAL
+					// smaliParser.g:672:5: LONG_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					LONG_LITERAL131=(Token)match(input,LONG_LITERAL,FOLLOW_LONG_LITERAL_in_fixed_32bit_literal2605); 
-					LONG_LITERAL131_tree = (CommonTree)adaptor.create(LONG_LITERAL131);
-					adaptor.addChild(root_0, LONG_LITERAL131_tree);
+					LONG_LITERAL139=(Token)match(input,LONG_LITERAL,FOLLOW_LONG_LITERAL_in_fixed_32bit_literal2738); 
+					LONG_LITERAL139_tree = (CommonTree)adaptor.create(LONG_LITERAL139);
+					adaptor.addChild(root_0, LONG_LITERAL139_tree);
 
 					}
 					break;
 				case 2 :
-					// smaliParser.g:653:5: integer_literal
+					// smaliParser.g:673:5: integer_literal
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_integer_literal_in_fixed_32bit_literal2611);
-					integer_literal132=integer_literal();
+					pushFollow(FOLLOW_integer_literal_in_fixed_32bit_literal2744);
+					integer_literal140=integer_literal();
 					state._fsp--;
 
-					adaptor.addChild(root_0, integer_literal132.getTree());
+					adaptor.addChild(root_0, integer_literal140.getTree());
 
 					}
 					break;
 				case 3 :
-					// smaliParser.g:654:5: SHORT_LITERAL
+					// smaliParser.g:674:5: SHORT_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					SHORT_LITERAL133=(Token)match(input,SHORT_LITERAL,FOLLOW_SHORT_LITERAL_in_fixed_32bit_literal2617); 
-					SHORT_LITERAL133_tree = (CommonTree)adaptor.create(SHORT_LITERAL133);
-					adaptor.addChild(root_0, SHORT_LITERAL133_tree);
+					SHORT_LITERAL141=(Token)match(input,SHORT_LITERAL,FOLLOW_SHORT_LITERAL_in_fixed_32bit_literal2750); 
+					SHORT_LITERAL141_tree = (CommonTree)adaptor.create(SHORT_LITERAL141);
+					adaptor.addChild(root_0, SHORT_LITERAL141_tree);
 
 					}
 					break;
 				case 4 :
-					// smaliParser.g:655:5: BYTE_LITERAL
+					// smaliParser.g:675:5: BYTE_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					BYTE_LITERAL134=(Token)match(input,BYTE_LITERAL,FOLLOW_BYTE_LITERAL_in_fixed_32bit_literal2623); 
-					BYTE_LITERAL134_tree = (CommonTree)adaptor.create(BYTE_LITERAL134);
-					adaptor.addChild(root_0, BYTE_LITERAL134_tree);
+					BYTE_LITERAL142=(Token)match(input,BYTE_LITERAL,FOLLOW_BYTE_LITERAL_in_fixed_32bit_literal2756); 
+					BYTE_LITERAL142_tree = (CommonTree)adaptor.create(BYTE_LITERAL142);
+					adaptor.addChild(root_0, BYTE_LITERAL142_tree);
 
 					}
 					break;
 				case 5 :
-					// smaliParser.g:656:5: float_literal
+					// smaliParser.g:676:5: float_literal
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_float_literal_in_fixed_32bit_literal2629);
-					float_literal135=float_literal();
+					pushFollow(FOLLOW_float_literal_in_fixed_32bit_literal2762);
+					float_literal143=float_literal();
 					state._fsp--;
 
-					adaptor.addChild(root_0, float_literal135.getTree());
+					adaptor.addChild(root_0, float_literal143.getTree());
 
 					}
 					break;
 				case 6 :
-					// smaliParser.g:657:5: CHAR_LITERAL
+					// smaliParser.g:677:5: CHAR_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					CHAR_LITERAL136=(Token)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_fixed_32bit_literal2635); 
-					CHAR_LITERAL136_tree = (CommonTree)adaptor.create(CHAR_LITERAL136);
-					adaptor.addChild(root_0, CHAR_LITERAL136_tree);
+					CHAR_LITERAL144=(Token)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_fixed_32bit_literal2768); 
+					CHAR_LITERAL144_tree = (CommonTree)adaptor.create(CHAR_LITERAL144);
+					adaptor.addChild(root_0, CHAR_LITERAL144_tree);
 
 					}
 					break;
 				case 7 :
-					// smaliParser.g:658:5: BOOL_LITERAL
+					// smaliParser.g:678:5: BOOL_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					BOOL_LITERAL137=(Token)match(input,BOOL_LITERAL,FOLLOW_BOOL_LITERAL_in_fixed_32bit_literal2641); 
-					BOOL_LITERAL137_tree = (CommonTree)adaptor.create(BOOL_LITERAL137);
-					adaptor.addChild(root_0, BOOL_LITERAL137_tree);
+					BOOL_LITERAL145=(Token)match(input,BOOL_LITERAL,FOLLOW_BOOL_LITERAL_in_fixed_32bit_literal2774); 
+					BOOL_LITERAL145_tree = (CommonTree)adaptor.create(BOOL_LITERAL145);
+					adaptor.addChild(root_0, BOOL_LITERAL145_tree);
 
 					}
 					break;
@@ -5717,30 +6034,30 @@
 
 
 	// $ANTLR start "fixed_literal"
-	// smaliParser.g:660:1: fixed_literal : ( integer_literal | LONG_LITERAL | SHORT_LITERAL | BYTE_LITERAL | float_literal | double_literal | CHAR_LITERAL | BOOL_LITERAL );
+	// smaliParser.g:680:1: fixed_literal : ( integer_literal | LONG_LITERAL | SHORT_LITERAL | BYTE_LITERAL | float_literal | double_literal | CHAR_LITERAL | BOOL_LITERAL );
 	public final smaliParser.fixed_literal_return fixed_literal() throws RecognitionException {
 		smaliParser.fixed_literal_return retval = new smaliParser.fixed_literal_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token LONG_LITERAL139=null;
-		Token SHORT_LITERAL140=null;
-		Token BYTE_LITERAL141=null;
-		Token CHAR_LITERAL144=null;
-		Token BOOL_LITERAL145=null;
-		ParserRuleReturnScope integer_literal138 =null;
-		ParserRuleReturnScope float_literal142 =null;
-		ParserRuleReturnScope double_literal143 =null;
+		Token LONG_LITERAL147=null;
+		Token SHORT_LITERAL148=null;
+		Token BYTE_LITERAL149=null;
+		Token CHAR_LITERAL152=null;
+		Token BOOL_LITERAL153=null;
+		ParserRuleReturnScope integer_literal146 =null;
+		ParserRuleReturnScope float_literal150 =null;
+		ParserRuleReturnScope double_literal151 =null;
 
-		CommonTree LONG_LITERAL139_tree=null;
-		CommonTree SHORT_LITERAL140_tree=null;
-		CommonTree BYTE_LITERAL141_tree=null;
-		CommonTree CHAR_LITERAL144_tree=null;
-		CommonTree BOOL_LITERAL145_tree=null;
+		CommonTree LONG_LITERAL147_tree=null;
+		CommonTree SHORT_LITERAL148_tree=null;
+		CommonTree BYTE_LITERAL149_tree=null;
+		CommonTree CHAR_LITERAL152_tree=null;
+		CommonTree BOOL_LITERAL153_tree=null;
 
 		try {
-			// smaliParser.g:661:3: ( integer_literal | LONG_LITERAL | SHORT_LITERAL | BYTE_LITERAL | float_literal | double_literal | CHAR_LITERAL | BOOL_LITERAL )
+			// smaliParser.g:681:3: ( integer_literal | LONG_LITERAL | SHORT_LITERAL | BYTE_LITERAL | float_literal | double_literal | CHAR_LITERAL | BOOL_LITERAL )
 			int alt24=8;
 			switch ( input.LA(1) ) {
 			case NEGATIVE_INTEGER_LITERAL:
@@ -5793,104 +6110,104 @@
 			}
 			switch (alt24) {
 				case 1 :
-					// smaliParser.g:661:5: integer_literal
+					// smaliParser.g:681:5: integer_literal
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_integer_literal_in_fixed_literal2651);
-					integer_literal138=integer_literal();
+					pushFollow(FOLLOW_integer_literal_in_fixed_literal2784);
+					integer_literal146=integer_literal();
 					state._fsp--;
 
-					adaptor.addChild(root_0, integer_literal138.getTree());
+					adaptor.addChild(root_0, integer_literal146.getTree());
 
 					}
 					break;
 				case 2 :
-					// smaliParser.g:662:5: LONG_LITERAL
+					// smaliParser.g:682:5: LONG_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					LONG_LITERAL139=(Token)match(input,LONG_LITERAL,FOLLOW_LONG_LITERAL_in_fixed_literal2657); 
-					LONG_LITERAL139_tree = (CommonTree)adaptor.create(LONG_LITERAL139);
-					adaptor.addChild(root_0, LONG_LITERAL139_tree);
+					LONG_LITERAL147=(Token)match(input,LONG_LITERAL,FOLLOW_LONG_LITERAL_in_fixed_literal2790); 
+					LONG_LITERAL147_tree = (CommonTree)adaptor.create(LONG_LITERAL147);
+					adaptor.addChild(root_0, LONG_LITERAL147_tree);
 
 					}
 					break;
 				case 3 :
-					// smaliParser.g:663:5: SHORT_LITERAL
+					// smaliParser.g:683:5: SHORT_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					SHORT_LITERAL140=(Token)match(input,SHORT_LITERAL,FOLLOW_SHORT_LITERAL_in_fixed_literal2663); 
-					SHORT_LITERAL140_tree = (CommonTree)adaptor.create(SHORT_LITERAL140);
-					adaptor.addChild(root_0, SHORT_LITERAL140_tree);
+					SHORT_LITERAL148=(Token)match(input,SHORT_LITERAL,FOLLOW_SHORT_LITERAL_in_fixed_literal2796); 
+					SHORT_LITERAL148_tree = (CommonTree)adaptor.create(SHORT_LITERAL148);
+					adaptor.addChild(root_0, SHORT_LITERAL148_tree);
 
 					}
 					break;
 				case 4 :
-					// smaliParser.g:664:5: BYTE_LITERAL
+					// smaliParser.g:684:5: BYTE_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					BYTE_LITERAL141=(Token)match(input,BYTE_LITERAL,FOLLOW_BYTE_LITERAL_in_fixed_literal2669); 
-					BYTE_LITERAL141_tree = (CommonTree)adaptor.create(BYTE_LITERAL141);
-					adaptor.addChild(root_0, BYTE_LITERAL141_tree);
+					BYTE_LITERAL149=(Token)match(input,BYTE_LITERAL,FOLLOW_BYTE_LITERAL_in_fixed_literal2802); 
+					BYTE_LITERAL149_tree = (CommonTree)adaptor.create(BYTE_LITERAL149);
+					adaptor.addChild(root_0, BYTE_LITERAL149_tree);
 
 					}
 					break;
 				case 5 :
-					// smaliParser.g:665:5: float_literal
+					// smaliParser.g:685:5: float_literal
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_float_literal_in_fixed_literal2675);
-					float_literal142=float_literal();
+					pushFollow(FOLLOW_float_literal_in_fixed_literal2808);
+					float_literal150=float_literal();
 					state._fsp--;
 
-					adaptor.addChild(root_0, float_literal142.getTree());
+					adaptor.addChild(root_0, float_literal150.getTree());
 
 					}
 					break;
 				case 6 :
-					// smaliParser.g:666:5: double_literal
+					// smaliParser.g:686:5: double_literal
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_double_literal_in_fixed_literal2681);
-					double_literal143=double_literal();
+					pushFollow(FOLLOW_double_literal_in_fixed_literal2814);
+					double_literal151=double_literal();
 					state._fsp--;
 
-					adaptor.addChild(root_0, double_literal143.getTree());
+					adaptor.addChild(root_0, double_literal151.getTree());
 
 					}
 					break;
 				case 7 :
-					// smaliParser.g:667:5: CHAR_LITERAL
+					// smaliParser.g:687:5: CHAR_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					CHAR_LITERAL144=(Token)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_fixed_literal2687); 
-					CHAR_LITERAL144_tree = (CommonTree)adaptor.create(CHAR_LITERAL144);
-					adaptor.addChild(root_0, CHAR_LITERAL144_tree);
+					CHAR_LITERAL152=(Token)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_fixed_literal2820); 
+					CHAR_LITERAL152_tree = (CommonTree)adaptor.create(CHAR_LITERAL152);
+					adaptor.addChild(root_0, CHAR_LITERAL152_tree);
 
 					}
 					break;
 				case 8 :
-					// smaliParser.g:668:5: BOOL_LITERAL
+					// smaliParser.g:688:5: BOOL_LITERAL
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					BOOL_LITERAL145=(Token)match(input,BOOL_LITERAL,FOLLOW_BOOL_LITERAL_in_fixed_literal2693); 
-					BOOL_LITERAL145_tree = (CommonTree)adaptor.create(BOOL_LITERAL145);
-					adaptor.addChild(root_0, BOOL_LITERAL145_tree);
+					BOOL_LITERAL153=(Token)match(input,BOOL_LITERAL,FOLLOW_BOOL_LITERAL_in_fixed_literal2826); 
+					BOOL_LITERAL153_tree = (CommonTree)adaptor.create(BOOL_LITERAL153);
+					adaptor.addChild(root_0, BOOL_LITERAL153_tree);
 
 					}
 					break;
@@ -5923,38 +6240,38 @@
 
 
 	// $ANTLR start "array_literal"
-	// smaliParser.g:670:1: array_literal : OPEN_BRACE ( literal ( COMMA literal )* |) CLOSE_BRACE -> ^( I_ENCODED_ARRAY[$start, \"I_ENCODED_ARRAY\"] ( literal )* ) ;
+	// smaliParser.g:690:1: array_literal : OPEN_BRACE ( literal ( COMMA literal )* |) CLOSE_BRACE -> ^( I_ENCODED_ARRAY[$start, \"I_ENCODED_ARRAY\"] ( literal )* ) ;
 	public final smaliParser.array_literal_return array_literal() throws RecognitionException {
 		smaliParser.array_literal_return retval = new smaliParser.array_literal_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token OPEN_BRACE146=null;
-		Token COMMA148=null;
-		Token CLOSE_BRACE150=null;
-		ParserRuleReturnScope literal147 =null;
-		ParserRuleReturnScope literal149 =null;
+		Token OPEN_BRACE154=null;
+		Token COMMA156=null;
+		Token CLOSE_BRACE158=null;
+		ParserRuleReturnScope literal155 =null;
+		ParserRuleReturnScope literal157 =null;
 
-		CommonTree OPEN_BRACE146_tree=null;
-		CommonTree COMMA148_tree=null;
-		CommonTree CLOSE_BRACE150_tree=null;
+		CommonTree OPEN_BRACE154_tree=null;
+		CommonTree COMMA156_tree=null;
+		CommonTree CLOSE_BRACE158_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_OPEN_BRACE=new RewriteRuleTokenStream(adaptor,"token OPEN_BRACE");
 		RewriteRuleTokenStream stream_CLOSE_BRACE=new RewriteRuleTokenStream(adaptor,"token CLOSE_BRACE");
 		RewriteRuleSubtreeStream stream_literal=new RewriteRuleSubtreeStream(adaptor,"rule literal");
 
 		try {
-			// smaliParser.g:671:3: ( OPEN_BRACE ( literal ( COMMA literal )* |) CLOSE_BRACE -> ^( I_ENCODED_ARRAY[$start, \"I_ENCODED_ARRAY\"] ( literal )* ) )
-			// smaliParser.g:671:5: OPEN_BRACE ( literal ( COMMA literal )* |) CLOSE_BRACE
+			// smaliParser.g:691:3: ( OPEN_BRACE ( literal ( COMMA literal )* |) CLOSE_BRACE -> ^( I_ENCODED_ARRAY[$start, \"I_ENCODED_ARRAY\"] ( literal )* ) )
+			// smaliParser.g:691:5: OPEN_BRACE ( literal ( COMMA literal )* |) CLOSE_BRACE
 			{
-			OPEN_BRACE146=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_array_literal2703);  
-			stream_OPEN_BRACE.add(OPEN_BRACE146);
+			OPEN_BRACE154=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_array_literal2836);  
+			stream_OPEN_BRACE.add(OPEN_BRACE154);
 
-			// smaliParser.g:671:16: ( literal ( COMMA literal )* |)
+			// smaliParser.g:691:16: ( literal ( COMMA literal )* |)
 			int alt26=2;
 			int LA26_0 = input.LA(1);
-			if ( (LA26_0==ACCESS_SPEC||LA26_0==ANNOTATION_VISIBILITY||LA26_0==ARRAY_TYPE_PREFIX||(LA26_0 >= BOOL_LITERAL && LA26_0 <= BYTE_LITERAL)||(LA26_0 >= CHAR_LITERAL && LA26_0 <= CLASS_DESCRIPTOR)||(LA26_0 >= DOUBLE_LITERAL && LA26_0 <= DOUBLE_LITERAL_OR_ID)||LA26_0==ENUM_DIRECTIVE||(LA26_0 >= FLOAT_LITERAL && LA26_0 <= FLOAT_LITERAL_OR_ID)||(LA26_0 >= INSTRUCTION_FORMAT10t && LA26_0 <= INSTRUCTION_FORMAT10x_ODEX)||LA26_0==INSTRUCTION_FORMAT11x||LA26_0==INSTRUCTION_FORMAT12x_OR_ID||(LA26_0 >= INSTRUCTION_FORMAT21c_FIELD && LA26_0 <= INSTRUCTION_FORMAT21c_TYPE)||LA26_0==INSTRUCTION_FORMAT21t||(LA26_0 >= INSTRUCTION_FORMAT22c_FIELD && LA26_0 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA26_0 >= INSTRUCTION_FORMAT22s_OR_ID && LA26_0 <= INSTRUCTION_FORMAT22t)||LA26_0==INSTRUCTION_FORMAT23x||(LA26_0 >= INSTRUCTION_FORMAT31i_OR_ID && LA26_0 <= INSTRUCTION_FORMAT31t)||(LA26_0 >= INSTRUCTION_FORMAT35c_METHOD && LA26_0 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA26_0 >= INSTRUCTION_FORMAT45cc_METHOD && LA26_0 <= INSTRUCTION_FORMAT51l)||(LA26_0 >= LONG_LITERAL && LA26_0 <= MEMBER_NAME)||(LA26_0 >= NEGATIVE_INTEGER_LITERAL && LA26_0 <= OPEN_BRACE)||(LA26_0 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA26_0 <= PRIMITIVE_TYPE)||LA26_0==REGISTER||(LA26_0 >= SHORT_LITERAL && LA26_0 <= SIMPLE_NAME)||(LA26_0 >= STRING_LITERAL && LA26_0 <= SUBANNOTATION_DIRECTIVE)||(LA26_0 >= VERIFICATION_ERROR_TYPE && LA26_0 <= VOID_TYPE)) ) {
+			if ( (LA26_0==ACCESS_SPEC||LA26_0==ANNOTATION_VISIBILITY||LA26_0==ARRAY_TYPE_PREFIX||(LA26_0 >= BOOL_LITERAL && LA26_0 <= BYTE_LITERAL)||(LA26_0 >= CHAR_LITERAL && LA26_0 <= CLASS_DESCRIPTOR)||(LA26_0 >= DOUBLE_LITERAL && LA26_0 <= DOUBLE_LITERAL_OR_ID)||LA26_0==ENUM_DIRECTIVE||(LA26_0 >= FLOAT_LITERAL && LA26_0 <= FLOAT_LITERAL_OR_ID)||(LA26_0 >= INSTRUCTION_FORMAT10t && LA26_0 <= INSTRUCTION_FORMAT10x_ODEX)||LA26_0==INSTRUCTION_FORMAT11x||LA26_0==INSTRUCTION_FORMAT12x_OR_ID||(LA26_0 >= INSTRUCTION_FORMAT21c_FIELD && LA26_0 <= INSTRUCTION_FORMAT21c_TYPE)||LA26_0==INSTRUCTION_FORMAT21t||(LA26_0 >= INSTRUCTION_FORMAT22c_FIELD && LA26_0 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA26_0 >= INSTRUCTION_FORMAT22s_OR_ID && LA26_0 <= INSTRUCTION_FORMAT22t)||LA26_0==INSTRUCTION_FORMAT23x||(LA26_0 >= INSTRUCTION_FORMAT31i_OR_ID && LA26_0 <= INSTRUCTION_FORMAT31t)||(LA26_0 >= INSTRUCTION_FORMAT35c_CALL_SITE && LA26_0 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA26_0 >= INSTRUCTION_FORMAT45cc_METHOD && LA26_0 <= INSTRUCTION_FORMAT51l)||(LA26_0 >= LONG_LITERAL && LA26_0 <= MEMBER_NAME)||(LA26_0 >= METHOD_HANDLE_TYPE_FIELD && LA26_0 <= OPEN_PAREN)||(LA26_0 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA26_0 <= PRIMITIVE_TYPE)||LA26_0==REGISTER||(LA26_0 >= SHORT_LITERAL && LA26_0 <= SIMPLE_NAME)||(LA26_0 >= STRING_LITERAL && LA26_0 <= SUBANNOTATION_DIRECTIVE)||(LA26_0 >= VERIFICATION_ERROR_TYPE && LA26_0 <= VOID_TYPE)) ) {
 				alt26=1;
 			}
 			else if ( (LA26_0==CLOSE_BRACE) ) {
@@ -5969,14 +6286,14 @@
 
 			switch (alt26) {
 				case 1 :
-					// smaliParser.g:671:17: literal ( COMMA literal )*
+					// smaliParser.g:691:17: literal ( COMMA literal )*
 					{
-					pushFollow(FOLLOW_literal_in_array_literal2706);
-					literal147=literal();
+					pushFollow(FOLLOW_literal_in_array_literal2839);
+					literal155=literal();
 					state._fsp--;
 
-					stream_literal.add(literal147.getTree());
-					// smaliParser.g:671:25: ( COMMA literal )*
+					stream_literal.add(literal155.getTree());
+					// smaliParser.g:691:25: ( COMMA literal )*
 					loop25:
 					while (true) {
 						int alt25=2;
@@ -5987,16 +6304,16 @@
 
 						switch (alt25) {
 						case 1 :
-							// smaliParser.g:671:26: COMMA literal
+							// smaliParser.g:691:26: COMMA literal
 							{
-							COMMA148=(Token)match(input,COMMA,FOLLOW_COMMA_in_array_literal2709);  
-							stream_COMMA.add(COMMA148);
+							COMMA156=(Token)match(input,COMMA,FOLLOW_COMMA_in_array_literal2842);  
+							stream_COMMA.add(COMMA156);
 
-							pushFollow(FOLLOW_literal_in_array_literal2711);
-							literal149=literal();
+							pushFollow(FOLLOW_literal_in_array_literal2844);
+							literal157=literal();
 							state._fsp--;
 
-							stream_literal.add(literal149.getTree());
+							stream_literal.add(literal157.getTree());
 							}
 							break;
 
@@ -6008,15 +6325,15 @@
 					}
 					break;
 				case 2 :
-					// smaliParser.g:671:44: 
+					// smaliParser.g:691:44: 
 					{
 					}
 					break;
 
 			}
 
-			CLOSE_BRACE150=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_array_literal2719);  
-			stream_CLOSE_BRACE.add(CLOSE_BRACE150);
+			CLOSE_BRACE158=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_array_literal2852);  
+			stream_CLOSE_BRACE.add(CLOSE_BRACE158);
 
 			// AST REWRITE
 			// elements: literal
@@ -6029,13 +6346,13 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 672:5: -> ^( I_ENCODED_ARRAY[$start, \"I_ENCODED_ARRAY\"] ( literal )* )
+			// 692:5: -> ^( I_ENCODED_ARRAY[$start, \"I_ENCODED_ARRAY\"] ( literal )* )
 			{
-				// smaliParser.g:672:8: ^( I_ENCODED_ARRAY[$start, \"I_ENCODED_ARRAY\"] ( literal )* )
+				// smaliParser.g:692:8: ^( I_ENCODED_ARRAY[$start, \"I_ENCODED_ARRAY\"] ( literal )* )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_ENCODED_ARRAY, (retval.start), "I_ENCODED_ARRAY"), root_1);
-				// smaliParser.g:672:53: ( literal )*
+				// smaliParser.g:692:53: ( literal )*
 				while ( stream_literal.hasNext() ) {
 					adaptor.addChild(root_1, stream_literal.nextTree());
 				}
@@ -6078,39 +6395,39 @@
 
 
 	// $ANTLR start "annotation_element"
-	// smaliParser.g:674:1: annotation_element : simple_name EQUAL literal -> ^( I_ANNOTATION_ELEMENT[$start, \"I_ANNOTATION_ELEMENT\"] simple_name literal ) ;
+	// smaliParser.g:694:1: annotation_element : simple_name EQUAL literal -> ^( I_ANNOTATION_ELEMENT[$start, \"I_ANNOTATION_ELEMENT\"] simple_name literal ) ;
 	public final smaliParser.annotation_element_return annotation_element() throws RecognitionException {
 		smaliParser.annotation_element_return retval = new smaliParser.annotation_element_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token EQUAL152=null;
-		ParserRuleReturnScope simple_name151 =null;
-		ParserRuleReturnScope literal153 =null;
+		Token EQUAL160=null;
+		ParserRuleReturnScope simple_name159 =null;
+		ParserRuleReturnScope literal161 =null;
 
-		CommonTree EQUAL152_tree=null;
+		CommonTree EQUAL160_tree=null;
 		RewriteRuleTokenStream stream_EQUAL=new RewriteRuleTokenStream(adaptor,"token EQUAL");
 		RewriteRuleSubtreeStream stream_simple_name=new RewriteRuleSubtreeStream(adaptor,"rule simple_name");
 		RewriteRuleSubtreeStream stream_literal=new RewriteRuleSubtreeStream(adaptor,"rule literal");
 
 		try {
-			// smaliParser.g:675:3: ( simple_name EQUAL literal -> ^( I_ANNOTATION_ELEMENT[$start, \"I_ANNOTATION_ELEMENT\"] simple_name literal ) )
-			// smaliParser.g:675:5: simple_name EQUAL literal
+			// smaliParser.g:695:3: ( simple_name EQUAL literal -> ^( I_ANNOTATION_ELEMENT[$start, \"I_ANNOTATION_ELEMENT\"] simple_name literal ) )
+			// smaliParser.g:695:5: simple_name EQUAL literal
 			{
-			pushFollow(FOLLOW_simple_name_in_annotation_element2743);
-			simple_name151=simple_name();
+			pushFollow(FOLLOW_simple_name_in_annotation_element2876);
+			simple_name159=simple_name();
 			state._fsp--;
 
-			stream_simple_name.add(simple_name151.getTree());
-			EQUAL152=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_annotation_element2745);  
-			stream_EQUAL.add(EQUAL152);
+			stream_simple_name.add(simple_name159.getTree());
+			EQUAL160=(Token)match(input,EQUAL,FOLLOW_EQUAL_in_annotation_element2878);  
+			stream_EQUAL.add(EQUAL160);
 
-			pushFollow(FOLLOW_literal_in_annotation_element2747);
-			literal153=literal();
+			pushFollow(FOLLOW_literal_in_annotation_element2880);
+			literal161=literal();
 			state._fsp--;
 
-			stream_literal.add(literal153.getTree());
+			stream_literal.add(literal161.getTree());
 			// AST REWRITE
 			// elements: simple_name, literal
 			// token labels: 
@@ -6122,9 +6439,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 676:5: -> ^( I_ANNOTATION_ELEMENT[$start, \"I_ANNOTATION_ELEMENT\"] simple_name literal )
+			// 696:5: -> ^( I_ANNOTATION_ELEMENT[$start, \"I_ANNOTATION_ELEMENT\"] simple_name literal )
 			{
-				// smaliParser.g:676:8: ^( I_ANNOTATION_ELEMENT[$start, \"I_ANNOTATION_ELEMENT\"] simple_name literal )
+				// smaliParser.g:696:8: ^( I_ANNOTATION_ELEMENT[$start, \"I_ANNOTATION_ELEMENT\"] simple_name literal )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_ANNOTATION_ELEMENT, (retval.start), "I_ANNOTATION_ELEMENT"), root_1);
@@ -6167,23 +6484,23 @@
 
 
 	// $ANTLR start "annotation"
-	// smaliParser.g:678:1: annotation : ANNOTATION_DIRECTIVE ANNOTATION_VISIBILITY CLASS_DESCRIPTOR ( annotation_element )* END_ANNOTATION_DIRECTIVE -> ^( I_ANNOTATION[$start, \"I_ANNOTATION\"] ANNOTATION_VISIBILITY ^( I_SUBANNOTATION[$start, \"I_SUBANNOTATION\"] CLASS_DESCRIPTOR ( annotation_element )* ) ) ;
+	// smaliParser.g:698:1: annotation : ANNOTATION_DIRECTIVE ANNOTATION_VISIBILITY CLASS_DESCRIPTOR ( annotation_element )* END_ANNOTATION_DIRECTIVE -> ^( I_ANNOTATION[$start, \"I_ANNOTATION\"] ANNOTATION_VISIBILITY ^( I_SUBANNOTATION[$start, \"I_SUBANNOTATION\"] CLASS_DESCRIPTOR ( annotation_element )* ) ) ;
 	public final smaliParser.annotation_return annotation() throws RecognitionException {
 		smaliParser.annotation_return retval = new smaliParser.annotation_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token ANNOTATION_DIRECTIVE154=null;
-		Token ANNOTATION_VISIBILITY155=null;
-		Token CLASS_DESCRIPTOR156=null;
-		Token END_ANNOTATION_DIRECTIVE158=null;
-		ParserRuleReturnScope annotation_element157 =null;
+		Token ANNOTATION_DIRECTIVE162=null;
+		Token ANNOTATION_VISIBILITY163=null;
+		Token CLASS_DESCRIPTOR164=null;
+		Token END_ANNOTATION_DIRECTIVE166=null;
+		ParserRuleReturnScope annotation_element165 =null;
 
-		CommonTree ANNOTATION_DIRECTIVE154_tree=null;
-		CommonTree ANNOTATION_VISIBILITY155_tree=null;
-		CommonTree CLASS_DESCRIPTOR156_tree=null;
-		CommonTree END_ANNOTATION_DIRECTIVE158_tree=null;
+		CommonTree ANNOTATION_DIRECTIVE162_tree=null;
+		CommonTree ANNOTATION_VISIBILITY163_tree=null;
+		CommonTree CLASS_DESCRIPTOR164_tree=null;
+		CommonTree END_ANNOTATION_DIRECTIVE166_tree=null;
 		RewriteRuleTokenStream stream_ANNOTATION_DIRECTIVE=new RewriteRuleTokenStream(adaptor,"token ANNOTATION_DIRECTIVE");
 		RewriteRuleTokenStream stream_ANNOTATION_VISIBILITY=new RewriteRuleTokenStream(adaptor,"token ANNOTATION_VISIBILITY");
 		RewriteRuleTokenStream stream_CLASS_DESCRIPTOR=new RewriteRuleTokenStream(adaptor,"token CLASS_DESCRIPTOR");
@@ -6191,36 +6508,36 @@
 		RewriteRuleSubtreeStream stream_annotation_element=new RewriteRuleSubtreeStream(adaptor,"rule annotation_element");
 
 		try {
-			// smaliParser.g:679:3: ( ANNOTATION_DIRECTIVE ANNOTATION_VISIBILITY CLASS_DESCRIPTOR ( annotation_element )* END_ANNOTATION_DIRECTIVE -> ^( I_ANNOTATION[$start, \"I_ANNOTATION\"] ANNOTATION_VISIBILITY ^( I_SUBANNOTATION[$start, \"I_SUBANNOTATION\"] CLASS_DESCRIPTOR ( annotation_element )* ) ) )
-			// smaliParser.g:679:5: ANNOTATION_DIRECTIVE ANNOTATION_VISIBILITY CLASS_DESCRIPTOR ( annotation_element )* END_ANNOTATION_DIRECTIVE
+			// smaliParser.g:699:3: ( ANNOTATION_DIRECTIVE ANNOTATION_VISIBILITY CLASS_DESCRIPTOR ( annotation_element )* END_ANNOTATION_DIRECTIVE -> ^( I_ANNOTATION[$start, \"I_ANNOTATION\"] ANNOTATION_VISIBILITY ^( I_SUBANNOTATION[$start, \"I_SUBANNOTATION\"] CLASS_DESCRIPTOR ( annotation_element )* ) ) )
+			// smaliParser.g:699:5: ANNOTATION_DIRECTIVE ANNOTATION_VISIBILITY CLASS_DESCRIPTOR ( annotation_element )* END_ANNOTATION_DIRECTIVE
 			{
-			ANNOTATION_DIRECTIVE154=(Token)match(input,ANNOTATION_DIRECTIVE,FOLLOW_ANNOTATION_DIRECTIVE_in_annotation2772);  
-			stream_ANNOTATION_DIRECTIVE.add(ANNOTATION_DIRECTIVE154);
+			ANNOTATION_DIRECTIVE162=(Token)match(input,ANNOTATION_DIRECTIVE,FOLLOW_ANNOTATION_DIRECTIVE_in_annotation2905);  
+			stream_ANNOTATION_DIRECTIVE.add(ANNOTATION_DIRECTIVE162);
 
-			ANNOTATION_VISIBILITY155=(Token)match(input,ANNOTATION_VISIBILITY,FOLLOW_ANNOTATION_VISIBILITY_in_annotation2774);  
-			stream_ANNOTATION_VISIBILITY.add(ANNOTATION_VISIBILITY155);
+			ANNOTATION_VISIBILITY163=(Token)match(input,ANNOTATION_VISIBILITY,FOLLOW_ANNOTATION_VISIBILITY_in_annotation2907);  
+			stream_ANNOTATION_VISIBILITY.add(ANNOTATION_VISIBILITY163);
 
-			CLASS_DESCRIPTOR156=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_annotation2776);  
-			stream_CLASS_DESCRIPTOR.add(CLASS_DESCRIPTOR156);
+			CLASS_DESCRIPTOR164=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_annotation2909);  
+			stream_CLASS_DESCRIPTOR.add(CLASS_DESCRIPTOR164);
 
-			// smaliParser.g:680:5: ( annotation_element )*
+			// smaliParser.g:700:5: ( annotation_element )*
 			loop27:
 			while (true) {
 				int alt27=2;
 				int LA27_0 = input.LA(1);
-				if ( (LA27_0==ACCESS_SPEC||LA27_0==ANNOTATION_VISIBILITY||LA27_0==BOOL_LITERAL||LA27_0==DOUBLE_LITERAL_OR_ID||LA27_0==FLOAT_LITERAL_OR_ID||(LA27_0 >= INSTRUCTION_FORMAT10t && LA27_0 <= INSTRUCTION_FORMAT10x_ODEX)||LA27_0==INSTRUCTION_FORMAT11x||LA27_0==INSTRUCTION_FORMAT12x_OR_ID||(LA27_0 >= INSTRUCTION_FORMAT21c_FIELD && LA27_0 <= INSTRUCTION_FORMAT21c_TYPE)||LA27_0==INSTRUCTION_FORMAT21t||(LA27_0 >= INSTRUCTION_FORMAT22c_FIELD && LA27_0 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA27_0 >= INSTRUCTION_FORMAT22s_OR_ID && LA27_0 <= INSTRUCTION_FORMAT22t)||LA27_0==INSTRUCTION_FORMAT23x||(LA27_0 >= INSTRUCTION_FORMAT31i_OR_ID && LA27_0 <= INSTRUCTION_FORMAT31t)||(LA27_0 >= INSTRUCTION_FORMAT35c_METHOD && LA27_0 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA27_0 >= INSTRUCTION_FORMAT45cc_METHOD && LA27_0 <= INSTRUCTION_FORMAT51l)||(LA27_0 >= NEGATIVE_INTEGER_LITERAL && LA27_0 <= NULL_LITERAL)||(LA27_0 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA27_0 <= PRIMITIVE_TYPE)||LA27_0==REGISTER||LA27_0==SIMPLE_NAME||(LA27_0 >= VERIFICATION_ERROR_TYPE && LA27_0 <= VOID_TYPE)) ) {
+				if ( (LA27_0==ACCESS_SPEC||LA27_0==ANNOTATION_VISIBILITY||LA27_0==BOOL_LITERAL||LA27_0==DOUBLE_LITERAL_OR_ID||LA27_0==FLOAT_LITERAL_OR_ID||(LA27_0 >= INSTRUCTION_FORMAT10t && LA27_0 <= INSTRUCTION_FORMAT10x_ODEX)||LA27_0==INSTRUCTION_FORMAT11x||LA27_0==INSTRUCTION_FORMAT12x_OR_ID||(LA27_0 >= INSTRUCTION_FORMAT21c_FIELD && LA27_0 <= INSTRUCTION_FORMAT21c_TYPE)||LA27_0==INSTRUCTION_FORMAT21t||(LA27_0 >= INSTRUCTION_FORMAT22c_FIELD && LA27_0 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA27_0 >= INSTRUCTION_FORMAT22s_OR_ID && LA27_0 <= INSTRUCTION_FORMAT22t)||LA27_0==INSTRUCTION_FORMAT23x||(LA27_0 >= INSTRUCTION_FORMAT31i_OR_ID && LA27_0 <= INSTRUCTION_FORMAT31t)||(LA27_0 >= INSTRUCTION_FORMAT35c_CALL_SITE && LA27_0 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA27_0 >= INSTRUCTION_FORMAT45cc_METHOD && LA27_0 <= INSTRUCTION_FORMAT51l)||(LA27_0 >= METHOD_HANDLE_TYPE_FIELD && LA27_0 <= NULL_LITERAL)||(LA27_0 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA27_0 <= PRIMITIVE_TYPE)||LA27_0==REGISTER||LA27_0==SIMPLE_NAME||(LA27_0 >= VERIFICATION_ERROR_TYPE && LA27_0 <= VOID_TYPE)) ) {
 					alt27=1;
 				}
 
 				switch (alt27) {
 				case 1 :
-					// smaliParser.g:680:5: annotation_element
+					// smaliParser.g:700:5: annotation_element
 					{
-					pushFollow(FOLLOW_annotation_element_in_annotation2782);
-					annotation_element157=annotation_element();
+					pushFollow(FOLLOW_annotation_element_in_annotation2915);
+					annotation_element165=annotation_element();
 					state._fsp--;
 
-					stream_annotation_element.add(annotation_element157.getTree());
+					stream_annotation_element.add(annotation_element165.getTree());
 					}
 					break;
 
@@ -6229,11 +6546,11 @@
 				}
 			}
 
-			END_ANNOTATION_DIRECTIVE158=(Token)match(input,END_ANNOTATION_DIRECTIVE,FOLLOW_END_ANNOTATION_DIRECTIVE_in_annotation2785);  
-			stream_END_ANNOTATION_DIRECTIVE.add(END_ANNOTATION_DIRECTIVE158);
+			END_ANNOTATION_DIRECTIVE166=(Token)match(input,END_ANNOTATION_DIRECTIVE,FOLLOW_END_ANNOTATION_DIRECTIVE_in_annotation2918);  
+			stream_END_ANNOTATION_DIRECTIVE.add(END_ANNOTATION_DIRECTIVE166);
 
 			// AST REWRITE
-			// elements: CLASS_DESCRIPTOR, annotation_element, ANNOTATION_VISIBILITY
+			// elements: annotation_element, ANNOTATION_VISIBILITY, CLASS_DESCRIPTOR
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -6243,19 +6560,19 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 681:5: -> ^( I_ANNOTATION[$start, \"I_ANNOTATION\"] ANNOTATION_VISIBILITY ^( I_SUBANNOTATION[$start, \"I_SUBANNOTATION\"] CLASS_DESCRIPTOR ( annotation_element )* ) )
+			// 701:5: -> ^( I_ANNOTATION[$start, \"I_ANNOTATION\"] ANNOTATION_VISIBILITY ^( I_SUBANNOTATION[$start, \"I_SUBANNOTATION\"] CLASS_DESCRIPTOR ( annotation_element )* ) )
 			{
-				// smaliParser.g:681:8: ^( I_ANNOTATION[$start, \"I_ANNOTATION\"] ANNOTATION_VISIBILITY ^( I_SUBANNOTATION[$start, \"I_SUBANNOTATION\"] CLASS_DESCRIPTOR ( annotation_element )* ) )
+				// smaliParser.g:701:8: ^( I_ANNOTATION[$start, \"I_ANNOTATION\"] ANNOTATION_VISIBILITY ^( I_SUBANNOTATION[$start, \"I_SUBANNOTATION\"] CLASS_DESCRIPTOR ( annotation_element )* ) )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_ANNOTATION, (retval.start), "I_ANNOTATION"), root_1);
 				adaptor.addChild(root_1, stream_ANNOTATION_VISIBILITY.nextNode());
-				// smaliParser.g:681:69: ^( I_SUBANNOTATION[$start, \"I_SUBANNOTATION\"] CLASS_DESCRIPTOR ( annotation_element )* )
+				// smaliParser.g:701:69: ^( I_SUBANNOTATION[$start, \"I_SUBANNOTATION\"] CLASS_DESCRIPTOR ( annotation_element )* )
 				{
 				CommonTree root_2 = (CommonTree)adaptor.nil();
 				root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_SUBANNOTATION, (retval.start), "I_SUBANNOTATION"), root_2);
 				adaptor.addChild(root_2, stream_CLASS_DESCRIPTOR.nextNode());
-				// smaliParser.g:681:131: ( annotation_element )*
+				// smaliParser.g:701:131: ( annotation_element )*
 				while ( stream_annotation_element.hasNext() ) {
 					adaptor.addChild(root_2, stream_annotation_element.nextTree());
 				}
@@ -6301,54 +6618,54 @@
 
 
 	// $ANTLR start "subannotation"
-	// smaliParser.g:683:1: subannotation : SUBANNOTATION_DIRECTIVE CLASS_DESCRIPTOR ( annotation_element )* END_SUBANNOTATION_DIRECTIVE -> ^( I_SUBANNOTATION[$start, \"I_SUBANNOTATION\"] CLASS_DESCRIPTOR ( annotation_element )* ) ;
+	// smaliParser.g:703:1: subannotation : SUBANNOTATION_DIRECTIVE CLASS_DESCRIPTOR ( annotation_element )* END_SUBANNOTATION_DIRECTIVE -> ^( I_SUBANNOTATION[$start, \"I_SUBANNOTATION\"] CLASS_DESCRIPTOR ( annotation_element )* ) ;
 	public final smaliParser.subannotation_return subannotation() throws RecognitionException {
 		smaliParser.subannotation_return retval = new smaliParser.subannotation_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token SUBANNOTATION_DIRECTIVE159=null;
-		Token CLASS_DESCRIPTOR160=null;
-		Token END_SUBANNOTATION_DIRECTIVE162=null;
-		ParserRuleReturnScope annotation_element161 =null;
+		Token SUBANNOTATION_DIRECTIVE167=null;
+		Token CLASS_DESCRIPTOR168=null;
+		Token END_SUBANNOTATION_DIRECTIVE170=null;
+		ParserRuleReturnScope annotation_element169 =null;
 
-		CommonTree SUBANNOTATION_DIRECTIVE159_tree=null;
-		CommonTree CLASS_DESCRIPTOR160_tree=null;
-		CommonTree END_SUBANNOTATION_DIRECTIVE162_tree=null;
+		CommonTree SUBANNOTATION_DIRECTIVE167_tree=null;
+		CommonTree CLASS_DESCRIPTOR168_tree=null;
+		CommonTree END_SUBANNOTATION_DIRECTIVE170_tree=null;
 		RewriteRuleTokenStream stream_SUBANNOTATION_DIRECTIVE=new RewriteRuleTokenStream(adaptor,"token SUBANNOTATION_DIRECTIVE");
 		RewriteRuleTokenStream stream_CLASS_DESCRIPTOR=new RewriteRuleTokenStream(adaptor,"token CLASS_DESCRIPTOR");
 		RewriteRuleTokenStream stream_END_SUBANNOTATION_DIRECTIVE=new RewriteRuleTokenStream(adaptor,"token END_SUBANNOTATION_DIRECTIVE");
 		RewriteRuleSubtreeStream stream_annotation_element=new RewriteRuleSubtreeStream(adaptor,"rule annotation_element");
 
 		try {
-			// smaliParser.g:684:3: ( SUBANNOTATION_DIRECTIVE CLASS_DESCRIPTOR ( annotation_element )* END_SUBANNOTATION_DIRECTIVE -> ^( I_SUBANNOTATION[$start, \"I_SUBANNOTATION\"] CLASS_DESCRIPTOR ( annotation_element )* ) )
-			// smaliParser.g:684:5: SUBANNOTATION_DIRECTIVE CLASS_DESCRIPTOR ( annotation_element )* END_SUBANNOTATION_DIRECTIVE
+			// smaliParser.g:704:3: ( SUBANNOTATION_DIRECTIVE CLASS_DESCRIPTOR ( annotation_element )* END_SUBANNOTATION_DIRECTIVE -> ^( I_SUBANNOTATION[$start, \"I_SUBANNOTATION\"] CLASS_DESCRIPTOR ( annotation_element )* ) )
+			// smaliParser.g:704:5: SUBANNOTATION_DIRECTIVE CLASS_DESCRIPTOR ( annotation_element )* END_SUBANNOTATION_DIRECTIVE
 			{
-			SUBANNOTATION_DIRECTIVE159=(Token)match(input,SUBANNOTATION_DIRECTIVE,FOLLOW_SUBANNOTATION_DIRECTIVE_in_subannotation2818);  
-			stream_SUBANNOTATION_DIRECTIVE.add(SUBANNOTATION_DIRECTIVE159);
+			SUBANNOTATION_DIRECTIVE167=(Token)match(input,SUBANNOTATION_DIRECTIVE,FOLLOW_SUBANNOTATION_DIRECTIVE_in_subannotation2951);  
+			stream_SUBANNOTATION_DIRECTIVE.add(SUBANNOTATION_DIRECTIVE167);
 
-			CLASS_DESCRIPTOR160=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_subannotation2820);  
-			stream_CLASS_DESCRIPTOR.add(CLASS_DESCRIPTOR160);
+			CLASS_DESCRIPTOR168=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_subannotation2953);  
+			stream_CLASS_DESCRIPTOR.add(CLASS_DESCRIPTOR168);
 
-			// smaliParser.g:684:46: ( annotation_element )*
+			// smaliParser.g:704:46: ( annotation_element )*
 			loop28:
 			while (true) {
 				int alt28=2;
 				int LA28_0 = input.LA(1);
-				if ( (LA28_0==ACCESS_SPEC||LA28_0==ANNOTATION_VISIBILITY||LA28_0==BOOL_LITERAL||LA28_0==DOUBLE_LITERAL_OR_ID||LA28_0==FLOAT_LITERAL_OR_ID||(LA28_0 >= INSTRUCTION_FORMAT10t && LA28_0 <= INSTRUCTION_FORMAT10x_ODEX)||LA28_0==INSTRUCTION_FORMAT11x||LA28_0==INSTRUCTION_FORMAT12x_OR_ID||(LA28_0 >= INSTRUCTION_FORMAT21c_FIELD && LA28_0 <= INSTRUCTION_FORMAT21c_TYPE)||LA28_0==INSTRUCTION_FORMAT21t||(LA28_0 >= INSTRUCTION_FORMAT22c_FIELD && LA28_0 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA28_0 >= INSTRUCTION_FORMAT22s_OR_ID && LA28_0 <= INSTRUCTION_FORMAT22t)||LA28_0==INSTRUCTION_FORMAT23x||(LA28_0 >= INSTRUCTION_FORMAT31i_OR_ID && LA28_0 <= INSTRUCTION_FORMAT31t)||(LA28_0 >= INSTRUCTION_FORMAT35c_METHOD && LA28_0 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA28_0 >= INSTRUCTION_FORMAT45cc_METHOD && LA28_0 <= INSTRUCTION_FORMAT51l)||(LA28_0 >= NEGATIVE_INTEGER_LITERAL && LA28_0 <= NULL_LITERAL)||(LA28_0 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA28_0 <= PRIMITIVE_TYPE)||LA28_0==REGISTER||LA28_0==SIMPLE_NAME||(LA28_0 >= VERIFICATION_ERROR_TYPE && LA28_0 <= VOID_TYPE)) ) {
+				if ( (LA28_0==ACCESS_SPEC||LA28_0==ANNOTATION_VISIBILITY||LA28_0==BOOL_LITERAL||LA28_0==DOUBLE_LITERAL_OR_ID||LA28_0==FLOAT_LITERAL_OR_ID||(LA28_0 >= INSTRUCTION_FORMAT10t && LA28_0 <= INSTRUCTION_FORMAT10x_ODEX)||LA28_0==INSTRUCTION_FORMAT11x||LA28_0==INSTRUCTION_FORMAT12x_OR_ID||(LA28_0 >= INSTRUCTION_FORMAT21c_FIELD && LA28_0 <= INSTRUCTION_FORMAT21c_TYPE)||LA28_0==INSTRUCTION_FORMAT21t||(LA28_0 >= INSTRUCTION_FORMAT22c_FIELD && LA28_0 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA28_0 >= INSTRUCTION_FORMAT22s_OR_ID && LA28_0 <= INSTRUCTION_FORMAT22t)||LA28_0==INSTRUCTION_FORMAT23x||(LA28_0 >= INSTRUCTION_FORMAT31i_OR_ID && LA28_0 <= INSTRUCTION_FORMAT31t)||(LA28_0 >= INSTRUCTION_FORMAT35c_CALL_SITE && LA28_0 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA28_0 >= INSTRUCTION_FORMAT45cc_METHOD && LA28_0 <= INSTRUCTION_FORMAT51l)||(LA28_0 >= METHOD_HANDLE_TYPE_FIELD && LA28_0 <= NULL_LITERAL)||(LA28_0 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA28_0 <= PRIMITIVE_TYPE)||LA28_0==REGISTER||LA28_0==SIMPLE_NAME||(LA28_0 >= VERIFICATION_ERROR_TYPE && LA28_0 <= VOID_TYPE)) ) {
 					alt28=1;
 				}
 
 				switch (alt28) {
 				case 1 :
-					// smaliParser.g:684:46: annotation_element
+					// smaliParser.g:704:46: annotation_element
 					{
-					pushFollow(FOLLOW_annotation_element_in_subannotation2822);
-					annotation_element161=annotation_element();
+					pushFollow(FOLLOW_annotation_element_in_subannotation2955);
+					annotation_element169=annotation_element();
 					state._fsp--;
 
-					stream_annotation_element.add(annotation_element161.getTree());
+					stream_annotation_element.add(annotation_element169.getTree());
 					}
 					break;
 
@@ -6357,11 +6674,11 @@
 				}
 			}
 
-			END_SUBANNOTATION_DIRECTIVE162=(Token)match(input,END_SUBANNOTATION_DIRECTIVE,FOLLOW_END_SUBANNOTATION_DIRECTIVE_in_subannotation2825);  
-			stream_END_SUBANNOTATION_DIRECTIVE.add(END_SUBANNOTATION_DIRECTIVE162);
+			END_SUBANNOTATION_DIRECTIVE170=(Token)match(input,END_SUBANNOTATION_DIRECTIVE,FOLLOW_END_SUBANNOTATION_DIRECTIVE_in_subannotation2958);  
+			stream_END_SUBANNOTATION_DIRECTIVE.add(END_SUBANNOTATION_DIRECTIVE170);
 
 			// AST REWRITE
-			// elements: CLASS_DESCRIPTOR, annotation_element
+			// elements: annotation_element, CLASS_DESCRIPTOR
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -6371,14 +6688,14 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 685:5: -> ^( I_SUBANNOTATION[$start, \"I_SUBANNOTATION\"] CLASS_DESCRIPTOR ( annotation_element )* )
+			// 705:5: -> ^( I_SUBANNOTATION[$start, \"I_SUBANNOTATION\"] CLASS_DESCRIPTOR ( annotation_element )* )
 			{
-				// smaliParser.g:685:8: ^( I_SUBANNOTATION[$start, \"I_SUBANNOTATION\"] CLASS_DESCRIPTOR ( annotation_element )* )
+				// smaliParser.g:705:8: ^( I_SUBANNOTATION[$start, \"I_SUBANNOTATION\"] CLASS_DESCRIPTOR ( annotation_element )* )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_SUBANNOTATION, (retval.start), "I_SUBANNOTATION"), root_1);
 				adaptor.addChild(root_1, stream_CLASS_DESCRIPTOR.nextNode());
-				// smaliParser.g:685:70: ( annotation_element )*
+				// smaliParser.g:705:70: ( annotation_element )*
 				while ( stream_annotation_element.hasNext() ) {
 					adaptor.addChild(root_1, stream_annotation_element.nextTree());
 				}
@@ -6421,32 +6738,32 @@
 
 
 	// $ANTLR start "enum_literal"
-	// smaliParser.g:688:1: enum_literal : ENUM_DIRECTIVE field_reference -> ^( I_ENCODED_ENUM field_reference ) ;
+	// smaliParser.g:708:1: enum_literal : ENUM_DIRECTIVE field_reference -> ^( I_ENCODED_ENUM field_reference ) ;
 	public final smaliParser.enum_literal_return enum_literal() throws RecognitionException {
 		smaliParser.enum_literal_return retval = new smaliParser.enum_literal_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token ENUM_DIRECTIVE163=null;
-		ParserRuleReturnScope field_reference164 =null;
+		Token ENUM_DIRECTIVE171=null;
+		ParserRuleReturnScope field_reference172 =null;
 
-		CommonTree ENUM_DIRECTIVE163_tree=null;
+		CommonTree ENUM_DIRECTIVE171_tree=null;
 		RewriteRuleTokenStream stream_ENUM_DIRECTIVE=new RewriteRuleTokenStream(adaptor,"token ENUM_DIRECTIVE");
 		RewriteRuleSubtreeStream stream_field_reference=new RewriteRuleSubtreeStream(adaptor,"rule field_reference");
 
 		try {
-			// smaliParser.g:689:3: ( ENUM_DIRECTIVE field_reference -> ^( I_ENCODED_ENUM field_reference ) )
-			// smaliParser.g:689:5: ENUM_DIRECTIVE field_reference
+			// smaliParser.g:709:3: ( ENUM_DIRECTIVE field_reference -> ^( I_ENCODED_ENUM field_reference ) )
+			// smaliParser.g:709:5: ENUM_DIRECTIVE field_reference
 			{
-			ENUM_DIRECTIVE163=(Token)match(input,ENUM_DIRECTIVE,FOLLOW_ENUM_DIRECTIVE_in_enum_literal2852);  
-			stream_ENUM_DIRECTIVE.add(ENUM_DIRECTIVE163);
+			ENUM_DIRECTIVE171=(Token)match(input,ENUM_DIRECTIVE,FOLLOW_ENUM_DIRECTIVE_in_enum_literal2985);  
+			stream_ENUM_DIRECTIVE.add(ENUM_DIRECTIVE171);
 
-			pushFollow(FOLLOW_field_reference_in_enum_literal2854);
-			field_reference164=field_reference();
+			pushFollow(FOLLOW_field_reference_in_enum_literal2987);
+			field_reference172=field_reference();
 			state._fsp--;
 
-			stream_field_reference.add(field_reference164.getTree());
+			stream_field_reference.add(field_reference172.getTree());
 			// AST REWRITE
 			// elements: field_reference
 			// token labels: 
@@ -6458,9 +6775,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 690:3: -> ^( I_ENCODED_ENUM field_reference )
+			// 710:3: -> ^( I_ENCODED_ENUM field_reference )
 			{
-				// smaliParser.g:690:6: ^( I_ENCODED_ENUM field_reference )
+				// smaliParser.g:710:6: ^( I_ENCODED_ENUM field_reference )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_ENCODED_ENUM, "I_ENCODED_ENUM"), root_1);
@@ -6502,28 +6819,28 @@
 
 
 	// $ANTLR start "type_field_method_literal"
-	// smaliParser.g:692:1: type_field_method_literal : ( reference_type_descriptor | ( ( reference_type_descriptor ARROW )? ( member_name COLON nonvoid_type_descriptor -> ^( I_ENCODED_FIELD ( reference_type_descriptor )? member_name nonvoid_type_descriptor ) | member_name method_prototype -> ^( I_ENCODED_METHOD ( reference_type_descriptor )? member_name method_prototype ) ) ) | PRIMITIVE_TYPE | VOID_TYPE );
+	// smaliParser.g:712:1: type_field_method_literal : ( reference_type_descriptor | ( ( reference_type_descriptor ARROW )? ( member_name COLON nonvoid_type_descriptor -> ^( I_ENCODED_FIELD ( reference_type_descriptor )? member_name nonvoid_type_descriptor ) | member_name method_prototype -> ^( I_ENCODED_METHOD ( reference_type_descriptor )? member_name method_prototype ) ) ) | PRIMITIVE_TYPE | VOID_TYPE );
 	public final smaliParser.type_field_method_literal_return type_field_method_literal() throws RecognitionException {
 		smaliParser.type_field_method_literal_return retval = new smaliParser.type_field_method_literal_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token ARROW167=null;
-		Token COLON169=null;
-		Token PRIMITIVE_TYPE173=null;
-		Token VOID_TYPE174=null;
-		ParserRuleReturnScope reference_type_descriptor165 =null;
-		ParserRuleReturnScope reference_type_descriptor166 =null;
-		ParserRuleReturnScope member_name168 =null;
-		ParserRuleReturnScope nonvoid_type_descriptor170 =null;
-		ParserRuleReturnScope member_name171 =null;
-		ParserRuleReturnScope method_prototype172 =null;
+		Token ARROW175=null;
+		Token COLON177=null;
+		Token PRIMITIVE_TYPE181=null;
+		Token VOID_TYPE182=null;
+		ParserRuleReturnScope reference_type_descriptor173 =null;
+		ParserRuleReturnScope reference_type_descriptor174 =null;
+		ParserRuleReturnScope member_name176 =null;
+		ParserRuleReturnScope nonvoid_type_descriptor178 =null;
+		ParserRuleReturnScope member_name179 =null;
+		ParserRuleReturnScope method_prototype180 =null;
 
-		CommonTree ARROW167_tree=null;
-		CommonTree COLON169_tree=null;
-		CommonTree PRIMITIVE_TYPE173_tree=null;
-		CommonTree VOID_TYPE174_tree=null;
+		CommonTree ARROW175_tree=null;
+		CommonTree COLON177_tree=null;
+		CommonTree PRIMITIVE_TYPE181_tree=null;
+		CommonTree VOID_TYPE182_tree=null;
 		RewriteRuleTokenStream stream_ARROW=new RewriteRuleTokenStream(adaptor,"token ARROW");
 		RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
 		RewriteRuleSubtreeStream stream_method_prototype=new RewriteRuleSubtreeStream(adaptor,"rule method_prototype");
@@ -6532,13 +6849,13 @@
 		RewriteRuleSubtreeStream stream_reference_type_descriptor=new RewriteRuleSubtreeStream(adaptor,"rule reference_type_descriptor");
 
 		try {
-			// smaliParser.g:693:3: ( reference_type_descriptor | ( ( reference_type_descriptor ARROW )? ( member_name COLON nonvoid_type_descriptor -> ^( I_ENCODED_FIELD ( reference_type_descriptor )? member_name nonvoid_type_descriptor ) | member_name method_prototype -> ^( I_ENCODED_METHOD ( reference_type_descriptor )? member_name method_prototype ) ) ) | PRIMITIVE_TYPE | VOID_TYPE )
+			// smaliParser.g:713:3: ( reference_type_descriptor | ( ( reference_type_descriptor ARROW )? ( member_name COLON nonvoid_type_descriptor -> ^( I_ENCODED_FIELD ( reference_type_descriptor )? member_name nonvoid_type_descriptor ) | member_name method_prototype -> ^( I_ENCODED_METHOD ( reference_type_descriptor )? member_name method_prototype ) ) ) | PRIMITIVE_TYPE | VOID_TYPE )
 			int alt31=4;
 			switch ( input.LA(1) ) {
 			case CLASS_DESCRIPTOR:
 				{
 				int LA31_1 = input.LA(2);
-				if ( (LA31_1==EOF||(LA31_1 >= ACCESS_SPEC && LA31_1 <= ANNOTATION_VISIBILITY)||LA31_1==BOOL_LITERAL||(LA31_1 >= CLASS_DIRECTIVE && LA31_1 <= CLOSE_BRACE)||LA31_1==COMMA||(LA31_1 >= DOUBLE_LITERAL_OR_ID && LA31_1 <= END_ANNOTATION_DIRECTIVE)||LA31_1==END_FIELD_DIRECTIVE||LA31_1==END_SUBANNOTATION_DIRECTIVE||LA31_1==FIELD_DIRECTIVE||(LA31_1 >= FLOAT_LITERAL_OR_ID && LA31_1 <= IMPLEMENTS_DIRECTIVE)||(LA31_1 >= INSTRUCTION_FORMAT10t && LA31_1 <= INSTRUCTION_FORMAT10x_ODEX)||LA31_1==INSTRUCTION_FORMAT11x||LA31_1==INSTRUCTION_FORMAT12x_OR_ID||(LA31_1 >= INSTRUCTION_FORMAT21c_FIELD && LA31_1 <= INSTRUCTION_FORMAT21c_TYPE)||LA31_1==INSTRUCTION_FORMAT21t||(LA31_1 >= INSTRUCTION_FORMAT22c_FIELD && LA31_1 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA31_1 >= INSTRUCTION_FORMAT22s_OR_ID && LA31_1 <= INSTRUCTION_FORMAT22t)||LA31_1==INSTRUCTION_FORMAT23x||(LA31_1 >= INSTRUCTION_FORMAT31i_OR_ID && LA31_1 <= INSTRUCTION_FORMAT31t)||(LA31_1 >= INSTRUCTION_FORMAT35c_METHOD && LA31_1 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA31_1 >= INSTRUCTION_FORMAT45cc_METHOD && LA31_1 <= INSTRUCTION_FORMAT51l)||(LA31_1 >= METHOD_DIRECTIVE && LA31_1 <= NULL_LITERAL)||(LA31_1 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA31_1 <= PRIMITIVE_TYPE)||LA31_1==REGISTER||(LA31_1 >= SIMPLE_NAME && LA31_1 <= SOURCE_DIRECTIVE)||(LA31_1 >= SUPER_DIRECTIVE && LA31_1 <= VOID_TYPE)) ) {
+				if ( (LA31_1==EOF||(LA31_1 >= ACCESS_SPEC && LA31_1 <= ANNOTATION_VISIBILITY)||LA31_1==BOOL_LITERAL||(LA31_1 >= CLASS_DIRECTIVE && LA31_1 <= CLOSE_PAREN)||LA31_1==COMMA||(LA31_1 >= DOUBLE_LITERAL_OR_ID && LA31_1 <= END_ANNOTATION_DIRECTIVE)||LA31_1==END_FIELD_DIRECTIVE||LA31_1==END_SUBANNOTATION_DIRECTIVE||LA31_1==FIELD_DIRECTIVE||(LA31_1 >= FLOAT_LITERAL_OR_ID && LA31_1 <= IMPLEMENTS_DIRECTIVE)||(LA31_1 >= INSTRUCTION_FORMAT10t && LA31_1 <= INSTRUCTION_FORMAT10x_ODEX)||LA31_1==INSTRUCTION_FORMAT11x||LA31_1==INSTRUCTION_FORMAT12x_OR_ID||(LA31_1 >= INSTRUCTION_FORMAT21c_FIELD && LA31_1 <= INSTRUCTION_FORMAT21c_TYPE)||LA31_1==INSTRUCTION_FORMAT21t||(LA31_1 >= INSTRUCTION_FORMAT22c_FIELD && LA31_1 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA31_1 >= INSTRUCTION_FORMAT22s_OR_ID && LA31_1 <= INSTRUCTION_FORMAT22t)||LA31_1==INSTRUCTION_FORMAT23x||(LA31_1 >= INSTRUCTION_FORMAT31i_OR_ID && LA31_1 <= INSTRUCTION_FORMAT31t)||(LA31_1 >= INSTRUCTION_FORMAT35c_CALL_SITE && LA31_1 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA31_1 >= INSTRUCTION_FORMAT45cc_METHOD && LA31_1 <= INSTRUCTION_FORMAT51l)||(LA31_1 >= METHOD_DIRECTIVE && LA31_1 <= NULL_LITERAL)||(LA31_1 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA31_1 <= PRIMITIVE_TYPE)||LA31_1==REGISTER||(LA31_1 >= SIMPLE_NAME && LA31_1 <= SOURCE_DIRECTIVE)||(LA31_1 >= SUPER_DIRECTIVE && LA31_1 <= VOID_TYPE)) ) {
 					alt31=1;
 				}
 				else if ( (LA31_1==ARROW) ) {
@@ -6564,7 +6881,7 @@
 				int LA31_2 = input.LA(2);
 				if ( (LA31_2==CLASS_DESCRIPTOR||LA31_2==PRIMITIVE_TYPE) ) {
 					int LA31_7 = input.LA(3);
-					if ( (LA31_7==EOF||(LA31_7 >= ACCESS_SPEC && LA31_7 <= ANNOTATION_VISIBILITY)||LA31_7==BOOL_LITERAL||(LA31_7 >= CLASS_DIRECTIVE && LA31_7 <= CLOSE_BRACE)||LA31_7==COMMA||(LA31_7 >= DOUBLE_LITERAL_OR_ID && LA31_7 <= END_ANNOTATION_DIRECTIVE)||LA31_7==END_FIELD_DIRECTIVE||LA31_7==END_SUBANNOTATION_DIRECTIVE||LA31_7==FIELD_DIRECTIVE||(LA31_7 >= FLOAT_LITERAL_OR_ID && LA31_7 <= IMPLEMENTS_DIRECTIVE)||(LA31_7 >= INSTRUCTION_FORMAT10t && LA31_7 <= INSTRUCTION_FORMAT10x_ODEX)||LA31_7==INSTRUCTION_FORMAT11x||LA31_7==INSTRUCTION_FORMAT12x_OR_ID||(LA31_7 >= INSTRUCTION_FORMAT21c_FIELD && LA31_7 <= INSTRUCTION_FORMAT21c_TYPE)||LA31_7==INSTRUCTION_FORMAT21t||(LA31_7 >= INSTRUCTION_FORMAT22c_FIELD && LA31_7 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA31_7 >= INSTRUCTION_FORMAT22s_OR_ID && LA31_7 <= INSTRUCTION_FORMAT22t)||LA31_7==INSTRUCTION_FORMAT23x||(LA31_7 >= INSTRUCTION_FORMAT31i_OR_ID && LA31_7 <= INSTRUCTION_FORMAT31t)||(LA31_7 >= INSTRUCTION_FORMAT35c_METHOD && LA31_7 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA31_7 >= INSTRUCTION_FORMAT45cc_METHOD && LA31_7 <= INSTRUCTION_FORMAT51l)||(LA31_7 >= METHOD_DIRECTIVE && LA31_7 <= NULL_LITERAL)||(LA31_7 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA31_7 <= PRIMITIVE_TYPE)||LA31_7==REGISTER||(LA31_7 >= SIMPLE_NAME && LA31_7 <= SOURCE_DIRECTIVE)||(LA31_7 >= SUPER_DIRECTIVE && LA31_7 <= VOID_TYPE)) ) {
+					if ( (LA31_7==EOF||(LA31_7 >= ACCESS_SPEC && LA31_7 <= ANNOTATION_VISIBILITY)||LA31_7==BOOL_LITERAL||(LA31_7 >= CLASS_DIRECTIVE && LA31_7 <= CLOSE_PAREN)||LA31_7==COMMA||(LA31_7 >= DOUBLE_LITERAL_OR_ID && LA31_7 <= END_ANNOTATION_DIRECTIVE)||LA31_7==END_FIELD_DIRECTIVE||LA31_7==END_SUBANNOTATION_DIRECTIVE||LA31_7==FIELD_DIRECTIVE||(LA31_7 >= FLOAT_LITERAL_OR_ID && LA31_7 <= IMPLEMENTS_DIRECTIVE)||(LA31_7 >= INSTRUCTION_FORMAT10t && LA31_7 <= INSTRUCTION_FORMAT10x_ODEX)||LA31_7==INSTRUCTION_FORMAT11x||LA31_7==INSTRUCTION_FORMAT12x_OR_ID||(LA31_7 >= INSTRUCTION_FORMAT21c_FIELD && LA31_7 <= INSTRUCTION_FORMAT21c_TYPE)||LA31_7==INSTRUCTION_FORMAT21t||(LA31_7 >= INSTRUCTION_FORMAT22c_FIELD && LA31_7 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA31_7 >= INSTRUCTION_FORMAT22s_OR_ID && LA31_7 <= INSTRUCTION_FORMAT22t)||LA31_7==INSTRUCTION_FORMAT23x||(LA31_7 >= INSTRUCTION_FORMAT31i_OR_ID && LA31_7 <= INSTRUCTION_FORMAT31t)||(LA31_7 >= INSTRUCTION_FORMAT35c_CALL_SITE && LA31_7 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA31_7 >= INSTRUCTION_FORMAT45cc_METHOD && LA31_7 <= INSTRUCTION_FORMAT51l)||(LA31_7 >= METHOD_DIRECTIVE && LA31_7 <= NULL_LITERAL)||(LA31_7 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA31_7 <= PRIMITIVE_TYPE)||LA31_7==REGISTER||(LA31_7 >= SIMPLE_NAME && LA31_7 <= SOURCE_DIRECTIVE)||(LA31_7 >= SUPER_DIRECTIVE && LA31_7 <= VOID_TYPE)) ) {
 						alt31=1;
 					}
 					else if ( (LA31_7==ARROW) ) {
@@ -6613,6 +6930,8 @@
 			case INSTRUCTION_FORMAT12x_OR_ID:
 			case INSTRUCTION_FORMAT21c_FIELD:
 			case INSTRUCTION_FORMAT21c_FIELD_ODEX:
+			case INSTRUCTION_FORMAT21c_METHOD_HANDLE:
+			case INSTRUCTION_FORMAT21c_METHOD_TYPE:
 			case INSTRUCTION_FORMAT21c_STRING:
 			case INSTRUCTION_FORMAT21c_TYPE:
 			case INSTRUCTION_FORMAT21t:
@@ -6625,8 +6944,10 @@
 			case INSTRUCTION_FORMAT23x:
 			case INSTRUCTION_FORMAT31i_OR_ID:
 			case INSTRUCTION_FORMAT31t:
+			case INSTRUCTION_FORMAT35c_CALL_SITE:
 			case INSTRUCTION_FORMAT35c_METHOD:
 			case INSTRUCTION_FORMAT35c_METHOD_ODEX:
+			case INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE:
 			case INSTRUCTION_FORMAT35c_TYPE:
 			case INSTRUCTION_FORMAT35mi_METHOD:
 			case INSTRUCTION_FORMAT35ms_METHOD:
@@ -6634,6 +6955,8 @@
 			case INSTRUCTION_FORMAT4rcc_METHOD:
 			case INSTRUCTION_FORMAT51l:
 			case MEMBER_NAME:
+			case METHOD_HANDLE_TYPE_FIELD:
+			case METHOD_HANDLE_TYPE_METHOD:
 			case NEGATIVE_INTEGER_LITERAL:
 			case NULL_LITERAL:
 			case PARAM_LIST_OR_ID_PRIMITIVE_TYPE:
@@ -6651,7 +6974,7 @@
 				if ( (LA31_4==COLON||LA31_4==OPEN_PAREN) ) {
 					alt31=2;
 				}
-				else if ( (LA31_4==EOF||(LA31_4 >= ACCESS_SPEC && LA31_4 <= ANNOTATION_VISIBILITY)||LA31_4==BOOL_LITERAL||(LA31_4 >= CLASS_DIRECTIVE && LA31_4 <= CLOSE_BRACE)||LA31_4==COMMA||(LA31_4 >= DOUBLE_LITERAL_OR_ID && LA31_4 <= END_ANNOTATION_DIRECTIVE)||LA31_4==END_FIELD_DIRECTIVE||LA31_4==END_SUBANNOTATION_DIRECTIVE||LA31_4==FIELD_DIRECTIVE||(LA31_4 >= FLOAT_LITERAL_OR_ID && LA31_4 <= IMPLEMENTS_DIRECTIVE)||(LA31_4 >= INSTRUCTION_FORMAT10t && LA31_4 <= INSTRUCTION_FORMAT10x_ODEX)||LA31_4==INSTRUCTION_FORMAT11x||LA31_4==INSTRUCTION_FORMAT12x_OR_ID||(LA31_4 >= INSTRUCTION_FORMAT21c_FIELD && LA31_4 <= INSTRUCTION_FORMAT21c_TYPE)||LA31_4==INSTRUCTION_FORMAT21t||(LA31_4 >= INSTRUCTION_FORMAT22c_FIELD && LA31_4 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA31_4 >= INSTRUCTION_FORMAT22s_OR_ID && LA31_4 <= INSTRUCTION_FORMAT22t)||LA31_4==INSTRUCTION_FORMAT23x||(LA31_4 >= INSTRUCTION_FORMAT31i_OR_ID && LA31_4 <= INSTRUCTION_FORMAT31t)||(LA31_4 >= INSTRUCTION_FORMAT35c_METHOD && LA31_4 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA31_4 >= INSTRUCTION_FORMAT45cc_METHOD && LA31_4 <= INSTRUCTION_FORMAT51l)||(LA31_4 >= METHOD_DIRECTIVE && LA31_4 <= NULL_LITERAL)||(LA31_4 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA31_4 <= PRIMITIVE_TYPE)||LA31_4==REGISTER||(LA31_4 >= SIMPLE_NAME && LA31_4 <= SOURCE_DIRECTIVE)||(LA31_4 >= SUPER_DIRECTIVE && LA31_4 <= VOID_TYPE)) ) {
+				else if ( (LA31_4==EOF||(LA31_4 >= ACCESS_SPEC && LA31_4 <= ANNOTATION_VISIBILITY)||LA31_4==BOOL_LITERAL||(LA31_4 >= CLASS_DIRECTIVE && LA31_4 <= CLOSE_PAREN)||LA31_4==COMMA||(LA31_4 >= DOUBLE_LITERAL_OR_ID && LA31_4 <= END_ANNOTATION_DIRECTIVE)||LA31_4==END_FIELD_DIRECTIVE||LA31_4==END_SUBANNOTATION_DIRECTIVE||LA31_4==FIELD_DIRECTIVE||(LA31_4 >= FLOAT_LITERAL_OR_ID && LA31_4 <= IMPLEMENTS_DIRECTIVE)||(LA31_4 >= INSTRUCTION_FORMAT10t && LA31_4 <= INSTRUCTION_FORMAT10x_ODEX)||LA31_4==INSTRUCTION_FORMAT11x||LA31_4==INSTRUCTION_FORMAT12x_OR_ID||(LA31_4 >= INSTRUCTION_FORMAT21c_FIELD && LA31_4 <= INSTRUCTION_FORMAT21c_TYPE)||LA31_4==INSTRUCTION_FORMAT21t||(LA31_4 >= INSTRUCTION_FORMAT22c_FIELD && LA31_4 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA31_4 >= INSTRUCTION_FORMAT22s_OR_ID && LA31_4 <= INSTRUCTION_FORMAT22t)||LA31_4==INSTRUCTION_FORMAT23x||(LA31_4 >= INSTRUCTION_FORMAT31i_OR_ID && LA31_4 <= INSTRUCTION_FORMAT31t)||(LA31_4 >= INSTRUCTION_FORMAT35c_CALL_SITE && LA31_4 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA31_4 >= INSTRUCTION_FORMAT45cc_METHOD && LA31_4 <= INSTRUCTION_FORMAT51l)||(LA31_4 >= METHOD_DIRECTIVE && LA31_4 <= NULL_LITERAL)||(LA31_4 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA31_4 <= PRIMITIVE_TYPE)||LA31_4==REGISTER||(LA31_4 >= SIMPLE_NAME && LA31_4 <= SOURCE_DIRECTIVE)||(LA31_4 >= SUPER_DIRECTIVE && LA31_4 <= VOID_TYPE)) ) {
 					alt31=3;
 				}
 
@@ -6675,7 +6998,7 @@
 				if ( (LA31_5==COLON||LA31_5==OPEN_PAREN) ) {
 					alt31=2;
 				}
-				else if ( (LA31_5==EOF||(LA31_5 >= ACCESS_SPEC && LA31_5 <= ANNOTATION_VISIBILITY)||LA31_5==BOOL_LITERAL||(LA31_5 >= CLASS_DIRECTIVE && LA31_5 <= CLOSE_BRACE)||LA31_5==COMMA||(LA31_5 >= DOUBLE_LITERAL_OR_ID && LA31_5 <= END_ANNOTATION_DIRECTIVE)||LA31_5==END_FIELD_DIRECTIVE||LA31_5==END_SUBANNOTATION_DIRECTIVE||LA31_5==FIELD_DIRECTIVE||(LA31_5 >= FLOAT_LITERAL_OR_ID && LA31_5 <= IMPLEMENTS_DIRECTIVE)||(LA31_5 >= INSTRUCTION_FORMAT10t && LA31_5 <= INSTRUCTION_FORMAT10x_ODEX)||LA31_5==INSTRUCTION_FORMAT11x||LA31_5==INSTRUCTION_FORMAT12x_OR_ID||(LA31_5 >= INSTRUCTION_FORMAT21c_FIELD && LA31_5 <= INSTRUCTION_FORMAT21c_TYPE)||LA31_5==INSTRUCTION_FORMAT21t||(LA31_5 >= INSTRUCTION_FORMAT22c_FIELD && LA31_5 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA31_5 >= INSTRUCTION_FORMAT22s_OR_ID && LA31_5 <= INSTRUCTION_FORMAT22t)||LA31_5==INSTRUCTION_FORMAT23x||(LA31_5 >= INSTRUCTION_FORMAT31i_OR_ID && LA31_5 <= INSTRUCTION_FORMAT31t)||(LA31_5 >= INSTRUCTION_FORMAT35c_METHOD && LA31_5 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA31_5 >= INSTRUCTION_FORMAT45cc_METHOD && LA31_5 <= INSTRUCTION_FORMAT51l)||(LA31_5 >= METHOD_DIRECTIVE && LA31_5 <= NULL_LITERAL)||(LA31_5 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA31_5 <= PRIMITIVE_TYPE)||LA31_5==REGISTER||(LA31_5 >= SIMPLE_NAME && LA31_5 <= SOURCE_DIRECTIVE)||(LA31_5 >= SUPER_DIRECTIVE && LA31_5 <= VOID_TYPE)) ) {
+				else if ( (LA31_5==EOF||(LA31_5 >= ACCESS_SPEC && LA31_5 <= ANNOTATION_VISIBILITY)||LA31_5==BOOL_LITERAL||(LA31_5 >= CLASS_DIRECTIVE && LA31_5 <= CLOSE_PAREN)||LA31_5==COMMA||(LA31_5 >= DOUBLE_LITERAL_OR_ID && LA31_5 <= END_ANNOTATION_DIRECTIVE)||LA31_5==END_FIELD_DIRECTIVE||LA31_5==END_SUBANNOTATION_DIRECTIVE||LA31_5==FIELD_DIRECTIVE||(LA31_5 >= FLOAT_LITERAL_OR_ID && LA31_5 <= IMPLEMENTS_DIRECTIVE)||(LA31_5 >= INSTRUCTION_FORMAT10t && LA31_5 <= INSTRUCTION_FORMAT10x_ODEX)||LA31_5==INSTRUCTION_FORMAT11x||LA31_5==INSTRUCTION_FORMAT12x_OR_ID||(LA31_5 >= INSTRUCTION_FORMAT21c_FIELD && LA31_5 <= INSTRUCTION_FORMAT21c_TYPE)||LA31_5==INSTRUCTION_FORMAT21t||(LA31_5 >= INSTRUCTION_FORMAT22c_FIELD && LA31_5 <= INSTRUCTION_FORMAT22cs_FIELD)||(LA31_5 >= INSTRUCTION_FORMAT22s_OR_ID && LA31_5 <= INSTRUCTION_FORMAT22t)||LA31_5==INSTRUCTION_FORMAT23x||(LA31_5 >= INSTRUCTION_FORMAT31i_OR_ID && LA31_5 <= INSTRUCTION_FORMAT31t)||(LA31_5 >= INSTRUCTION_FORMAT35c_CALL_SITE && LA31_5 <= INSTRUCTION_FORMAT35ms_METHOD)||(LA31_5 >= INSTRUCTION_FORMAT45cc_METHOD && LA31_5 <= INSTRUCTION_FORMAT51l)||(LA31_5 >= METHOD_DIRECTIVE && LA31_5 <= NULL_LITERAL)||(LA31_5 >= PARAM_LIST_OR_ID_PRIMITIVE_TYPE && LA31_5 <= PRIMITIVE_TYPE)||LA31_5==REGISTER||(LA31_5 >= SIMPLE_NAME && LA31_5 <= SOURCE_DIRECTIVE)||(LA31_5 >= SUPER_DIRECTIVE && LA31_5 <= VOID_TYPE)) ) {
 					alt31=4;
 				}
 
@@ -6700,26 +7023,26 @@
 			}
 			switch (alt31) {
 				case 1 :
-					// smaliParser.g:693:5: reference_type_descriptor
+					// smaliParser.g:713:5: reference_type_descriptor
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_reference_type_descriptor_in_type_field_method_literal2874);
-					reference_type_descriptor165=reference_type_descriptor();
+					pushFollow(FOLLOW_reference_type_descriptor_in_type_field_method_literal3007);
+					reference_type_descriptor173=reference_type_descriptor();
 					state._fsp--;
 
-					adaptor.addChild(root_0, reference_type_descriptor165.getTree());
+					adaptor.addChild(root_0, reference_type_descriptor173.getTree());
 
 					}
 					break;
 				case 2 :
-					// smaliParser.g:694:5: ( ( reference_type_descriptor ARROW )? ( member_name COLON nonvoid_type_descriptor -> ^( I_ENCODED_FIELD ( reference_type_descriptor )? member_name nonvoid_type_descriptor ) | member_name method_prototype -> ^( I_ENCODED_METHOD ( reference_type_descriptor )? member_name method_prototype ) ) )
+					// smaliParser.g:714:5: ( ( reference_type_descriptor ARROW )? ( member_name COLON nonvoid_type_descriptor -> ^( I_ENCODED_FIELD ( reference_type_descriptor )? member_name nonvoid_type_descriptor ) | member_name method_prototype -> ^( I_ENCODED_METHOD ( reference_type_descriptor )? member_name method_prototype ) ) )
 					{
-					// smaliParser.g:694:5: ( ( reference_type_descriptor ARROW )? ( member_name COLON nonvoid_type_descriptor -> ^( I_ENCODED_FIELD ( reference_type_descriptor )? member_name nonvoid_type_descriptor ) | member_name method_prototype -> ^( I_ENCODED_METHOD ( reference_type_descriptor )? member_name method_prototype ) ) )
-					// smaliParser.g:694:7: ( reference_type_descriptor ARROW )? ( member_name COLON nonvoid_type_descriptor -> ^( I_ENCODED_FIELD ( reference_type_descriptor )? member_name nonvoid_type_descriptor ) | member_name method_prototype -> ^( I_ENCODED_METHOD ( reference_type_descriptor )? member_name method_prototype ) )
+					// smaliParser.g:714:5: ( ( reference_type_descriptor ARROW )? ( member_name COLON nonvoid_type_descriptor -> ^( I_ENCODED_FIELD ( reference_type_descriptor )? member_name nonvoid_type_descriptor ) | member_name method_prototype -> ^( I_ENCODED_METHOD ( reference_type_descriptor )? member_name method_prototype ) ) )
+					// smaliParser.g:714:7: ( reference_type_descriptor ARROW )? ( member_name COLON nonvoid_type_descriptor -> ^( I_ENCODED_FIELD ( reference_type_descriptor )? member_name nonvoid_type_descriptor ) | member_name method_prototype -> ^( I_ENCODED_METHOD ( reference_type_descriptor )? member_name method_prototype ) )
 					{
-					// smaliParser.g:694:7: ( reference_type_descriptor ARROW )?
+					// smaliParser.g:714:7: ( reference_type_descriptor ARROW )?
 					int alt29=2;
 					int LA29_0 = input.LA(1);
 					if ( (LA29_0==ARRAY_TYPE_PREFIX||LA29_0==CLASS_DESCRIPTOR) ) {
@@ -6727,43 +7050,43 @@
 					}
 					switch (alt29) {
 						case 1 :
-							// smaliParser.g:694:8: reference_type_descriptor ARROW
+							// smaliParser.g:714:8: reference_type_descriptor ARROW
 							{
-							pushFollow(FOLLOW_reference_type_descriptor_in_type_field_method_literal2883);
-							reference_type_descriptor166=reference_type_descriptor();
+							pushFollow(FOLLOW_reference_type_descriptor_in_type_field_method_literal3016);
+							reference_type_descriptor174=reference_type_descriptor();
 							state._fsp--;
 
-							stream_reference_type_descriptor.add(reference_type_descriptor166.getTree());
-							ARROW167=(Token)match(input,ARROW,FOLLOW_ARROW_in_type_field_method_literal2885);  
-							stream_ARROW.add(ARROW167);
+							stream_reference_type_descriptor.add(reference_type_descriptor174.getTree());
+							ARROW175=(Token)match(input,ARROW,FOLLOW_ARROW_in_type_field_method_literal3018);  
+							stream_ARROW.add(ARROW175);
 
 							}
 							break;
 
 					}
 
-					// smaliParser.g:695:7: ( member_name COLON nonvoid_type_descriptor -> ^( I_ENCODED_FIELD ( reference_type_descriptor )? member_name nonvoid_type_descriptor ) | member_name method_prototype -> ^( I_ENCODED_METHOD ( reference_type_descriptor )? member_name method_prototype ) )
+					// smaliParser.g:715:7: ( member_name COLON nonvoid_type_descriptor -> ^( I_ENCODED_FIELD ( reference_type_descriptor )? member_name nonvoid_type_descriptor ) | member_name method_prototype -> ^( I_ENCODED_METHOD ( reference_type_descriptor )? member_name method_prototype ) )
 					int alt30=2;
 					alt30 = dfa30.predict(input);
 					switch (alt30) {
 						case 1 :
-							// smaliParser.g:695:9: member_name COLON nonvoid_type_descriptor
+							// smaliParser.g:715:9: member_name COLON nonvoid_type_descriptor
 							{
-							pushFollow(FOLLOW_member_name_in_type_field_method_literal2897);
-							member_name168=member_name();
+							pushFollow(FOLLOW_member_name_in_type_field_method_literal3030);
+							member_name176=member_name();
 							state._fsp--;
 
-							stream_member_name.add(member_name168.getTree());
-							COLON169=(Token)match(input,COLON,FOLLOW_COLON_in_type_field_method_literal2899);  
-							stream_COLON.add(COLON169);
+							stream_member_name.add(member_name176.getTree());
+							COLON177=(Token)match(input,COLON,FOLLOW_COLON_in_type_field_method_literal3032);  
+							stream_COLON.add(COLON177);
 
-							pushFollow(FOLLOW_nonvoid_type_descriptor_in_type_field_method_literal2901);
-							nonvoid_type_descriptor170=nonvoid_type_descriptor();
+							pushFollow(FOLLOW_nonvoid_type_descriptor_in_type_field_method_literal3034);
+							nonvoid_type_descriptor178=nonvoid_type_descriptor();
 							state._fsp--;
 
-							stream_nonvoid_type_descriptor.add(nonvoid_type_descriptor170.getTree());
+							stream_nonvoid_type_descriptor.add(nonvoid_type_descriptor178.getTree());
 							// AST REWRITE
-							// elements: reference_type_descriptor, member_name, nonvoid_type_descriptor
+							// elements: member_name, reference_type_descriptor, nonvoid_type_descriptor
 							// token labels: 
 							// rule labels: retval
 							// token list labels: 
@@ -6773,13 +7096,13 @@
 							RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 							root_0 = (CommonTree)adaptor.nil();
-							// 695:51: -> ^( I_ENCODED_FIELD ( reference_type_descriptor )? member_name nonvoid_type_descriptor )
+							// 715:51: -> ^( I_ENCODED_FIELD ( reference_type_descriptor )? member_name nonvoid_type_descriptor )
 							{
-								// smaliParser.g:695:54: ^( I_ENCODED_FIELD ( reference_type_descriptor )? member_name nonvoid_type_descriptor )
+								// smaliParser.g:715:54: ^( I_ENCODED_FIELD ( reference_type_descriptor )? member_name nonvoid_type_descriptor )
 								{
 								CommonTree root_1 = (CommonTree)adaptor.nil();
 								root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_ENCODED_FIELD, "I_ENCODED_FIELD"), root_1);
-								// smaliParser.g:695:72: ( reference_type_descriptor )?
+								// smaliParser.g:715:72: ( reference_type_descriptor )?
 								if ( stream_reference_type_descriptor.hasNext() ) {
 									adaptor.addChild(root_1, stream_reference_type_descriptor.nextTree());
 								}
@@ -6798,20 +7121,20 @@
 							}
 							break;
 						case 2 :
-							// smaliParser.g:696:9: member_name method_prototype
+							// smaliParser.g:716:9: member_name method_prototype
 							{
-							pushFollow(FOLLOW_member_name_in_type_field_method_literal2924);
-							member_name171=member_name();
+							pushFollow(FOLLOW_member_name_in_type_field_method_literal3057);
+							member_name179=member_name();
 							state._fsp--;
 
-							stream_member_name.add(member_name171.getTree());
-							pushFollow(FOLLOW_method_prototype_in_type_field_method_literal2926);
-							method_prototype172=method_prototype();
+							stream_member_name.add(member_name179.getTree());
+							pushFollow(FOLLOW_method_prototype_in_type_field_method_literal3059);
+							method_prototype180=method_prototype();
 							state._fsp--;
 
-							stream_method_prototype.add(method_prototype172.getTree());
+							stream_method_prototype.add(method_prototype180.getTree());
 							// AST REWRITE
-							// elements: member_name, method_prototype, reference_type_descriptor
+							// elements: method_prototype, reference_type_descriptor, member_name
 							// token labels: 
 							// rule labels: retval
 							// token list labels: 
@@ -6821,13 +7144,13 @@
 							RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 							root_0 = (CommonTree)adaptor.nil();
-							// 696:38: -> ^( I_ENCODED_METHOD ( reference_type_descriptor )? member_name method_prototype )
+							// 716:38: -> ^( I_ENCODED_METHOD ( reference_type_descriptor )? member_name method_prototype )
 							{
-								// smaliParser.g:696:41: ^( I_ENCODED_METHOD ( reference_type_descriptor )? member_name method_prototype )
+								// smaliParser.g:716:41: ^( I_ENCODED_METHOD ( reference_type_descriptor )? member_name method_prototype )
 								{
 								CommonTree root_1 = (CommonTree)adaptor.nil();
 								root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_ENCODED_METHOD, "I_ENCODED_METHOD"), root_1);
-								// smaliParser.g:696:60: ( reference_type_descriptor )?
+								// smaliParser.g:716:60: ( reference_type_descriptor )?
 								if ( stream_reference_type_descriptor.hasNext() ) {
 									adaptor.addChild(root_1, stream_reference_type_descriptor.nextTree());
 								}
@@ -6853,26 +7176,26 @@
 					}
 					break;
 				case 3 :
-					// smaliParser.g:699:5: PRIMITIVE_TYPE
+					// smaliParser.g:719:5: PRIMITIVE_TYPE
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					PRIMITIVE_TYPE173=(Token)match(input,PRIMITIVE_TYPE,FOLLOW_PRIMITIVE_TYPE_in_type_field_method_literal2959); 
-					PRIMITIVE_TYPE173_tree = (CommonTree)adaptor.create(PRIMITIVE_TYPE173);
-					adaptor.addChild(root_0, PRIMITIVE_TYPE173_tree);
+					PRIMITIVE_TYPE181=(Token)match(input,PRIMITIVE_TYPE,FOLLOW_PRIMITIVE_TYPE_in_type_field_method_literal3092); 
+					PRIMITIVE_TYPE181_tree = (CommonTree)adaptor.create(PRIMITIVE_TYPE181);
+					adaptor.addChild(root_0, PRIMITIVE_TYPE181_tree);
 
 					}
 					break;
 				case 4 :
-					// smaliParser.g:700:5: VOID_TYPE
+					// smaliParser.g:720:5: VOID_TYPE
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					VOID_TYPE174=(Token)match(input,VOID_TYPE,FOLLOW_VOID_TYPE_in_type_field_method_literal2965); 
-					VOID_TYPE174_tree = (CommonTree)adaptor.create(VOID_TYPE174);
-					adaptor.addChild(root_0, VOID_TYPE174_tree);
+					VOID_TYPE182=(Token)match(input,VOID_TYPE,FOLLOW_VOID_TYPE_in_type_field_method_literal3098); 
+					VOID_TYPE182_tree = (CommonTree)adaptor.create(VOID_TYPE182);
+					adaptor.addChild(root_0, VOID_TYPE182_tree);
 
 					}
 					break;
@@ -6897,71 +7220,113 @@
 	// $ANTLR end "type_field_method_literal"
 
 
-	public static class method_reference_return extends ParserRuleReturnScope {
+	public static class call_site_reference_return extends ParserRuleReturnScope {
 		CommonTree tree;
 		@Override
 		public CommonTree getTree() { return tree; }
 	};
 
 
-	// $ANTLR start "method_reference"
-	// smaliParser.g:702:1: method_reference : ( reference_type_descriptor ARROW )? member_name method_prototype -> ( reference_type_descriptor )? member_name method_prototype ;
-	public final smaliParser.method_reference_return method_reference() throws RecognitionException {
-		smaliParser.method_reference_return retval = new smaliParser.method_reference_return();
+	// $ANTLR start "call_site_reference"
+	// smaliParser.g:722:1: call_site_reference : simple_name OPEN_PAREN STRING_LITERAL COMMA method_prototype ( COMMA literal )* CLOSE_PAREN AT method_reference -> ^( I_CALL_SITE_REFERENCE simple_name STRING_LITERAL method_prototype ^( I_CALL_SITE_EXTRA_ARGUMENTS ( literal )* ) method_reference ) ;
+	public final smaliParser.call_site_reference_return call_site_reference() throws RecognitionException {
+		smaliParser.call_site_reference_return retval = new smaliParser.call_site_reference_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token ARROW176=null;
-		ParserRuleReturnScope reference_type_descriptor175 =null;
-		ParserRuleReturnScope member_name177 =null;
-		ParserRuleReturnScope method_prototype178 =null;
+		Token OPEN_PAREN184=null;
+		Token STRING_LITERAL185=null;
+		Token COMMA186=null;
+		Token COMMA188=null;
+		Token CLOSE_PAREN190=null;
+		Token AT191=null;
+		ParserRuleReturnScope simple_name183 =null;
+		ParserRuleReturnScope method_prototype187 =null;
+		ParserRuleReturnScope literal189 =null;
+		ParserRuleReturnScope method_reference192 =null;
 
-		CommonTree ARROW176_tree=null;
-		RewriteRuleTokenStream stream_ARROW=new RewriteRuleTokenStream(adaptor,"token ARROW");
+		CommonTree OPEN_PAREN184_tree=null;
+		CommonTree STRING_LITERAL185_tree=null;
+		CommonTree COMMA186_tree=null;
+		CommonTree COMMA188_tree=null;
+		CommonTree CLOSE_PAREN190_tree=null;
+		CommonTree AT191_tree=null;
+		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
+		RewriteRuleTokenStream stream_OPEN_PAREN=new RewriteRuleTokenStream(adaptor,"token OPEN_PAREN");
+		RewriteRuleTokenStream stream_AT=new RewriteRuleTokenStream(adaptor,"token AT");
+		RewriteRuleTokenStream stream_STRING_LITERAL=new RewriteRuleTokenStream(adaptor,"token STRING_LITERAL");
+		RewriteRuleTokenStream stream_CLOSE_PAREN=new RewriteRuleTokenStream(adaptor,"token CLOSE_PAREN");
+		RewriteRuleSubtreeStream stream_method_reference=new RewriteRuleSubtreeStream(adaptor,"rule method_reference");
+		RewriteRuleSubtreeStream stream_simple_name=new RewriteRuleSubtreeStream(adaptor,"rule simple_name");
 		RewriteRuleSubtreeStream stream_method_prototype=new RewriteRuleSubtreeStream(adaptor,"rule method_prototype");
-		RewriteRuleSubtreeStream stream_member_name=new RewriteRuleSubtreeStream(adaptor,"rule member_name");
-		RewriteRuleSubtreeStream stream_reference_type_descriptor=new RewriteRuleSubtreeStream(adaptor,"rule reference_type_descriptor");
+		RewriteRuleSubtreeStream stream_literal=new RewriteRuleSubtreeStream(adaptor,"rule literal");
 
 		try {
-			// smaliParser.g:703:3: ( ( reference_type_descriptor ARROW )? member_name method_prototype -> ( reference_type_descriptor )? member_name method_prototype )
-			// smaliParser.g:703:5: ( reference_type_descriptor ARROW )? member_name method_prototype
+			// smaliParser.g:723:3: ( simple_name OPEN_PAREN STRING_LITERAL COMMA method_prototype ( COMMA literal )* CLOSE_PAREN AT method_reference -> ^( I_CALL_SITE_REFERENCE simple_name STRING_LITERAL method_prototype ^( I_CALL_SITE_EXTRA_ARGUMENTS ( literal )* ) method_reference ) )
+			// smaliParser.g:723:5: simple_name OPEN_PAREN STRING_LITERAL COMMA method_prototype ( COMMA literal )* CLOSE_PAREN AT method_reference
 			{
-			// smaliParser.g:703:5: ( reference_type_descriptor ARROW )?
-			int alt32=2;
-			int LA32_0 = input.LA(1);
-			if ( (LA32_0==ARRAY_TYPE_PREFIX||LA32_0==CLASS_DESCRIPTOR) ) {
-				alt32=1;
-			}
-			switch (alt32) {
+			pushFollow(FOLLOW_simple_name_in_call_site_reference3108);
+			simple_name183=simple_name();
+			state._fsp--;
+
+			stream_simple_name.add(simple_name183.getTree());
+			OPEN_PAREN184=(Token)match(input,OPEN_PAREN,FOLLOW_OPEN_PAREN_in_call_site_reference3110);  
+			stream_OPEN_PAREN.add(OPEN_PAREN184);
+
+			STRING_LITERAL185=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_call_site_reference3112);  
+			stream_STRING_LITERAL.add(STRING_LITERAL185);
+
+			COMMA186=(Token)match(input,COMMA,FOLLOW_COMMA_in_call_site_reference3114);  
+			stream_COMMA.add(COMMA186);
+
+			pushFollow(FOLLOW_method_prototype_in_call_site_reference3116);
+			method_prototype187=method_prototype();
+			state._fsp--;
+
+			stream_method_prototype.add(method_prototype187.getTree());
+			// smaliParser.g:723:66: ( COMMA literal )*
+			loop32:
+			while (true) {
+				int alt32=2;
+				int LA32_0 = input.LA(1);
+				if ( (LA32_0==COMMA) ) {
+					alt32=1;
+				}
+
+				switch (alt32) {
 				case 1 :
-					// smaliParser.g:703:6: reference_type_descriptor ARROW
+					// smaliParser.g:723:67: COMMA literal
 					{
-					pushFollow(FOLLOW_reference_type_descriptor_in_method_reference2976);
-					reference_type_descriptor175=reference_type_descriptor();
+					COMMA188=(Token)match(input,COMMA,FOLLOW_COMMA_in_call_site_reference3119);  
+					stream_COMMA.add(COMMA188);
+
+					pushFollow(FOLLOW_literal_in_call_site_reference3121);
+					literal189=literal();
 					state._fsp--;
 
-					stream_reference_type_descriptor.add(reference_type_descriptor175.getTree());
-					ARROW176=(Token)match(input,ARROW,FOLLOW_ARROW_in_method_reference2978);  
-					stream_ARROW.add(ARROW176);
-
+					stream_literal.add(literal189.getTree());
 					}
 					break;
 
+				default :
+					break loop32;
+				}
 			}
 
-			pushFollow(FOLLOW_member_name_in_method_reference2982);
-			member_name177=member_name();
+			CLOSE_PAREN190=(Token)match(input,CLOSE_PAREN,FOLLOW_CLOSE_PAREN_in_call_site_reference3125);  
+			stream_CLOSE_PAREN.add(CLOSE_PAREN190);
+
+			AT191=(Token)match(input,AT,FOLLOW_AT_in_call_site_reference3127);  
+			stream_AT.add(AT191);
+
+			pushFollow(FOLLOW_method_reference_in_call_site_reference3129);
+			method_reference192=method_reference();
 			state._fsp--;
 
-			stream_member_name.add(member_name177.getTree());
-			pushFollow(FOLLOW_method_prototype_in_method_reference2984);
-			method_prototype178=method_prototype();
-			state._fsp--;
-
-			stream_method_prototype.add(method_prototype178.getTree());
+			stream_method_reference.add(method_reference192.getTree());
 			// AST REWRITE
-			// elements: method_prototype, reference_type_descriptor, member_name
+			// elements: STRING_LITERAL, simple_name, method_reference, method_prototype, literal
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -6971,9 +7336,402 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 704:3: -> ( reference_type_descriptor )? member_name method_prototype
+			// 724:5: -> ^( I_CALL_SITE_REFERENCE simple_name STRING_LITERAL method_prototype ^( I_CALL_SITE_EXTRA_ARGUMENTS ( literal )* ) method_reference )
 			{
-				// smaliParser.g:704:6: ( reference_type_descriptor )?
+				// smaliParser.g:724:8: ^( I_CALL_SITE_REFERENCE simple_name STRING_LITERAL method_prototype ^( I_CALL_SITE_EXTRA_ARGUMENTS ( literal )* ) method_reference )
+				{
+				CommonTree root_1 = (CommonTree)adaptor.nil();
+				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_CALL_SITE_REFERENCE, "I_CALL_SITE_REFERENCE"), root_1);
+				adaptor.addChild(root_1, stream_simple_name.nextTree());
+				adaptor.addChild(root_1, stream_STRING_LITERAL.nextNode());
+				adaptor.addChild(root_1, stream_method_prototype.nextTree());
+				// smaliParser.g:724:76: ^( I_CALL_SITE_EXTRA_ARGUMENTS ( literal )* )
+				{
+				CommonTree root_2 = (CommonTree)adaptor.nil();
+				root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_CALL_SITE_EXTRA_ARGUMENTS, "I_CALL_SITE_EXTRA_ARGUMENTS"), root_2);
+				// smaliParser.g:724:106: ( literal )*
+				while ( stream_literal.hasNext() ) {
+					adaptor.addChild(root_2, stream_literal.nextTree());
+				}
+				stream_literal.reset();
+
+				adaptor.addChild(root_1, root_2);
+				}
+
+				adaptor.addChild(root_1, stream_method_reference.nextTree());
+				adaptor.addChild(root_0, root_1);
+				}
+
+			}
+
+
+			retval.tree = root_0;
+
+			}
+
+			retval.stop = input.LT(-1);
+
+			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+		}
+		catch (RecognitionException re) {
+			reportError(re);
+			recover(input,re);
+			retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+		}
+		finally {
+			// do for sure before leaving
+		}
+		return retval;
+	}
+	// $ANTLR end "call_site_reference"
+
+
+	public static class method_handle_reference_return extends ParserRuleReturnScope {
+		CommonTree tree;
+		@Override
+		public CommonTree getTree() { return tree; }
+	};
+
+
+	// $ANTLR start "method_handle_reference"
+	// smaliParser.g:727:1: method_handle_reference : ( METHOD_HANDLE_TYPE_FIELD AT field_reference -> METHOD_HANDLE_TYPE_FIELD field_reference | METHOD_HANDLE_TYPE_METHOD AT method_reference -> METHOD_HANDLE_TYPE_METHOD method_reference | INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE AT method_reference -> INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE method_reference );
+	public final smaliParser.method_handle_reference_return method_handle_reference() throws RecognitionException {
+		smaliParser.method_handle_reference_return retval = new smaliParser.method_handle_reference_return();
+		retval.start = input.LT(1);
+
+		CommonTree root_0 = null;
+
+		Token METHOD_HANDLE_TYPE_FIELD193=null;
+		Token AT194=null;
+		Token METHOD_HANDLE_TYPE_METHOD196=null;
+		Token AT197=null;
+		Token INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE199=null;
+		Token AT200=null;
+		ParserRuleReturnScope field_reference195 =null;
+		ParserRuleReturnScope method_reference198 =null;
+		ParserRuleReturnScope method_reference201 =null;
+
+		CommonTree METHOD_HANDLE_TYPE_FIELD193_tree=null;
+		CommonTree AT194_tree=null;
+		CommonTree METHOD_HANDLE_TYPE_METHOD196_tree=null;
+		CommonTree AT197_tree=null;
+		CommonTree INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE199_tree=null;
+		CommonTree AT200_tree=null;
+		RewriteRuleTokenStream stream_AT=new RewriteRuleTokenStream(adaptor,"token AT");
+		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE");
+		RewriteRuleTokenStream stream_METHOD_HANDLE_TYPE_FIELD=new RewriteRuleTokenStream(adaptor,"token METHOD_HANDLE_TYPE_FIELD");
+		RewriteRuleTokenStream stream_METHOD_HANDLE_TYPE_METHOD=new RewriteRuleTokenStream(adaptor,"token METHOD_HANDLE_TYPE_METHOD");
+		RewriteRuleSubtreeStream stream_method_reference=new RewriteRuleSubtreeStream(adaptor,"rule method_reference");
+		RewriteRuleSubtreeStream stream_field_reference=new RewriteRuleSubtreeStream(adaptor,"rule field_reference");
+
+		try {
+			// smaliParser.g:728:3: ( METHOD_HANDLE_TYPE_FIELD AT field_reference -> METHOD_HANDLE_TYPE_FIELD field_reference | METHOD_HANDLE_TYPE_METHOD AT method_reference -> METHOD_HANDLE_TYPE_METHOD method_reference | INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE AT method_reference -> INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE method_reference )
+			int alt33=3;
+			switch ( input.LA(1) ) {
+			case METHOD_HANDLE_TYPE_FIELD:
+				{
+				alt33=1;
+				}
+				break;
+			case METHOD_HANDLE_TYPE_METHOD:
+				{
+				alt33=2;
+				}
+				break;
+			case INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE:
+				{
+				alt33=3;
+				}
+				break;
+			default:
+				NoViableAltException nvae =
+					new NoViableAltException("", 33, 0, input);
+				throw nvae;
+			}
+			switch (alt33) {
+				case 1 :
+					// smaliParser.g:728:5: METHOD_HANDLE_TYPE_FIELD AT field_reference
+					{
+					METHOD_HANDLE_TYPE_FIELD193=(Token)match(input,METHOD_HANDLE_TYPE_FIELD,FOLLOW_METHOD_HANDLE_TYPE_FIELD_in_method_handle_reference3173);  
+					stream_METHOD_HANDLE_TYPE_FIELD.add(METHOD_HANDLE_TYPE_FIELD193);
+
+					AT194=(Token)match(input,AT,FOLLOW_AT_in_method_handle_reference3175);  
+					stream_AT.add(AT194);
+
+					pushFollow(FOLLOW_field_reference_in_method_handle_reference3177);
+					field_reference195=field_reference();
+					state._fsp--;
+
+					stream_field_reference.add(field_reference195.getTree());
+					// AST REWRITE
+					// elements: METHOD_HANDLE_TYPE_FIELD, field_reference
+					// token labels: 
+					// rule labels: retval
+					// token list labels: 
+					// rule list labels: 
+					// wildcard labels: 
+					retval.tree = root_0;
+					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
+
+					root_0 = (CommonTree)adaptor.nil();
+					// 728:49: -> METHOD_HANDLE_TYPE_FIELD field_reference
+					{
+						adaptor.addChild(root_0, stream_METHOD_HANDLE_TYPE_FIELD.nextNode());
+						adaptor.addChild(root_0, stream_field_reference.nextTree());
+					}
+
+
+					retval.tree = root_0;
+
+					}
+					break;
+				case 2 :
+					// smaliParser.g:729:5: METHOD_HANDLE_TYPE_METHOD AT method_reference
+					{
+					METHOD_HANDLE_TYPE_METHOD196=(Token)match(input,METHOD_HANDLE_TYPE_METHOD,FOLLOW_METHOD_HANDLE_TYPE_METHOD_in_method_handle_reference3189);  
+					stream_METHOD_HANDLE_TYPE_METHOD.add(METHOD_HANDLE_TYPE_METHOD196);
+
+					AT197=(Token)match(input,AT,FOLLOW_AT_in_method_handle_reference3191);  
+					stream_AT.add(AT197);
+
+					pushFollow(FOLLOW_method_reference_in_method_handle_reference3193);
+					method_reference198=method_reference();
+					state._fsp--;
+
+					stream_method_reference.add(method_reference198.getTree());
+					// AST REWRITE
+					// elements: METHOD_HANDLE_TYPE_METHOD, method_reference
+					// token labels: 
+					// rule labels: retval
+					// token list labels: 
+					// rule list labels: 
+					// wildcard labels: 
+					retval.tree = root_0;
+					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
+
+					root_0 = (CommonTree)adaptor.nil();
+					// 729:51: -> METHOD_HANDLE_TYPE_METHOD method_reference
+					{
+						adaptor.addChild(root_0, stream_METHOD_HANDLE_TYPE_METHOD.nextNode());
+						adaptor.addChild(root_0, stream_method_reference.nextTree());
+					}
+
+
+					retval.tree = root_0;
+
+					}
+					break;
+				case 3 :
+					// smaliParser.g:730:5: INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE AT method_reference
+					{
+					INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE199=(Token)match(input,INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE,FOLLOW_INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE_in_method_handle_reference3205);  
+					stream_INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE.add(INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE199);
+
+					AT200=(Token)match(input,AT,FOLLOW_AT_in_method_handle_reference3207);  
+					stream_AT.add(AT200);
+
+					pushFollow(FOLLOW_method_reference_in_method_handle_reference3209);
+					method_reference201=method_reference();
+					state._fsp--;
+
+					stream_method_reference.add(method_reference201.getTree());
+					// AST REWRITE
+					// elements: INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE, method_reference
+					// token labels: 
+					// rule labels: retval
+					// token list labels: 
+					// rule list labels: 
+					// wildcard labels: 
+					retval.tree = root_0;
+					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
+
+					root_0 = (CommonTree)adaptor.nil();
+					// 730:76: -> INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE method_reference
+					{
+						adaptor.addChild(root_0, stream_INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE.nextNode());
+						adaptor.addChild(root_0, stream_method_reference.nextTree());
+					}
+
+
+					retval.tree = root_0;
+
+					}
+					break;
+
+			}
+			retval.stop = input.LT(-1);
+
+			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+		}
+		catch (RecognitionException re) {
+			reportError(re);
+			recover(input,re);
+			retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+		}
+		finally {
+			// do for sure before leaving
+		}
+		return retval;
+	}
+	// $ANTLR end "method_handle_reference"
+
+
+	public static class method_handle_literal_return extends ParserRuleReturnScope {
+		CommonTree tree;
+		@Override
+		public CommonTree getTree() { return tree; }
+	};
+
+
+	// $ANTLR start "method_handle_literal"
+	// smaliParser.g:732:1: method_handle_literal : method_handle_reference -> ^( I_ENCODED_METHOD_HANDLE method_handle_reference ) ;
+	public final smaliParser.method_handle_literal_return method_handle_literal() throws RecognitionException {
+		smaliParser.method_handle_literal_return retval = new smaliParser.method_handle_literal_return();
+		retval.start = input.LT(1);
+
+		CommonTree root_0 = null;
+
+		ParserRuleReturnScope method_handle_reference202 =null;
+
+		RewriteRuleSubtreeStream stream_method_handle_reference=new RewriteRuleSubtreeStream(adaptor,"rule method_handle_reference");
+
+		try {
+			// smaliParser.g:733:3: ( method_handle_reference -> ^( I_ENCODED_METHOD_HANDLE method_handle_reference ) )
+			// smaliParser.g:733:5: method_handle_reference
+			{
+			pushFollow(FOLLOW_method_handle_reference_in_method_handle_literal3225);
+			method_handle_reference202=method_handle_reference();
+			state._fsp--;
+
+			stream_method_handle_reference.add(method_handle_reference202.getTree());
+			// AST REWRITE
+			// elements: method_handle_reference
+			// token labels: 
+			// rule labels: retval
+			// token list labels: 
+			// rule list labels: 
+			// wildcard labels: 
+			retval.tree = root_0;
+			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
+
+			root_0 = (CommonTree)adaptor.nil();
+			// 734:3: -> ^( I_ENCODED_METHOD_HANDLE method_handle_reference )
+			{
+				// smaliParser.g:734:6: ^( I_ENCODED_METHOD_HANDLE method_handle_reference )
+				{
+				CommonTree root_1 = (CommonTree)adaptor.nil();
+				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_ENCODED_METHOD_HANDLE, "I_ENCODED_METHOD_HANDLE"), root_1);
+				adaptor.addChild(root_1, stream_method_handle_reference.nextTree());
+				adaptor.addChild(root_0, root_1);
+				}
+
+			}
+
+
+			retval.tree = root_0;
+
+			}
+
+			retval.stop = input.LT(-1);
+
+			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+		}
+		catch (RecognitionException re) {
+			reportError(re);
+			recover(input,re);
+			retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+		}
+		finally {
+			// do for sure before leaving
+		}
+		return retval;
+	}
+	// $ANTLR end "method_handle_literal"
+
+
+	public static class method_reference_return extends ParserRuleReturnScope {
+		CommonTree tree;
+		@Override
+		public CommonTree getTree() { return tree; }
+	};
+
+
+	// $ANTLR start "method_reference"
+	// smaliParser.g:736:1: method_reference : ( reference_type_descriptor ARROW )? member_name method_prototype -> ( reference_type_descriptor )? member_name method_prototype ;
+	public final smaliParser.method_reference_return method_reference() throws RecognitionException {
+		smaliParser.method_reference_return retval = new smaliParser.method_reference_return();
+		retval.start = input.LT(1);
+
+		CommonTree root_0 = null;
+
+		Token ARROW204=null;
+		ParserRuleReturnScope reference_type_descriptor203 =null;
+		ParserRuleReturnScope member_name205 =null;
+		ParserRuleReturnScope method_prototype206 =null;
+
+		CommonTree ARROW204_tree=null;
+		RewriteRuleTokenStream stream_ARROW=new RewriteRuleTokenStream(adaptor,"token ARROW");
+		RewriteRuleSubtreeStream stream_method_prototype=new RewriteRuleSubtreeStream(adaptor,"rule method_prototype");
+		RewriteRuleSubtreeStream stream_member_name=new RewriteRuleSubtreeStream(adaptor,"rule member_name");
+		RewriteRuleSubtreeStream stream_reference_type_descriptor=new RewriteRuleSubtreeStream(adaptor,"rule reference_type_descriptor");
+
+		try {
+			// smaliParser.g:737:3: ( ( reference_type_descriptor ARROW )? member_name method_prototype -> ( reference_type_descriptor )? member_name method_prototype )
+			// smaliParser.g:737:5: ( reference_type_descriptor ARROW )? member_name method_prototype
+			{
+			// smaliParser.g:737:5: ( reference_type_descriptor ARROW )?
+			int alt34=2;
+			int LA34_0 = input.LA(1);
+			if ( (LA34_0==ARRAY_TYPE_PREFIX||LA34_0==CLASS_DESCRIPTOR) ) {
+				alt34=1;
+			}
+			switch (alt34) {
+				case 1 :
+					// smaliParser.g:737:6: reference_type_descriptor ARROW
+					{
+					pushFollow(FOLLOW_reference_type_descriptor_in_method_reference3246);
+					reference_type_descriptor203=reference_type_descriptor();
+					state._fsp--;
+
+					stream_reference_type_descriptor.add(reference_type_descriptor203.getTree());
+					ARROW204=(Token)match(input,ARROW,FOLLOW_ARROW_in_method_reference3248);  
+					stream_ARROW.add(ARROW204);
+
+					}
+					break;
+
+			}
+
+			pushFollow(FOLLOW_member_name_in_method_reference3252);
+			member_name205=member_name();
+			state._fsp--;
+
+			stream_member_name.add(member_name205.getTree());
+			pushFollow(FOLLOW_method_prototype_in_method_reference3254);
+			method_prototype206=method_prototype();
+			state._fsp--;
+
+			stream_method_prototype.add(method_prototype206.getTree());
+			// AST REWRITE
+			// elements: member_name, reference_type_descriptor, method_prototype
+			// token labels: 
+			// rule labels: retval
+			// token list labels: 
+			// rule list labels: 
+			// wildcard labels: 
+			retval.tree = root_0;
+			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
+
+			root_0 = (CommonTree)adaptor.nil();
+			// 738:3: -> ( reference_type_descriptor )? member_name method_prototype
+			{
+				// smaliParser.g:738:6: ( reference_type_descriptor )?
 				if ( stream_reference_type_descriptor.hasNext() ) {
 					adaptor.addChild(root_0, stream_reference_type_descriptor.nextTree());
 				}
@@ -7015,21 +7773,21 @@
 
 
 	// $ANTLR start "field_reference"
-	// smaliParser.g:706:1: field_reference : ( reference_type_descriptor ARROW )? member_name COLON nonvoid_type_descriptor -> ( reference_type_descriptor )? member_name nonvoid_type_descriptor ;
+	// smaliParser.g:740:1: field_reference : ( reference_type_descriptor ARROW )? member_name COLON nonvoid_type_descriptor -> ( reference_type_descriptor )? member_name nonvoid_type_descriptor ;
 	public final smaliParser.field_reference_return field_reference() throws RecognitionException {
 		smaliParser.field_reference_return retval = new smaliParser.field_reference_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token ARROW180=null;
-		Token COLON182=null;
-		ParserRuleReturnScope reference_type_descriptor179 =null;
-		ParserRuleReturnScope member_name181 =null;
-		ParserRuleReturnScope nonvoid_type_descriptor183 =null;
+		Token ARROW208=null;
+		Token COLON210=null;
+		ParserRuleReturnScope reference_type_descriptor207 =null;
+		ParserRuleReturnScope member_name209 =null;
+		ParserRuleReturnScope nonvoid_type_descriptor211 =null;
 
-		CommonTree ARROW180_tree=null;
-		CommonTree COLON182_tree=null;
+		CommonTree ARROW208_tree=null;
+		CommonTree COLON210_tree=null;
 		RewriteRuleTokenStream stream_ARROW=new RewriteRuleTokenStream(adaptor,"token ARROW");
 		RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
 		RewriteRuleSubtreeStream stream_nonvoid_type_descriptor=new RewriteRuleSubtreeStream(adaptor,"rule nonvoid_type_descriptor");
@@ -7037,47 +7795,47 @@
 		RewriteRuleSubtreeStream stream_reference_type_descriptor=new RewriteRuleSubtreeStream(adaptor,"rule reference_type_descriptor");
 
 		try {
-			// smaliParser.g:707:3: ( ( reference_type_descriptor ARROW )? member_name COLON nonvoid_type_descriptor -> ( reference_type_descriptor )? member_name nonvoid_type_descriptor )
-			// smaliParser.g:707:5: ( reference_type_descriptor ARROW )? member_name COLON nonvoid_type_descriptor
+			// smaliParser.g:741:3: ( ( reference_type_descriptor ARROW )? member_name COLON nonvoid_type_descriptor -> ( reference_type_descriptor )? member_name nonvoid_type_descriptor )
+			// smaliParser.g:741:5: ( reference_type_descriptor ARROW )? member_name COLON nonvoid_type_descriptor
 			{
-			// smaliParser.g:707:5: ( reference_type_descriptor ARROW )?
-			int alt33=2;
-			int LA33_0 = input.LA(1);
-			if ( (LA33_0==ARRAY_TYPE_PREFIX||LA33_0==CLASS_DESCRIPTOR) ) {
-				alt33=1;
+			// smaliParser.g:741:5: ( reference_type_descriptor ARROW )?
+			int alt35=2;
+			int LA35_0 = input.LA(1);
+			if ( (LA35_0==ARRAY_TYPE_PREFIX||LA35_0==CLASS_DESCRIPTOR) ) {
+				alt35=1;
 			}
-			switch (alt33) {
+			switch (alt35) {
 				case 1 :
-					// smaliParser.g:707:6: reference_type_descriptor ARROW
+					// smaliParser.g:741:6: reference_type_descriptor ARROW
 					{
-					pushFollow(FOLLOW_reference_type_descriptor_in_field_reference3006);
-					reference_type_descriptor179=reference_type_descriptor();
+					pushFollow(FOLLOW_reference_type_descriptor_in_field_reference3276);
+					reference_type_descriptor207=reference_type_descriptor();
 					state._fsp--;
 
-					stream_reference_type_descriptor.add(reference_type_descriptor179.getTree());
-					ARROW180=(Token)match(input,ARROW,FOLLOW_ARROW_in_field_reference3008);  
-					stream_ARROW.add(ARROW180);
+					stream_reference_type_descriptor.add(reference_type_descriptor207.getTree());
+					ARROW208=(Token)match(input,ARROW,FOLLOW_ARROW_in_field_reference3278);  
+					stream_ARROW.add(ARROW208);
 
 					}
 					break;
 
 			}
 
-			pushFollow(FOLLOW_member_name_in_field_reference3012);
-			member_name181=member_name();
+			pushFollow(FOLLOW_member_name_in_field_reference3282);
+			member_name209=member_name();
 			state._fsp--;
 
-			stream_member_name.add(member_name181.getTree());
-			COLON182=(Token)match(input,COLON,FOLLOW_COLON_in_field_reference3014);  
-			stream_COLON.add(COLON182);
+			stream_member_name.add(member_name209.getTree());
+			COLON210=(Token)match(input,COLON,FOLLOW_COLON_in_field_reference3284);  
+			stream_COLON.add(COLON210);
 
-			pushFollow(FOLLOW_nonvoid_type_descriptor_in_field_reference3016);
-			nonvoid_type_descriptor183=nonvoid_type_descriptor();
+			pushFollow(FOLLOW_nonvoid_type_descriptor_in_field_reference3286);
+			nonvoid_type_descriptor211=nonvoid_type_descriptor();
 			state._fsp--;
 
-			stream_nonvoid_type_descriptor.add(nonvoid_type_descriptor183.getTree());
+			stream_nonvoid_type_descriptor.add(nonvoid_type_descriptor211.getTree());
 			// AST REWRITE
-			// elements: reference_type_descriptor, nonvoid_type_descriptor, member_name
+			// elements: reference_type_descriptor, member_name, nonvoid_type_descriptor
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -7087,9 +7845,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 708:3: -> ( reference_type_descriptor )? member_name nonvoid_type_descriptor
+			// 742:3: -> ( reference_type_descriptor )? member_name nonvoid_type_descriptor
 			{
-				// smaliParser.g:708:6: ( reference_type_descriptor )?
+				// smaliParser.g:742:6: ( reference_type_descriptor )?
 				if ( stream_reference_type_descriptor.hasNext() ) {
 					adaptor.addChild(root_0, stream_reference_type_descriptor.nextTree());
 				}
@@ -7131,32 +7889,32 @@
 
 
 	// $ANTLR start "label"
-	// smaliParser.g:710:1: label : COLON simple_name -> ^( I_LABEL[$COLON, \"I_LABEL\"] simple_name ) ;
+	// smaliParser.g:744:1: label : COLON simple_name -> ^( I_LABEL[$COLON, \"I_LABEL\"] simple_name ) ;
 	public final smaliParser.label_return label() throws RecognitionException {
 		smaliParser.label_return retval = new smaliParser.label_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token COLON184=null;
-		ParserRuleReturnScope simple_name185 =null;
+		Token COLON212=null;
+		ParserRuleReturnScope simple_name213 =null;
 
-		CommonTree COLON184_tree=null;
+		CommonTree COLON212_tree=null;
 		RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
 		RewriteRuleSubtreeStream stream_simple_name=new RewriteRuleSubtreeStream(adaptor,"rule simple_name");
 
 		try {
-			// smaliParser.g:711:3: ( COLON simple_name -> ^( I_LABEL[$COLON, \"I_LABEL\"] simple_name ) )
-			// smaliParser.g:711:5: COLON simple_name
+			// smaliParser.g:745:3: ( COLON simple_name -> ^( I_LABEL[$COLON, \"I_LABEL\"] simple_name ) )
+			// smaliParser.g:745:5: COLON simple_name
 			{
-			COLON184=(Token)match(input,COLON,FOLLOW_COLON_in_label3037);  
-			stream_COLON.add(COLON184);
+			COLON212=(Token)match(input,COLON,FOLLOW_COLON_in_label3307);  
+			stream_COLON.add(COLON212);
 
-			pushFollow(FOLLOW_simple_name_in_label3039);
-			simple_name185=simple_name();
+			pushFollow(FOLLOW_simple_name_in_label3309);
+			simple_name213=simple_name();
 			state._fsp--;
 
-			stream_simple_name.add(simple_name185.getTree());
+			stream_simple_name.add(simple_name213.getTree());
 			// AST REWRITE
 			// elements: simple_name
 			// token labels: 
@@ -7168,12 +7926,12 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 711:23: -> ^( I_LABEL[$COLON, \"I_LABEL\"] simple_name )
+			// 745:23: -> ^( I_LABEL[$COLON, \"I_LABEL\"] simple_name )
 			{
-				// smaliParser.g:711:26: ^( I_LABEL[$COLON, \"I_LABEL\"] simple_name )
+				// smaliParser.g:745:26: ^( I_LABEL[$COLON, \"I_LABEL\"] simple_name )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
-				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_LABEL, COLON184, "I_LABEL"), root_1);
+				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_LABEL, COLON212, "I_LABEL"), root_1);
 				adaptor.addChild(root_1, stream_simple_name.nextTree());
 				adaptor.addChild(root_0, root_1);
 				}
@@ -7212,32 +7970,32 @@
 
 
 	// $ANTLR start "label_ref"
-	// smaliParser.g:713:1: label_ref : COLON simple_name -> simple_name ;
+	// smaliParser.g:747:1: label_ref : COLON simple_name -> simple_name ;
 	public final smaliParser.label_ref_return label_ref() throws RecognitionException {
 		smaliParser.label_ref_return retval = new smaliParser.label_ref_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token COLON186=null;
-		ParserRuleReturnScope simple_name187 =null;
+		Token COLON214=null;
+		ParserRuleReturnScope simple_name215 =null;
 
-		CommonTree COLON186_tree=null;
+		CommonTree COLON214_tree=null;
 		RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
 		RewriteRuleSubtreeStream stream_simple_name=new RewriteRuleSubtreeStream(adaptor,"rule simple_name");
 
 		try {
-			// smaliParser.g:714:3: ( COLON simple_name -> simple_name )
-			// smaliParser.g:714:5: COLON simple_name
+			// smaliParser.g:748:3: ( COLON simple_name -> simple_name )
+			// smaliParser.g:748:5: COLON simple_name
 			{
-			COLON186=(Token)match(input,COLON,FOLLOW_COLON_in_label_ref3058);  
-			stream_COLON.add(COLON186);
+			COLON214=(Token)match(input,COLON,FOLLOW_COLON_in_label_ref3328);  
+			stream_COLON.add(COLON214);
 
-			pushFollow(FOLLOW_simple_name_in_label_ref3060);
-			simple_name187=simple_name();
+			pushFollow(FOLLOW_simple_name_in_label_ref3330);
+			simple_name215=simple_name();
 			state._fsp--;
 
-			stream_simple_name.add(simple_name187.getTree());
+			stream_simple_name.add(simple_name215.getTree());
 			// AST REWRITE
 			// elements: simple_name
 			// token labels: 
@@ -7249,7 +8007,7 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 714:23: -> simple_name
+			// 748:23: -> simple_name
 			{
 				adaptor.addChild(root_0, stream_simple_name.nextTree());
 			}
@@ -7286,71 +8044,71 @@
 
 
 	// $ANTLR start "register_list"
-	// smaliParser.g:716:1: register_list : ( REGISTER ( COMMA REGISTER )* -> ^( I_REGISTER_LIST[$start, \"I_REGISTER_LIST\"] ( REGISTER )* ) | -> ^( I_REGISTER_LIST[$start, \"I_REGISTER_LIST\"] ) );
+	// smaliParser.g:750:1: register_list : ( REGISTER ( COMMA REGISTER )* -> ^( I_REGISTER_LIST[$start, \"I_REGISTER_LIST\"] ( REGISTER )* ) | -> ^( I_REGISTER_LIST[$start, \"I_REGISTER_LIST\"] ) );
 	public final smaliParser.register_list_return register_list() throws RecognitionException {
 		smaliParser.register_list_return retval = new smaliParser.register_list_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token REGISTER188=null;
-		Token COMMA189=null;
-		Token REGISTER190=null;
+		Token REGISTER216=null;
+		Token COMMA217=null;
+		Token REGISTER218=null;
 
-		CommonTree REGISTER188_tree=null;
-		CommonTree COMMA189_tree=null;
-		CommonTree REGISTER190_tree=null;
+		CommonTree REGISTER216_tree=null;
+		CommonTree COMMA217_tree=null;
+		CommonTree REGISTER218_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 
 		try {
-			// smaliParser.g:717:3: ( REGISTER ( COMMA REGISTER )* -> ^( I_REGISTER_LIST[$start, \"I_REGISTER_LIST\"] ( REGISTER )* ) | -> ^( I_REGISTER_LIST[$start, \"I_REGISTER_LIST\"] ) )
-			int alt35=2;
-			int LA35_0 = input.LA(1);
-			if ( (LA35_0==REGISTER) ) {
-				alt35=1;
+			// smaliParser.g:751:3: ( REGISTER ( COMMA REGISTER )* -> ^( I_REGISTER_LIST[$start, \"I_REGISTER_LIST\"] ( REGISTER )* ) | -> ^( I_REGISTER_LIST[$start, \"I_REGISTER_LIST\"] ) )
+			int alt37=2;
+			int LA37_0 = input.LA(1);
+			if ( (LA37_0==REGISTER) ) {
+				alt37=1;
 			}
-			else if ( (LA35_0==CLOSE_BRACE) ) {
-				alt35=2;
+			else if ( (LA37_0==CLOSE_BRACE) ) {
+				alt37=2;
 			}
 
 			else {
 				NoViableAltException nvae =
-					new NoViableAltException("", 35, 0, input);
+					new NoViableAltException("", 37, 0, input);
 				throw nvae;
 			}
 
-			switch (alt35) {
+			switch (alt37) {
 				case 1 :
-					// smaliParser.g:717:5: REGISTER ( COMMA REGISTER )*
+					// smaliParser.g:751:5: REGISTER ( COMMA REGISTER )*
 					{
-					REGISTER188=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_register_list3074);  
-					stream_REGISTER.add(REGISTER188);
+					REGISTER216=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_register_list3344);  
+					stream_REGISTER.add(REGISTER216);
 
-					// smaliParser.g:717:14: ( COMMA REGISTER )*
-					loop34:
+					// smaliParser.g:751:14: ( COMMA REGISTER )*
+					loop36:
 					while (true) {
-						int alt34=2;
-						int LA34_0 = input.LA(1);
-						if ( (LA34_0==COMMA) ) {
-							alt34=1;
+						int alt36=2;
+						int LA36_0 = input.LA(1);
+						if ( (LA36_0==COMMA) ) {
+							alt36=1;
 						}
 
-						switch (alt34) {
+						switch (alt36) {
 						case 1 :
-							// smaliParser.g:717:15: COMMA REGISTER
+							// smaliParser.g:751:15: COMMA REGISTER
 							{
-							COMMA189=(Token)match(input,COMMA,FOLLOW_COMMA_in_register_list3077);  
-							stream_COMMA.add(COMMA189);
+							COMMA217=(Token)match(input,COMMA,FOLLOW_COMMA_in_register_list3347);  
+							stream_COMMA.add(COMMA217);
 
-							REGISTER190=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_register_list3079);  
-							stream_REGISTER.add(REGISTER190);
+							REGISTER218=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_register_list3349);  
+							stream_REGISTER.add(REGISTER218);
 
 							}
 							break;
 
 						default :
-							break loop34;
+							break loop36;
 						}
 					}
 
@@ -7365,13 +8123,13 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 717:32: -> ^( I_REGISTER_LIST[$start, \"I_REGISTER_LIST\"] ( REGISTER )* )
+					// 751:32: -> ^( I_REGISTER_LIST[$start, \"I_REGISTER_LIST\"] ( REGISTER )* )
 					{
-						// smaliParser.g:717:35: ^( I_REGISTER_LIST[$start, \"I_REGISTER_LIST\"] ( REGISTER )* )
+						// smaliParser.g:751:35: ^( I_REGISTER_LIST[$start, \"I_REGISTER_LIST\"] ( REGISTER )* )
 						{
 						CommonTree root_1 = (CommonTree)adaptor.nil();
 						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_REGISTER_LIST, (retval.start), "I_REGISTER_LIST"), root_1);
-						// smaliParser.g:717:80: ( REGISTER )*
+						// smaliParser.g:751:80: ( REGISTER )*
 						while ( stream_REGISTER.hasNext() ) {
 							adaptor.addChild(root_1, stream_REGISTER.nextNode());
 						}
@@ -7388,7 +8146,7 @@
 					}
 					break;
 				case 2 :
-					// smaliParser.g:718:5: 
+					// smaliParser.g:752:5: 
 					{
 					// AST REWRITE
 					// elements: 
@@ -7401,9 +8159,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 718:5: -> ^( I_REGISTER_LIST[$start, \"I_REGISTER_LIST\"] )
+					// 752:5: -> ^( I_REGISTER_LIST[$start, \"I_REGISTER_LIST\"] )
 					{
-						// smaliParser.g:718:7: ^( I_REGISTER_LIST[$start, \"I_REGISTER_LIST\"] )
+						// smaliParser.g:752:7: ^( I_REGISTER_LIST[$start, \"I_REGISTER_LIST\"] )
 						{
 						CommonTree root_1 = (CommonTree)adaptor.nil();
 						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_REGISTER_LIST, (retval.start), "I_REGISTER_LIST"), root_1);
@@ -7446,7 +8204,7 @@
 
 
 	// $ANTLR start "register_range"
-	// smaliParser.g:720:1: register_range : (startreg= REGISTER ( DOTDOT endreg= REGISTER )? )? -> ^( I_REGISTER_RANGE[$start, \"I_REGISTER_RANGE\"] ( $startreg)? ( $endreg)? ) ;
+	// smaliParser.g:754:1: register_range : (startreg= REGISTER ( DOTDOT endreg= REGISTER )? )? -> ^( I_REGISTER_RANGE[$start, \"I_REGISTER_RANGE\"] ( $startreg)? ( $endreg)? ) ;
 	public final smaliParser.register_range_return register_range() throws RecognitionException {
 		smaliParser.register_range_return retval = new smaliParser.register_range_return();
 		retval.start = input.LT(1);
@@ -7455,45 +8213,45 @@
 
 		Token startreg=null;
 		Token endreg=null;
-		Token DOTDOT191=null;
+		Token DOTDOT219=null;
 
 		CommonTree startreg_tree=null;
 		CommonTree endreg_tree=null;
-		CommonTree DOTDOT191_tree=null;
+		CommonTree DOTDOT219_tree=null;
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_DOTDOT=new RewriteRuleTokenStream(adaptor,"token DOTDOT");
 
 		try {
-			// smaliParser.g:721:3: ( (startreg= REGISTER ( DOTDOT endreg= REGISTER )? )? -> ^( I_REGISTER_RANGE[$start, \"I_REGISTER_RANGE\"] ( $startreg)? ( $endreg)? ) )
-			// smaliParser.g:721:5: (startreg= REGISTER ( DOTDOT endreg= REGISTER )? )?
+			// smaliParser.g:755:3: ( (startreg= REGISTER ( DOTDOT endreg= REGISTER )? )? -> ^( I_REGISTER_RANGE[$start, \"I_REGISTER_RANGE\"] ( $startreg)? ( $endreg)? ) )
+			// smaliParser.g:755:5: (startreg= REGISTER ( DOTDOT endreg= REGISTER )? )?
 			{
-			// smaliParser.g:721:5: (startreg= REGISTER ( DOTDOT endreg= REGISTER )? )?
-			int alt37=2;
-			int LA37_0 = input.LA(1);
-			if ( (LA37_0==REGISTER) ) {
-				alt37=1;
+			// smaliParser.g:755:5: (startreg= REGISTER ( DOTDOT endreg= REGISTER )? )?
+			int alt39=2;
+			int LA39_0 = input.LA(1);
+			if ( (LA39_0==REGISTER) ) {
+				alt39=1;
 			}
-			switch (alt37) {
+			switch (alt39) {
 				case 1 :
-					// smaliParser.g:721:6: startreg= REGISTER ( DOTDOT endreg= REGISTER )?
+					// smaliParser.g:755:6: startreg= REGISTER ( DOTDOT endreg= REGISTER )?
 					{
-					startreg=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_register_range3114);  
+					startreg=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_register_range3384);  
 					stream_REGISTER.add(startreg);
 
-					// smaliParser.g:721:24: ( DOTDOT endreg= REGISTER )?
-					int alt36=2;
-					int LA36_0 = input.LA(1);
-					if ( (LA36_0==DOTDOT) ) {
-						alt36=1;
+					// smaliParser.g:755:24: ( DOTDOT endreg= REGISTER )?
+					int alt38=2;
+					int LA38_0 = input.LA(1);
+					if ( (LA38_0==DOTDOT) ) {
+						alt38=1;
 					}
-					switch (alt36) {
+					switch (alt38) {
 						case 1 :
-							// smaliParser.g:721:25: DOTDOT endreg= REGISTER
+							// smaliParser.g:755:25: DOTDOT endreg= REGISTER
 							{
-							DOTDOT191=(Token)match(input,DOTDOT,FOLLOW_DOTDOT_in_register_range3117);  
-							stream_DOTDOT.add(DOTDOT191);
+							DOTDOT219=(Token)match(input,DOTDOT,FOLLOW_DOTDOT_in_register_range3387);  
+							stream_DOTDOT.add(DOTDOT219);
 
-							endreg=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_register_range3121);  
+							endreg=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_register_range3391);  
 							stream_REGISTER.add(endreg);
 
 							}
@@ -7519,19 +8277,19 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 721:52: -> ^( I_REGISTER_RANGE[$start, \"I_REGISTER_RANGE\"] ( $startreg)? ( $endreg)? )
+			// 755:52: -> ^( I_REGISTER_RANGE[$start, \"I_REGISTER_RANGE\"] ( $startreg)? ( $endreg)? )
 			{
-				// smaliParser.g:721:55: ^( I_REGISTER_RANGE[$start, \"I_REGISTER_RANGE\"] ( $startreg)? ( $endreg)? )
+				// smaliParser.g:755:55: ^( I_REGISTER_RANGE[$start, \"I_REGISTER_RANGE\"] ( $startreg)? ( $endreg)? )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_REGISTER_RANGE, (retval.start), "I_REGISTER_RANGE"), root_1);
-				// smaliParser.g:721:103: ( $startreg)?
+				// smaliParser.g:755:103: ( $startreg)?
 				if ( stream_startreg.hasNext() ) {
 					adaptor.addChild(root_1, stream_startreg.nextNode());
 				}
 				stream_startreg.reset();
 
-				// smaliParser.g:721:114: ( $endreg)?
+				// smaliParser.g:755:114: ( $endreg)?
 				if ( stream_endreg.hasNext() ) {
 					adaptor.addChild(root_1, stream_endreg.nextNode());
 				}
@@ -7574,61 +8332,61 @@
 
 
 	// $ANTLR start "verification_error_reference"
-	// smaliParser.g:723:1: verification_error_reference : ( CLASS_DESCRIPTOR | field_reference | method_reference );
+	// smaliParser.g:757:1: verification_error_reference : ( CLASS_DESCRIPTOR | field_reference | method_reference );
 	public final smaliParser.verification_error_reference_return verification_error_reference() throws RecognitionException {
 		smaliParser.verification_error_reference_return retval = new smaliParser.verification_error_reference_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token CLASS_DESCRIPTOR192=null;
-		ParserRuleReturnScope field_reference193 =null;
-		ParserRuleReturnScope method_reference194 =null;
+		Token CLASS_DESCRIPTOR220=null;
+		ParserRuleReturnScope field_reference221 =null;
+		ParserRuleReturnScope method_reference222 =null;
 
-		CommonTree CLASS_DESCRIPTOR192_tree=null;
+		CommonTree CLASS_DESCRIPTOR220_tree=null;
 
 		try {
-			// smaliParser.g:724:3: ( CLASS_DESCRIPTOR | field_reference | method_reference )
-			int alt38=3;
-			alt38 = dfa38.predict(input);
-			switch (alt38) {
+			// smaliParser.g:758:3: ( CLASS_DESCRIPTOR | field_reference | method_reference )
+			int alt40=3;
+			alt40 = dfa40.predict(input);
+			switch (alt40) {
 				case 1 :
-					// smaliParser.g:724:5: CLASS_DESCRIPTOR
+					// smaliParser.g:758:5: CLASS_DESCRIPTOR
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					CLASS_DESCRIPTOR192=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_verification_error_reference3150); 
-					CLASS_DESCRIPTOR192_tree = (CommonTree)adaptor.create(CLASS_DESCRIPTOR192);
-					adaptor.addChild(root_0, CLASS_DESCRIPTOR192_tree);
+					CLASS_DESCRIPTOR220=(Token)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_verification_error_reference3420); 
+					CLASS_DESCRIPTOR220_tree = (CommonTree)adaptor.create(CLASS_DESCRIPTOR220);
+					adaptor.addChild(root_0, CLASS_DESCRIPTOR220_tree);
 
 					}
 					break;
 				case 2 :
-					// smaliParser.g:724:24: field_reference
+					// smaliParser.g:758:24: field_reference
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_field_reference_in_verification_error_reference3154);
-					field_reference193=field_reference();
+					pushFollow(FOLLOW_field_reference_in_verification_error_reference3424);
+					field_reference221=field_reference();
 					state._fsp--;
 
-					adaptor.addChild(root_0, field_reference193.getTree());
+					adaptor.addChild(root_0, field_reference221.getTree());
 
 					}
 					break;
 				case 3 :
-					// smaliParser.g:724:42: method_reference
+					// smaliParser.g:758:42: method_reference
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_method_reference_in_verification_error_reference3158);
-					method_reference194=method_reference();
+					pushFollow(FOLLOW_method_reference_in_verification_error_reference3428);
+					method_reference222=method_reference();
 					state._fsp--;
 
-					adaptor.addChild(root_0, method_reference194.getTree());
+					adaptor.addChild(root_0, method_reference222.getTree());
 
 					}
 					break;
@@ -7661,26 +8419,26 @@
 
 
 	// $ANTLR start "catch_directive"
-	// smaliParser.g:726:1: catch_directive : CATCH_DIRECTIVE nonvoid_type_descriptor OPEN_BRACE from= label_ref DOTDOT to= label_ref CLOSE_BRACE using= label_ref -> ^( I_CATCH[$start, \"I_CATCH\"] nonvoid_type_descriptor $from $to $using) ;
+	// smaliParser.g:760:1: catch_directive : CATCH_DIRECTIVE nonvoid_type_descriptor OPEN_BRACE from= label_ref DOTDOT to= label_ref CLOSE_BRACE using= label_ref -> ^( I_CATCH[$start, \"I_CATCH\"] nonvoid_type_descriptor $from $to $using) ;
 	public final smaliParser.catch_directive_return catch_directive() throws RecognitionException {
 		smaliParser.catch_directive_return retval = new smaliParser.catch_directive_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token CATCH_DIRECTIVE195=null;
-		Token OPEN_BRACE197=null;
-		Token DOTDOT198=null;
-		Token CLOSE_BRACE199=null;
+		Token CATCH_DIRECTIVE223=null;
+		Token OPEN_BRACE225=null;
+		Token DOTDOT226=null;
+		Token CLOSE_BRACE227=null;
 		ParserRuleReturnScope from =null;
 		ParserRuleReturnScope to =null;
 		ParserRuleReturnScope using =null;
-		ParserRuleReturnScope nonvoid_type_descriptor196 =null;
+		ParserRuleReturnScope nonvoid_type_descriptor224 =null;
 
-		CommonTree CATCH_DIRECTIVE195_tree=null;
-		CommonTree OPEN_BRACE197_tree=null;
-		CommonTree DOTDOT198_tree=null;
-		CommonTree CLOSE_BRACE199_tree=null;
+		CommonTree CATCH_DIRECTIVE223_tree=null;
+		CommonTree OPEN_BRACE225_tree=null;
+		CommonTree DOTDOT226_tree=null;
+		CommonTree CLOSE_BRACE227_tree=null;
 		RewriteRuleTokenStream stream_OPEN_BRACE=new RewriteRuleTokenStream(adaptor,"token OPEN_BRACE");
 		RewriteRuleTokenStream stream_CLOSE_BRACE=new RewriteRuleTokenStream(adaptor,"token CLOSE_BRACE");
 		RewriteRuleTokenStream stream_DOTDOT=new RewriteRuleTokenStream(adaptor,"token DOTDOT");
@@ -7689,43 +8447,43 @@
 		RewriteRuleSubtreeStream stream_nonvoid_type_descriptor=new RewriteRuleSubtreeStream(adaptor,"rule nonvoid_type_descriptor");
 
 		try {
-			// smaliParser.g:727:3: ( CATCH_DIRECTIVE nonvoid_type_descriptor OPEN_BRACE from= label_ref DOTDOT to= label_ref CLOSE_BRACE using= label_ref -> ^( I_CATCH[$start, \"I_CATCH\"] nonvoid_type_descriptor $from $to $using) )
-			// smaliParser.g:727:5: CATCH_DIRECTIVE nonvoid_type_descriptor OPEN_BRACE from= label_ref DOTDOT to= label_ref CLOSE_BRACE using= label_ref
+			// smaliParser.g:761:3: ( CATCH_DIRECTIVE nonvoid_type_descriptor OPEN_BRACE from= label_ref DOTDOT to= label_ref CLOSE_BRACE using= label_ref -> ^( I_CATCH[$start, \"I_CATCH\"] nonvoid_type_descriptor $from $to $using) )
+			// smaliParser.g:761:5: CATCH_DIRECTIVE nonvoid_type_descriptor OPEN_BRACE from= label_ref DOTDOT to= label_ref CLOSE_BRACE using= label_ref
 			{
-			CATCH_DIRECTIVE195=(Token)match(input,CATCH_DIRECTIVE,FOLLOW_CATCH_DIRECTIVE_in_catch_directive3168);  
-			stream_CATCH_DIRECTIVE.add(CATCH_DIRECTIVE195);
+			CATCH_DIRECTIVE223=(Token)match(input,CATCH_DIRECTIVE,FOLLOW_CATCH_DIRECTIVE_in_catch_directive3438);  
+			stream_CATCH_DIRECTIVE.add(CATCH_DIRECTIVE223);
 
-			pushFollow(FOLLOW_nonvoid_type_descriptor_in_catch_directive3170);
-			nonvoid_type_descriptor196=nonvoid_type_descriptor();
+			pushFollow(FOLLOW_nonvoid_type_descriptor_in_catch_directive3440);
+			nonvoid_type_descriptor224=nonvoid_type_descriptor();
 			state._fsp--;
 
-			stream_nonvoid_type_descriptor.add(nonvoid_type_descriptor196.getTree());
-			OPEN_BRACE197=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_catch_directive3172);  
-			stream_OPEN_BRACE.add(OPEN_BRACE197);
+			stream_nonvoid_type_descriptor.add(nonvoid_type_descriptor224.getTree());
+			OPEN_BRACE225=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_catch_directive3442);  
+			stream_OPEN_BRACE.add(OPEN_BRACE225);
 
-			pushFollow(FOLLOW_label_ref_in_catch_directive3176);
+			pushFollow(FOLLOW_label_ref_in_catch_directive3446);
 			from=label_ref();
 			state._fsp--;
 
 			stream_label_ref.add(from.getTree());
-			DOTDOT198=(Token)match(input,DOTDOT,FOLLOW_DOTDOT_in_catch_directive3178);  
-			stream_DOTDOT.add(DOTDOT198);
+			DOTDOT226=(Token)match(input,DOTDOT,FOLLOW_DOTDOT_in_catch_directive3448);  
+			stream_DOTDOT.add(DOTDOT226);
 
-			pushFollow(FOLLOW_label_ref_in_catch_directive3182);
+			pushFollow(FOLLOW_label_ref_in_catch_directive3452);
 			to=label_ref();
 			state._fsp--;
 
 			stream_label_ref.add(to.getTree());
-			CLOSE_BRACE199=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_catch_directive3184);  
-			stream_CLOSE_BRACE.add(CLOSE_BRACE199);
+			CLOSE_BRACE227=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_catch_directive3454);  
+			stream_CLOSE_BRACE.add(CLOSE_BRACE227);
 
-			pushFollow(FOLLOW_label_ref_in_catch_directive3188);
+			pushFollow(FOLLOW_label_ref_in_catch_directive3458);
 			using=label_ref();
 			state._fsp--;
 
 			stream_label_ref.add(using.getTree());
 			// AST REWRITE
-			// elements: from, nonvoid_type_descriptor, using, to
+			// elements: using, to, nonvoid_type_descriptor, from
 			// token labels: 
 			// rule labels: using, from, to, retval
 			// token list labels: 
@@ -7738,9 +8496,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 728:5: -> ^( I_CATCH[$start, \"I_CATCH\"] nonvoid_type_descriptor $from $to $using)
+			// 762:5: -> ^( I_CATCH[$start, \"I_CATCH\"] nonvoid_type_descriptor $from $to $using)
 			{
-				// smaliParser.g:728:8: ^( I_CATCH[$start, \"I_CATCH\"] nonvoid_type_descriptor $from $to $using)
+				// smaliParser.g:762:8: ^( I_CATCH[$start, \"I_CATCH\"] nonvoid_type_descriptor $from $to $using)
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_CATCH, (retval.start), "I_CATCH"), root_1);
@@ -7785,25 +8543,25 @@
 
 
 	// $ANTLR start "catchall_directive"
-	// smaliParser.g:730:1: catchall_directive : CATCHALL_DIRECTIVE OPEN_BRACE from= label_ref DOTDOT to= label_ref CLOSE_BRACE using= label_ref -> ^( I_CATCHALL[$start, \"I_CATCHALL\"] $from $to $using) ;
+	// smaliParser.g:764:1: catchall_directive : CATCHALL_DIRECTIVE OPEN_BRACE from= label_ref DOTDOT to= label_ref CLOSE_BRACE using= label_ref -> ^( I_CATCHALL[$start, \"I_CATCHALL\"] $from $to $using) ;
 	public final smaliParser.catchall_directive_return catchall_directive() throws RecognitionException {
 		smaliParser.catchall_directive_return retval = new smaliParser.catchall_directive_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token CATCHALL_DIRECTIVE200=null;
-		Token OPEN_BRACE201=null;
-		Token DOTDOT202=null;
-		Token CLOSE_BRACE203=null;
+		Token CATCHALL_DIRECTIVE228=null;
+		Token OPEN_BRACE229=null;
+		Token DOTDOT230=null;
+		Token CLOSE_BRACE231=null;
 		ParserRuleReturnScope from =null;
 		ParserRuleReturnScope to =null;
 		ParserRuleReturnScope using =null;
 
-		CommonTree CATCHALL_DIRECTIVE200_tree=null;
-		CommonTree OPEN_BRACE201_tree=null;
-		CommonTree DOTDOT202_tree=null;
-		CommonTree CLOSE_BRACE203_tree=null;
+		CommonTree CATCHALL_DIRECTIVE228_tree=null;
+		CommonTree OPEN_BRACE229_tree=null;
+		CommonTree DOTDOT230_tree=null;
+		CommonTree CLOSE_BRACE231_tree=null;
 		RewriteRuleTokenStream stream_OPEN_BRACE=new RewriteRuleTokenStream(adaptor,"token OPEN_BRACE");
 		RewriteRuleTokenStream stream_CLOSE_BRACE=new RewriteRuleTokenStream(adaptor,"token CLOSE_BRACE");
 		RewriteRuleTokenStream stream_DOTDOT=new RewriteRuleTokenStream(adaptor,"token DOTDOT");
@@ -7811,38 +8569,38 @@
 		RewriteRuleSubtreeStream stream_label_ref=new RewriteRuleSubtreeStream(adaptor,"rule label_ref");
 
 		try {
-			// smaliParser.g:731:3: ( CATCHALL_DIRECTIVE OPEN_BRACE from= label_ref DOTDOT to= label_ref CLOSE_BRACE using= label_ref -> ^( I_CATCHALL[$start, \"I_CATCHALL\"] $from $to $using) )
-			// smaliParser.g:731:5: CATCHALL_DIRECTIVE OPEN_BRACE from= label_ref DOTDOT to= label_ref CLOSE_BRACE using= label_ref
+			// smaliParser.g:765:3: ( CATCHALL_DIRECTIVE OPEN_BRACE from= label_ref DOTDOT to= label_ref CLOSE_BRACE using= label_ref -> ^( I_CATCHALL[$start, \"I_CATCHALL\"] $from $to $using) )
+			// smaliParser.g:765:5: CATCHALL_DIRECTIVE OPEN_BRACE from= label_ref DOTDOT to= label_ref CLOSE_BRACE using= label_ref
 			{
-			CATCHALL_DIRECTIVE200=(Token)match(input,CATCHALL_DIRECTIVE,FOLLOW_CATCHALL_DIRECTIVE_in_catchall_directive3220);  
-			stream_CATCHALL_DIRECTIVE.add(CATCHALL_DIRECTIVE200);
+			CATCHALL_DIRECTIVE228=(Token)match(input,CATCHALL_DIRECTIVE,FOLLOW_CATCHALL_DIRECTIVE_in_catchall_directive3490);  
+			stream_CATCHALL_DIRECTIVE.add(CATCHALL_DIRECTIVE228);
 
-			OPEN_BRACE201=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_catchall_directive3222);  
-			stream_OPEN_BRACE.add(OPEN_BRACE201);
+			OPEN_BRACE229=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_catchall_directive3492);  
+			stream_OPEN_BRACE.add(OPEN_BRACE229);
 
-			pushFollow(FOLLOW_label_ref_in_catchall_directive3226);
+			pushFollow(FOLLOW_label_ref_in_catchall_directive3496);
 			from=label_ref();
 			state._fsp--;
 
 			stream_label_ref.add(from.getTree());
-			DOTDOT202=(Token)match(input,DOTDOT,FOLLOW_DOTDOT_in_catchall_directive3228);  
-			stream_DOTDOT.add(DOTDOT202);
+			DOTDOT230=(Token)match(input,DOTDOT,FOLLOW_DOTDOT_in_catchall_directive3498);  
+			stream_DOTDOT.add(DOTDOT230);
 
-			pushFollow(FOLLOW_label_ref_in_catchall_directive3232);
+			pushFollow(FOLLOW_label_ref_in_catchall_directive3502);
 			to=label_ref();
 			state._fsp--;
 
 			stream_label_ref.add(to.getTree());
-			CLOSE_BRACE203=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_catchall_directive3234);  
-			stream_CLOSE_BRACE.add(CLOSE_BRACE203);
+			CLOSE_BRACE231=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_catchall_directive3504);  
+			stream_CLOSE_BRACE.add(CLOSE_BRACE231);
 
-			pushFollow(FOLLOW_label_ref_in_catchall_directive3238);
+			pushFollow(FOLLOW_label_ref_in_catchall_directive3508);
 			using=label_ref();
 			state._fsp--;
 
 			stream_label_ref.add(using.getTree());
 			// AST REWRITE
-			// elements: using, to, from
+			// elements: to, from, using
 			// token labels: 
 			// rule labels: using, from, to, retval
 			// token list labels: 
@@ -7855,9 +8613,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 732:5: -> ^( I_CATCHALL[$start, \"I_CATCHALL\"] $from $to $using)
+			// 766:5: -> ^( I_CATCHALL[$start, \"I_CATCHALL\"] $from $to $using)
 			{
-				// smaliParser.g:732:8: ^( I_CATCHALL[$start, \"I_CATCHALL\"] $from $to $using)
+				// smaliParser.g:766:8: ^( I_CATCHALL[$start, \"I_CATCHALL\"] $from $to $using)
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_CATCHALL, (retval.start), "I_CATCHALL"), root_1);
@@ -7901,25 +8659,25 @@
 
 
 	// $ANTLR start "parameter_directive"
-	// smaliParser.g:738:1: parameter_directive : PARAMETER_DIRECTIVE REGISTER ( COMMA STRING_LITERAL )? ({...}? annotation )* ( END_PARAMETER_DIRECTIVE -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ) ) ) ;
+	// smaliParser.g:772:1: parameter_directive : PARAMETER_DIRECTIVE REGISTER ( COMMA STRING_LITERAL )? ({...}? annotation )* ( END_PARAMETER_DIRECTIVE -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ) ) ) ;
 	public final smaliParser.parameter_directive_return parameter_directive() throws RecognitionException {
 		smaliParser.parameter_directive_return retval = new smaliParser.parameter_directive_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token PARAMETER_DIRECTIVE204=null;
-		Token REGISTER205=null;
-		Token COMMA206=null;
-		Token STRING_LITERAL207=null;
-		Token END_PARAMETER_DIRECTIVE209=null;
-		ParserRuleReturnScope annotation208 =null;
+		Token PARAMETER_DIRECTIVE232=null;
+		Token REGISTER233=null;
+		Token COMMA234=null;
+		Token STRING_LITERAL235=null;
+		Token END_PARAMETER_DIRECTIVE237=null;
+		ParserRuleReturnScope annotation236 =null;
 
-		CommonTree PARAMETER_DIRECTIVE204_tree=null;
-		CommonTree REGISTER205_tree=null;
-		CommonTree COMMA206_tree=null;
-		CommonTree STRING_LITERAL207_tree=null;
-		CommonTree END_PARAMETER_DIRECTIVE209_tree=null;
+		CommonTree PARAMETER_DIRECTIVE232_tree=null;
+		CommonTree REGISTER233_tree=null;
+		CommonTree COMMA234_tree=null;
+		CommonTree STRING_LITERAL235_tree=null;
+		CommonTree END_PARAMETER_DIRECTIVE237_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_PARAMETER_DIRECTIVE=new RewriteRuleTokenStream(adaptor,"token PARAMETER_DIRECTIVE");
@@ -7929,84 +8687,84 @@
 
 		List<CommonTree> annotations = new ArrayList<CommonTree>();
 		try {
-			// smaliParser.g:740:3: ( PARAMETER_DIRECTIVE REGISTER ( COMMA STRING_LITERAL )? ({...}? annotation )* ( END_PARAMETER_DIRECTIVE -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ) ) ) )
-			// smaliParser.g:740:5: PARAMETER_DIRECTIVE REGISTER ( COMMA STRING_LITERAL )? ({...}? annotation )* ( END_PARAMETER_DIRECTIVE -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ) ) )
+			// smaliParser.g:774:3: ( PARAMETER_DIRECTIVE REGISTER ( COMMA STRING_LITERAL )? ({...}? annotation )* ( END_PARAMETER_DIRECTIVE -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ) ) ) )
+			// smaliParser.g:774:5: PARAMETER_DIRECTIVE REGISTER ( COMMA STRING_LITERAL )? ({...}? annotation )* ( END_PARAMETER_DIRECTIVE -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ) ) )
 			{
-			PARAMETER_DIRECTIVE204=(Token)match(input,PARAMETER_DIRECTIVE,FOLLOW_PARAMETER_DIRECTIVE_in_parameter_directive3277);  
-			stream_PARAMETER_DIRECTIVE.add(PARAMETER_DIRECTIVE204);
+			PARAMETER_DIRECTIVE232=(Token)match(input,PARAMETER_DIRECTIVE,FOLLOW_PARAMETER_DIRECTIVE_in_parameter_directive3547);  
+			stream_PARAMETER_DIRECTIVE.add(PARAMETER_DIRECTIVE232);
 
-			REGISTER205=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_parameter_directive3279);  
-			stream_REGISTER.add(REGISTER205);
+			REGISTER233=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_parameter_directive3549);  
+			stream_REGISTER.add(REGISTER233);
 
-			// smaliParser.g:740:34: ( COMMA STRING_LITERAL )?
-			int alt39=2;
-			int LA39_0 = input.LA(1);
-			if ( (LA39_0==COMMA) ) {
-				alt39=1;
+			// smaliParser.g:774:34: ( COMMA STRING_LITERAL )?
+			int alt41=2;
+			int LA41_0 = input.LA(1);
+			if ( (LA41_0==COMMA) ) {
+				alt41=1;
 			}
-			switch (alt39) {
+			switch (alt41) {
 				case 1 :
-					// smaliParser.g:740:35: COMMA STRING_LITERAL
+					// smaliParser.g:774:35: COMMA STRING_LITERAL
 					{
-					COMMA206=(Token)match(input,COMMA,FOLLOW_COMMA_in_parameter_directive3282);  
-					stream_COMMA.add(COMMA206);
+					COMMA234=(Token)match(input,COMMA,FOLLOW_COMMA_in_parameter_directive3552);  
+					stream_COMMA.add(COMMA234);
 
-					STRING_LITERAL207=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_parameter_directive3284);  
-					stream_STRING_LITERAL.add(STRING_LITERAL207);
+					STRING_LITERAL235=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_parameter_directive3554);  
+					stream_STRING_LITERAL.add(STRING_LITERAL235);
 
 					}
 					break;
 
 			}
 
-			// smaliParser.g:741:5: ({...}? annotation )*
-			loop40:
+			// smaliParser.g:775:5: ({...}? annotation )*
+			loop42:
 			while (true) {
-				int alt40=2;
-				alt40 = dfa40.predict(input);
-				switch (alt40) {
+				int alt42=2;
+				alt42 = dfa42.predict(input);
+				switch (alt42) {
 				case 1 :
-					// smaliParser.g:741:6: {...}? annotation
+					// smaliParser.g:775:6: {...}? annotation
 					{
 					if ( !((input.LA(1) == ANNOTATION_DIRECTIVE)) ) {
 						throw new FailedPredicateException(input, "parameter_directive", "input.LA(1) == ANNOTATION_DIRECTIVE");
 					}
-					pushFollow(FOLLOW_annotation_in_parameter_directive3295);
-					annotation208=annotation();
+					pushFollow(FOLLOW_annotation_in_parameter_directive3565);
+					annotation236=annotation();
 					state._fsp--;
 
-					stream_annotation.add(annotation208.getTree());
-					annotations.add((annotation208!=null?((CommonTree)annotation208.getTree()):null));
+					stream_annotation.add(annotation236.getTree());
+					annotations.add((annotation236!=null?((CommonTree)annotation236.getTree()):null));
 					}
 					break;
 
 				default :
-					break loop40;
+					break loop42;
 				}
 			}
 
-			// smaliParser.g:743:5: ( END_PARAMETER_DIRECTIVE -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ) ) )
-			int alt41=2;
-			int LA41_0 = input.LA(1);
-			if ( (LA41_0==END_PARAMETER_DIRECTIVE) ) {
-				alt41=1;
+			// smaliParser.g:777:5: ( END_PARAMETER_DIRECTIVE -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ( annotation )* ) ) | -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ) ) )
+			int alt43=2;
+			int LA43_0 = input.LA(1);
+			if ( (LA43_0==END_PARAMETER_DIRECTIVE) ) {
+				alt43=1;
 			}
-			else if ( (LA41_0==ANNOTATION_DIRECTIVE||LA41_0==ARRAY_DATA_DIRECTIVE||(LA41_0 >= CATCHALL_DIRECTIVE && LA41_0 <= CATCH_DIRECTIVE)||LA41_0==COLON||(LA41_0 >= END_LOCAL_DIRECTIVE && LA41_0 <= END_METHOD_DIRECTIVE)||LA41_0==EPILOGUE_DIRECTIVE||(LA41_0 >= INSTRUCTION_FORMAT10t && LA41_0 <= INSTRUCTION_FORMAT51l)||(LA41_0 >= LINE_DIRECTIVE && LA41_0 <= LOCAL_DIRECTIVE)||(LA41_0 >= PACKED_SWITCH_DIRECTIVE && LA41_0 <= PARAMETER_DIRECTIVE)||LA41_0==PROLOGUE_DIRECTIVE||(LA41_0 >= REGISTERS_DIRECTIVE && LA41_0 <= RESTART_LOCAL_DIRECTIVE)||(LA41_0 >= SOURCE_DIRECTIVE && LA41_0 <= SPARSE_SWITCH_DIRECTIVE)) ) {
-				alt41=2;
+			else if ( (LA43_0==ANNOTATION_DIRECTIVE||LA43_0==ARRAY_DATA_DIRECTIVE||(LA43_0 >= CATCHALL_DIRECTIVE && LA43_0 <= CATCH_DIRECTIVE)||LA43_0==COLON||(LA43_0 >= END_LOCAL_DIRECTIVE && LA43_0 <= END_METHOD_DIRECTIVE)||LA43_0==EPILOGUE_DIRECTIVE||(LA43_0 >= INSTRUCTION_FORMAT10t && LA43_0 <= INSTRUCTION_FORMAT51l)||(LA43_0 >= LINE_DIRECTIVE && LA43_0 <= LOCAL_DIRECTIVE)||(LA43_0 >= PACKED_SWITCH_DIRECTIVE && LA43_0 <= PARAMETER_DIRECTIVE)||LA43_0==PROLOGUE_DIRECTIVE||(LA43_0 >= REGISTERS_DIRECTIVE && LA43_0 <= RESTART_LOCAL_DIRECTIVE)||(LA43_0 >= SOURCE_DIRECTIVE && LA43_0 <= SPARSE_SWITCH_DIRECTIVE)) ) {
+				alt43=2;
 			}
 
 			else {
 				NoViableAltException nvae =
-					new NoViableAltException("", 41, 0, input);
+					new NoViableAltException("", 43, 0, input);
 				throw nvae;
 			}
 
-			switch (alt41) {
+			switch (alt43) {
 				case 1 :
-					// smaliParser.g:743:7: END_PARAMETER_DIRECTIVE
+					// smaliParser.g:777:7: END_PARAMETER_DIRECTIVE
 					{
-					END_PARAMETER_DIRECTIVE209=(Token)match(input,END_PARAMETER_DIRECTIVE,FOLLOW_END_PARAMETER_DIRECTIVE_in_parameter_directive3308);  
-					stream_END_PARAMETER_DIRECTIVE.add(END_PARAMETER_DIRECTIVE209);
+					END_PARAMETER_DIRECTIVE237=(Token)match(input,END_PARAMETER_DIRECTIVE,FOLLOW_END_PARAMETER_DIRECTIVE_in_parameter_directive3578);  
+					stream_END_PARAMETER_DIRECTIVE.add(END_PARAMETER_DIRECTIVE237);
 
 					// AST REWRITE
 					// elements: STRING_LITERAL, annotation, REGISTER
@@ -8019,24 +8777,24 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 744:7: -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ( annotation )* ) )
+					// 778:7: -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ( annotation )* ) )
 					{
-						// smaliParser.g:744:10: ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ( annotation )* ) )
+						// smaliParser.g:778:10: ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ( annotation )* ) )
 						{
 						CommonTree root_1 = (CommonTree)adaptor.nil();
 						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_PARAMETER, (retval.start), "I_PARAMETER"), root_1);
 						adaptor.addChild(root_1, stream_REGISTER.nextNode());
-						// smaliParser.g:744:56: ( STRING_LITERAL )?
+						// smaliParser.g:778:56: ( STRING_LITERAL )?
 						if ( stream_STRING_LITERAL.hasNext() ) {
 							adaptor.addChild(root_1, stream_STRING_LITERAL.nextNode());
 						}
 						stream_STRING_LITERAL.reset();
 
-						// smaliParser.g:744:72: ^( I_ANNOTATIONS ( annotation )* )
+						// smaliParser.g:778:72: ^( I_ANNOTATIONS ( annotation )* )
 						{
 						CommonTree root_2 = (CommonTree)adaptor.nil();
 						root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_ANNOTATIONS, "I_ANNOTATIONS"), root_2);
-						// smaliParser.g:744:88: ( annotation )*
+						// smaliParser.g:778:88: ( annotation )*
 						while ( stream_annotation.hasNext() ) {
 							adaptor.addChild(root_2, stream_annotation.nextTree());
 						}
@@ -8056,11 +8814,11 @@
 					}
 					break;
 				case 2 :
-					// smaliParser.g:745:19: 
+					// smaliParser.g:779:19: 
 					{
 					statements_and_directives_stack.peek().methodAnnotations.addAll(annotations);
 					// AST REWRITE
-					// elements: STRING_LITERAL, REGISTER
+					// elements: REGISTER, STRING_LITERAL
 					// token labels: 
 					// rule labels: retval
 					// token list labels: 
@@ -8070,20 +8828,20 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 746:7: -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ) )
+					// 780:7: -> ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ) )
 					{
-						// smaliParser.g:746:10: ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ) )
+						// smaliParser.g:780:10: ^( I_PARAMETER[$start, \"I_PARAMETER\"] REGISTER ( STRING_LITERAL )? ^( I_ANNOTATIONS ) )
 						{
 						CommonTree root_1 = (CommonTree)adaptor.nil();
 						root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_PARAMETER, (retval.start), "I_PARAMETER"), root_1);
 						adaptor.addChild(root_1, stream_REGISTER.nextNode());
-						// smaliParser.g:746:56: ( STRING_LITERAL )?
+						// smaliParser.g:780:56: ( STRING_LITERAL )?
 						if ( stream_STRING_LITERAL.hasNext() ) {
 							adaptor.addChild(root_1, stream_STRING_LITERAL.nextNode());
 						}
 						stream_STRING_LITERAL.reset();
 
-						// smaliParser.g:746:72: ^( I_ANNOTATIONS )
+						// smaliParser.g:780:72: ^( I_ANNOTATIONS )
 						{
 						CommonTree root_2 = (CommonTree)adaptor.nil();
 						root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_ANNOTATIONS, "I_ANNOTATIONS"), root_2);
@@ -8132,162 +8890,162 @@
 
 
 	// $ANTLR start "debug_directive"
-	// smaliParser.g:749:1: debug_directive : ( line_directive | local_directive | end_local_directive | restart_local_directive | prologue_directive | epilogue_directive | source_directive );
+	// smaliParser.g:783:1: debug_directive : ( line_directive | local_directive | end_local_directive | restart_local_directive | prologue_directive | epilogue_directive | source_directive );
 	public final smaliParser.debug_directive_return debug_directive() throws RecognitionException {
 		smaliParser.debug_directive_return retval = new smaliParser.debug_directive_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		ParserRuleReturnScope line_directive210 =null;
-		ParserRuleReturnScope local_directive211 =null;
-		ParserRuleReturnScope end_local_directive212 =null;
-		ParserRuleReturnScope restart_local_directive213 =null;
-		ParserRuleReturnScope prologue_directive214 =null;
-		ParserRuleReturnScope epilogue_directive215 =null;
-		ParserRuleReturnScope source_directive216 =null;
+		ParserRuleReturnScope line_directive238 =null;
+		ParserRuleReturnScope local_directive239 =null;
+		ParserRuleReturnScope end_local_directive240 =null;
+		ParserRuleReturnScope restart_local_directive241 =null;
+		ParserRuleReturnScope prologue_directive242 =null;
+		ParserRuleReturnScope epilogue_directive243 =null;
+		ParserRuleReturnScope source_directive244 =null;
 
 
 		try {
-			// smaliParser.g:750:3: ( line_directive | local_directive | end_local_directive | restart_local_directive | prologue_directive | epilogue_directive | source_directive )
-			int alt42=7;
+			// smaliParser.g:784:3: ( line_directive | local_directive | end_local_directive | restart_local_directive | prologue_directive | epilogue_directive | source_directive )
+			int alt44=7;
 			switch ( input.LA(1) ) {
 			case LINE_DIRECTIVE:
 				{
-				alt42=1;
+				alt44=1;
 				}
 				break;
 			case LOCAL_DIRECTIVE:
 				{
-				alt42=2;
+				alt44=2;
 				}
 				break;
 			case END_LOCAL_DIRECTIVE:
 				{
-				alt42=3;
+				alt44=3;
 				}
 				break;
 			case RESTART_LOCAL_DIRECTIVE:
 				{
-				alt42=4;
+				alt44=4;
 				}
 				break;
 			case PROLOGUE_DIRECTIVE:
 				{
-				alt42=5;
+				alt44=5;
 				}
 				break;
 			case EPILOGUE_DIRECTIVE:
 				{
-				alt42=6;
+				alt44=6;
 				}
 				break;
 			case SOURCE_DIRECTIVE:
 				{
-				alt42=7;
+				alt44=7;
 				}
 				break;
 			default:
 				NoViableAltException nvae =
-					new NoViableAltException("", 42, 0, input);
+					new NoViableAltException("", 44, 0, input);
 				throw nvae;
 			}
-			switch (alt42) {
+			switch (alt44) {
 				case 1 :
-					// smaliParser.g:750:5: line_directive
+					// smaliParser.g:784:5: line_directive
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_line_directive_in_debug_directive3381);
-					line_directive210=line_directive();
+					pushFollow(FOLLOW_line_directive_in_debug_directive3651);
+					line_directive238=line_directive();
 					state._fsp--;
 
-					adaptor.addChild(root_0, line_directive210.getTree());
+					adaptor.addChild(root_0, line_directive238.getTree());
 
 					}
 					break;
 				case 2 :
-					// smaliParser.g:751:5: local_directive
+					// smaliParser.g:785:5: local_directive
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_local_directive_in_debug_directive3387);
-					local_directive211=local_directive();
+					pushFollow(FOLLOW_local_directive_in_debug_directive3657);
+					local_directive239=local_directive();
 					state._fsp--;
 
-					adaptor.addChild(root_0, local_directive211.getTree());
+					adaptor.addChild(root_0, local_directive239.getTree());
 
 					}
 					break;
 				case 3 :
-					// smaliParser.g:752:5: end_local_directive
+					// smaliParser.g:786:5: end_local_directive
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_end_local_directive_in_debug_directive3393);
-					end_local_directive212=end_local_directive();
+					pushFollow(FOLLOW_end_local_directive_in_debug_directive3663);
+					end_local_directive240=end_local_directive();
 					state._fsp--;
 
-					adaptor.addChild(root_0, end_local_directive212.getTree());
+					adaptor.addChild(root_0, end_local_directive240.getTree());
 
 					}
 					break;
 				case 4 :
-					// smaliParser.g:753:5: restart_local_directive
+					// smaliParser.g:787:5: restart_local_directive
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_restart_local_directive_in_debug_directive3399);
-					restart_local_directive213=restart_local_directive();
+					pushFollow(FOLLOW_restart_local_directive_in_debug_directive3669);
+					restart_local_directive241=restart_local_directive();
 					state._fsp--;
 
-					adaptor.addChild(root_0, restart_local_directive213.getTree());
+					adaptor.addChild(root_0, restart_local_directive241.getTree());
 
 					}
 					break;
 				case 5 :
-					// smaliParser.g:754:5: prologue_directive
+					// smaliParser.g:788:5: prologue_directive
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_prologue_directive_in_debug_directive3405);
-					prologue_directive214=prologue_directive();
+					pushFollow(FOLLOW_prologue_directive_in_debug_directive3675);
+					prologue_directive242=prologue_directive();
 					state._fsp--;
 
-					adaptor.addChild(root_0, prologue_directive214.getTree());
+					adaptor.addChild(root_0, prologue_directive242.getTree());
 
 					}
 					break;
 				case 6 :
-					// smaliParser.g:755:5: epilogue_directive
+					// smaliParser.g:789:5: epilogue_directive
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_epilogue_directive_in_debug_directive3411);
-					epilogue_directive215=epilogue_directive();
+					pushFollow(FOLLOW_epilogue_directive_in_debug_directive3681);
+					epilogue_directive243=epilogue_directive();
 					state._fsp--;
 
-					adaptor.addChild(root_0, epilogue_directive215.getTree());
+					adaptor.addChild(root_0, epilogue_directive243.getTree());
 
 					}
 					break;
 				case 7 :
-					// smaliParser.g:756:5: source_directive
+					// smaliParser.g:790:5: source_directive
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_source_directive_in_debug_directive3417);
-					source_directive216=source_directive();
+					pushFollow(FOLLOW_source_directive_in_debug_directive3687);
+					source_directive244=source_directive();
 					state._fsp--;
 
-					adaptor.addChild(root_0, source_directive216.getTree());
+					adaptor.addChild(root_0, source_directive244.getTree());
 
 					}
 					break;
@@ -8320,32 +9078,32 @@
 
 
 	// $ANTLR start "line_directive"
-	// smaliParser.g:758:1: line_directive : LINE_DIRECTIVE integral_literal -> ^( I_LINE[$start, \"I_LINE\"] integral_literal ) ;
+	// smaliParser.g:792:1: line_directive : LINE_DIRECTIVE integral_literal -> ^( I_LINE[$start, \"I_LINE\"] integral_literal ) ;
 	public final smaliParser.line_directive_return line_directive() throws RecognitionException {
 		smaliParser.line_directive_return retval = new smaliParser.line_directive_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token LINE_DIRECTIVE217=null;
-		ParserRuleReturnScope integral_literal218 =null;
+		Token LINE_DIRECTIVE245=null;
+		ParserRuleReturnScope integral_literal246 =null;
 
-		CommonTree LINE_DIRECTIVE217_tree=null;
+		CommonTree LINE_DIRECTIVE245_tree=null;
 		RewriteRuleTokenStream stream_LINE_DIRECTIVE=new RewriteRuleTokenStream(adaptor,"token LINE_DIRECTIVE");
 		RewriteRuleSubtreeStream stream_integral_literal=new RewriteRuleSubtreeStream(adaptor,"rule integral_literal");
 
 		try {
-			// smaliParser.g:759:3: ( LINE_DIRECTIVE integral_literal -> ^( I_LINE[$start, \"I_LINE\"] integral_literal ) )
-			// smaliParser.g:759:5: LINE_DIRECTIVE integral_literal
+			// smaliParser.g:793:3: ( LINE_DIRECTIVE integral_literal -> ^( I_LINE[$start, \"I_LINE\"] integral_literal ) )
+			// smaliParser.g:793:5: LINE_DIRECTIVE integral_literal
 			{
-			LINE_DIRECTIVE217=(Token)match(input,LINE_DIRECTIVE,FOLLOW_LINE_DIRECTIVE_in_line_directive3427);  
-			stream_LINE_DIRECTIVE.add(LINE_DIRECTIVE217);
+			LINE_DIRECTIVE245=(Token)match(input,LINE_DIRECTIVE,FOLLOW_LINE_DIRECTIVE_in_line_directive3697);  
+			stream_LINE_DIRECTIVE.add(LINE_DIRECTIVE245);
 
-			pushFollow(FOLLOW_integral_literal_in_line_directive3429);
-			integral_literal218=integral_literal();
+			pushFollow(FOLLOW_integral_literal_in_line_directive3699);
+			integral_literal246=integral_literal();
 			state._fsp--;
 
-			stream_integral_literal.add(integral_literal218.getTree());
+			stream_integral_literal.add(integral_literal246.getTree());
 			// AST REWRITE
 			// elements: integral_literal
 			// token labels: 
@@ -8357,9 +9115,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 760:5: -> ^( I_LINE[$start, \"I_LINE\"] integral_literal )
+			// 794:5: -> ^( I_LINE[$start, \"I_LINE\"] integral_literal )
 			{
-				// smaliParser.g:760:8: ^( I_LINE[$start, \"I_LINE\"] integral_literal )
+				// smaliParser.g:794:8: ^( I_LINE[$start, \"I_LINE\"] integral_literal )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_LINE, (retval.start), "I_LINE"), root_1);
@@ -8401,7 +9159,7 @@
 
 
 	// $ANTLR start "local_directive"
-	// smaliParser.g:762:1: local_directive : LOCAL_DIRECTIVE REGISTER ( COMMA ( NULL_LITERAL |name= STRING_LITERAL ) COLON ( VOID_TYPE | nonvoid_type_descriptor ) ( COMMA signature= STRING_LITERAL )? )? -> ^( I_LOCAL[$start, \"I_LOCAL\"] REGISTER ( NULL_LITERAL )? ( $name)? ( nonvoid_type_descriptor )? ( $signature)? ) ;
+	// smaliParser.g:796:1: local_directive : LOCAL_DIRECTIVE REGISTER ( COMMA ( NULL_LITERAL |name= STRING_LITERAL ) COLON ( VOID_TYPE | nonvoid_type_descriptor ) ( COMMA signature= STRING_LITERAL )? )? -> ^( I_LOCAL[$start, \"I_LOCAL\"] REGISTER ( NULL_LITERAL )? ( $name)? ( nonvoid_type_descriptor )? ( $signature)? ) ;
 	public final smaliParser.local_directive_return local_directive() throws RecognitionException {
 		smaliParser.local_directive_return retval = new smaliParser.local_directive_return();
 		retval.start = input.LT(1);
@@ -8410,24 +9168,24 @@
 
 		Token name=null;
 		Token signature=null;
-		Token LOCAL_DIRECTIVE219=null;
-		Token REGISTER220=null;
-		Token COMMA221=null;
-		Token NULL_LITERAL222=null;
-		Token COLON223=null;
-		Token VOID_TYPE224=null;
-		Token COMMA226=null;
-		ParserRuleReturnScope nonvoid_type_descriptor225 =null;
+		Token LOCAL_DIRECTIVE247=null;
+		Token REGISTER248=null;
+		Token COMMA249=null;
+		Token NULL_LITERAL250=null;
+		Token COLON251=null;
+		Token VOID_TYPE252=null;
+		Token COMMA254=null;
+		ParserRuleReturnScope nonvoid_type_descriptor253 =null;
 
 		CommonTree name_tree=null;
 		CommonTree signature_tree=null;
-		CommonTree LOCAL_DIRECTIVE219_tree=null;
-		CommonTree REGISTER220_tree=null;
-		CommonTree COMMA221_tree=null;
-		CommonTree NULL_LITERAL222_tree=null;
-		CommonTree COLON223_tree=null;
-		CommonTree VOID_TYPE224_tree=null;
-		CommonTree COMMA226_tree=null;
+		CommonTree LOCAL_DIRECTIVE247_tree=null;
+		CommonTree REGISTER248_tree=null;
+		CommonTree COMMA249_tree=null;
+		CommonTree NULL_LITERAL250_tree=null;
+		CommonTree COLON251_tree=null;
+		CommonTree VOID_TYPE252_tree=null;
+		CommonTree COMMA254_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_LOCAL_DIRECTIVE=new RewriteRuleTokenStream(adaptor,"token LOCAL_DIRECTIVE");
@@ -8438,57 +9196,57 @@
 		RewriteRuleSubtreeStream stream_nonvoid_type_descriptor=new RewriteRuleSubtreeStream(adaptor,"rule nonvoid_type_descriptor");
 
 		try {
-			// smaliParser.g:763:3: ( LOCAL_DIRECTIVE REGISTER ( COMMA ( NULL_LITERAL |name= STRING_LITERAL ) COLON ( VOID_TYPE | nonvoid_type_descriptor ) ( COMMA signature= STRING_LITERAL )? )? -> ^( I_LOCAL[$start, \"I_LOCAL\"] REGISTER ( NULL_LITERAL )? ( $name)? ( nonvoid_type_descriptor )? ( $signature)? ) )
-			// smaliParser.g:763:5: LOCAL_DIRECTIVE REGISTER ( COMMA ( NULL_LITERAL |name= STRING_LITERAL ) COLON ( VOID_TYPE | nonvoid_type_descriptor ) ( COMMA signature= STRING_LITERAL )? )?
+			// smaliParser.g:797:3: ( LOCAL_DIRECTIVE REGISTER ( COMMA ( NULL_LITERAL |name= STRING_LITERAL ) COLON ( VOID_TYPE | nonvoid_type_descriptor ) ( COMMA signature= STRING_LITERAL )? )? -> ^( I_LOCAL[$start, \"I_LOCAL\"] REGISTER ( NULL_LITERAL )? ( $name)? ( nonvoid_type_descriptor )? ( $signature)? ) )
+			// smaliParser.g:797:5: LOCAL_DIRECTIVE REGISTER ( COMMA ( NULL_LITERAL |name= STRING_LITERAL ) COLON ( VOID_TYPE | nonvoid_type_descriptor ) ( COMMA signature= STRING_LITERAL )? )?
 			{
-			LOCAL_DIRECTIVE219=(Token)match(input,LOCAL_DIRECTIVE,FOLLOW_LOCAL_DIRECTIVE_in_local_directive3452);  
-			stream_LOCAL_DIRECTIVE.add(LOCAL_DIRECTIVE219);
+			LOCAL_DIRECTIVE247=(Token)match(input,LOCAL_DIRECTIVE,FOLLOW_LOCAL_DIRECTIVE_in_local_directive3722);  
+			stream_LOCAL_DIRECTIVE.add(LOCAL_DIRECTIVE247);
 
-			REGISTER220=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_local_directive3454);  
-			stream_REGISTER.add(REGISTER220);
+			REGISTER248=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_local_directive3724);  
+			stream_REGISTER.add(REGISTER248);
 
-			// smaliParser.g:763:30: ( COMMA ( NULL_LITERAL |name= STRING_LITERAL ) COLON ( VOID_TYPE | nonvoid_type_descriptor ) ( COMMA signature= STRING_LITERAL )? )?
-			int alt46=2;
-			int LA46_0 = input.LA(1);
-			if ( (LA46_0==COMMA) ) {
-				alt46=1;
+			// smaliParser.g:797:30: ( COMMA ( NULL_LITERAL |name= STRING_LITERAL ) COLON ( VOID_TYPE | nonvoid_type_descriptor ) ( COMMA signature= STRING_LITERAL )? )?
+			int alt48=2;
+			int LA48_0 = input.LA(1);
+			if ( (LA48_0==COMMA) ) {
+				alt48=1;
 			}
-			switch (alt46) {
+			switch (alt48) {
 				case 1 :
-					// smaliParser.g:763:31: COMMA ( NULL_LITERAL |name= STRING_LITERAL ) COLON ( VOID_TYPE | nonvoid_type_descriptor ) ( COMMA signature= STRING_LITERAL )?
+					// smaliParser.g:797:31: COMMA ( NULL_LITERAL |name= STRING_LITERAL ) COLON ( VOID_TYPE | nonvoid_type_descriptor ) ( COMMA signature= STRING_LITERAL )?
 					{
-					COMMA221=(Token)match(input,COMMA,FOLLOW_COMMA_in_local_directive3457);  
-					stream_COMMA.add(COMMA221);
+					COMMA249=(Token)match(input,COMMA,FOLLOW_COMMA_in_local_directive3727);  
+					stream_COMMA.add(COMMA249);
 
-					// smaliParser.g:763:37: ( NULL_LITERAL |name= STRING_LITERAL )
-					int alt43=2;
-					int LA43_0 = input.LA(1);
-					if ( (LA43_0==NULL_LITERAL) ) {
-						alt43=1;
+					// smaliParser.g:797:37: ( NULL_LITERAL |name= STRING_LITERAL )
+					int alt45=2;
+					int LA45_0 = input.LA(1);
+					if ( (LA45_0==NULL_LITERAL) ) {
+						alt45=1;
 					}
-					else if ( (LA43_0==STRING_LITERAL) ) {
-						alt43=2;
+					else if ( (LA45_0==STRING_LITERAL) ) {
+						alt45=2;
 					}
 
 					else {
 						NoViableAltException nvae =
-							new NoViableAltException("", 43, 0, input);
+							new NoViableAltException("", 45, 0, input);
 						throw nvae;
 					}
 
-					switch (alt43) {
+					switch (alt45) {
 						case 1 :
-							// smaliParser.g:763:38: NULL_LITERAL
+							// smaliParser.g:797:38: NULL_LITERAL
 							{
-							NULL_LITERAL222=(Token)match(input,NULL_LITERAL,FOLLOW_NULL_LITERAL_in_local_directive3460);  
-							stream_NULL_LITERAL.add(NULL_LITERAL222);
+							NULL_LITERAL250=(Token)match(input,NULL_LITERAL,FOLLOW_NULL_LITERAL_in_local_directive3730);  
+							stream_NULL_LITERAL.add(NULL_LITERAL250);
 
 							}
 							break;
 						case 2 :
-							// smaliParser.g:763:53: name= STRING_LITERAL
+							// smaliParser.g:797:53: name= STRING_LITERAL
 							{
-							name=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_local_directive3466);  
+							name=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_local_directive3736);  
 							stream_STRING_LITERAL.add(name);
 
 							}
@@ -8496,61 +9254,61 @@
 
 					}
 
-					COLON223=(Token)match(input,COLON,FOLLOW_COLON_in_local_directive3469);  
-					stream_COLON.add(COLON223);
+					COLON251=(Token)match(input,COLON,FOLLOW_COLON_in_local_directive3739);  
+					stream_COLON.add(COLON251);
 
-					// smaliParser.g:763:80: ( VOID_TYPE | nonvoid_type_descriptor )
-					int alt44=2;
-					int LA44_0 = input.LA(1);
-					if ( (LA44_0==VOID_TYPE) ) {
-						alt44=1;
+					// smaliParser.g:797:80: ( VOID_TYPE | nonvoid_type_descriptor )
+					int alt46=2;
+					int LA46_0 = input.LA(1);
+					if ( (LA46_0==VOID_TYPE) ) {
+						alt46=1;
 					}
-					else if ( (LA44_0==ARRAY_TYPE_PREFIX||LA44_0==CLASS_DESCRIPTOR||LA44_0==PRIMITIVE_TYPE) ) {
-						alt44=2;
+					else if ( (LA46_0==ARRAY_TYPE_PREFIX||LA46_0==CLASS_DESCRIPTOR||LA46_0==PRIMITIVE_TYPE) ) {
+						alt46=2;
 					}
 
 					else {
 						NoViableAltException nvae =
-							new NoViableAltException("", 44, 0, input);
+							new NoViableAltException("", 46, 0, input);
 						throw nvae;
 					}
 
-					switch (alt44) {
+					switch (alt46) {
 						case 1 :
-							// smaliParser.g:763:81: VOID_TYPE
+							// smaliParser.g:797:81: VOID_TYPE
 							{
-							VOID_TYPE224=(Token)match(input,VOID_TYPE,FOLLOW_VOID_TYPE_in_local_directive3472);  
-							stream_VOID_TYPE.add(VOID_TYPE224);
+							VOID_TYPE252=(Token)match(input,VOID_TYPE,FOLLOW_VOID_TYPE_in_local_directive3742);  
+							stream_VOID_TYPE.add(VOID_TYPE252);
 
 							}
 							break;
 						case 2 :
-							// smaliParser.g:763:93: nonvoid_type_descriptor
+							// smaliParser.g:797:93: nonvoid_type_descriptor
 							{
-							pushFollow(FOLLOW_nonvoid_type_descriptor_in_local_directive3476);
-							nonvoid_type_descriptor225=nonvoid_type_descriptor();
+							pushFollow(FOLLOW_nonvoid_type_descriptor_in_local_directive3746);
+							nonvoid_type_descriptor253=nonvoid_type_descriptor();
 							state._fsp--;
 
-							stream_nonvoid_type_descriptor.add(nonvoid_type_descriptor225.getTree());
+							stream_nonvoid_type_descriptor.add(nonvoid_type_descriptor253.getTree());
 							}
 							break;
 
 					}
 
-					// smaliParser.g:764:31: ( COMMA signature= STRING_LITERAL )?
-					int alt45=2;
-					int LA45_0 = input.LA(1);
-					if ( (LA45_0==COMMA) ) {
-						alt45=1;
+					// smaliParser.g:798:31: ( COMMA signature= STRING_LITERAL )?
+					int alt47=2;
+					int LA47_0 = input.LA(1);
+					if ( (LA47_0==COMMA) ) {
+						alt47=1;
 					}
-					switch (alt45) {
+					switch (alt47) {
 						case 1 :
-							// smaliParser.g:764:32: COMMA signature= STRING_LITERAL
+							// smaliParser.g:798:32: COMMA signature= STRING_LITERAL
 							{
-							COMMA226=(Token)match(input,COMMA,FOLLOW_COMMA_in_local_directive3510);  
-							stream_COMMA.add(COMMA226);
+							COMMA254=(Token)match(input,COMMA,FOLLOW_COMMA_in_local_directive3780);  
+							stream_COMMA.add(COMMA254);
 
-							signature=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_local_directive3514);  
+							signature=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_local_directive3784);  
 							stream_STRING_LITERAL.add(signature);
 
 							}
@@ -8564,7 +9322,7 @@
 			}
 
 			// AST REWRITE
-			// elements: name, NULL_LITERAL, nonvoid_type_descriptor, REGISTER, signature
+			// elements: name, NULL_LITERAL, signature, nonvoid_type_descriptor, REGISTER
 			// token labels: signature, name
 			// rule labels: retval
 			// token list labels: 
@@ -8576,32 +9334,32 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 765:5: -> ^( I_LOCAL[$start, \"I_LOCAL\"] REGISTER ( NULL_LITERAL )? ( $name)? ( nonvoid_type_descriptor )? ( $signature)? )
+			// 799:5: -> ^( I_LOCAL[$start, \"I_LOCAL\"] REGISTER ( NULL_LITERAL )? ( $name)? ( nonvoid_type_descriptor )? ( $signature)? )
 			{
-				// smaliParser.g:765:8: ^( I_LOCAL[$start, \"I_LOCAL\"] REGISTER ( NULL_LITERAL )? ( $name)? ( nonvoid_type_descriptor )? ( $signature)? )
+				// smaliParser.g:799:8: ^( I_LOCAL[$start, \"I_LOCAL\"] REGISTER ( NULL_LITERAL )? ( $name)? ( nonvoid_type_descriptor )? ( $signature)? )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_LOCAL, (retval.start), "I_LOCAL"), root_1);
 				adaptor.addChild(root_1, stream_REGISTER.nextNode());
-				// smaliParser.g:765:46: ( NULL_LITERAL )?
+				// smaliParser.g:799:46: ( NULL_LITERAL )?
 				if ( stream_NULL_LITERAL.hasNext() ) {
 					adaptor.addChild(root_1, stream_NULL_LITERAL.nextNode());
 				}
 				stream_NULL_LITERAL.reset();
 
-				// smaliParser.g:765:61: ( $name)?
+				// smaliParser.g:799:61: ( $name)?
 				if ( stream_name.hasNext() ) {
 					adaptor.addChild(root_1, stream_name.nextNode());
 				}
 				stream_name.reset();
 
-				// smaliParser.g:765:67: ( nonvoid_type_descriptor )?
+				// smaliParser.g:799:67: ( nonvoid_type_descriptor )?
 				if ( stream_nonvoid_type_descriptor.hasNext() ) {
 					adaptor.addChild(root_1, stream_nonvoid_type_descriptor.nextTree());
 				}
 				stream_nonvoid_type_descriptor.reset();
 
-				// smaliParser.g:765:93: ( $signature)?
+				// smaliParser.g:799:93: ( $signature)?
 				if ( stream_signature.hasNext() ) {
 					adaptor.addChild(root_1, stream_signature.nextNode());
 				}
@@ -8644,30 +9402,30 @@
 
 
 	// $ANTLR start "end_local_directive"
-	// smaliParser.g:767:1: end_local_directive : END_LOCAL_DIRECTIVE REGISTER -> ^( I_END_LOCAL[$start, \"I_END_LOCAL\"] REGISTER ) ;
+	// smaliParser.g:801:1: end_local_directive : END_LOCAL_DIRECTIVE REGISTER -> ^( I_END_LOCAL[$start, \"I_END_LOCAL\"] REGISTER ) ;
 	public final smaliParser.end_local_directive_return end_local_directive() throws RecognitionException {
 		smaliParser.end_local_directive_return retval = new smaliParser.end_local_directive_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token END_LOCAL_DIRECTIVE227=null;
-		Token REGISTER228=null;
+		Token END_LOCAL_DIRECTIVE255=null;
+		Token REGISTER256=null;
 
-		CommonTree END_LOCAL_DIRECTIVE227_tree=null;
-		CommonTree REGISTER228_tree=null;
+		CommonTree END_LOCAL_DIRECTIVE255_tree=null;
+		CommonTree REGISTER256_tree=null;
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_END_LOCAL_DIRECTIVE=new RewriteRuleTokenStream(adaptor,"token END_LOCAL_DIRECTIVE");
 
 		try {
-			// smaliParser.g:768:3: ( END_LOCAL_DIRECTIVE REGISTER -> ^( I_END_LOCAL[$start, \"I_END_LOCAL\"] REGISTER ) )
-			// smaliParser.g:768:5: END_LOCAL_DIRECTIVE REGISTER
+			// smaliParser.g:802:3: ( END_LOCAL_DIRECTIVE REGISTER -> ^( I_END_LOCAL[$start, \"I_END_LOCAL\"] REGISTER ) )
+			// smaliParser.g:802:5: END_LOCAL_DIRECTIVE REGISTER
 			{
-			END_LOCAL_DIRECTIVE227=(Token)match(input,END_LOCAL_DIRECTIVE,FOLLOW_END_LOCAL_DIRECTIVE_in_end_local_directive3556);  
-			stream_END_LOCAL_DIRECTIVE.add(END_LOCAL_DIRECTIVE227);
+			END_LOCAL_DIRECTIVE255=(Token)match(input,END_LOCAL_DIRECTIVE,FOLLOW_END_LOCAL_DIRECTIVE_in_end_local_directive3826);  
+			stream_END_LOCAL_DIRECTIVE.add(END_LOCAL_DIRECTIVE255);
 
-			REGISTER228=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_end_local_directive3558);  
-			stream_REGISTER.add(REGISTER228);
+			REGISTER256=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_end_local_directive3828);  
+			stream_REGISTER.add(REGISTER256);
 
 			// AST REWRITE
 			// elements: REGISTER
@@ -8680,9 +9438,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 769:5: -> ^( I_END_LOCAL[$start, \"I_END_LOCAL\"] REGISTER )
+			// 803:5: -> ^( I_END_LOCAL[$start, \"I_END_LOCAL\"] REGISTER )
 			{
-				// smaliParser.g:769:8: ^( I_END_LOCAL[$start, \"I_END_LOCAL\"] REGISTER )
+				// smaliParser.g:803:8: ^( I_END_LOCAL[$start, \"I_END_LOCAL\"] REGISTER )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_END_LOCAL, (retval.start), "I_END_LOCAL"), root_1);
@@ -8724,30 +9482,30 @@
 
 
 	// $ANTLR start "restart_local_directive"
-	// smaliParser.g:771:1: restart_local_directive : RESTART_LOCAL_DIRECTIVE REGISTER -> ^( I_RESTART_LOCAL[$start, \"I_RESTART_LOCAL\"] REGISTER ) ;
+	// smaliParser.g:805:1: restart_local_directive : RESTART_LOCAL_DIRECTIVE REGISTER -> ^( I_RESTART_LOCAL[$start, \"I_RESTART_LOCAL\"] REGISTER ) ;
 	public final smaliParser.restart_local_directive_return restart_local_directive() throws RecognitionException {
 		smaliParser.restart_local_directive_return retval = new smaliParser.restart_local_directive_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token RESTART_LOCAL_DIRECTIVE229=null;
-		Token REGISTER230=null;
+		Token RESTART_LOCAL_DIRECTIVE257=null;
+		Token REGISTER258=null;
 
-		CommonTree RESTART_LOCAL_DIRECTIVE229_tree=null;
-		CommonTree REGISTER230_tree=null;
+		CommonTree RESTART_LOCAL_DIRECTIVE257_tree=null;
+		CommonTree REGISTER258_tree=null;
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_RESTART_LOCAL_DIRECTIVE=new RewriteRuleTokenStream(adaptor,"token RESTART_LOCAL_DIRECTIVE");
 
 		try {
-			// smaliParser.g:772:3: ( RESTART_LOCAL_DIRECTIVE REGISTER -> ^( I_RESTART_LOCAL[$start, \"I_RESTART_LOCAL\"] REGISTER ) )
-			// smaliParser.g:772:5: RESTART_LOCAL_DIRECTIVE REGISTER
+			// smaliParser.g:806:3: ( RESTART_LOCAL_DIRECTIVE REGISTER -> ^( I_RESTART_LOCAL[$start, \"I_RESTART_LOCAL\"] REGISTER ) )
+			// smaliParser.g:806:5: RESTART_LOCAL_DIRECTIVE REGISTER
 			{
-			RESTART_LOCAL_DIRECTIVE229=(Token)match(input,RESTART_LOCAL_DIRECTIVE,FOLLOW_RESTART_LOCAL_DIRECTIVE_in_restart_local_directive3581);  
-			stream_RESTART_LOCAL_DIRECTIVE.add(RESTART_LOCAL_DIRECTIVE229);
+			RESTART_LOCAL_DIRECTIVE257=(Token)match(input,RESTART_LOCAL_DIRECTIVE,FOLLOW_RESTART_LOCAL_DIRECTIVE_in_restart_local_directive3851);  
+			stream_RESTART_LOCAL_DIRECTIVE.add(RESTART_LOCAL_DIRECTIVE257);
 
-			REGISTER230=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_restart_local_directive3583);  
-			stream_REGISTER.add(REGISTER230);
+			REGISTER258=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_restart_local_directive3853);  
+			stream_REGISTER.add(REGISTER258);
 
 			// AST REWRITE
 			// elements: REGISTER
@@ -8760,9 +9518,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 773:5: -> ^( I_RESTART_LOCAL[$start, \"I_RESTART_LOCAL\"] REGISTER )
+			// 807:5: -> ^( I_RESTART_LOCAL[$start, \"I_RESTART_LOCAL\"] REGISTER )
 			{
-				// smaliParser.g:773:8: ^( I_RESTART_LOCAL[$start, \"I_RESTART_LOCAL\"] REGISTER )
+				// smaliParser.g:807:8: ^( I_RESTART_LOCAL[$start, \"I_RESTART_LOCAL\"] REGISTER )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_RESTART_LOCAL, (retval.start), "I_RESTART_LOCAL"), root_1);
@@ -8804,24 +9562,24 @@
 
 
 	// $ANTLR start "prologue_directive"
-	// smaliParser.g:775:1: prologue_directive : PROLOGUE_DIRECTIVE -> ^( I_PROLOGUE[$start, \"I_PROLOGUE\"] ) ;
+	// smaliParser.g:809:1: prologue_directive : PROLOGUE_DIRECTIVE -> ^( I_PROLOGUE[$start, \"I_PROLOGUE\"] ) ;
 	public final smaliParser.prologue_directive_return prologue_directive() throws RecognitionException {
 		smaliParser.prologue_directive_return retval = new smaliParser.prologue_directive_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token PROLOGUE_DIRECTIVE231=null;
+		Token PROLOGUE_DIRECTIVE259=null;
 
-		CommonTree PROLOGUE_DIRECTIVE231_tree=null;
+		CommonTree PROLOGUE_DIRECTIVE259_tree=null;
 		RewriteRuleTokenStream stream_PROLOGUE_DIRECTIVE=new RewriteRuleTokenStream(adaptor,"token PROLOGUE_DIRECTIVE");
 
 		try {
-			// smaliParser.g:776:3: ( PROLOGUE_DIRECTIVE -> ^( I_PROLOGUE[$start, \"I_PROLOGUE\"] ) )
-			// smaliParser.g:776:5: PROLOGUE_DIRECTIVE
+			// smaliParser.g:810:3: ( PROLOGUE_DIRECTIVE -> ^( I_PROLOGUE[$start, \"I_PROLOGUE\"] ) )
+			// smaliParser.g:810:5: PROLOGUE_DIRECTIVE
 			{
-			PROLOGUE_DIRECTIVE231=(Token)match(input,PROLOGUE_DIRECTIVE,FOLLOW_PROLOGUE_DIRECTIVE_in_prologue_directive3606);  
-			stream_PROLOGUE_DIRECTIVE.add(PROLOGUE_DIRECTIVE231);
+			PROLOGUE_DIRECTIVE259=(Token)match(input,PROLOGUE_DIRECTIVE,FOLLOW_PROLOGUE_DIRECTIVE_in_prologue_directive3876);  
+			stream_PROLOGUE_DIRECTIVE.add(PROLOGUE_DIRECTIVE259);
 
 			// AST REWRITE
 			// elements: 
@@ -8834,9 +9592,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 777:5: -> ^( I_PROLOGUE[$start, \"I_PROLOGUE\"] )
+			// 811:5: -> ^( I_PROLOGUE[$start, \"I_PROLOGUE\"] )
 			{
-				// smaliParser.g:777:8: ^( I_PROLOGUE[$start, \"I_PROLOGUE\"] )
+				// smaliParser.g:811:8: ^( I_PROLOGUE[$start, \"I_PROLOGUE\"] )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_PROLOGUE, (retval.start), "I_PROLOGUE"), root_1);
@@ -8877,24 +9635,24 @@
 
 
 	// $ANTLR start "epilogue_directive"
-	// smaliParser.g:779:1: epilogue_directive : EPILOGUE_DIRECTIVE -> ^( I_EPILOGUE[$start, \"I_EPILOGUE\"] ) ;
+	// smaliParser.g:813:1: epilogue_directive : EPILOGUE_DIRECTIVE -> ^( I_EPILOGUE[$start, \"I_EPILOGUE\"] ) ;
 	public final smaliParser.epilogue_directive_return epilogue_directive() throws RecognitionException {
 		smaliParser.epilogue_directive_return retval = new smaliParser.epilogue_directive_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token EPILOGUE_DIRECTIVE232=null;
+		Token EPILOGUE_DIRECTIVE260=null;
 
-		CommonTree EPILOGUE_DIRECTIVE232_tree=null;
+		CommonTree EPILOGUE_DIRECTIVE260_tree=null;
 		RewriteRuleTokenStream stream_EPILOGUE_DIRECTIVE=new RewriteRuleTokenStream(adaptor,"token EPILOGUE_DIRECTIVE");
 
 		try {
-			// smaliParser.g:780:3: ( EPILOGUE_DIRECTIVE -> ^( I_EPILOGUE[$start, \"I_EPILOGUE\"] ) )
-			// smaliParser.g:780:5: EPILOGUE_DIRECTIVE
+			// smaliParser.g:814:3: ( EPILOGUE_DIRECTIVE -> ^( I_EPILOGUE[$start, \"I_EPILOGUE\"] ) )
+			// smaliParser.g:814:5: EPILOGUE_DIRECTIVE
 			{
-			EPILOGUE_DIRECTIVE232=(Token)match(input,EPILOGUE_DIRECTIVE,FOLLOW_EPILOGUE_DIRECTIVE_in_epilogue_directive3627);  
-			stream_EPILOGUE_DIRECTIVE.add(EPILOGUE_DIRECTIVE232);
+			EPILOGUE_DIRECTIVE260=(Token)match(input,EPILOGUE_DIRECTIVE,FOLLOW_EPILOGUE_DIRECTIVE_in_epilogue_directive3897);  
+			stream_EPILOGUE_DIRECTIVE.add(EPILOGUE_DIRECTIVE260);
 
 			// AST REWRITE
 			// elements: 
@@ -8907,9 +9665,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 781:5: -> ^( I_EPILOGUE[$start, \"I_EPILOGUE\"] )
+			// 815:5: -> ^( I_EPILOGUE[$start, \"I_EPILOGUE\"] )
 			{
-				// smaliParser.g:781:8: ^( I_EPILOGUE[$start, \"I_EPILOGUE\"] )
+				// smaliParser.g:815:8: ^( I_EPILOGUE[$start, \"I_EPILOGUE\"] )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_EPILOGUE, (retval.start), "I_EPILOGUE"), root_1);
@@ -8950,40 +9708,40 @@
 
 
 	// $ANTLR start "source_directive"
-	// smaliParser.g:783:1: source_directive : SOURCE_DIRECTIVE ( STRING_LITERAL )? -> ^( I_SOURCE[$start, \"I_SOURCE\"] ( STRING_LITERAL )? ) ;
+	// smaliParser.g:817:1: source_directive : SOURCE_DIRECTIVE ( STRING_LITERAL )? -> ^( I_SOURCE[$start, \"I_SOURCE\"] ( STRING_LITERAL )? ) ;
 	public final smaliParser.source_directive_return source_directive() throws RecognitionException {
 		smaliParser.source_directive_return retval = new smaliParser.source_directive_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token SOURCE_DIRECTIVE233=null;
-		Token STRING_LITERAL234=null;
+		Token SOURCE_DIRECTIVE261=null;
+		Token STRING_LITERAL262=null;
 
-		CommonTree SOURCE_DIRECTIVE233_tree=null;
-		CommonTree STRING_LITERAL234_tree=null;
+		CommonTree SOURCE_DIRECTIVE261_tree=null;
+		CommonTree STRING_LITERAL262_tree=null;
 		RewriteRuleTokenStream stream_SOURCE_DIRECTIVE=new RewriteRuleTokenStream(adaptor,"token SOURCE_DIRECTIVE");
 		RewriteRuleTokenStream stream_STRING_LITERAL=new RewriteRuleTokenStream(adaptor,"token STRING_LITERAL");
 
 		try {
-			// smaliParser.g:784:3: ( SOURCE_DIRECTIVE ( STRING_LITERAL )? -> ^( I_SOURCE[$start, \"I_SOURCE\"] ( STRING_LITERAL )? ) )
-			// smaliParser.g:784:5: SOURCE_DIRECTIVE ( STRING_LITERAL )?
+			// smaliParser.g:818:3: ( SOURCE_DIRECTIVE ( STRING_LITERAL )? -> ^( I_SOURCE[$start, \"I_SOURCE\"] ( STRING_LITERAL )? ) )
+			// smaliParser.g:818:5: SOURCE_DIRECTIVE ( STRING_LITERAL )?
 			{
-			SOURCE_DIRECTIVE233=(Token)match(input,SOURCE_DIRECTIVE,FOLLOW_SOURCE_DIRECTIVE_in_source_directive3648);  
-			stream_SOURCE_DIRECTIVE.add(SOURCE_DIRECTIVE233);
+			SOURCE_DIRECTIVE261=(Token)match(input,SOURCE_DIRECTIVE,FOLLOW_SOURCE_DIRECTIVE_in_source_directive3918);  
+			stream_SOURCE_DIRECTIVE.add(SOURCE_DIRECTIVE261);
 
-			// smaliParser.g:784:22: ( STRING_LITERAL )?
-			int alt47=2;
-			int LA47_0 = input.LA(1);
-			if ( (LA47_0==STRING_LITERAL) ) {
-				alt47=1;
+			// smaliParser.g:818:22: ( STRING_LITERAL )?
+			int alt49=2;
+			int LA49_0 = input.LA(1);
+			if ( (LA49_0==STRING_LITERAL) ) {
+				alt49=1;
 			}
-			switch (alt47) {
+			switch (alt49) {
 				case 1 :
-					// smaliParser.g:784:22: STRING_LITERAL
+					// smaliParser.g:818:22: STRING_LITERAL
 					{
-					STRING_LITERAL234=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_source_directive3650);  
-					stream_STRING_LITERAL.add(STRING_LITERAL234);
+					STRING_LITERAL262=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_source_directive3920);  
+					stream_STRING_LITERAL.add(STRING_LITERAL262);
 
 					}
 					break;
@@ -9001,13 +9759,13 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 785:5: -> ^( I_SOURCE[$start, \"I_SOURCE\"] ( STRING_LITERAL )? )
+			// 819:5: -> ^( I_SOURCE[$start, \"I_SOURCE\"] ( STRING_LITERAL )? )
 			{
-				// smaliParser.g:785:8: ^( I_SOURCE[$start, \"I_SOURCE\"] ( STRING_LITERAL )? )
+				// smaliParser.g:819:8: ^( I_SOURCE[$start, \"I_SOURCE\"] ( STRING_LITERAL )? )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_SOURCE, (retval.start), "I_SOURCE"), root_1);
-				// smaliParser.g:785:39: ( STRING_LITERAL )?
+				// smaliParser.g:819:39: ( STRING_LITERAL )?
 				if ( stream_STRING_LITERAL.hasNext() ) {
 					adaptor.addChild(root_1, stream_STRING_LITERAL.nextNode());
 				}
@@ -9050,55 +9808,55 @@
 
 
 	// $ANTLR start "instruction_format12x"
-	// smaliParser.g:787:1: instruction_format12x : ( INSTRUCTION_FORMAT12x | INSTRUCTION_FORMAT12x_OR_ID -> INSTRUCTION_FORMAT12x[$INSTRUCTION_FORMAT12x_OR_ID] );
+	// smaliParser.g:821:1: instruction_format12x : ( INSTRUCTION_FORMAT12x | INSTRUCTION_FORMAT12x_OR_ID -> INSTRUCTION_FORMAT12x[$INSTRUCTION_FORMAT12x_OR_ID] );
 	public final smaliParser.instruction_format12x_return instruction_format12x() throws RecognitionException {
 		smaliParser.instruction_format12x_return retval = new smaliParser.instruction_format12x_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT12x235=null;
-		Token INSTRUCTION_FORMAT12x_OR_ID236=null;
+		Token INSTRUCTION_FORMAT12x263=null;
+		Token INSTRUCTION_FORMAT12x_OR_ID264=null;
 
-		CommonTree INSTRUCTION_FORMAT12x235_tree=null;
-		CommonTree INSTRUCTION_FORMAT12x_OR_ID236_tree=null;
+		CommonTree INSTRUCTION_FORMAT12x263_tree=null;
+		CommonTree INSTRUCTION_FORMAT12x_OR_ID264_tree=null;
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT12x_OR_ID=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT12x_OR_ID");
 
 		try {
-			// smaliParser.g:788:3: ( INSTRUCTION_FORMAT12x | INSTRUCTION_FORMAT12x_OR_ID -> INSTRUCTION_FORMAT12x[$INSTRUCTION_FORMAT12x_OR_ID] )
-			int alt48=2;
-			int LA48_0 = input.LA(1);
-			if ( (LA48_0==INSTRUCTION_FORMAT12x) ) {
-				alt48=1;
+			// smaliParser.g:822:3: ( INSTRUCTION_FORMAT12x | INSTRUCTION_FORMAT12x_OR_ID -> INSTRUCTION_FORMAT12x[$INSTRUCTION_FORMAT12x_OR_ID] )
+			int alt50=2;
+			int LA50_0 = input.LA(1);
+			if ( (LA50_0==INSTRUCTION_FORMAT12x) ) {
+				alt50=1;
 			}
-			else if ( (LA48_0==INSTRUCTION_FORMAT12x_OR_ID) ) {
-				alt48=2;
+			else if ( (LA50_0==INSTRUCTION_FORMAT12x_OR_ID) ) {
+				alt50=2;
 			}
 
 			else {
 				NoViableAltException nvae =
-					new NoViableAltException("", 48, 0, input);
+					new NoViableAltException("", 50, 0, input);
 				throw nvae;
 			}
 
-			switch (alt48) {
+			switch (alt50) {
 				case 1 :
-					// smaliParser.g:788:5: INSTRUCTION_FORMAT12x
+					// smaliParser.g:822:5: INSTRUCTION_FORMAT12x
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					INSTRUCTION_FORMAT12x235=(Token)match(input,INSTRUCTION_FORMAT12x,FOLLOW_INSTRUCTION_FORMAT12x_in_instruction_format12x3675); 
-					INSTRUCTION_FORMAT12x235_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT12x235);
-					adaptor.addChild(root_0, INSTRUCTION_FORMAT12x235_tree);
+					INSTRUCTION_FORMAT12x263=(Token)match(input,INSTRUCTION_FORMAT12x,FOLLOW_INSTRUCTION_FORMAT12x_in_instruction_format12x3945); 
+					INSTRUCTION_FORMAT12x263_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT12x263);
+					adaptor.addChild(root_0, INSTRUCTION_FORMAT12x263_tree);
 
 					}
 					break;
 				case 2 :
-					// smaliParser.g:789:5: INSTRUCTION_FORMAT12x_OR_ID
+					// smaliParser.g:823:5: INSTRUCTION_FORMAT12x_OR_ID
 					{
-					INSTRUCTION_FORMAT12x_OR_ID236=(Token)match(input,INSTRUCTION_FORMAT12x_OR_ID,FOLLOW_INSTRUCTION_FORMAT12x_OR_ID_in_instruction_format12x3681);  
-					stream_INSTRUCTION_FORMAT12x_OR_ID.add(INSTRUCTION_FORMAT12x_OR_ID236);
+					INSTRUCTION_FORMAT12x_OR_ID264=(Token)match(input,INSTRUCTION_FORMAT12x_OR_ID,FOLLOW_INSTRUCTION_FORMAT12x_OR_ID_in_instruction_format12x3951);  
+					stream_INSTRUCTION_FORMAT12x_OR_ID.add(INSTRUCTION_FORMAT12x_OR_ID264);
 
 					// AST REWRITE
 					// elements: 
@@ -9111,9 +9869,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 789:33: -> INSTRUCTION_FORMAT12x[$INSTRUCTION_FORMAT12x_OR_ID]
+					// 823:33: -> INSTRUCTION_FORMAT12x[$INSTRUCTION_FORMAT12x_OR_ID]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(INSTRUCTION_FORMAT12x, INSTRUCTION_FORMAT12x_OR_ID236));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(INSTRUCTION_FORMAT12x, INSTRUCTION_FORMAT12x_OR_ID264));
 					}
 
 
@@ -9150,55 +9908,55 @@
 
 
 	// $ANTLR start "instruction_format22s"
-	// smaliParser.g:791:1: instruction_format22s : ( INSTRUCTION_FORMAT22s | INSTRUCTION_FORMAT22s_OR_ID -> INSTRUCTION_FORMAT22s[$INSTRUCTION_FORMAT22s_OR_ID] );
+	// smaliParser.g:825:1: instruction_format22s : ( INSTRUCTION_FORMAT22s | INSTRUCTION_FORMAT22s_OR_ID -> INSTRUCTION_FORMAT22s[$INSTRUCTION_FORMAT22s_OR_ID] );
 	public final smaliParser.instruction_format22s_return instruction_format22s() throws RecognitionException {
 		smaliParser.instruction_format22s_return retval = new smaliParser.instruction_format22s_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT22s237=null;
-		Token INSTRUCTION_FORMAT22s_OR_ID238=null;
+		Token INSTRUCTION_FORMAT22s265=null;
+		Token INSTRUCTION_FORMAT22s_OR_ID266=null;
 
-		CommonTree INSTRUCTION_FORMAT22s237_tree=null;
-		CommonTree INSTRUCTION_FORMAT22s_OR_ID238_tree=null;
+		CommonTree INSTRUCTION_FORMAT22s265_tree=null;
+		CommonTree INSTRUCTION_FORMAT22s_OR_ID266_tree=null;
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT22s_OR_ID=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT22s_OR_ID");
 
 		try {
-			// smaliParser.g:792:3: ( INSTRUCTION_FORMAT22s | INSTRUCTION_FORMAT22s_OR_ID -> INSTRUCTION_FORMAT22s[$INSTRUCTION_FORMAT22s_OR_ID] )
-			int alt49=2;
-			int LA49_0 = input.LA(1);
-			if ( (LA49_0==INSTRUCTION_FORMAT22s) ) {
-				alt49=1;
+			// smaliParser.g:826:3: ( INSTRUCTION_FORMAT22s | INSTRUCTION_FORMAT22s_OR_ID -> INSTRUCTION_FORMAT22s[$INSTRUCTION_FORMAT22s_OR_ID] )
+			int alt51=2;
+			int LA51_0 = input.LA(1);
+			if ( (LA51_0==INSTRUCTION_FORMAT22s) ) {
+				alt51=1;
 			}
-			else if ( (LA49_0==INSTRUCTION_FORMAT22s_OR_ID) ) {
-				alt49=2;
+			else if ( (LA51_0==INSTRUCTION_FORMAT22s_OR_ID) ) {
+				alt51=2;
 			}
 
 			else {
 				NoViableAltException nvae =
-					new NoViableAltException("", 49, 0, input);
+					new NoViableAltException("", 51, 0, input);
 				throw nvae;
 			}
 
-			switch (alt49) {
+			switch (alt51) {
 				case 1 :
-					// smaliParser.g:792:5: INSTRUCTION_FORMAT22s
+					// smaliParser.g:826:5: INSTRUCTION_FORMAT22s
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					INSTRUCTION_FORMAT22s237=(Token)match(input,INSTRUCTION_FORMAT22s,FOLLOW_INSTRUCTION_FORMAT22s_in_instruction_format22s3696); 
-					INSTRUCTION_FORMAT22s237_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT22s237);
-					adaptor.addChild(root_0, INSTRUCTION_FORMAT22s237_tree);
+					INSTRUCTION_FORMAT22s265=(Token)match(input,INSTRUCTION_FORMAT22s,FOLLOW_INSTRUCTION_FORMAT22s_in_instruction_format22s3966); 
+					INSTRUCTION_FORMAT22s265_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT22s265);
+					adaptor.addChild(root_0, INSTRUCTION_FORMAT22s265_tree);
 
 					}
 					break;
 				case 2 :
-					// smaliParser.g:793:5: INSTRUCTION_FORMAT22s_OR_ID
+					// smaliParser.g:827:5: INSTRUCTION_FORMAT22s_OR_ID
 					{
-					INSTRUCTION_FORMAT22s_OR_ID238=(Token)match(input,INSTRUCTION_FORMAT22s_OR_ID,FOLLOW_INSTRUCTION_FORMAT22s_OR_ID_in_instruction_format22s3702);  
-					stream_INSTRUCTION_FORMAT22s_OR_ID.add(INSTRUCTION_FORMAT22s_OR_ID238);
+					INSTRUCTION_FORMAT22s_OR_ID266=(Token)match(input,INSTRUCTION_FORMAT22s_OR_ID,FOLLOW_INSTRUCTION_FORMAT22s_OR_ID_in_instruction_format22s3972);  
+					stream_INSTRUCTION_FORMAT22s_OR_ID.add(INSTRUCTION_FORMAT22s_OR_ID266);
 
 					// AST REWRITE
 					// elements: 
@@ -9211,9 +9969,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 793:33: -> INSTRUCTION_FORMAT22s[$INSTRUCTION_FORMAT22s_OR_ID]
+					// 827:33: -> INSTRUCTION_FORMAT22s[$INSTRUCTION_FORMAT22s_OR_ID]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(INSTRUCTION_FORMAT22s, INSTRUCTION_FORMAT22s_OR_ID238));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(INSTRUCTION_FORMAT22s, INSTRUCTION_FORMAT22s_OR_ID266));
 					}
 
 
@@ -9250,55 +10008,55 @@
 
 
 	// $ANTLR start "instruction_format31i"
-	// smaliParser.g:795:1: instruction_format31i : ( INSTRUCTION_FORMAT31i | INSTRUCTION_FORMAT31i_OR_ID -> INSTRUCTION_FORMAT31i[$INSTRUCTION_FORMAT31i_OR_ID] );
+	// smaliParser.g:829:1: instruction_format31i : ( INSTRUCTION_FORMAT31i | INSTRUCTION_FORMAT31i_OR_ID -> INSTRUCTION_FORMAT31i[$INSTRUCTION_FORMAT31i_OR_ID] );
 	public final smaliParser.instruction_format31i_return instruction_format31i() throws RecognitionException {
 		smaliParser.instruction_format31i_return retval = new smaliParser.instruction_format31i_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT31i239=null;
-		Token INSTRUCTION_FORMAT31i_OR_ID240=null;
+		Token INSTRUCTION_FORMAT31i267=null;
+		Token INSTRUCTION_FORMAT31i_OR_ID268=null;
 
-		CommonTree INSTRUCTION_FORMAT31i239_tree=null;
-		CommonTree INSTRUCTION_FORMAT31i_OR_ID240_tree=null;
+		CommonTree INSTRUCTION_FORMAT31i267_tree=null;
+		CommonTree INSTRUCTION_FORMAT31i_OR_ID268_tree=null;
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT31i_OR_ID=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT31i_OR_ID");
 
 		try {
-			// smaliParser.g:796:3: ( INSTRUCTION_FORMAT31i | INSTRUCTION_FORMAT31i_OR_ID -> INSTRUCTION_FORMAT31i[$INSTRUCTION_FORMAT31i_OR_ID] )
-			int alt50=2;
-			int LA50_0 = input.LA(1);
-			if ( (LA50_0==INSTRUCTION_FORMAT31i) ) {
-				alt50=1;
+			// smaliParser.g:830:3: ( INSTRUCTION_FORMAT31i | INSTRUCTION_FORMAT31i_OR_ID -> INSTRUCTION_FORMAT31i[$INSTRUCTION_FORMAT31i_OR_ID] )
+			int alt52=2;
+			int LA52_0 = input.LA(1);
+			if ( (LA52_0==INSTRUCTION_FORMAT31i) ) {
+				alt52=1;
 			}
-			else if ( (LA50_0==INSTRUCTION_FORMAT31i_OR_ID) ) {
-				alt50=2;
+			else if ( (LA52_0==INSTRUCTION_FORMAT31i_OR_ID) ) {
+				alt52=2;
 			}
 
 			else {
 				NoViableAltException nvae =
-					new NoViableAltException("", 50, 0, input);
+					new NoViableAltException("", 52, 0, input);
 				throw nvae;
 			}
 
-			switch (alt50) {
+			switch (alt52) {
 				case 1 :
-					// smaliParser.g:796:5: INSTRUCTION_FORMAT31i
+					// smaliParser.g:830:5: INSTRUCTION_FORMAT31i
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					INSTRUCTION_FORMAT31i239=(Token)match(input,INSTRUCTION_FORMAT31i,FOLLOW_INSTRUCTION_FORMAT31i_in_instruction_format31i3717); 
-					INSTRUCTION_FORMAT31i239_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT31i239);
-					adaptor.addChild(root_0, INSTRUCTION_FORMAT31i239_tree);
+					INSTRUCTION_FORMAT31i267=(Token)match(input,INSTRUCTION_FORMAT31i,FOLLOW_INSTRUCTION_FORMAT31i_in_instruction_format31i3987); 
+					INSTRUCTION_FORMAT31i267_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT31i267);
+					adaptor.addChild(root_0, INSTRUCTION_FORMAT31i267_tree);
 
 					}
 					break;
 				case 2 :
-					// smaliParser.g:797:5: INSTRUCTION_FORMAT31i_OR_ID
+					// smaliParser.g:831:5: INSTRUCTION_FORMAT31i_OR_ID
 					{
-					INSTRUCTION_FORMAT31i_OR_ID240=(Token)match(input,INSTRUCTION_FORMAT31i_OR_ID,FOLLOW_INSTRUCTION_FORMAT31i_OR_ID_in_instruction_format31i3723);  
-					stream_INSTRUCTION_FORMAT31i_OR_ID.add(INSTRUCTION_FORMAT31i_OR_ID240);
+					INSTRUCTION_FORMAT31i_OR_ID268=(Token)match(input,INSTRUCTION_FORMAT31i_OR_ID,FOLLOW_INSTRUCTION_FORMAT31i_OR_ID_in_instruction_format31i3993);  
+					stream_INSTRUCTION_FORMAT31i_OR_ID.add(INSTRUCTION_FORMAT31i_OR_ID268);
 
 					// AST REWRITE
 					// elements: 
@@ -9311,9 +10069,9 @@
 					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 					root_0 = (CommonTree)adaptor.nil();
-					// 797:33: -> INSTRUCTION_FORMAT31i[$INSTRUCTION_FORMAT31i_OR_ID]
+					// 831:33: -> INSTRUCTION_FORMAT31i[$INSTRUCTION_FORMAT31i_OR_ID]
 					{
-						adaptor.addChild(root_0, (CommonTree)adaptor.create(INSTRUCTION_FORMAT31i, INSTRUCTION_FORMAT31i_OR_ID240));
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(INSTRUCTION_FORMAT31i, INSTRUCTION_FORMAT31i_OR_ID268));
 					}
 
 
@@ -9342,6 +10100,106 @@
 	// $ANTLR end "instruction_format31i"
 
 
+	public static class instruction_format35c_method_return extends ParserRuleReturnScope {
+		CommonTree tree;
+		@Override
+		public CommonTree getTree() { return tree; }
+	};
+
+
+	// $ANTLR start "instruction_format35c_method"
+	// smaliParser.g:833:1: instruction_format35c_method : ( INSTRUCTION_FORMAT35c_METHOD | INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE -> INSTRUCTION_FORMAT35c_METHOD[$INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE] );
+	public final smaliParser.instruction_format35c_method_return instruction_format35c_method() throws RecognitionException {
+		smaliParser.instruction_format35c_method_return retval = new smaliParser.instruction_format35c_method_return();
+		retval.start = input.LT(1);
+
+		CommonTree root_0 = null;
+
+		Token INSTRUCTION_FORMAT35c_METHOD269=null;
+		Token INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE270=null;
+
+		CommonTree INSTRUCTION_FORMAT35c_METHOD269_tree=null;
+		CommonTree INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE270_tree=null;
+		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE");
+
+		try {
+			// smaliParser.g:834:3: ( INSTRUCTION_FORMAT35c_METHOD | INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE -> INSTRUCTION_FORMAT35c_METHOD[$INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE] )
+			int alt53=2;
+			int LA53_0 = input.LA(1);
+			if ( (LA53_0==INSTRUCTION_FORMAT35c_METHOD) ) {
+				alt53=1;
+			}
+			else if ( (LA53_0==INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE) ) {
+				alt53=2;
+			}
+
+			else {
+				NoViableAltException nvae =
+					new NoViableAltException("", 53, 0, input);
+				throw nvae;
+			}
+
+			switch (alt53) {
+				case 1 :
+					// smaliParser.g:834:5: INSTRUCTION_FORMAT35c_METHOD
+					{
+					root_0 = (CommonTree)adaptor.nil();
+
+
+					INSTRUCTION_FORMAT35c_METHOD269=(Token)match(input,INSTRUCTION_FORMAT35c_METHOD,FOLLOW_INSTRUCTION_FORMAT35c_METHOD_in_instruction_format35c_method4010); 
+					INSTRUCTION_FORMAT35c_METHOD269_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT35c_METHOD269);
+					adaptor.addChild(root_0, INSTRUCTION_FORMAT35c_METHOD269_tree);
+
+					}
+					break;
+				case 2 :
+					// smaliParser.g:835:5: INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE
+					{
+					INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE270=(Token)match(input,INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE,FOLLOW_INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE_in_instruction_format35c_method4016);  
+					stream_INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE.add(INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE270);
+
+					// AST REWRITE
+					// elements: 
+					// token labels: 
+					// rule labels: retval
+					// token list labels: 
+					// rule list labels: 
+					// wildcard labels: 
+					retval.tree = root_0;
+					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
+
+					root_0 = (CommonTree)adaptor.nil();
+					// 835:56: -> INSTRUCTION_FORMAT35c_METHOD[$INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE]
+					{
+						adaptor.addChild(root_0, (CommonTree)adaptor.create(INSTRUCTION_FORMAT35c_METHOD, INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE270));
+					}
+
+
+					retval.tree = root_0;
+
+					}
+					break;
+
+			}
+			retval.stop = input.LT(-1);
+
+			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+		}
+		catch (RecognitionException re) {
+			reportError(re);
+			recover(input,re);
+			retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+		}
+		finally {
+			// do for sure before leaving
+		}
+		return retval;
+	}
+	// $ANTLR end "instruction_format35c_method"
+
+
 	public static class instruction_return extends ParserRuleReturnScope {
 		CommonTree tree;
 		@Override
@@ -9350,945 +10208,1026 @@
 
 
 	// $ANTLR start "instruction"
-	// smaliParser.g:801:1: instruction : ( insn_format10t | insn_format10x | insn_format10x_odex | insn_format11n | insn_format11x | insn_format12x | insn_format20bc | insn_format20t | insn_format21c_field | insn_format21c_field_odex | insn_format21c_string | insn_format21c_type | insn_format21ih | insn_format21lh | insn_format21s | insn_format21t | insn_format22b | insn_format22c_field | insn_format22c_field_odex | insn_format22c_type | insn_format22cs_field | insn_format22s | insn_format22t | insn_format22x | insn_format23x | insn_format30t | insn_format31c | insn_format31i | insn_format31t | insn_format32x | insn_format35c_method | insn_format35c_type | insn_format35c_method_odex | insn_format35mi_method | insn_format35ms_method | insn_format3rc_method | insn_format3rc_method_odex | insn_format3rc_type | insn_format3rmi_method | insn_format3rms_method | insn_format45cc_method | insn_format4rcc_method | insn_format51l | insn_array_data_directive | insn_packed_switch_directive | insn_sparse_switch_directive );
+	// smaliParser.g:837:1: instruction : ( insn_format10t | insn_format10x | insn_format10x_odex | insn_format11n | insn_format11x | insn_format12x | insn_format20bc | insn_format20t | insn_format21c_field | insn_format21c_field_odex | insn_format21c_method_handle | insn_format21c_method_type | insn_format21c_string | insn_format21c_type | insn_format21ih | insn_format21lh | insn_format21s | insn_format21t | insn_format22b | insn_format22c_field | insn_format22c_field_odex | insn_format22c_type | insn_format22cs_field | insn_format22s | insn_format22t | insn_format22x | insn_format23x | insn_format30t | insn_format31c | insn_format31i | insn_format31t | insn_format32x | insn_format35c_call_site | insn_format35c_method | insn_format35c_type | insn_format35c_method_odex | insn_format35mi_method | insn_format35ms_method | insn_format3rc_call_site | insn_format3rc_method | insn_format3rc_method_odex | insn_format3rc_type | insn_format3rmi_method | insn_format3rms_method | insn_format45cc_method | insn_format4rcc_method | insn_format51l | insn_array_data_directive | insn_packed_switch_directive | insn_sparse_switch_directive );
 	public final smaliParser.instruction_return instruction() throws RecognitionException {
 		smaliParser.instruction_return retval = new smaliParser.instruction_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		ParserRuleReturnScope insn_format10t241 =null;
-		ParserRuleReturnScope insn_format10x242 =null;
-		ParserRuleReturnScope insn_format10x_odex243 =null;
-		ParserRuleReturnScope insn_format11n244 =null;
-		ParserRuleReturnScope insn_format11x245 =null;
-		ParserRuleReturnScope insn_format12x246 =null;
-		ParserRuleReturnScope insn_format20bc247 =null;
-		ParserRuleReturnScope insn_format20t248 =null;
-		ParserRuleReturnScope insn_format21c_field249 =null;
-		ParserRuleReturnScope insn_format21c_field_odex250 =null;
-		ParserRuleReturnScope insn_format21c_string251 =null;
-		ParserRuleReturnScope insn_format21c_type252 =null;
-		ParserRuleReturnScope insn_format21ih253 =null;
-		ParserRuleReturnScope insn_format21lh254 =null;
-		ParserRuleReturnScope insn_format21s255 =null;
-		ParserRuleReturnScope insn_format21t256 =null;
-		ParserRuleReturnScope insn_format22b257 =null;
-		ParserRuleReturnScope insn_format22c_field258 =null;
-		ParserRuleReturnScope insn_format22c_field_odex259 =null;
-		ParserRuleReturnScope insn_format22c_type260 =null;
-		ParserRuleReturnScope insn_format22cs_field261 =null;
-		ParserRuleReturnScope insn_format22s262 =null;
-		ParserRuleReturnScope insn_format22t263 =null;
-		ParserRuleReturnScope insn_format22x264 =null;
-		ParserRuleReturnScope insn_format23x265 =null;
-		ParserRuleReturnScope insn_format30t266 =null;
-		ParserRuleReturnScope insn_format31c267 =null;
-		ParserRuleReturnScope insn_format31i268 =null;
-		ParserRuleReturnScope insn_format31t269 =null;
-		ParserRuleReturnScope insn_format32x270 =null;
-		ParserRuleReturnScope insn_format35c_method271 =null;
-		ParserRuleReturnScope insn_format35c_type272 =null;
-		ParserRuleReturnScope insn_format35c_method_odex273 =null;
-		ParserRuleReturnScope insn_format35mi_method274 =null;
-		ParserRuleReturnScope insn_format35ms_method275 =null;
-		ParserRuleReturnScope insn_format3rc_method276 =null;
-		ParserRuleReturnScope insn_format3rc_method_odex277 =null;
-		ParserRuleReturnScope insn_format3rc_type278 =null;
-		ParserRuleReturnScope insn_format3rmi_method279 =null;
-		ParserRuleReturnScope insn_format3rms_method280 =null;
-		ParserRuleReturnScope insn_format45cc_method281 =null;
-		ParserRuleReturnScope insn_format4rcc_method282 =null;
-		ParserRuleReturnScope insn_format51l283 =null;
-		ParserRuleReturnScope insn_array_data_directive284 =null;
-		ParserRuleReturnScope insn_packed_switch_directive285 =null;
-		ParserRuleReturnScope insn_sparse_switch_directive286 =null;
+		ParserRuleReturnScope insn_format10t271 =null;
+		ParserRuleReturnScope insn_format10x272 =null;
+		ParserRuleReturnScope insn_format10x_odex273 =null;
+		ParserRuleReturnScope insn_format11n274 =null;
+		ParserRuleReturnScope insn_format11x275 =null;
+		ParserRuleReturnScope insn_format12x276 =null;
+		ParserRuleReturnScope insn_format20bc277 =null;
+		ParserRuleReturnScope insn_format20t278 =null;
+		ParserRuleReturnScope insn_format21c_field279 =null;
+		ParserRuleReturnScope insn_format21c_field_odex280 =null;
+		ParserRuleReturnScope insn_format21c_method_handle281 =null;
+		ParserRuleReturnScope insn_format21c_method_type282 =null;
+		ParserRuleReturnScope insn_format21c_string283 =null;
+		ParserRuleReturnScope insn_format21c_type284 =null;
+		ParserRuleReturnScope insn_format21ih285 =null;
+		ParserRuleReturnScope insn_format21lh286 =null;
+		ParserRuleReturnScope insn_format21s287 =null;
+		ParserRuleReturnScope insn_format21t288 =null;
+		ParserRuleReturnScope insn_format22b289 =null;
+		ParserRuleReturnScope insn_format22c_field290 =null;
+		ParserRuleReturnScope insn_format22c_field_odex291 =null;
+		ParserRuleReturnScope insn_format22c_type292 =null;
+		ParserRuleReturnScope insn_format22cs_field293 =null;
+		ParserRuleReturnScope insn_format22s294 =null;
+		ParserRuleReturnScope insn_format22t295 =null;
+		ParserRuleReturnScope insn_format22x296 =null;
+		ParserRuleReturnScope insn_format23x297 =null;
+		ParserRuleReturnScope insn_format30t298 =null;
+		ParserRuleReturnScope insn_format31c299 =null;
+		ParserRuleReturnScope insn_format31i300 =null;
+		ParserRuleReturnScope insn_format31t301 =null;
+		ParserRuleReturnScope insn_format32x302 =null;
+		ParserRuleReturnScope insn_format35c_call_site303 =null;
+		ParserRuleReturnScope insn_format35c_method304 =null;
+		ParserRuleReturnScope insn_format35c_type305 =null;
+		ParserRuleReturnScope insn_format35c_method_odex306 =null;
+		ParserRuleReturnScope insn_format35mi_method307 =null;
+		ParserRuleReturnScope insn_format35ms_method308 =null;
+		ParserRuleReturnScope insn_format3rc_call_site309 =null;
+		ParserRuleReturnScope insn_format3rc_method310 =null;
+		ParserRuleReturnScope insn_format3rc_method_odex311 =null;
+		ParserRuleReturnScope insn_format3rc_type312 =null;
+		ParserRuleReturnScope insn_format3rmi_method313 =null;
+		ParserRuleReturnScope insn_format3rms_method314 =null;
+		ParserRuleReturnScope insn_format45cc_method315 =null;
+		ParserRuleReturnScope insn_format4rcc_method316 =null;
+		ParserRuleReturnScope insn_format51l317 =null;
+		ParserRuleReturnScope insn_array_data_directive318 =null;
+		ParserRuleReturnScope insn_packed_switch_directive319 =null;
+		ParserRuleReturnScope insn_sparse_switch_directive320 =null;
 
 
 		try {
-			// smaliParser.g:802:3: ( insn_format10t | insn_format10x | insn_format10x_odex | insn_format11n | insn_format11x | insn_format12x | insn_format20bc | insn_format20t | insn_format21c_field | insn_format21c_field_odex | insn_format21c_string | insn_format21c_type | insn_format21ih | insn_format21lh | insn_format21s | insn_format21t | insn_format22b | insn_format22c_field | insn_format22c_field_odex | insn_format22c_type | insn_format22cs_field | insn_format22s | insn_format22t | insn_format22x | insn_format23x | insn_format30t | insn_format31c | insn_format31i | insn_format31t | insn_format32x | insn_format35c_method | insn_format35c_type | insn_format35c_method_odex | insn_format35mi_method | insn_format35ms_method | insn_format3rc_method | insn_format3rc_method_odex | insn_format3rc_type | insn_format3rmi_method | insn_format3rms_method | insn_format45cc_method | insn_format4rcc_method | insn_format51l | insn_array_data_directive | insn_packed_switch_directive | insn_sparse_switch_directive )
-			int alt51=46;
+			// smaliParser.g:838:3: ( insn_format10t | insn_format10x | insn_format10x_odex | insn_format11n | insn_format11x | insn_format12x | insn_format20bc | insn_format20t | insn_format21c_field | insn_format21c_field_odex | insn_format21c_method_handle | insn_format21c_method_type | insn_format21c_string | insn_format21c_type | insn_format21ih | insn_format21lh | insn_format21s | insn_format21t | insn_format22b | insn_format22c_field | insn_format22c_field_odex | insn_format22c_type | insn_format22cs_field | insn_format22s | insn_format22t | insn_format22x | insn_format23x | insn_format30t | insn_format31c | insn_format31i | insn_format31t | insn_format32x | insn_format35c_call_site | insn_format35c_method | insn_format35c_type | insn_format35c_method_odex | insn_format35mi_method | insn_format35ms_method | insn_format3rc_call_site | insn_format3rc_method | insn_format3rc_method_odex | insn_format3rc_type | insn_format3rmi_method | insn_format3rms_method | insn_format45cc_method | insn_format4rcc_method | insn_format51l | insn_array_data_directive | insn_packed_switch_directive | insn_sparse_switch_directive )
+			int alt54=50;
 			switch ( input.LA(1) ) {
 			case INSTRUCTION_FORMAT10t:
 				{
-				alt51=1;
+				alt54=1;
 				}
 				break;
 			case INSTRUCTION_FORMAT10x:
 				{
-				alt51=2;
+				alt54=2;
 				}
 				break;
 			case INSTRUCTION_FORMAT10x_ODEX:
 				{
-				alt51=3;
+				alt54=3;
 				}
 				break;
 			case INSTRUCTION_FORMAT11n:
 				{
-				alt51=4;
+				alt54=4;
 				}
 				break;
 			case INSTRUCTION_FORMAT11x:
 				{
-				alt51=5;
+				alt54=5;
 				}
 				break;
 			case INSTRUCTION_FORMAT12x:
 			case INSTRUCTION_FORMAT12x_OR_ID:
 				{
-				alt51=6;
+				alt54=6;
 				}
 				break;
 			case INSTRUCTION_FORMAT20bc:
 				{
-				alt51=7;
+				alt54=7;
 				}
 				break;
 			case INSTRUCTION_FORMAT20t:
 				{
-				alt51=8;
+				alt54=8;
 				}
 				break;
 			case INSTRUCTION_FORMAT21c_FIELD:
 				{
-				alt51=9;
+				alt54=9;
 				}
 				break;
 			case INSTRUCTION_FORMAT21c_FIELD_ODEX:
 				{
-				alt51=10;
+				alt54=10;
+				}
+				break;
+			case INSTRUCTION_FORMAT21c_METHOD_HANDLE:
+				{
+				alt54=11;
+				}
+				break;
+			case INSTRUCTION_FORMAT21c_METHOD_TYPE:
+				{
+				alt54=12;
 				}
 				break;
 			case INSTRUCTION_FORMAT21c_STRING:
 				{
-				alt51=11;
+				alt54=13;
 				}
 				break;
 			case INSTRUCTION_FORMAT21c_TYPE:
 				{
-				alt51=12;
+				alt54=14;
 				}
 				break;
 			case INSTRUCTION_FORMAT21ih:
 				{
-				alt51=13;
+				alt54=15;
 				}
 				break;
 			case INSTRUCTION_FORMAT21lh:
 				{
-				alt51=14;
+				alt54=16;
 				}
 				break;
 			case INSTRUCTION_FORMAT21s:
 				{
-				alt51=15;
+				alt54=17;
 				}
 				break;
 			case INSTRUCTION_FORMAT21t:
 				{
-				alt51=16;
+				alt54=18;
 				}
 				break;
 			case INSTRUCTION_FORMAT22b:
 				{
-				alt51=17;
+				alt54=19;
 				}
 				break;
 			case INSTRUCTION_FORMAT22c_FIELD:
 				{
-				alt51=18;
+				alt54=20;
 				}
 				break;
 			case INSTRUCTION_FORMAT22c_FIELD_ODEX:
 				{
-				alt51=19;
+				alt54=21;
 				}
 				break;
 			case INSTRUCTION_FORMAT22c_TYPE:
 				{
-				alt51=20;
+				alt54=22;
 				}
 				break;
 			case INSTRUCTION_FORMAT22cs_FIELD:
 				{
-				alt51=21;
+				alt54=23;
 				}
 				break;
 			case INSTRUCTION_FORMAT22s:
 			case INSTRUCTION_FORMAT22s_OR_ID:
 				{
-				alt51=22;
+				alt54=24;
 				}
 				break;
 			case INSTRUCTION_FORMAT22t:
 				{
-				alt51=23;
+				alt54=25;
 				}
 				break;
 			case INSTRUCTION_FORMAT22x:
 				{
-				alt51=24;
+				alt54=26;
 				}
 				break;
 			case INSTRUCTION_FORMAT23x:
 				{
-				alt51=25;
+				alt54=27;
 				}
 				break;
 			case INSTRUCTION_FORMAT30t:
 				{
-				alt51=26;
+				alt54=28;
 				}
 				break;
 			case INSTRUCTION_FORMAT31c:
 				{
-				alt51=27;
+				alt54=29;
 				}
 				break;
 			case INSTRUCTION_FORMAT31i:
 			case INSTRUCTION_FORMAT31i_OR_ID:
 				{
-				alt51=28;
+				alt54=30;
 				}
 				break;
 			case INSTRUCTION_FORMAT31t:
 				{
-				alt51=29;
+				alt54=31;
 				}
 				break;
 			case INSTRUCTION_FORMAT32x:
 				{
-				alt51=30;
+				alt54=32;
+				}
+				break;
+			case INSTRUCTION_FORMAT35c_CALL_SITE:
+				{
+				alt54=33;
 				}
 				break;
 			case INSTRUCTION_FORMAT35c_METHOD:
+			case INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE:
 				{
-				alt51=31;
+				alt54=34;
 				}
 				break;
 			case INSTRUCTION_FORMAT35c_TYPE:
 				{
-				alt51=32;
+				alt54=35;
 				}
 				break;
 			case INSTRUCTION_FORMAT35c_METHOD_ODEX:
 				{
-				alt51=33;
+				alt54=36;
 				}
 				break;
 			case INSTRUCTION_FORMAT35mi_METHOD:
 				{
-				alt51=34;
+				alt54=37;
 				}
 				break;
 			case INSTRUCTION_FORMAT35ms_METHOD:
 				{
-				alt51=35;
+				alt54=38;
+				}
+				break;
+			case INSTRUCTION_FORMAT3rc_CALL_SITE:
+				{
+				alt54=39;
 				}
 				break;
 			case INSTRUCTION_FORMAT3rc_METHOD:
 				{
-				alt51=36;
+				alt54=40;
 				}
 				break;
 			case INSTRUCTION_FORMAT3rc_METHOD_ODEX:
 				{
-				alt51=37;
+				alt54=41;
 				}
 				break;
 			case INSTRUCTION_FORMAT3rc_TYPE:
 				{
-				alt51=38;
+				alt54=42;
 				}
 				break;
 			case INSTRUCTION_FORMAT3rmi_METHOD:
 				{
-				alt51=39;
+				alt54=43;
 				}
 				break;
 			case INSTRUCTION_FORMAT3rms_METHOD:
 				{
-				alt51=40;
+				alt54=44;
 				}
 				break;
 			case INSTRUCTION_FORMAT45cc_METHOD:
 				{
-				alt51=41;
+				alt54=45;
 				}
 				break;
 			case INSTRUCTION_FORMAT4rcc_METHOD:
 				{
-				alt51=42;
+				alt54=46;
 				}
 				break;
 			case INSTRUCTION_FORMAT51l:
 				{
-				alt51=43;
+				alt54=47;
 				}
 				break;
 			case ARRAY_DATA_DIRECTIVE:
 				{
-				alt51=44;
+				alt54=48;
 				}
 				break;
 			case PACKED_SWITCH_DIRECTIVE:
 				{
-				alt51=45;
+				alt54=49;
 				}
 				break;
 			case SPARSE_SWITCH_DIRECTIVE:
 				{
-				alt51=46;
+				alt54=50;
 				}
 				break;
 			default:
 				NoViableAltException nvae =
-					new NoViableAltException("", 51, 0, input);
+					new NoViableAltException("", 54, 0, input);
 				throw nvae;
 			}
-			switch (alt51) {
+			switch (alt54) {
 				case 1 :
-					// smaliParser.g:802:5: insn_format10t
+					// smaliParser.g:838:5: insn_format10t
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format10t_in_instruction3740);
-					insn_format10t241=insn_format10t();
+					pushFollow(FOLLOW_insn_format10t_in_instruction4031);
+					insn_format10t271=insn_format10t();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format10t241.getTree());
+					adaptor.addChild(root_0, insn_format10t271.getTree());
 
 					}
 					break;
 				case 2 :
-					// smaliParser.g:803:5: insn_format10x
+					// smaliParser.g:839:5: insn_format10x
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format10x_in_instruction3746);
-					insn_format10x242=insn_format10x();
+					pushFollow(FOLLOW_insn_format10x_in_instruction4037);
+					insn_format10x272=insn_format10x();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format10x242.getTree());
+					adaptor.addChild(root_0, insn_format10x272.getTree());
 
 					}
 					break;
 				case 3 :
-					// smaliParser.g:804:5: insn_format10x_odex
+					// smaliParser.g:840:5: insn_format10x_odex
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format10x_odex_in_instruction3752);
-					insn_format10x_odex243=insn_format10x_odex();
+					pushFollow(FOLLOW_insn_format10x_odex_in_instruction4043);
+					insn_format10x_odex273=insn_format10x_odex();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format10x_odex243.getTree());
+					adaptor.addChild(root_0, insn_format10x_odex273.getTree());
 
 					}
 					break;
 				case 4 :
-					// smaliParser.g:805:5: insn_format11n
+					// smaliParser.g:841:5: insn_format11n
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format11n_in_instruction3758);
-					insn_format11n244=insn_format11n();
+					pushFollow(FOLLOW_insn_format11n_in_instruction4049);
+					insn_format11n274=insn_format11n();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format11n244.getTree());
+					adaptor.addChild(root_0, insn_format11n274.getTree());
 
 					}
 					break;
 				case 5 :
-					// smaliParser.g:806:5: insn_format11x
+					// smaliParser.g:842:5: insn_format11x
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format11x_in_instruction3764);
-					insn_format11x245=insn_format11x();
+					pushFollow(FOLLOW_insn_format11x_in_instruction4055);
+					insn_format11x275=insn_format11x();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format11x245.getTree());
+					adaptor.addChild(root_0, insn_format11x275.getTree());
 
 					}
 					break;
 				case 6 :
-					// smaliParser.g:807:5: insn_format12x
+					// smaliParser.g:843:5: insn_format12x
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format12x_in_instruction3770);
-					insn_format12x246=insn_format12x();
+					pushFollow(FOLLOW_insn_format12x_in_instruction4061);
+					insn_format12x276=insn_format12x();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format12x246.getTree());
+					adaptor.addChild(root_0, insn_format12x276.getTree());
 
 					}
 					break;
 				case 7 :
-					// smaliParser.g:808:5: insn_format20bc
+					// smaliParser.g:844:5: insn_format20bc
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format20bc_in_instruction3776);
-					insn_format20bc247=insn_format20bc();
+					pushFollow(FOLLOW_insn_format20bc_in_instruction4067);
+					insn_format20bc277=insn_format20bc();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format20bc247.getTree());
+					adaptor.addChild(root_0, insn_format20bc277.getTree());
 
 					}
 					break;
 				case 8 :
-					// smaliParser.g:809:5: insn_format20t
+					// smaliParser.g:845:5: insn_format20t
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format20t_in_instruction3782);
-					insn_format20t248=insn_format20t();
+					pushFollow(FOLLOW_insn_format20t_in_instruction4073);
+					insn_format20t278=insn_format20t();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format20t248.getTree());
+					adaptor.addChild(root_0, insn_format20t278.getTree());
 
 					}
 					break;
 				case 9 :
-					// smaliParser.g:810:5: insn_format21c_field
+					// smaliParser.g:846:5: insn_format21c_field
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format21c_field_in_instruction3788);
-					insn_format21c_field249=insn_format21c_field();
+					pushFollow(FOLLOW_insn_format21c_field_in_instruction4079);
+					insn_format21c_field279=insn_format21c_field();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format21c_field249.getTree());
+					adaptor.addChild(root_0, insn_format21c_field279.getTree());
 
 					}
 					break;
 				case 10 :
-					// smaliParser.g:811:5: insn_format21c_field_odex
+					// smaliParser.g:847:5: insn_format21c_field_odex
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format21c_field_odex_in_instruction3794);
-					insn_format21c_field_odex250=insn_format21c_field_odex();
+					pushFollow(FOLLOW_insn_format21c_field_odex_in_instruction4085);
+					insn_format21c_field_odex280=insn_format21c_field_odex();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format21c_field_odex250.getTree());
+					adaptor.addChild(root_0, insn_format21c_field_odex280.getTree());
 
 					}
 					break;
 				case 11 :
-					// smaliParser.g:812:5: insn_format21c_string
+					// smaliParser.g:848:5: insn_format21c_method_handle
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format21c_string_in_instruction3800);
-					insn_format21c_string251=insn_format21c_string();
+					pushFollow(FOLLOW_insn_format21c_method_handle_in_instruction4091);
+					insn_format21c_method_handle281=insn_format21c_method_handle();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format21c_string251.getTree());
+					adaptor.addChild(root_0, insn_format21c_method_handle281.getTree());
 
 					}
 					break;
 				case 12 :
-					// smaliParser.g:813:5: insn_format21c_type
+					// smaliParser.g:849:5: insn_format21c_method_type
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format21c_type_in_instruction3806);
-					insn_format21c_type252=insn_format21c_type();
+					pushFollow(FOLLOW_insn_format21c_method_type_in_instruction4097);
+					insn_format21c_method_type282=insn_format21c_method_type();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format21c_type252.getTree());
+					adaptor.addChild(root_0, insn_format21c_method_type282.getTree());
 
 					}
 					break;
 				case 13 :
-					// smaliParser.g:814:5: insn_format21ih
+					// smaliParser.g:850:5: insn_format21c_string
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format21ih_in_instruction3812);
-					insn_format21ih253=insn_format21ih();
+					pushFollow(FOLLOW_insn_format21c_string_in_instruction4103);
+					insn_format21c_string283=insn_format21c_string();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format21ih253.getTree());
+					adaptor.addChild(root_0, insn_format21c_string283.getTree());
 
 					}
 					break;
 				case 14 :
-					// smaliParser.g:815:5: insn_format21lh
+					// smaliParser.g:851:5: insn_format21c_type
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format21lh_in_instruction3818);
-					insn_format21lh254=insn_format21lh();
+					pushFollow(FOLLOW_insn_format21c_type_in_instruction4109);
+					insn_format21c_type284=insn_format21c_type();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format21lh254.getTree());
+					adaptor.addChild(root_0, insn_format21c_type284.getTree());
 
 					}
 					break;
 				case 15 :
-					// smaliParser.g:816:5: insn_format21s
+					// smaliParser.g:852:5: insn_format21ih
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format21s_in_instruction3824);
-					insn_format21s255=insn_format21s();
+					pushFollow(FOLLOW_insn_format21ih_in_instruction4115);
+					insn_format21ih285=insn_format21ih();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format21s255.getTree());
+					adaptor.addChild(root_0, insn_format21ih285.getTree());
 
 					}
 					break;
 				case 16 :
-					// smaliParser.g:817:5: insn_format21t
+					// smaliParser.g:853:5: insn_format21lh
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format21t_in_instruction3830);
-					insn_format21t256=insn_format21t();
+					pushFollow(FOLLOW_insn_format21lh_in_instruction4121);
+					insn_format21lh286=insn_format21lh();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format21t256.getTree());
+					adaptor.addChild(root_0, insn_format21lh286.getTree());
 
 					}
 					break;
 				case 17 :
-					// smaliParser.g:818:5: insn_format22b
+					// smaliParser.g:854:5: insn_format21s
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format22b_in_instruction3836);
-					insn_format22b257=insn_format22b();
+					pushFollow(FOLLOW_insn_format21s_in_instruction4127);
+					insn_format21s287=insn_format21s();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format22b257.getTree());
+					adaptor.addChild(root_0, insn_format21s287.getTree());
 
 					}
 					break;
 				case 18 :
-					// smaliParser.g:819:5: insn_format22c_field
+					// smaliParser.g:855:5: insn_format21t
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format22c_field_in_instruction3842);
-					insn_format22c_field258=insn_format22c_field();
+					pushFollow(FOLLOW_insn_format21t_in_instruction4133);
+					insn_format21t288=insn_format21t();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format22c_field258.getTree());
+					adaptor.addChild(root_0, insn_format21t288.getTree());
 
 					}
 					break;
 				case 19 :
-					// smaliParser.g:820:5: insn_format22c_field_odex
+					// smaliParser.g:856:5: insn_format22b
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format22c_field_odex_in_instruction3848);
-					insn_format22c_field_odex259=insn_format22c_field_odex();
+					pushFollow(FOLLOW_insn_format22b_in_instruction4139);
+					insn_format22b289=insn_format22b();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format22c_field_odex259.getTree());
+					adaptor.addChild(root_0, insn_format22b289.getTree());
 
 					}
 					break;
 				case 20 :
-					// smaliParser.g:821:5: insn_format22c_type
+					// smaliParser.g:857:5: insn_format22c_field
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format22c_type_in_instruction3854);
-					insn_format22c_type260=insn_format22c_type();
+					pushFollow(FOLLOW_insn_format22c_field_in_instruction4145);
+					insn_format22c_field290=insn_format22c_field();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format22c_type260.getTree());
+					adaptor.addChild(root_0, insn_format22c_field290.getTree());
 
 					}
 					break;
 				case 21 :
-					// smaliParser.g:822:5: insn_format22cs_field
+					// smaliParser.g:858:5: insn_format22c_field_odex
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format22cs_field_in_instruction3860);
-					insn_format22cs_field261=insn_format22cs_field();
+					pushFollow(FOLLOW_insn_format22c_field_odex_in_instruction4151);
+					insn_format22c_field_odex291=insn_format22c_field_odex();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format22cs_field261.getTree());
+					adaptor.addChild(root_0, insn_format22c_field_odex291.getTree());
 
 					}
 					break;
 				case 22 :
-					// smaliParser.g:823:5: insn_format22s
+					// smaliParser.g:859:5: insn_format22c_type
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format22s_in_instruction3866);
-					insn_format22s262=insn_format22s();
+					pushFollow(FOLLOW_insn_format22c_type_in_instruction4157);
+					insn_format22c_type292=insn_format22c_type();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format22s262.getTree());
+					adaptor.addChild(root_0, insn_format22c_type292.getTree());
 
 					}
 					break;
 				case 23 :
-					// smaliParser.g:824:5: insn_format22t
+					// smaliParser.g:860:5: insn_format22cs_field
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format22t_in_instruction3872);
-					insn_format22t263=insn_format22t();
+					pushFollow(FOLLOW_insn_format22cs_field_in_instruction4163);
+					insn_format22cs_field293=insn_format22cs_field();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format22t263.getTree());
+					adaptor.addChild(root_0, insn_format22cs_field293.getTree());
 
 					}
 					break;
 				case 24 :
-					// smaliParser.g:825:5: insn_format22x
+					// smaliParser.g:861:5: insn_format22s
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format22x_in_instruction3878);
-					insn_format22x264=insn_format22x();
+					pushFollow(FOLLOW_insn_format22s_in_instruction4169);
+					insn_format22s294=insn_format22s();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format22x264.getTree());
+					adaptor.addChild(root_0, insn_format22s294.getTree());
 
 					}
 					break;
 				case 25 :
-					// smaliParser.g:826:5: insn_format23x
+					// smaliParser.g:862:5: insn_format22t
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format23x_in_instruction3884);
-					insn_format23x265=insn_format23x();
+					pushFollow(FOLLOW_insn_format22t_in_instruction4175);
+					insn_format22t295=insn_format22t();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format23x265.getTree());
+					adaptor.addChild(root_0, insn_format22t295.getTree());
 
 					}
 					break;
 				case 26 :
-					// smaliParser.g:827:5: insn_format30t
+					// smaliParser.g:863:5: insn_format22x
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format30t_in_instruction3890);
-					insn_format30t266=insn_format30t();
+					pushFollow(FOLLOW_insn_format22x_in_instruction4181);
+					insn_format22x296=insn_format22x();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format30t266.getTree());
+					adaptor.addChild(root_0, insn_format22x296.getTree());
 
 					}
 					break;
 				case 27 :
-					// smaliParser.g:828:5: insn_format31c
+					// smaliParser.g:864:5: insn_format23x
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format31c_in_instruction3896);
-					insn_format31c267=insn_format31c();
+					pushFollow(FOLLOW_insn_format23x_in_instruction4187);
+					insn_format23x297=insn_format23x();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format31c267.getTree());
+					adaptor.addChild(root_0, insn_format23x297.getTree());
 
 					}
 					break;
 				case 28 :
-					// smaliParser.g:829:5: insn_format31i
+					// smaliParser.g:865:5: insn_format30t
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format31i_in_instruction3902);
-					insn_format31i268=insn_format31i();
+					pushFollow(FOLLOW_insn_format30t_in_instruction4193);
+					insn_format30t298=insn_format30t();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format31i268.getTree());
+					adaptor.addChild(root_0, insn_format30t298.getTree());
 
 					}
 					break;
 				case 29 :
-					// smaliParser.g:830:5: insn_format31t
+					// smaliParser.g:866:5: insn_format31c
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format31t_in_instruction3908);
-					insn_format31t269=insn_format31t();
+					pushFollow(FOLLOW_insn_format31c_in_instruction4199);
+					insn_format31c299=insn_format31c();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format31t269.getTree());
+					adaptor.addChild(root_0, insn_format31c299.getTree());
 
 					}
 					break;
 				case 30 :
-					// smaliParser.g:831:5: insn_format32x
+					// smaliParser.g:867:5: insn_format31i
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format32x_in_instruction3914);
-					insn_format32x270=insn_format32x();
+					pushFollow(FOLLOW_insn_format31i_in_instruction4205);
+					insn_format31i300=insn_format31i();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format32x270.getTree());
+					adaptor.addChild(root_0, insn_format31i300.getTree());
 
 					}
 					break;
 				case 31 :
-					// smaliParser.g:832:5: insn_format35c_method
+					// smaliParser.g:868:5: insn_format31t
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format35c_method_in_instruction3920);
-					insn_format35c_method271=insn_format35c_method();
+					pushFollow(FOLLOW_insn_format31t_in_instruction4211);
+					insn_format31t301=insn_format31t();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format35c_method271.getTree());
+					adaptor.addChild(root_0, insn_format31t301.getTree());
 
 					}
 					break;
 				case 32 :
-					// smaliParser.g:833:5: insn_format35c_type
+					// smaliParser.g:869:5: insn_format32x
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format35c_type_in_instruction3926);
-					insn_format35c_type272=insn_format35c_type();
+					pushFollow(FOLLOW_insn_format32x_in_instruction4217);
+					insn_format32x302=insn_format32x();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format35c_type272.getTree());
+					adaptor.addChild(root_0, insn_format32x302.getTree());
 
 					}
 					break;
 				case 33 :
-					// smaliParser.g:834:5: insn_format35c_method_odex
+					// smaliParser.g:870:5: insn_format35c_call_site
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format35c_method_odex_in_instruction3932);
-					insn_format35c_method_odex273=insn_format35c_method_odex();
+					pushFollow(FOLLOW_insn_format35c_call_site_in_instruction4223);
+					insn_format35c_call_site303=insn_format35c_call_site();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format35c_method_odex273.getTree());
+					adaptor.addChild(root_0, insn_format35c_call_site303.getTree());
 
 					}
 					break;
 				case 34 :
-					// smaliParser.g:835:5: insn_format35mi_method
+					// smaliParser.g:871:5: insn_format35c_method
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format35mi_method_in_instruction3938);
-					insn_format35mi_method274=insn_format35mi_method();
+					pushFollow(FOLLOW_insn_format35c_method_in_instruction4229);
+					insn_format35c_method304=insn_format35c_method();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format35mi_method274.getTree());
+					adaptor.addChild(root_0, insn_format35c_method304.getTree());
 
 					}
 					break;
 				case 35 :
-					// smaliParser.g:836:5: insn_format35ms_method
+					// smaliParser.g:872:5: insn_format35c_type
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format35ms_method_in_instruction3944);
-					insn_format35ms_method275=insn_format35ms_method();
+					pushFollow(FOLLOW_insn_format35c_type_in_instruction4235);
+					insn_format35c_type305=insn_format35c_type();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format35ms_method275.getTree());
+					adaptor.addChild(root_0, insn_format35c_type305.getTree());
 
 					}
 					break;
 				case 36 :
-					// smaliParser.g:837:5: insn_format3rc_method
+					// smaliParser.g:873:5: insn_format35c_method_odex
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format3rc_method_in_instruction3950);
-					insn_format3rc_method276=insn_format3rc_method();
+					pushFollow(FOLLOW_insn_format35c_method_odex_in_instruction4241);
+					insn_format35c_method_odex306=insn_format35c_method_odex();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format3rc_method276.getTree());
+					adaptor.addChild(root_0, insn_format35c_method_odex306.getTree());
 
 					}
 					break;
 				case 37 :
-					// smaliParser.g:838:5: insn_format3rc_method_odex
+					// smaliParser.g:874:5: insn_format35mi_method
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format3rc_method_odex_in_instruction3956);
-					insn_format3rc_method_odex277=insn_format3rc_method_odex();
+					pushFollow(FOLLOW_insn_format35mi_method_in_instruction4247);
+					insn_format35mi_method307=insn_format35mi_method();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format3rc_method_odex277.getTree());
+					adaptor.addChild(root_0, insn_format35mi_method307.getTree());
 
 					}
 					break;
 				case 38 :
-					// smaliParser.g:839:5: insn_format3rc_type
+					// smaliParser.g:875:5: insn_format35ms_method
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format3rc_type_in_instruction3962);
-					insn_format3rc_type278=insn_format3rc_type();
+					pushFollow(FOLLOW_insn_format35ms_method_in_instruction4253);
+					insn_format35ms_method308=insn_format35ms_method();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format3rc_type278.getTree());
+					adaptor.addChild(root_0, insn_format35ms_method308.getTree());
 
 					}
 					break;
 				case 39 :
-					// smaliParser.g:840:5: insn_format3rmi_method
+					// smaliParser.g:876:5: insn_format3rc_call_site
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format3rmi_method_in_instruction3968);
-					insn_format3rmi_method279=insn_format3rmi_method();
+					pushFollow(FOLLOW_insn_format3rc_call_site_in_instruction4259);
+					insn_format3rc_call_site309=insn_format3rc_call_site();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format3rmi_method279.getTree());
+					adaptor.addChild(root_0, insn_format3rc_call_site309.getTree());
 
 					}
 					break;
 				case 40 :
-					// smaliParser.g:841:5: insn_format3rms_method
+					// smaliParser.g:877:5: insn_format3rc_method
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format3rms_method_in_instruction3974);
-					insn_format3rms_method280=insn_format3rms_method();
+					pushFollow(FOLLOW_insn_format3rc_method_in_instruction4265);
+					insn_format3rc_method310=insn_format3rc_method();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format3rms_method280.getTree());
+					adaptor.addChild(root_0, insn_format3rc_method310.getTree());
 
 					}
 					break;
 				case 41 :
-					// smaliParser.g:842:5: insn_format45cc_method
+					// smaliParser.g:878:5: insn_format3rc_method_odex
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format45cc_method_in_instruction3980);
-					insn_format45cc_method281=insn_format45cc_method();
+					pushFollow(FOLLOW_insn_format3rc_method_odex_in_instruction4271);
+					insn_format3rc_method_odex311=insn_format3rc_method_odex();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format45cc_method281.getTree());
+					adaptor.addChild(root_0, insn_format3rc_method_odex311.getTree());
 
 					}
 					break;
 				case 42 :
-					// smaliParser.g:843:5: insn_format4rcc_method
+					// smaliParser.g:879:5: insn_format3rc_type
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format4rcc_method_in_instruction3986);
-					insn_format4rcc_method282=insn_format4rcc_method();
+					pushFollow(FOLLOW_insn_format3rc_type_in_instruction4277);
+					insn_format3rc_type312=insn_format3rc_type();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format4rcc_method282.getTree());
+					adaptor.addChild(root_0, insn_format3rc_type312.getTree());
 
 					}
 					break;
 				case 43 :
-					// smaliParser.g:844:5: insn_format51l
+					// smaliParser.g:880:5: insn_format3rmi_method
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_format51l_in_instruction3992);
-					insn_format51l283=insn_format51l();
+					pushFollow(FOLLOW_insn_format3rmi_method_in_instruction4283);
+					insn_format3rmi_method313=insn_format3rmi_method();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_format51l283.getTree());
+					adaptor.addChild(root_0, insn_format3rmi_method313.getTree());
 
 					}
 					break;
 				case 44 :
-					// smaliParser.g:845:5: insn_array_data_directive
+					// smaliParser.g:881:5: insn_format3rms_method
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_array_data_directive_in_instruction3998);
-					insn_array_data_directive284=insn_array_data_directive();
+					pushFollow(FOLLOW_insn_format3rms_method_in_instruction4289);
+					insn_format3rms_method314=insn_format3rms_method();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_array_data_directive284.getTree());
+					adaptor.addChild(root_0, insn_format3rms_method314.getTree());
 
 					}
 					break;
 				case 45 :
-					// smaliParser.g:846:5: insn_packed_switch_directive
+					// smaliParser.g:882:5: insn_format45cc_method
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_packed_switch_directive_in_instruction4004);
-					insn_packed_switch_directive285=insn_packed_switch_directive();
+					pushFollow(FOLLOW_insn_format45cc_method_in_instruction4295);
+					insn_format45cc_method315=insn_format45cc_method();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_packed_switch_directive285.getTree());
+					adaptor.addChild(root_0, insn_format45cc_method315.getTree());
 
 					}
 					break;
 				case 46 :
-					// smaliParser.g:847:5: insn_sparse_switch_directive
+					// smaliParser.g:883:5: insn_format4rcc_method
 					{
 					root_0 = (CommonTree)adaptor.nil();
 
 
-					pushFollow(FOLLOW_insn_sparse_switch_directive_in_instruction4010);
-					insn_sparse_switch_directive286=insn_sparse_switch_directive();
+					pushFollow(FOLLOW_insn_format4rcc_method_in_instruction4301);
+					insn_format4rcc_method316=insn_format4rcc_method();
 					state._fsp--;
 
-					adaptor.addChild(root_0, insn_sparse_switch_directive286.getTree());
+					adaptor.addChild(root_0, insn_format4rcc_method316.getTree());
+
+					}
+					break;
+				case 47 :
+					// smaliParser.g:884:5: insn_format51l
+					{
+					root_0 = (CommonTree)adaptor.nil();
+
+
+					pushFollow(FOLLOW_insn_format51l_in_instruction4307);
+					insn_format51l317=insn_format51l();
+					state._fsp--;
+
+					adaptor.addChild(root_0, insn_format51l317.getTree());
+
+					}
+					break;
+				case 48 :
+					// smaliParser.g:885:5: insn_array_data_directive
+					{
+					root_0 = (CommonTree)adaptor.nil();
+
+
+					pushFollow(FOLLOW_insn_array_data_directive_in_instruction4313);
+					insn_array_data_directive318=insn_array_data_directive();
+					state._fsp--;
+
+					adaptor.addChild(root_0, insn_array_data_directive318.getTree());
+
+					}
+					break;
+				case 49 :
+					// smaliParser.g:886:5: insn_packed_switch_directive
+					{
+					root_0 = (CommonTree)adaptor.nil();
+
+
+					pushFollow(FOLLOW_insn_packed_switch_directive_in_instruction4319);
+					insn_packed_switch_directive319=insn_packed_switch_directive();
+					state._fsp--;
+
+					adaptor.addChild(root_0, insn_packed_switch_directive319.getTree());
+
+					}
+					break;
+				case 50 :
+					// smaliParser.g:887:5: insn_sparse_switch_directive
+					{
+					root_0 = (CommonTree)adaptor.nil();
+
+
+					pushFollow(FOLLOW_insn_sparse_switch_directive_in_instruction4325);
+					insn_sparse_switch_directive320=insn_sparse_switch_directive();
+					state._fsp--;
+
+					adaptor.addChild(root_0, insn_sparse_switch_directive320.getTree());
 
 					}
 					break;
@@ -10321,32 +11260,32 @@
 
 
 	// $ANTLR start "insn_format10t"
-	// smaliParser.g:849:1: insn_format10t : INSTRUCTION_FORMAT10t label_ref -> ^( I_STATEMENT_FORMAT10t[$start, \"I_STATEMENT_FORMAT10t\"] INSTRUCTION_FORMAT10t label_ref ) ;
+	// smaliParser.g:889:1: insn_format10t : INSTRUCTION_FORMAT10t label_ref -> ^( I_STATEMENT_FORMAT10t[$start, \"I_STATEMENT_FORMAT10t\"] INSTRUCTION_FORMAT10t label_ref ) ;
 	public final smaliParser.insn_format10t_return insn_format10t() throws RecognitionException {
 		smaliParser.insn_format10t_return retval = new smaliParser.insn_format10t_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT10t287=null;
-		ParserRuleReturnScope label_ref288 =null;
+		Token INSTRUCTION_FORMAT10t321=null;
+		ParserRuleReturnScope label_ref322 =null;
 
-		CommonTree INSTRUCTION_FORMAT10t287_tree=null;
+		CommonTree INSTRUCTION_FORMAT10t321_tree=null;
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT10t=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT10t");
 		RewriteRuleSubtreeStream stream_label_ref=new RewriteRuleSubtreeStream(adaptor,"rule label_ref");
 
 		try {
-			// smaliParser.g:850:3: ( INSTRUCTION_FORMAT10t label_ref -> ^( I_STATEMENT_FORMAT10t[$start, \"I_STATEMENT_FORMAT10t\"] INSTRUCTION_FORMAT10t label_ref ) )
-			// smaliParser.g:852:5: INSTRUCTION_FORMAT10t label_ref
+			// smaliParser.g:890:3: ( INSTRUCTION_FORMAT10t label_ref -> ^( I_STATEMENT_FORMAT10t[$start, \"I_STATEMENT_FORMAT10t\"] INSTRUCTION_FORMAT10t label_ref ) )
+			// smaliParser.g:892:5: INSTRUCTION_FORMAT10t label_ref
 			{
-			INSTRUCTION_FORMAT10t287=(Token)match(input,INSTRUCTION_FORMAT10t,FOLLOW_INSTRUCTION_FORMAT10t_in_insn_format10t4030);  
-			stream_INSTRUCTION_FORMAT10t.add(INSTRUCTION_FORMAT10t287);
+			INSTRUCTION_FORMAT10t321=(Token)match(input,INSTRUCTION_FORMAT10t,FOLLOW_INSTRUCTION_FORMAT10t_in_insn_format10t4345);  
+			stream_INSTRUCTION_FORMAT10t.add(INSTRUCTION_FORMAT10t321);
 
-			pushFollow(FOLLOW_label_ref_in_insn_format10t4032);
-			label_ref288=label_ref();
+			pushFollow(FOLLOW_label_ref_in_insn_format10t4347);
+			label_ref322=label_ref();
 			state._fsp--;
 
-			stream_label_ref.add(label_ref288.getTree());
+			stream_label_ref.add(label_ref322.getTree());
 			// AST REWRITE
 			// elements: INSTRUCTION_FORMAT10t, label_ref
 			// token labels: 
@@ -10358,9 +11297,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 853:5: -> ^( I_STATEMENT_FORMAT10t[$start, \"I_STATEMENT_FORMAT10t\"] INSTRUCTION_FORMAT10t label_ref )
+			// 893:5: -> ^( I_STATEMENT_FORMAT10t[$start, \"I_STATEMENT_FORMAT10t\"] INSTRUCTION_FORMAT10t label_ref )
 			{
-				// smaliParser.g:853:8: ^( I_STATEMENT_FORMAT10t[$start, \"I_STATEMENT_FORMAT10t\"] INSTRUCTION_FORMAT10t label_ref )
+				// smaliParser.g:893:8: ^( I_STATEMENT_FORMAT10t[$start, \"I_STATEMENT_FORMAT10t\"] INSTRUCTION_FORMAT10t label_ref )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT10t, (retval.start), "I_STATEMENT_FORMAT10t"), root_1);
@@ -10403,24 +11342,24 @@
 
 
 	// $ANTLR start "insn_format10x"
-	// smaliParser.g:855:1: insn_format10x : INSTRUCTION_FORMAT10x -> ^( I_STATEMENT_FORMAT10x[$start, \"I_STATEMENT_FORMAT10x\"] INSTRUCTION_FORMAT10x ) ;
+	// smaliParser.g:895:1: insn_format10x : INSTRUCTION_FORMAT10x -> ^( I_STATEMENT_FORMAT10x[$start, \"I_STATEMENT_FORMAT10x\"] INSTRUCTION_FORMAT10x ) ;
 	public final smaliParser.insn_format10x_return insn_format10x() throws RecognitionException {
 		smaliParser.insn_format10x_return retval = new smaliParser.insn_format10x_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT10x289=null;
+		Token INSTRUCTION_FORMAT10x323=null;
 
-		CommonTree INSTRUCTION_FORMAT10x289_tree=null;
+		CommonTree INSTRUCTION_FORMAT10x323_tree=null;
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT10x=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT10x");
 
 		try {
-			// smaliParser.g:856:3: ( INSTRUCTION_FORMAT10x -> ^( I_STATEMENT_FORMAT10x[$start, \"I_STATEMENT_FORMAT10x\"] INSTRUCTION_FORMAT10x ) )
-			// smaliParser.g:857:5: INSTRUCTION_FORMAT10x
+			// smaliParser.g:896:3: ( INSTRUCTION_FORMAT10x -> ^( I_STATEMENT_FORMAT10x[$start, \"I_STATEMENT_FORMAT10x\"] INSTRUCTION_FORMAT10x ) )
+			// smaliParser.g:897:5: INSTRUCTION_FORMAT10x
 			{
-			INSTRUCTION_FORMAT10x289=(Token)match(input,INSTRUCTION_FORMAT10x,FOLLOW_INSTRUCTION_FORMAT10x_in_insn_format10x4062);  
-			stream_INSTRUCTION_FORMAT10x.add(INSTRUCTION_FORMAT10x289);
+			INSTRUCTION_FORMAT10x323=(Token)match(input,INSTRUCTION_FORMAT10x,FOLLOW_INSTRUCTION_FORMAT10x_in_insn_format10x4377);  
+			stream_INSTRUCTION_FORMAT10x.add(INSTRUCTION_FORMAT10x323);
 
 			// AST REWRITE
 			// elements: INSTRUCTION_FORMAT10x
@@ -10433,9 +11372,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 858:5: -> ^( I_STATEMENT_FORMAT10x[$start, \"I_STATEMENT_FORMAT10x\"] INSTRUCTION_FORMAT10x )
+			// 898:5: -> ^( I_STATEMENT_FORMAT10x[$start, \"I_STATEMENT_FORMAT10x\"] INSTRUCTION_FORMAT10x )
 			{
-				// smaliParser.g:858:8: ^( I_STATEMENT_FORMAT10x[$start, \"I_STATEMENT_FORMAT10x\"] INSTRUCTION_FORMAT10x )
+				// smaliParser.g:898:8: ^( I_STATEMENT_FORMAT10x[$start, \"I_STATEMENT_FORMAT10x\"] INSTRUCTION_FORMAT10x )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT10x, (retval.start), "I_STATEMENT_FORMAT10x"), root_1);
@@ -10477,30 +11416,30 @@
 
 
 	// $ANTLR start "insn_format10x_odex"
-	// smaliParser.g:860:1: insn_format10x_odex : INSTRUCTION_FORMAT10x_ODEX ;
+	// smaliParser.g:900:1: insn_format10x_odex : INSTRUCTION_FORMAT10x_ODEX ;
 	public final smaliParser.insn_format10x_odex_return insn_format10x_odex() throws RecognitionException {
 		smaliParser.insn_format10x_odex_return retval = new smaliParser.insn_format10x_odex_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT10x_ODEX290=null;
+		Token INSTRUCTION_FORMAT10x_ODEX324=null;
 
-		CommonTree INSTRUCTION_FORMAT10x_ODEX290_tree=null;
+		CommonTree INSTRUCTION_FORMAT10x_ODEX324_tree=null;
 
 		try {
-			// smaliParser.g:861:3: ( INSTRUCTION_FORMAT10x_ODEX )
-			// smaliParser.g:862:5: INSTRUCTION_FORMAT10x_ODEX
+			// smaliParser.g:901:3: ( INSTRUCTION_FORMAT10x_ODEX )
+			// smaliParser.g:902:5: INSTRUCTION_FORMAT10x_ODEX
 			{
 			root_0 = (CommonTree)adaptor.nil();
 
 
-			INSTRUCTION_FORMAT10x_ODEX290=(Token)match(input,INSTRUCTION_FORMAT10x_ODEX,FOLLOW_INSTRUCTION_FORMAT10x_ODEX_in_insn_format10x_odex4090); 
-			INSTRUCTION_FORMAT10x_ODEX290_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT10x_ODEX290);
-			adaptor.addChild(root_0, INSTRUCTION_FORMAT10x_ODEX290_tree);
+			INSTRUCTION_FORMAT10x_ODEX324=(Token)match(input,INSTRUCTION_FORMAT10x_ODEX,FOLLOW_INSTRUCTION_FORMAT10x_ODEX_in_insn_format10x_odex4405); 
+			INSTRUCTION_FORMAT10x_ODEX324_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT10x_ODEX324);
+			adaptor.addChild(root_0, INSTRUCTION_FORMAT10x_ODEX324_tree);
 
 
-			      throwOdexedInstructionException(input, (INSTRUCTION_FORMAT10x_ODEX290!=null?INSTRUCTION_FORMAT10x_ODEX290.getText():null));
+			      throwOdexedInstructionException(input, (INSTRUCTION_FORMAT10x_ODEX324!=null?INSTRUCTION_FORMAT10x_ODEX324.getText():null));
 			    
 			}
 
@@ -10531,46 +11470,46 @@
 
 
 	// $ANTLR start "insn_format11n"
-	// smaliParser.g:867:1: insn_format11n : INSTRUCTION_FORMAT11n REGISTER COMMA integral_literal -> ^( I_STATEMENT_FORMAT11n[$start, \"I_STATEMENT_FORMAT11n\"] INSTRUCTION_FORMAT11n REGISTER integral_literal ) ;
+	// smaliParser.g:907:1: insn_format11n : INSTRUCTION_FORMAT11n REGISTER COMMA integral_literal -> ^( I_STATEMENT_FORMAT11n[$start, \"I_STATEMENT_FORMAT11n\"] INSTRUCTION_FORMAT11n REGISTER integral_literal ) ;
 	public final smaliParser.insn_format11n_return insn_format11n() throws RecognitionException {
 		smaliParser.insn_format11n_return retval = new smaliParser.insn_format11n_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT11n291=null;
-		Token REGISTER292=null;
-		Token COMMA293=null;
-		ParserRuleReturnScope integral_literal294 =null;
+		Token INSTRUCTION_FORMAT11n325=null;
+		Token REGISTER326=null;
+		Token COMMA327=null;
+		ParserRuleReturnScope integral_literal328 =null;
 
-		CommonTree INSTRUCTION_FORMAT11n291_tree=null;
-		CommonTree REGISTER292_tree=null;
-		CommonTree COMMA293_tree=null;
+		CommonTree INSTRUCTION_FORMAT11n325_tree=null;
+		CommonTree REGISTER326_tree=null;
+		CommonTree COMMA327_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT11n=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT11n");
 		RewriteRuleSubtreeStream stream_integral_literal=new RewriteRuleSubtreeStream(adaptor,"rule integral_literal");
 
 		try {
-			// smaliParser.g:868:3: ( INSTRUCTION_FORMAT11n REGISTER COMMA integral_literal -> ^( I_STATEMENT_FORMAT11n[$start, \"I_STATEMENT_FORMAT11n\"] INSTRUCTION_FORMAT11n REGISTER integral_literal ) )
-			// smaliParser.g:869:5: INSTRUCTION_FORMAT11n REGISTER COMMA integral_literal
+			// smaliParser.g:908:3: ( INSTRUCTION_FORMAT11n REGISTER COMMA integral_literal -> ^( I_STATEMENT_FORMAT11n[$start, \"I_STATEMENT_FORMAT11n\"] INSTRUCTION_FORMAT11n REGISTER integral_literal ) )
+			// smaliParser.g:909:5: INSTRUCTION_FORMAT11n REGISTER COMMA integral_literal
 			{
-			INSTRUCTION_FORMAT11n291=(Token)match(input,INSTRUCTION_FORMAT11n,FOLLOW_INSTRUCTION_FORMAT11n_in_insn_format11n4111);  
-			stream_INSTRUCTION_FORMAT11n.add(INSTRUCTION_FORMAT11n291);
+			INSTRUCTION_FORMAT11n325=(Token)match(input,INSTRUCTION_FORMAT11n,FOLLOW_INSTRUCTION_FORMAT11n_in_insn_format11n4426);  
+			stream_INSTRUCTION_FORMAT11n.add(INSTRUCTION_FORMAT11n325);
 
-			REGISTER292=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format11n4113);  
-			stream_REGISTER.add(REGISTER292);
+			REGISTER326=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format11n4428);  
+			stream_REGISTER.add(REGISTER326);
 
-			COMMA293=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format11n4115);  
-			stream_COMMA.add(COMMA293);
+			COMMA327=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format11n4430);  
+			stream_COMMA.add(COMMA327);
 
-			pushFollow(FOLLOW_integral_literal_in_insn_format11n4117);
-			integral_literal294=integral_literal();
+			pushFollow(FOLLOW_integral_literal_in_insn_format11n4432);
+			integral_literal328=integral_literal();
 			state._fsp--;
 
-			stream_integral_literal.add(integral_literal294.getTree());
+			stream_integral_literal.add(integral_literal328.getTree());
 			// AST REWRITE
-			// elements: integral_literal, INSTRUCTION_FORMAT11n, REGISTER
+			// elements: REGISTER, integral_literal, INSTRUCTION_FORMAT11n
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -10580,9 +11519,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 870:5: -> ^( I_STATEMENT_FORMAT11n[$start, \"I_STATEMENT_FORMAT11n\"] INSTRUCTION_FORMAT11n REGISTER integral_literal )
+			// 910:5: -> ^( I_STATEMENT_FORMAT11n[$start, \"I_STATEMENT_FORMAT11n\"] INSTRUCTION_FORMAT11n REGISTER integral_literal )
 			{
-				// smaliParser.g:870:8: ^( I_STATEMENT_FORMAT11n[$start, \"I_STATEMENT_FORMAT11n\"] INSTRUCTION_FORMAT11n REGISTER integral_literal )
+				// smaliParser.g:910:8: ^( I_STATEMENT_FORMAT11n[$start, \"I_STATEMENT_FORMAT11n\"] INSTRUCTION_FORMAT11n REGISTER integral_literal )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT11n, (retval.start), "I_STATEMENT_FORMAT11n"), root_1);
@@ -10626,33 +11565,33 @@
 
 
 	// $ANTLR start "insn_format11x"
-	// smaliParser.g:872:1: insn_format11x : INSTRUCTION_FORMAT11x REGISTER -> ^( I_STATEMENT_FORMAT11x[$start, \"I_STATEMENT_FORMAT11x\"] INSTRUCTION_FORMAT11x REGISTER ) ;
+	// smaliParser.g:912:1: insn_format11x : INSTRUCTION_FORMAT11x REGISTER -> ^( I_STATEMENT_FORMAT11x[$start, \"I_STATEMENT_FORMAT11x\"] INSTRUCTION_FORMAT11x REGISTER ) ;
 	public final smaliParser.insn_format11x_return insn_format11x() throws RecognitionException {
 		smaliParser.insn_format11x_return retval = new smaliParser.insn_format11x_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT11x295=null;
-		Token REGISTER296=null;
+		Token INSTRUCTION_FORMAT11x329=null;
+		Token REGISTER330=null;
 
-		CommonTree INSTRUCTION_FORMAT11x295_tree=null;
-		CommonTree REGISTER296_tree=null;
+		CommonTree INSTRUCTION_FORMAT11x329_tree=null;
+		CommonTree REGISTER330_tree=null;
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT11x=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT11x");
 
 		try {
-			// smaliParser.g:873:3: ( INSTRUCTION_FORMAT11x REGISTER -> ^( I_STATEMENT_FORMAT11x[$start, \"I_STATEMENT_FORMAT11x\"] INSTRUCTION_FORMAT11x REGISTER ) )
-			// smaliParser.g:874:5: INSTRUCTION_FORMAT11x REGISTER
+			// smaliParser.g:913:3: ( INSTRUCTION_FORMAT11x REGISTER -> ^( I_STATEMENT_FORMAT11x[$start, \"I_STATEMENT_FORMAT11x\"] INSTRUCTION_FORMAT11x REGISTER ) )
+			// smaliParser.g:914:5: INSTRUCTION_FORMAT11x REGISTER
 			{
-			INSTRUCTION_FORMAT11x295=(Token)match(input,INSTRUCTION_FORMAT11x,FOLLOW_INSTRUCTION_FORMAT11x_in_insn_format11x4149);  
-			stream_INSTRUCTION_FORMAT11x.add(INSTRUCTION_FORMAT11x295);
+			INSTRUCTION_FORMAT11x329=(Token)match(input,INSTRUCTION_FORMAT11x,FOLLOW_INSTRUCTION_FORMAT11x_in_insn_format11x4464);  
+			stream_INSTRUCTION_FORMAT11x.add(INSTRUCTION_FORMAT11x329);
 
-			REGISTER296=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format11x4151);  
-			stream_REGISTER.add(REGISTER296);
+			REGISTER330=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format11x4466);  
+			stream_REGISTER.add(REGISTER330);
 
 			// AST REWRITE
-			// elements: REGISTER, INSTRUCTION_FORMAT11x
+			// elements: INSTRUCTION_FORMAT11x, REGISTER
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -10662,9 +11601,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 875:5: -> ^( I_STATEMENT_FORMAT11x[$start, \"I_STATEMENT_FORMAT11x\"] INSTRUCTION_FORMAT11x REGISTER )
+			// 915:5: -> ^( I_STATEMENT_FORMAT11x[$start, \"I_STATEMENT_FORMAT11x\"] INSTRUCTION_FORMAT11x REGISTER )
 			{
-				// smaliParser.g:875:8: ^( I_STATEMENT_FORMAT11x[$start, \"I_STATEMENT_FORMAT11x\"] INSTRUCTION_FORMAT11x REGISTER )
+				// smaliParser.g:915:8: ^( I_STATEMENT_FORMAT11x[$start, \"I_STATEMENT_FORMAT11x\"] INSTRUCTION_FORMAT11x REGISTER )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT11x, (retval.start), "I_STATEMENT_FORMAT11x"), root_1);
@@ -10707,45 +11646,45 @@
 
 
 	// $ANTLR start "insn_format12x"
-	// smaliParser.g:877:1: insn_format12x : instruction_format12x REGISTER COMMA REGISTER -> ^( I_STATEMENT_FORMAT12x[$start, \"I_STATEMENT_FORMAT12x\"] instruction_format12x REGISTER REGISTER ) ;
+	// smaliParser.g:917:1: insn_format12x : instruction_format12x REGISTER COMMA REGISTER -> ^( I_STATEMENT_FORMAT12x[$start, \"I_STATEMENT_FORMAT12x\"] instruction_format12x REGISTER REGISTER ) ;
 	public final smaliParser.insn_format12x_return insn_format12x() throws RecognitionException {
 		smaliParser.insn_format12x_return retval = new smaliParser.insn_format12x_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token REGISTER298=null;
-		Token COMMA299=null;
-		Token REGISTER300=null;
-		ParserRuleReturnScope instruction_format12x297 =null;
+		Token REGISTER332=null;
+		Token COMMA333=null;
+		Token REGISTER334=null;
+		ParserRuleReturnScope instruction_format12x331 =null;
 
-		CommonTree REGISTER298_tree=null;
-		CommonTree COMMA299_tree=null;
-		CommonTree REGISTER300_tree=null;
+		CommonTree REGISTER332_tree=null;
+		CommonTree COMMA333_tree=null;
+		CommonTree REGISTER334_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleSubtreeStream stream_instruction_format12x=new RewriteRuleSubtreeStream(adaptor,"rule instruction_format12x");
 
 		try {
-			// smaliParser.g:878:3: ( instruction_format12x REGISTER COMMA REGISTER -> ^( I_STATEMENT_FORMAT12x[$start, \"I_STATEMENT_FORMAT12x\"] instruction_format12x REGISTER REGISTER ) )
-			// smaliParser.g:879:5: instruction_format12x REGISTER COMMA REGISTER
+			// smaliParser.g:918:3: ( instruction_format12x REGISTER COMMA REGISTER -> ^( I_STATEMENT_FORMAT12x[$start, \"I_STATEMENT_FORMAT12x\"] instruction_format12x REGISTER REGISTER ) )
+			// smaliParser.g:919:5: instruction_format12x REGISTER COMMA REGISTER
 			{
-			pushFollow(FOLLOW_instruction_format12x_in_insn_format12x4181);
-			instruction_format12x297=instruction_format12x();
+			pushFollow(FOLLOW_instruction_format12x_in_insn_format12x4496);
+			instruction_format12x331=instruction_format12x();
 			state._fsp--;
 
-			stream_instruction_format12x.add(instruction_format12x297.getTree());
-			REGISTER298=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format12x4183);  
-			stream_REGISTER.add(REGISTER298);
+			stream_instruction_format12x.add(instruction_format12x331.getTree());
+			REGISTER332=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format12x4498);  
+			stream_REGISTER.add(REGISTER332);
 
-			COMMA299=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format12x4185);  
-			stream_COMMA.add(COMMA299);
+			COMMA333=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format12x4500);  
+			stream_COMMA.add(COMMA333);
 
-			REGISTER300=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format12x4187);  
-			stream_REGISTER.add(REGISTER300);
+			REGISTER334=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format12x4502);  
+			stream_REGISTER.add(REGISTER334);
 
 			// AST REWRITE
-			// elements: REGISTER, instruction_format12x, REGISTER
+			// elements: instruction_format12x, REGISTER, REGISTER
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -10755,9 +11694,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 880:5: -> ^( I_STATEMENT_FORMAT12x[$start, \"I_STATEMENT_FORMAT12x\"] instruction_format12x REGISTER REGISTER )
+			// 920:5: -> ^( I_STATEMENT_FORMAT12x[$start, \"I_STATEMENT_FORMAT12x\"] instruction_format12x REGISTER REGISTER )
 			{
-				// smaliParser.g:880:8: ^( I_STATEMENT_FORMAT12x[$start, \"I_STATEMENT_FORMAT12x\"] instruction_format12x REGISTER REGISTER )
+				// smaliParser.g:920:8: ^( I_STATEMENT_FORMAT12x[$start, \"I_STATEMENT_FORMAT12x\"] instruction_format12x REGISTER REGISTER )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT12x, (retval.start), "I_STATEMENT_FORMAT12x"), root_1);
@@ -10801,51 +11740,51 @@
 
 
 	// $ANTLR start "insn_format20bc"
-	// smaliParser.g:882:1: insn_format20bc : INSTRUCTION_FORMAT20bc VERIFICATION_ERROR_TYPE COMMA verification_error_reference -> ^( I_STATEMENT_FORMAT20bc INSTRUCTION_FORMAT20bc VERIFICATION_ERROR_TYPE verification_error_reference ) ;
+	// smaliParser.g:922:1: insn_format20bc : INSTRUCTION_FORMAT20bc VERIFICATION_ERROR_TYPE COMMA verification_error_reference -> ^( I_STATEMENT_FORMAT20bc INSTRUCTION_FORMAT20bc VERIFICATION_ERROR_TYPE verification_error_reference ) ;
 	public final smaliParser.insn_format20bc_return insn_format20bc() throws RecognitionException {
 		smaliParser.insn_format20bc_return retval = new smaliParser.insn_format20bc_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT20bc301=null;
-		Token VERIFICATION_ERROR_TYPE302=null;
-		Token COMMA303=null;
-		ParserRuleReturnScope verification_error_reference304 =null;
+		Token INSTRUCTION_FORMAT20bc335=null;
+		Token VERIFICATION_ERROR_TYPE336=null;
+		Token COMMA337=null;
+		ParserRuleReturnScope verification_error_reference338 =null;
 
-		CommonTree INSTRUCTION_FORMAT20bc301_tree=null;
-		CommonTree VERIFICATION_ERROR_TYPE302_tree=null;
-		CommonTree COMMA303_tree=null;
+		CommonTree INSTRUCTION_FORMAT20bc335_tree=null;
+		CommonTree VERIFICATION_ERROR_TYPE336_tree=null;
+		CommonTree COMMA337_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_VERIFICATION_ERROR_TYPE=new RewriteRuleTokenStream(adaptor,"token VERIFICATION_ERROR_TYPE");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT20bc=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT20bc");
 		RewriteRuleSubtreeStream stream_verification_error_reference=new RewriteRuleSubtreeStream(adaptor,"rule verification_error_reference");
 
 		try {
-			// smaliParser.g:883:3: ( INSTRUCTION_FORMAT20bc VERIFICATION_ERROR_TYPE COMMA verification_error_reference -> ^( I_STATEMENT_FORMAT20bc INSTRUCTION_FORMAT20bc VERIFICATION_ERROR_TYPE verification_error_reference ) )
-			// smaliParser.g:884:5: INSTRUCTION_FORMAT20bc VERIFICATION_ERROR_TYPE COMMA verification_error_reference
+			// smaliParser.g:923:3: ( INSTRUCTION_FORMAT20bc VERIFICATION_ERROR_TYPE COMMA verification_error_reference -> ^( I_STATEMENT_FORMAT20bc INSTRUCTION_FORMAT20bc VERIFICATION_ERROR_TYPE verification_error_reference ) )
+			// smaliParser.g:924:5: INSTRUCTION_FORMAT20bc VERIFICATION_ERROR_TYPE COMMA verification_error_reference
 			{
-			INSTRUCTION_FORMAT20bc301=(Token)match(input,INSTRUCTION_FORMAT20bc,FOLLOW_INSTRUCTION_FORMAT20bc_in_insn_format20bc4219);  
-			stream_INSTRUCTION_FORMAT20bc.add(INSTRUCTION_FORMAT20bc301);
+			INSTRUCTION_FORMAT20bc335=(Token)match(input,INSTRUCTION_FORMAT20bc,FOLLOW_INSTRUCTION_FORMAT20bc_in_insn_format20bc4534);  
+			stream_INSTRUCTION_FORMAT20bc.add(INSTRUCTION_FORMAT20bc335);
 
-			VERIFICATION_ERROR_TYPE302=(Token)match(input,VERIFICATION_ERROR_TYPE,FOLLOW_VERIFICATION_ERROR_TYPE_in_insn_format20bc4221);  
-			stream_VERIFICATION_ERROR_TYPE.add(VERIFICATION_ERROR_TYPE302);
+			VERIFICATION_ERROR_TYPE336=(Token)match(input,VERIFICATION_ERROR_TYPE,FOLLOW_VERIFICATION_ERROR_TYPE_in_insn_format20bc4536);  
+			stream_VERIFICATION_ERROR_TYPE.add(VERIFICATION_ERROR_TYPE336);
 
-			COMMA303=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format20bc4223);  
-			stream_COMMA.add(COMMA303);
+			COMMA337=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format20bc4538);  
+			stream_COMMA.add(COMMA337);
 
-			pushFollow(FOLLOW_verification_error_reference_in_insn_format20bc4225);
-			verification_error_reference304=verification_error_reference();
+			pushFollow(FOLLOW_verification_error_reference_in_insn_format20bc4540);
+			verification_error_reference338=verification_error_reference();
 			state._fsp--;
 
-			stream_verification_error_reference.add(verification_error_reference304.getTree());
+			stream_verification_error_reference.add(verification_error_reference338.getTree());
 
-			      if (!allowOdex || opcodes.getOpcodeByName((INSTRUCTION_FORMAT20bc301!=null?INSTRUCTION_FORMAT20bc301.getText():null)) == null || apiLevel >= 14) {
-			        throwOdexedInstructionException(input, (INSTRUCTION_FORMAT20bc301!=null?INSTRUCTION_FORMAT20bc301.getText():null));
+			      if (!allowOdex || opcodes.getOpcodeByName((INSTRUCTION_FORMAT20bc335!=null?INSTRUCTION_FORMAT20bc335.getText():null)) == null || apiLevel >= 14) {
+			        throwOdexedInstructionException(input, (INSTRUCTION_FORMAT20bc335!=null?INSTRUCTION_FORMAT20bc335.getText():null));
 			      }
 			    
 			// AST REWRITE
-			// elements: VERIFICATION_ERROR_TYPE, verification_error_reference, INSTRUCTION_FORMAT20bc
+			// elements: INSTRUCTION_FORMAT20bc, verification_error_reference, VERIFICATION_ERROR_TYPE
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -10855,9 +11794,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 890:5: -> ^( I_STATEMENT_FORMAT20bc INSTRUCTION_FORMAT20bc VERIFICATION_ERROR_TYPE verification_error_reference )
+			// 930:5: -> ^( I_STATEMENT_FORMAT20bc INSTRUCTION_FORMAT20bc VERIFICATION_ERROR_TYPE verification_error_reference )
 			{
-				// smaliParser.g:890:8: ^( I_STATEMENT_FORMAT20bc INSTRUCTION_FORMAT20bc VERIFICATION_ERROR_TYPE verification_error_reference )
+				// smaliParser.g:930:8: ^( I_STATEMENT_FORMAT20bc INSTRUCTION_FORMAT20bc VERIFICATION_ERROR_TYPE verification_error_reference )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT20bc, "I_STATEMENT_FORMAT20bc"), root_1);
@@ -10901,32 +11840,32 @@
 
 
 	// $ANTLR start "insn_format20t"
-	// smaliParser.g:892:1: insn_format20t : INSTRUCTION_FORMAT20t label_ref -> ^( I_STATEMENT_FORMAT20t[$start, \"I_STATEMENT_FORMAT20t\"] INSTRUCTION_FORMAT20t label_ref ) ;
+	// smaliParser.g:932:1: insn_format20t : INSTRUCTION_FORMAT20t label_ref -> ^( I_STATEMENT_FORMAT20t[$start, \"I_STATEMENT_FORMAT20t\"] INSTRUCTION_FORMAT20t label_ref ) ;
 	public final smaliParser.insn_format20t_return insn_format20t() throws RecognitionException {
 		smaliParser.insn_format20t_return retval = new smaliParser.insn_format20t_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT20t305=null;
-		ParserRuleReturnScope label_ref306 =null;
+		Token INSTRUCTION_FORMAT20t339=null;
+		ParserRuleReturnScope label_ref340 =null;
 
-		CommonTree INSTRUCTION_FORMAT20t305_tree=null;
+		CommonTree INSTRUCTION_FORMAT20t339_tree=null;
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT20t=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT20t");
 		RewriteRuleSubtreeStream stream_label_ref=new RewriteRuleSubtreeStream(adaptor,"rule label_ref");
 
 		try {
-			// smaliParser.g:893:3: ( INSTRUCTION_FORMAT20t label_ref -> ^( I_STATEMENT_FORMAT20t[$start, \"I_STATEMENT_FORMAT20t\"] INSTRUCTION_FORMAT20t label_ref ) )
-			// smaliParser.g:894:5: INSTRUCTION_FORMAT20t label_ref
+			// smaliParser.g:933:3: ( INSTRUCTION_FORMAT20t label_ref -> ^( I_STATEMENT_FORMAT20t[$start, \"I_STATEMENT_FORMAT20t\"] INSTRUCTION_FORMAT20t label_ref ) )
+			// smaliParser.g:934:5: INSTRUCTION_FORMAT20t label_ref
 			{
-			INSTRUCTION_FORMAT20t305=(Token)match(input,INSTRUCTION_FORMAT20t,FOLLOW_INSTRUCTION_FORMAT20t_in_insn_format20t4262);  
-			stream_INSTRUCTION_FORMAT20t.add(INSTRUCTION_FORMAT20t305);
+			INSTRUCTION_FORMAT20t339=(Token)match(input,INSTRUCTION_FORMAT20t,FOLLOW_INSTRUCTION_FORMAT20t_in_insn_format20t4577);  
+			stream_INSTRUCTION_FORMAT20t.add(INSTRUCTION_FORMAT20t339);
 
-			pushFollow(FOLLOW_label_ref_in_insn_format20t4264);
-			label_ref306=label_ref();
+			pushFollow(FOLLOW_label_ref_in_insn_format20t4579);
+			label_ref340=label_ref();
 			state._fsp--;
 
-			stream_label_ref.add(label_ref306.getTree());
+			stream_label_ref.add(label_ref340.getTree());
 			// AST REWRITE
 			// elements: INSTRUCTION_FORMAT20t, label_ref
 			// token labels: 
@@ -10938,9 +11877,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 895:5: -> ^( I_STATEMENT_FORMAT20t[$start, \"I_STATEMENT_FORMAT20t\"] INSTRUCTION_FORMAT20t label_ref )
+			// 935:5: -> ^( I_STATEMENT_FORMAT20t[$start, \"I_STATEMENT_FORMAT20t\"] INSTRUCTION_FORMAT20t label_ref )
 			{
-				// smaliParser.g:895:8: ^( I_STATEMENT_FORMAT20t[$start, \"I_STATEMENT_FORMAT20t\"] INSTRUCTION_FORMAT20t label_ref )
+				// smaliParser.g:935:8: ^( I_STATEMENT_FORMAT20t[$start, \"I_STATEMENT_FORMAT20t\"] INSTRUCTION_FORMAT20t label_ref )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT20t, (retval.start), "I_STATEMENT_FORMAT20t"), root_1);
@@ -10983,46 +11922,46 @@
 
 
 	// $ANTLR start "insn_format21c_field"
-	// smaliParser.g:897:1: insn_format21c_field : INSTRUCTION_FORMAT21c_FIELD REGISTER COMMA field_reference -> ^( I_STATEMENT_FORMAT21c_FIELD[$start, \"I_STATEMENT_FORMAT21c_FIELD\"] INSTRUCTION_FORMAT21c_FIELD REGISTER field_reference ) ;
+	// smaliParser.g:937:1: insn_format21c_field : INSTRUCTION_FORMAT21c_FIELD REGISTER COMMA field_reference -> ^( I_STATEMENT_FORMAT21c_FIELD[$start, \"I_STATEMENT_FORMAT21c_FIELD\"] INSTRUCTION_FORMAT21c_FIELD REGISTER field_reference ) ;
 	public final smaliParser.insn_format21c_field_return insn_format21c_field() throws RecognitionException {
 		smaliParser.insn_format21c_field_return retval = new smaliParser.insn_format21c_field_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT21c_FIELD307=null;
-		Token REGISTER308=null;
-		Token COMMA309=null;
-		ParserRuleReturnScope field_reference310 =null;
+		Token INSTRUCTION_FORMAT21c_FIELD341=null;
+		Token REGISTER342=null;
+		Token COMMA343=null;
+		ParserRuleReturnScope field_reference344 =null;
 
-		CommonTree INSTRUCTION_FORMAT21c_FIELD307_tree=null;
-		CommonTree REGISTER308_tree=null;
-		CommonTree COMMA309_tree=null;
+		CommonTree INSTRUCTION_FORMAT21c_FIELD341_tree=null;
+		CommonTree REGISTER342_tree=null;
+		CommonTree COMMA343_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT21c_FIELD=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT21c_FIELD");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleSubtreeStream stream_field_reference=new RewriteRuleSubtreeStream(adaptor,"rule field_reference");
 
 		try {
-			// smaliParser.g:898:3: ( INSTRUCTION_FORMAT21c_FIELD REGISTER COMMA field_reference -> ^( I_STATEMENT_FORMAT21c_FIELD[$start, \"I_STATEMENT_FORMAT21c_FIELD\"] INSTRUCTION_FORMAT21c_FIELD REGISTER field_reference ) )
-			// smaliParser.g:899:5: INSTRUCTION_FORMAT21c_FIELD REGISTER COMMA field_reference
+			// smaliParser.g:938:3: ( INSTRUCTION_FORMAT21c_FIELD REGISTER COMMA field_reference -> ^( I_STATEMENT_FORMAT21c_FIELD[$start, \"I_STATEMENT_FORMAT21c_FIELD\"] INSTRUCTION_FORMAT21c_FIELD REGISTER field_reference ) )
+			// smaliParser.g:939:5: INSTRUCTION_FORMAT21c_FIELD REGISTER COMMA field_reference
 			{
-			INSTRUCTION_FORMAT21c_FIELD307=(Token)match(input,INSTRUCTION_FORMAT21c_FIELD,FOLLOW_INSTRUCTION_FORMAT21c_FIELD_in_insn_format21c_field4294);  
-			stream_INSTRUCTION_FORMAT21c_FIELD.add(INSTRUCTION_FORMAT21c_FIELD307);
+			INSTRUCTION_FORMAT21c_FIELD341=(Token)match(input,INSTRUCTION_FORMAT21c_FIELD,FOLLOW_INSTRUCTION_FORMAT21c_FIELD_in_insn_format21c_field4609);  
+			stream_INSTRUCTION_FORMAT21c_FIELD.add(INSTRUCTION_FORMAT21c_FIELD341);
 
-			REGISTER308=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21c_field4296);  
-			stream_REGISTER.add(REGISTER308);
+			REGISTER342=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21c_field4611);  
+			stream_REGISTER.add(REGISTER342);
 
-			COMMA309=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format21c_field4298);  
-			stream_COMMA.add(COMMA309);
+			COMMA343=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format21c_field4613);  
+			stream_COMMA.add(COMMA343);
 
-			pushFollow(FOLLOW_field_reference_in_insn_format21c_field4300);
-			field_reference310=field_reference();
+			pushFollow(FOLLOW_field_reference_in_insn_format21c_field4615);
+			field_reference344=field_reference();
 			state._fsp--;
 
-			stream_field_reference.add(field_reference310.getTree());
+			stream_field_reference.add(field_reference344.getTree());
 			// AST REWRITE
-			// elements: REGISTER, INSTRUCTION_FORMAT21c_FIELD, field_reference
+			// elements: INSTRUCTION_FORMAT21c_FIELD, field_reference, REGISTER
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -11032,9 +11971,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 900:5: -> ^( I_STATEMENT_FORMAT21c_FIELD[$start, \"I_STATEMENT_FORMAT21c_FIELD\"] INSTRUCTION_FORMAT21c_FIELD REGISTER field_reference )
+			// 940:5: -> ^( I_STATEMENT_FORMAT21c_FIELD[$start, \"I_STATEMENT_FORMAT21c_FIELD\"] INSTRUCTION_FORMAT21c_FIELD REGISTER field_reference )
 			{
-				// smaliParser.g:900:8: ^( I_STATEMENT_FORMAT21c_FIELD[$start, \"I_STATEMENT_FORMAT21c_FIELD\"] INSTRUCTION_FORMAT21c_FIELD REGISTER field_reference )
+				// smaliParser.g:940:8: ^( I_STATEMENT_FORMAT21c_FIELD[$start, \"I_STATEMENT_FORMAT21c_FIELD\"] INSTRUCTION_FORMAT21c_FIELD REGISTER field_reference )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT21c_FIELD, (retval.start), "I_STATEMENT_FORMAT21c_FIELD"), root_1);
@@ -11078,51 +12017,51 @@
 
 
 	// $ANTLR start "insn_format21c_field_odex"
-	// smaliParser.g:902:1: insn_format21c_field_odex : INSTRUCTION_FORMAT21c_FIELD_ODEX REGISTER COMMA field_reference -> ^( I_STATEMENT_FORMAT21c_FIELD[$start, \"I_STATEMENT_FORMAT21c_FIELD\"] INSTRUCTION_FORMAT21c_FIELD_ODEX REGISTER field_reference ) ;
+	// smaliParser.g:942:1: insn_format21c_field_odex : INSTRUCTION_FORMAT21c_FIELD_ODEX REGISTER COMMA field_reference -> ^( I_STATEMENT_FORMAT21c_FIELD[$start, \"I_STATEMENT_FORMAT21c_FIELD\"] INSTRUCTION_FORMAT21c_FIELD_ODEX REGISTER field_reference ) ;
 	public final smaliParser.insn_format21c_field_odex_return insn_format21c_field_odex() throws RecognitionException {
 		smaliParser.insn_format21c_field_odex_return retval = new smaliParser.insn_format21c_field_odex_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT21c_FIELD_ODEX311=null;
-		Token REGISTER312=null;
-		Token COMMA313=null;
-		ParserRuleReturnScope field_reference314 =null;
+		Token INSTRUCTION_FORMAT21c_FIELD_ODEX345=null;
+		Token REGISTER346=null;
+		Token COMMA347=null;
+		ParserRuleReturnScope field_reference348 =null;
 
-		CommonTree INSTRUCTION_FORMAT21c_FIELD_ODEX311_tree=null;
-		CommonTree REGISTER312_tree=null;
-		CommonTree COMMA313_tree=null;
+		CommonTree INSTRUCTION_FORMAT21c_FIELD_ODEX345_tree=null;
+		CommonTree REGISTER346_tree=null;
+		CommonTree COMMA347_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT21c_FIELD_ODEX=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT21c_FIELD_ODEX");
 		RewriteRuleSubtreeStream stream_field_reference=new RewriteRuleSubtreeStream(adaptor,"rule field_reference");
 
 		try {
-			// smaliParser.g:903:3: ( INSTRUCTION_FORMAT21c_FIELD_ODEX REGISTER COMMA field_reference -> ^( I_STATEMENT_FORMAT21c_FIELD[$start, \"I_STATEMENT_FORMAT21c_FIELD\"] INSTRUCTION_FORMAT21c_FIELD_ODEX REGISTER field_reference ) )
-			// smaliParser.g:904:5: INSTRUCTION_FORMAT21c_FIELD_ODEX REGISTER COMMA field_reference
+			// smaliParser.g:943:3: ( INSTRUCTION_FORMAT21c_FIELD_ODEX REGISTER COMMA field_reference -> ^( I_STATEMENT_FORMAT21c_FIELD[$start, \"I_STATEMENT_FORMAT21c_FIELD\"] INSTRUCTION_FORMAT21c_FIELD_ODEX REGISTER field_reference ) )
+			// smaliParser.g:944:5: INSTRUCTION_FORMAT21c_FIELD_ODEX REGISTER COMMA field_reference
 			{
-			INSTRUCTION_FORMAT21c_FIELD_ODEX311=(Token)match(input,INSTRUCTION_FORMAT21c_FIELD_ODEX,FOLLOW_INSTRUCTION_FORMAT21c_FIELD_ODEX_in_insn_format21c_field_odex4332);  
-			stream_INSTRUCTION_FORMAT21c_FIELD_ODEX.add(INSTRUCTION_FORMAT21c_FIELD_ODEX311);
+			INSTRUCTION_FORMAT21c_FIELD_ODEX345=(Token)match(input,INSTRUCTION_FORMAT21c_FIELD_ODEX,FOLLOW_INSTRUCTION_FORMAT21c_FIELD_ODEX_in_insn_format21c_field_odex4647);  
+			stream_INSTRUCTION_FORMAT21c_FIELD_ODEX.add(INSTRUCTION_FORMAT21c_FIELD_ODEX345);
 
-			REGISTER312=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21c_field_odex4334);  
-			stream_REGISTER.add(REGISTER312);
+			REGISTER346=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21c_field_odex4649);  
+			stream_REGISTER.add(REGISTER346);
 
-			COMMA313=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format21c_field_odex4336);  
-			stream_COMMA.add(COMMA313);
+			COMMA347=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format21c_field_odex4651);  
+			stream_COMMA.add(COMMA347);
 
-			pushFollow(FOLLOW_field_reference_in_insn_format21c_field_odex4338);
-			field_reference314=field_reference();
+			pushFollow(FOLLOW_field_reference_in_insn_format21c_field_odex4653);
+			field_reference348=field_reference();
 			state._fsp--;
 
-			stream_field_reference.add(field_reference314.getTree());
+			stream_field_reference.add(field_reference348.getTree());
 
-			      if (!allowOdex || opcodes.getOpcodeByName((INSTRUCTION_FORMAT21c_FIELD_ODEX311!=null?INSTRUCTION_FORMAT21c_FIELD_ODEX311.getText():null)) == null || apiLevel >= 14) {
-			        throwOdexedInstructionException(input, (INSTRUCTION_FORMAT21c_FIELD_ODEX311!=null?INSTRUCTION_FORMAT21c_FIELD_ODEX311.getText():null));
+			      if (!allowOdex || opcodes.getOpcodeByName((INSTRUCTION_FORMAT21c_FIELD_ODEX345!=null?INSTRUCTION_FORMAT21c_FIELD_ODEX345.getText():null)) == null || apiLevel >= 14) {
+			        throwOdexedInstructionException(input, (INSTRUCTION_FORMAT21c_FIELD_ODEX345!=null?INSTRUCTION_FORMAT21c_FIELD_ODEX345.getText():null));
 			      }
 			    
 			// AST REWRITE
-			// elements: INSTRUCTION_FORMAT21c_FIELD_ODEX, REGISTER, field_reference
+			// elements: INSTRUCTION_FORMAT21c_FIELD_ODEX, field_reference, REGISTER
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -11132,9 +12071,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 910:5: -> ^( I_STATEMENT_FORMAT21c_FIELD[$start, \"I_STATEMENT_FORMAT21c_FIELD\"] INSTRUCTION_FORMAT21c_FIELD_ODEX REGISTER field_reference )
+			// 950:5: -> ^( I_STATEMENT_FORMAT21c_FIELD[$start, \"I_STATEMENT_FORMAT21c_FIELD\"] INSTRUCTION_FORMAT21c_FIELD_ODEX REGISTER field_reference )
 			{
-				// smaliParser.g:910:8: ^( I_STATEMENT_FORMAT21c_FIELD[$start, \"I_STATEMENT_FORMAT21c_FIELD\"] INSTRUCTION_FORMAT21c_FIELD_ODEX REGISTER field_reference )
+				// smaliParser.g:950:8: ^( I_STATEMENT_FORMAT21c_FIELD[$start, \"I_STATEMENT_FORMAT21c_FIELD\"] INSTRUCTION_FORMAT21c_FIELD_ODEX REGISTER field_reference )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT21c_FIELD, (retval.start), "I_STATEMENT_FORMAT21c_FIELD"), root_1);
@@ -11170,6 +12109,196 @@
 	// $ANTLR end "insn_format21c_field_odex"
 
 
+	public static class insn_format21c_method_handle_return extends ParserRuleReturnScope {
+		CommonTree tree;
+		@Override
+		public CommonTree getTree() { return tree; }
+	};
+
+
+	// $ANTLR start "insn_format21c_method_handle"
+	// smaliParser.g:952:1: insn_format21c_method_handle : INSTRUCTION_FORMAT21c_METHOD_HANDLE REGISTER COMMA method_handle_reference -> ^( I_STATEMENT_FORMAT21c_METHOD_HANDLE[$start, \"I_STATEMENT_FORMAT21c_METHOD_HANDLE\"] INSTRUCTION_FORMAT21c_METHOD_HANDLE REGISTER method_handle_reference ) ;
+	public final smaliParser.insn_format21c_method_handle_return insn_format21c_method_handle() throws RecognitionException {
+		smaliParser.insn_format21c_method_handle_return retval = new smaliParser.insn_format21c_method_handle_return();
+		retval.start = input.LT(1);
+
+		CommonTree root_0 = null;
+
+		Token INSTRUCTION_FORMAT21c_METHOD_HANDLE349=null;
+		Token REGISTER350=null;
+		Token COMMA351=null;
+		ParserRuleReturnScope method_handle_reference352 =null;
+
+		CommonTree INSTRUCTION_FORMAT21c_METHOD_HANDLE349_tree=null;
+		CommonTree REGISTER350_tree=null;
+		CommonTree COMMA351_tree=null;
+		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
+		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
+		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT21c_METHOD_HANDLE=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT21c_METHOD_HANDLE");
+		RewriteRuleSubtreeStream stream_method_handle_reference=new RewriteRuleSubtreeStream(adaptor,"rule method_handle_reference");
+
+		try {
+			// smaliParser.g:953:3: ( INSTRUCTION_FORMAT21c_METHOD_HANDLE REGISTER COMMA method_handle_reference -> ^( I_STATEMENT_FORMAT21c_METHOD_HANDLE[$start, \"I_STATEMENT_FORMAT21c_METHOD_HANDLE\"] INSTRUCTION_FORMAT21c_METHOD_HANDLE REGISTER method_handle_reference ) )
+			// smaliParser.g:954:5: INSTRUCTION_FORMAT21c_METHOD_HANDLE REGISTER COMMA method_handle_reference
+			{
+			INSTRUCTION_FORMAT21c_METHOD_HANDLE349=(Token)match(input,INSTRUCTION_FORMAT21c_METHOD_HANDLE,FOLLOW_INSTRUCTION_FORMAT21c_METHOD_HANDLE_in_insn_format21c_method_handle4691);  
+			stream_INSTRUCTION_FORMAT21c_METHOD_HANDLE.add(INSTRUCTION_FORMAT21c_METHOD_HANDLE349);
+
+			REGISTER350=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21c_method_handle4693);  
+			stream_REGISTER.add(REGISTER350);
+
+			COMMA351=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format21c_method_handle4695);  
+			stream_COMMA.add(COMMA351);
+
+			pushFollow(FOLLOW_method_handle_reference_in_insn_format21c_method_handle4697);
+			method_handle_reference352=method_handle_reference();
+			state._fsp--;
+
+			stream_method_handle_reference.add(method_handle_reference352.getTree());
+			// AST REWRITE
+			// elements: REGISTER, method_handle_reference, INSTRUCTION_FORMAT21c_METHOD_HANDLE
+			// token labels: 
+			// rule labels: retval
+			// token list labels: 
+			// rule list labels: 
+			// wildcard labels: 
+			retval.tree = root_0;
+			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
+
+			root_0 = (CommonTree)adaptor.nil();
+			// 955:5: -> ^( I_STATEMENT_FORMAT21c_METHOD_HANDLE[$start, \"I_STATEMENT_FORMAT21c_METHOD_HANDLE\"] INSTRUCTION_FORMAT21c_METHOD_HANDLE REGISTER method_handle_reference )
+			{
+				// smaliParser.g:955:8: ^( I_STATEMENT_FORMAT21c_METHOD_HANDLE[$start, \"I_STATEMENT_FORMAT21c_METHOD_HANDLE\"] INSTRUCTION_FORMAT21c_METHOD_HANDLE REGISTER method_handle_reference )
+				{
+				CommonTree root_1 = (CommonTree)adaptor.nil();
+				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT21c_METHOD_HANDLE, (retval.start), "I_STATEMENT_FORMAT21c_METHOD_HANDLE"), root_1);
+				adaptor.addChild(root_1, stream_INSTRUCTION_FORMAT21c_METHOD_HANDLE.nextNode());
+				adaptor.addChild(root_1, stream_REGISTER.nextNode());
+				adaptor.addChild(root_1, stream_method_handle_reference.nextTree());
+				adaptor.addChild(root_0, root_1);
+				}
+
+			}
+
+
+			retval.tree = root_0;
+
+			}
+
+			retval.stop = input.LT(-1);
+
+			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+		}
+		catch (RecognitionException re) {
+			reportError(re);
+			recover(input,re);
+			retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+		}
+		finally {
+			// do for sure before leaving
+		}
+		return retval;
+	}
+	// $ANTLR end "insn_format21c_method_handle"
+
+
+	public static class insn_format21c_method_type_return extends ParserRuleReturnScope {
+		CommonTree tree;
+		@Override
+		public CommonTree getTree() { return tree; }
+	};
+
+
+	// $ANTLR start "insn_format21c_method_type"
+	// smaliParser.g:958:1: insn_format21c_method_type : INSTRUCTION_FORMAT21c_METHOD_TYPE REGISTER COMMA method_prototype -> ^( I_STATEMENT_FORMAT21c_METHOD_TYPE[$start, \"I_STATEMENT_FORMAT21c_METHOD_TYPE\"] INSTRUCTION_FORMAT21c_METHOD_TYPE REGISTER method_prototype ) ;
+	public final smaliParser.insn_format21c_method_type_return insn_format21c_method_type() throws RecognitionException {
+		smaliParser.insn_format21c_method_type_return retval = new smaliParser.insn_format21c_method_type_return();
+		retval.start = input.LT(1);
+
+		CommonTree root_0 = null;
+
+		Token INSTRUCTION_FORMAT21c_METHOD_TYPE353=null;
+		Token REGISTER354=null;
+		Token COMMA355=null;
+		ParserRuleReturnScope method_prototype356 =null;
+
+		CommonTree INSTRUCTION_FORMAT21c_METHOD_TYPE353_tree=null;
+		CommonTree REGISTER354_tree=null;
+		CommonTree COMMA355_tree=null;
+		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
+		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
+		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT21c_METHOD_TYPE=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT21c_METHOD_TYPE");
+		RewriteRuleSubtreeStream stream_method_prototype=new RewriteRuleSubtreeStream(adaptor,"rule method_prototype");
+
+		try {
+			// smaliParser.g:959:5: ( INSTRUCTION_FORMAT21c_METHOD_TYPE REGISTER COMMA method_prototype -> ^( I_STATEMENT_FORMAT21c_METHOD_TYPE[$start, \"I_STATEMENT_FORMAT21c_METHOD_TYPE\"] INSTRUCTION_FORMAT21c_METHOD_TYPE REGISTER method_prototype ) )
+			// smaliParser.g:960:5: INSTRUCTION_FORMAT21c_METHOD_TYPE REGISTER COMMA method_prototype
+			{
+			INSTRUCTION_FORMAT21c_METHOD_TYPE353=(Token)match(input,INSTRUCTION_FORMAT21c_METHOD_TYPE,FOLLOW_INSTRUCTION_FORMAT21c_METHOD_TYPE_in_insn_format21c_method_type4743);  
+			stream_INSTRUCTION_FORMAT21c_METHOD_TYPE.add(INSTRUCTION_FORMAT21c_METHOD_TYPE353);
+
+			REGISTER354=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21c_method_type4745);  
+			stream_REGISTER.add(REGISTER354);
+
+			COMMA355=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format21c_method_type4747);  
+			stream_COMMA.add(COMMA355);
+
+			pushFollow(FOLLOW_method_prototype_in_insn_format21c_method_type4749);
+			method_prototype356=method_prototype();
+			state._fsp--;
+
+			stream_method_prototype.add(method_prototype356.getTree());
+			// AST REWRITE
+			// elements: method_prototype, REGISTER, INSTRUCTION_FORMAT21c_METHOD_TYPE
+			// token labels: 
+			// rule labels: retval
+			// token list labels: 
+			// rule list labels: 
+			// wildcard labels: 
+			retval.tree = root_0;
+			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
+
+			root_0 = (CommonTree)adaptor.nil();
+			// 961:5: -> ^( I_STATEMENT_FORMAT21c_METHOD_TYPE[$start, \"I_STATEMENT_FORMAT21c_METHOD_TYPE\"] INSTRUCTION_FORMAT21c_METHOD_TYPE REGISTER method_prototype )
+			{
+				// smaliParser.g:961:8: ^( I_STATEMENT_FORMAT21c_METHOD_TYPE[$start, \"I_STATEMENT_FORMAT21c_METHOD_TYPE\"] INSTRUCTION_FORMAT21c_METHOD_TYPE REGISTER method_prototype )
+				{
+				CommonTree root_1 = (CommonTree)adaptor.nil();
+				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT21c_METHOD_TYPE, (retval.start), "I_STATEMENT_FORMAT21c_METHOD_TYPE"), root_1);
+				adaptor.addChild(root_1, stream_INSTRUCTION_FORMAT21c_METHOD_TYPE.nextNode());
+				adaptor.addChild(root_1, stream_REGISTER.nextNode());
+				adaptor.addChild(root_1, stream_method_prototype.nextTree());
+				adaptor.addChild(root_0, root_1);
+				}
+
+			}
+
+
+			retval.tree = root_0;
+
+			}
+
+			retval.stop = input.LT(-1);
+
+			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+		}
+		catch (RecognitionException re) {
+			reportError(re);
+			recover(input,re);
+			retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+		}
+		finally {
+			// do for sure before leaving
+		}
+		return retval;
+	}
+	// $ANTLR end "insn_format21c_method_type"
+
+
 	public static class insn_format21c_string_return extends ParserRuleReturnScope {
 		CommonTree tree;
 		@Override
@@ -11178,42 +12307,42 @@
 
 
 	// $ANTLR start "insn_format21c_string"
-	// smaliParser.g:912:1: insn_format21c_string : INSTRUCTION_FORMAT21c_STRING REGISTER COMMA STRING_LITERAL -> ^( I_STATEMENT_FORMAT21c_STRING[$start, \"I_STATEMENT_FORMAT21c_STRING\"] INSTRUCTION_FORMAT21c_STRING REGISTER STRING_LITERAL ) ;
+	// smaliParser.g:964:1: insn_format21c_string : INSTRUCTION_FORMAT21c_STRING REGISTER COMMA STRING_LITERAL -> ^( I_STATEMENT_FORMAT21c_STRING[$start, \"I_STATEMENT_FORMAT21c_STRING\"] INSTRUCTION_FORMAT21c_STRING REGISTER STRING_LITERAL ) ;
 	public final smaliParser.insn_format21c_string_return insn_format21c_string() throws RecognitionException {
 		smaliParser.insn_format21c_string_return retval = new smaliParser.insn_format21c_string_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT21c_STRING315=null;
-		Token REGISTER316=null;
-		Token COMMA317=null;
-		Token STRING_LITERAL318=null;
+		Token INSTRUCTION_FORMAT21c_STRING357=null;
+		Token REGISTER358=null;
+		Token COMMA359=null;
+		Token STRING_LITERAL360=null;
 
-		CommonTree INSTRUCTION_FORMAT21c_STRING315_tree=null;
-		CommonTree REGISTER316_tree=null;
-		CommonTree COMMA317_tree=null;
-		CommonTree STRING_LITERAL318_tree=null;
+		CommonTree INSTRUCTION_FORMAT21c_STRING357_tree=null;
+		CommonTree REGISTER358_tree=null;
+		CommonTree COMMA359_tree=null;
+		CommonTree STRING_LITERAL360_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_STRING_LITERAL=new RewriteRuleTokenStream(adaptor,"token STRING_LITERAL");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT21c_STRING=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT21c_STRING");
 
 		try {
-			// smaliParser.g:913:3: ( INSTRUCTION_FORMAT21c_STRING REGISTER COMMA STRING_LITERAL -> ^( I_STATEMENT_FORMAT21c_STRING[$start, \"I_STATEMENT_FORMAT21c_STRING\"] INSTRUCTION_FORMAT21c_STRING REGISTER STRING_LITERAL ) )
-			// smaliParser.g:914:5: INSTRUCTION_FORMAT21c_STRING REGISTER COMMA STRING_LITERAL
+			// smaliParser.g:965:3: ( INSTRUCTION_FORMAT21c_STRING REGISTER COMMA STRING_LITERAL -> ^( I_STATEMENT_FORMAT21c_STRING[$start, \"I_STATEMENT_FORMAT21c_STRING\"] INSTRUCTION_FORMAT21c_STRING REGISTER STRING_LITERAL ) )
+			// smaliParser.g:966:5: INSTRUCTION_FORMAT21c_STRING REGISTER COMMA STRING_LITERAL
 			{
-			INSTRUCTION_FORMAT21c_STRING315=(Token)match(input,INSTRUCTION_FORMAT21c_STRING,FOLLOW_INSTRUCTION_FORMAT21c_STRING_in_insn_format21c_string4376);  
-			stream_INSTRUCTION_FORMAT21c_STRING.add(INSTRUCTION_FORMAT21c_STRING315);
+			INSTRUCTION_FORMAT21c_STRING357=(Token)match(input,INSTRUCTION_FORMAT21c_STRING,FOLLOW_INSTRUCTION_FORMAT21c_STRING_in_insn_format21c_string4793);  
+			stream_INSTRUCTION_FORMAT21c_STRING.add(INSTRUCTION_FORMAT21c_STRING357);
 
-			REGISTER316=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21c_string4378);  
-			stream_REGISTER.add(REGISTER316);
+			REGISTER358=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21c_string4795);  
+			stream_REGISTER.add(REGISTER358);
 
-			COMMA317=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format21c_string4380);  
-			stream_COMMA.add(COMMA317);
+			COMMA359=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format21c_string4797);  
+			stream_COMMA.add(COMMA359);
 
-			STRING_LITERAL318=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_insn_format21c_string4382);  
-			stream_STRING_LITERAL.add(STRING_LITERAL318);
+			STRING_LITERAL360=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_insn_format21c_string4799);  
+			stream_STRING_LITERAL.add(STRING_LITERAL360);
 
 			// AST REWRITE
 			// elements: STRING_LITERAL, REGISTER, INSTRUCTION_FORMAT21c_STRING
@@ -11226,9 +12355,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 915:5: -> ^( I_STATEMENT_FORMAT21c_STRING[$start, \"I_STATEMENT_FORMAT21c_STRING\"] INSTRUCTION_FORMAT21c_STRING REGISTER STRING_LITERAL )
+			// 967:5: -> ^( I_STATEMENT_FORMAT21c_STRING[$start, \"I_STATEMENT_FORMAT21c_STRING\"] INSTRUCTION_FORMAT21c_STRING REGISTER STRING_LITERAL )
 			{
-				// smaliParser.g:915:8: ^( I_STATEMENT_FORMAT21c_STRING[$start, \"I_STATEMENT_FORMAT21c_STRING\"] INSTRUCTION_FORMAT21c_STRING REGISTER STRING_LITERAL )
+				// smaliParser.g:967:8: ^( I_STATEMENT_FORMAT21c_STRING[$start, \"I_STATEMENT_FORMAT21c_STRING\"] INSTRUCTION_FORMAT21c_STRING REGISTER STRING_LITERAL )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT21c_STRING, (retval.start), "I_STATEMENT_FORMAT21c_STRING"), root_1);
@@ -11272,46 +12401,46 @@
 
 
 	// $ANTLR start "insn_format21c_type"
-	// smaliParser.g:917:1: insn_format21c_type : INSTRUCTION_FORMAT21c_TYPE REGISTER COMMA nonvoid_type_descriptor -> ^( I_STATEMENT_FORMAT21c_TYPE[$start, \"I_STATEMENT_FORMAT21c\"] INSTRUCTION_FORMAT21c_TYPE REGISTER nonvoid_type_descriptor ) ;
+	// smaliParser.g:969:1: insn_format21c_type : INSTRUCTION_FORMAT21c_TYPE REGISTER COMMA nonvoid_type_descriptor -> ^( I_STATEMENT_FORMAT21c_TYPE[$start, \"I_STATEMENT_FORMAT21c\"] INSTRUCTION_FORMAT21c_TYPE REGISTER nonvoid_type_descriptor ) ;
 	public final smaliParser.insn_format21c_type_return insn_format21c_type() throws RecognitionException {
 		smaliParser.insn_format21c_type_return retval = new smaliParser.insn_format21c_type_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT21c_TYPE319=null;
-		Token REGISTER320=null;
-		Token COMMA321=null;
-		ParserRuleReturnScope nonvoid_type_descriptor322 =null;
+		Token INSTRUCTION_FORMAT21c_TYPE361=null;
+		Token REGISTER362=null;
+		Token COMMA363=null;
+		ParserRuleReturnScope nonvoid_type_descriptor364 =null;
 
-		CommonTree INSTRUCTION_FORMAT21c_TYPE319_tree=null;
-		CommonTree REGISTER320_tree=null;
-		CommonTree COMMA321_tree=null;
+		CommonTree INSTRUCTION_FORMAT21c_TYPE361_tree=null;
+		CommonTree REGISTER362_tree=null;
+		CommonTree COMMA363_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT21c_TYPE=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT21c_TYPE");
 		RewriteRuleSubtreeStream stream_nonvoid_type_descriptor=new RewriteRuleSubtreeStream(adaptor,"rule nonvoid_type_descriptor");
 
 		try {
-			// smaliParser.g:918:3: ( INSTRUCTION_FORMAT21c_TYPE REGISTER COMMA nonvoid_type_descriptor -> ^( I_STATEMENT_FORMAT21c_TYPE[$start, \"I_STATEMENT_FORMAT21c\"] INSTRUCTION_FORMAT21c_TYPE REGISTER nonvoid_type_descriptor ) )
-			// smaliParser.g:919:5: INSTRUCTION_FORMAT21c_TYPE REGISTER COMMA nonvoid_type_descriptor
+			// smaliParser.g:970:3: ( INSTRUCTION_FORMAT21c_TYPE REGISTER COMMA nonvoid_type_descriptor -> ^( I_STATEMENT_FORMAT21c_TYPE[$start, \"I_STATEMENT_FORMAT21c\"] INSTRUCTION_FORMAT21c_TYPE REGISTER nonvoid_type_descriptor ) )
+			// smaliParser.g:971:5: INSTRUCTION_FORMAT21c_TYPE REGISTER COMMA nonvoid_type_descriptor
 			{
-			INSTRUCTION_FORMAT21c_TYPE319=(Token)match(input,INSTRUCTION_FORMAT21c_TYPE,FOLLOW_INSTRUCTION_FORMAT21c_TYPE_in_insn_format21c_type4414);  
-			stream_INSTRUCTION_FORMAT21c_TYPE.add(INSTRUCTION_FORMAT21c_TYPE319);
+			INSTRUCTION_FORMAT21c_TYPE361=(Token)match(input,INSTRUCTION_FORMAT21c_TYPE,FOLLOW_INSTRUCTION_FORMAT21c_TYPE_in_insn_format21c_type4831);  
+			stream_INSTRUCTION_FORMAT21c_TYPE.add(INSTRUCTION_FORMAT21c_TYPE361);
 
-			REGISTER320=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21c_type4416);  
-			stream_REGISTER.add(REGISTER320);
+			REGISTER362=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21c_type4833);  
+			stream_REGISTER.add(REGISTER362);
 
-			COMMA321=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format21c_type4418);  
-			stream_COMMA.add(COMMA321);
+			COMMA363=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format21c_type4835);  
+			stream_COMMA.add(COMMA363);
 
-			pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format21c_type4420);
-			nonvoid_type_descriptor322=nonvoid_type_descriptor();
+			pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format21c_type4837);
+			nonvoid_type_descriptor364=nonvoid_type_descriptor();
 			state._fsp--;
 
-			stream_nonvoid_type_descriptor.add(nonvoid_type_descriptor322.getTree());
+			stream_nonvoid_type_descriptor.add(nonvoid_type_descriptor364.getTree());
 			// AST REWRITE
-			// elements: REGISTER, INSTRUCTION_FORMAT21c_TYPE, nonvoid_type_descriptor
+			// elements: nonvoid_type_descriptor, REGISTER, INSTRUCTION_FORMAT21c_TYPE
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -11321,9 +12450,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 920:5: -> ^( I_STATEMENT_FORMAT21c_TYPE[$start, \"I_STATEMENT_FORMAT21c\"] INSTRUCTION_FORMAT21c_TYPE REGISTER nonvoid_type_descriptor )
+			// 972:5: -> ^( I_STATEMENT_FORMAT21c_TYPE[$start, \"I_STATEMENT_FORMAT21c\"] INSTRUCTION_FORMAT21c_TYPE REGISTER nonvoid_type_descriptor )
 			{
-				// smaliParser.g:920:8: ^( I_STATEMENT_FORMAT21c_TYPE[$start, \"I_STATEMENT_FORMAT21c\"] INSTRUCTION_FORMAT21c_TYPE REGISTER nonvoid_type_descriptor )
+				// smaliParser.g:972:8: ^( I_STATEMENT_FORMAT21c_TYPE[$start, \"I_STATEMENT_FORMAT21c\"] INSTRUCTION_FORMAT21c_TYPE REGISTER nonvoid_type_descriptor )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT21c_TYPE, (retval.start), "I_STATEMENT_FORMAT21c"), root_1);
@@ -11367,46 +12496,46 @@
 
 
 	// $ANTLR start "insn_format21ih"
-	// smaliParser.g:922:1: insn_format21ih : INSTRUCTION_FORMAT21ih REGISTER COMMA fixed_32bit_literal -> ^( I_STATEMENT_FORMAT21ih[$start, \"I_STATEMENT_FORMAT21ih\"] INSTRUCTION_FORMAT21ih REGISTER fixed_32bit_literal ) ;
+	// smaliParser.g:974:1: insn_format21ih : INSTRUCTION_FORMAT21ih REGISTER COMMA fixed_32bit_literal -> ^( I_STATEMENT_FORMAT21ih[$start, \"I_STATEMENT_FORMAT21ih\"] INSTRUCTION_FORMAT21ih REGISTER fixed_32bit_literal ) ;
 	public final smaliParser.insn_format21ih_return insn_format21ih() throws RecognitionException {
 		smaliParser.insn_format21ih_return retval = new smaliParser.insn_format21ih_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT21ih323=null;
-		Token REGISTER324=null;
-		Token COMMA325=null;
-		ParserRuleReturnScope fixed_32bit_literal326 =null;
+		Token INSTRUCTION_FORMAT21ih365=null;
+		Token REGISTER366=null;
+		Token COMMA367=null;
+		ParserRuleReturnScope fixed_32bit_literal368 =null;
 
-		CommonTree INSTRUCTION_FORMAT21ih323_tree=null;
-		CommonTree REGISTER324_tree=null;
-		CommonTree COMMA325_tree=null;
+		CommonTree INSTRUCTION_FORMAT21ih365_tree=null;
+		CommonTree REGISTER366_tree=null;
+		CommonTree COMMA367_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT21ih=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT21ih");
 		RewriteRuleSubtreeStream stream_fixed_32bit_literal=new RewriteRuleSubtreeStream(adaptor,"rule fixed_32bit_literal");
 
 		try {
-			// smaliParser.g:923:3: ( INSTRUCTION_FORMAT21ih REGISTER COMMA fixed_32bit_literal -> ^( I_STATEMENT_FORMAT21ih[$start, \"I_STATEMENT_FORMAT21ih\"] INSTRUCTION_FORMAT21ih REGISTER fixed_32bit_literal ) )
-			// smaliParser.g:924:5: INSTRUCTION_FORMAT21ih REGISTER COMMA fixed_32bit_literal
+			// smaliParser.g:975:3: ( INSTRUCTION_FORMAT21ih REGISTER COMMA fixed_32bit_literal -> ^( I_STATEMENT_FORMAT21ih[$start, \"I_STATEMENT_FORMAT21ih\"] INSTRUCTION_FORMAT21ih REGISTER fixed_32bit_literal ) )
+			// smaliParser.g:976:5: INSTRUCTION_FORMAT21ih REGISTER COMMA fixed_32bit_literal
 			{
-			INSTRUCTION_FORMAT21ih323=(Token)match(input,INSTRUCTION_FORMAT21ih,FOLLOW_INSTRUCTION_FORMAT21ih_in_insn_format21ih4452);  
-			stream_INSTRUCTION_FORMAT21ih.add(INSTRUCTION_FORMAT21ih323);
+			INSTRUCTION_FORMAT21ih365=(Token)match(input,INSTRUCTION_FORMAT21ih,FOLLOW_INSTRUCTION_FORMAT21ih_in_insn_format21ih4869);  
+			stream_INSTRUCTION_FORMAT21ih.add(INSTRUCTION_FORMAT21ih365);
 
-			REGISTER324=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21ih4454);  
-			stream_REGISTER.add(REGISTER324);
+			REGISTER366=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21ih4871);  
+			stream_REGISTER.add(REGISTER366);
 
-			COMMA325=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format21ih4456);  
-			stream_COMMA.add(COMMA325);
+			COMMA367=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format21ih4873);  
+			stream_COMMA.add(COMMA367);
 
-			pushFollow(FOLLOW_fixed_32bit_literal_in_insn_format21ih4458);
-			fixed_32bit_literal326=fixed_32bit_literal();
+			pushFollow(FOLLOW_fixed_32bit_literal_in_insn_format21ih4875);
+			fixed_32bit_literal368=fixed_32bit_literal();
 			state._fsp--;
 
-			stream_fixed_32bit_literal.add(fixed_32bit_literal326.getTree());
+			stream_fixed_32bit_literal.add(fixed_32bit_literal368.getTree());
 			// AST REWRITE
-			// elements: REGISTER, INSTRUCTION_FORMAT21ih, fixed_32bit_literal
+			// elements: REGISTER, fixed_32bit_literal, INSTRUCTION_FORMAT21ih
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -11416,9 +12545,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 925:5: -> ^( I_STATEMENT_FORMAT21ih[$start, \"I_STATEMENT_FORMAT21ih\"] INSTRUCTION_FORMAT21ih REGISTER fixed_32bit_literal )
+			// 977:5: -> ^( I_STATEMENT_FORMAT21ih[$start, \"I_STATEMENT_FORMAT21ih\"] INSTRUCTION_FORMAT21ih REGISTER fixed_32bit_literal )
 			{
-				// smaliParser.g:925:8: ^( I_STATEMENT_FORMAT21ih[$start, \"I_STATEMENT_FORMAT21ih\"] INSTRUCTION_FORMAT21ih REGISTER fixed_32bit_literal )
+				// smaliParser.g:977:8: ^( I_STATEMENT_FORMAT21ih[$start, \"I_STATEMENT_FORMAT21ih\"] INSTRUCTION_FORMAT21ih REGISTER fixed_32bit_literal )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT21ih, (retval.start), "I_STATEMENT_FORMAT21ih"), root_1);
@@ -11462,44 +12591,44 @@
 
 
 	// $ANTLR start "insn_format21lh"
-	// smaliParser.g:927:1: insn_format21lh : INSTRUCTION_FORMAT21lh REGISTER COMMA fixed_32bit_literal -> ^( I_STATEMENT_FORMAT21lh[$start, \"I_STATEMENT_FORMAT21lh\"] INSTRUCTION_FORMAT21lh REGISTER fixed_32bit_literal ) ;
+	// smaliParser.g:979:1: insn_format21lh : INSTRUCTION_FORMAT21lh REGISTER COMMA fixed_32bit_literal -> ^( I_STATEMENT_FORMAT21lh[$start, \"I_STATEMENT_FORMAT21lh\"] INSTRUCTION_FORMAT21lh REGISTER fixed_32bit_literal ) ;
 	public final smaliParser.insn_format21lh_return insn_format21lh() throws RecognitionException {
 		smaliParser.insn_format21lh_return retval = new smaliParser.insn_format21lh_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT21lh327=null;
-		Token REGISTER328=null;
-		Token COMMA329=null;
-		ParserRuleReturnScope fixed_32bit_literal330 =null;
+		Token INSTRUCTION_FORMAT21lh369=null;
+		Token REGISTER370=null;
+		Token COMMA371=null;
+		ParserRuleReturnScope fixed_32bit_literal372 =null;
 
-		CommonTree INSTRUCTION_FORMAT21lh327_tree=null;
-		CommonTree REGISTER328_tree=null;
-		CommonTree COMMA329_tree=null;
+		CommonTree INSTRUCTION_FORMAT21lh369_tree=null;
+		CommonTree REGISTER370_tree=null;
+		CommonTree COMMA371_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT21lh=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT21lh");
 		RewriteRuleSubtreeStream stream_fixed_32bit_literal=new RewriteRuleSubtreeStream(adaptor,"rule fixed_32bit_literal");
 
 		try {
-			// smaliParser.g:928:3: ( INSTRUCTION_FORMAT21lh REGISTER COMMA fixed_32bit_literal -> ^( I_STATEMENT_FORMAT21lh[$start, \"I_STATEMENT_FORMAT21lh\"] INSTRUCTION_FORMAT21lh REGISTER fixed_32bit_literal ) )
-			// smaliParser.g:929:5: INSTRUCTION_FORMAT21lh REGISTER COMMA fixed_32bit_literal
+			// smaliParser.g:980:3: ( INSTRUCTION_FORMAT21lh REGISTER COMMA fixed_32bit_literal -> ^( I_STATEMENT_FORMAT21lh[$start, \"I_STATEMENT_FORMAT21lh\"] INSTRUCTION_FORMAT21lh REGISTER fixed_32bit_literal ) )
+			// smaliParser.g:981:5: INSTRUCTION_FORMAT21lh REGISTER COMMA fixed_32bit_literal
 			{
-			INSTRUCTION_FORMAT21lh327=(Token)match(input,INSTRUCTION_FORMAT21lh,FOLLOW_INSTRUCTION_FORMAT21lh_in_insn_format21lh4490);  
-			stream_INSTRUCTION_FORMAT21lh.add(INSTRUCTION_FORMAT21lh327);
+			INSTRUCTION_FORMAT21lh369=(Token)match(input,INSTRUCTION_FORMAT21lh,FOLLOW_INSTRUCTION_FORMAT21lh_in_insn_format21lh4907);  
+			stream_INSTRUCTION_FORMAT21lh.add(INSTRUCTION_FORMAT21lh369);
 
-			REGISTER328=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21lh4492);  
-			stream_REGISTER.add(REGISTER328);
+			REGISTER370=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21lh4909);  
+			stream_REGISTER.add(REGISTER370);
 
-			COMMA329=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format21lh4494);  
-			stream_COMMA.add(COMMA329);
+			COMMA371=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format21lh4911);  
+			stream_COMMA.add(COMMA371);
 
-			pushFollow(FOLLOW_fixed_32bit_literal_in_insn_format21lh4496);
-			fixed_32bit_literal330=fixed_32bit_literal();
+			pushFollow(FOLLOW_fixed_32bit_literal_in_insn_format21lh4913);
+			fixed_32bit_literal372=fixed_32bit_literal();
 			state._fsp--;
 
-			stream_fixed_32bit_literal.add(fixed_32bit_literal330.getTree());
+			stream_fixed_32bit_literal.add(fixed_32bit_literal372.getTree());
 			// AST REWRITE
 			// elements: INSTRUCTION_FORMAT21lh, fixed_32bit_literal, REGISTER
 			// token labels: 
@@ -11511,9 +12640,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 930:5: -> ^( I_STATEMENT_FORMAT21lh[$start, \"I_STATEMENT_FORMAT21lh\"] INSTRUCTION_FORMAT21lh REGISTER fixed_32bit_literal )
+			// 982:5: -> ^( I_STATEMENT_FORMAT21lh[$start, \"I_STATEMENT_FORMAT21lh\"] INSTRUCTION_FORMAT21lh REGISTER fixed_32bit_literal )
 			{
-				// smaliParser.g:930:8: ^( I_STATEMENT_FORMAT21lh[$start, \"I_STATEMENT_FORMAT21lh\"] INSTRUCTION_FORMAT21lh REGISTER fixed_32bit_literal )
+				// smaliParser.g:982:8: ^( I_STATEMENT_FORMAT21lh[$start, \"I_STATEMENT_FORMAT21lh\"] INSTRUCTION_FORMAT21lh REGISTER fixed_32bit_literal )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT21lh, (retval.start), "I_STATEMENT_FORMAT21lh"), root_1);
@@ -11557,46 +12686,46 @@
 
 
 	// $ANTLR start "insn_format21s"
-	// smaliParser.g:932:1: insn_format21s : INSTRUCTION_FORMAT21s REGISTER COMMA integral_literal -> ^( I_STATEMENT_FORMAT21s[$start, \"I_STATEMENT_FORMAT21s\"] INSTRUCTION_FORMAT21s REGISTER integral_literal ) ;
+	// smaliParser.g:984:1: insn_format21s : INSTRUCTION_FORMAT21s REGISTER COMMA integral_literal -> ^( I_STATEMENT_FORMAT21s[$start, \"I_STATEMENT_FORMAT21s\"] INSTRUCTION_FORMAT21s REGISTER integral_literal ) ;
 	public final smaliParser.insn_format21s_return insn_format21s() throws RecognitionException {
 		smaliParser.insn_format21s_return retval = new smaliParser.insn_format21s_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT21s331=null;
-		Token REGISTER332=null;
-		Token COMMA333=null;
-		ParserRuleReturnScope integral_literal334 =null;
+		Token INSTRUCTION_FORMAT21s373=null;
+		Token REGISTER374=null;
+		Token COMMA375=null;
+		ParserRuleReturnScope integral_literal376 =null;
 
-		CommonTree INSTRUCTION_FORMAT21s331_tree=null;
-		CommonTree REGISTER332_tree=null;
-		CommonTree COMMA333_tree=null;
+		CommonTree INSTRUCTION_FORMAT21s373_tree=null;
+		CommonTree REGISTER374_tree=null;
+		CommonTree COMMA375_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT21s=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT21s");
 		RewriteRuleSubtreeStream stream_integral_literal=new RewriteRuleSubtreeStream(adaptor,"rule integral_literal");
 
 		try {
-			// smaliParser.g:933:3: ( INSTRUCTION_FORMAT21s REGISTER COMMA integral_literal -> ^( I_STATEMENT_FORMAT21s[$start, \"I_STATEMENT_FORMAT21s\"] INSTRUCTION_FORMAT21s REGISTER integral_literal ) )
-			// smaliParser.g:934:5: INSTRUCTION_FORMAT21s REGISTER COMMA integral_literal
+			// smaliParser.g:985:3: ( INSTRUCTION_FORMAT21s REGISTER COMMA integral_literal -> ^( I_STATEMENT_FORMAT21s[$start, \"I_STATEMENT_FORMAT21s\"] INSTRUCTION_FORMAT21s REGISTER integral_literal ) )
+			// smaliParser.g:986:5: INSTRUCTION_FORMAT21s REGISTER COMMA integral_literal
 			{
-			INSTRUCTION_FORMAT21s331=(Token)match(input,INSTRUCTION_FORMAT21s,FOLLOW_INSTRUCTION_FORMAT21s_in_insn_format21s4528);  
-			stream_INSTRUCTION_FORMAT21s.add(INSTRUCTION_FORMAT21s331);
+			INSTRUCTION_FORMAT21s373=(Token)match(input,INSTRUCTION_FORMAT21s,FOLLOW_INSTRUCTION_FORMAT21s_in_insn_format21s4945);  
+			stream_INSTRUCTION_FORMAT21s.add(INSTRUCTION_FORMAT21s373);
 
-			REGISTER332=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21s4530);  
-			stream_REGISTER.add(REGISTER332);
+			REGISTER374=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21s4947);  
+			stream_REGISTER.add(REGISTER374);
 
-			COMMA333=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format21s4532);  
-			stream_COMMA.add(COMMA333);
+			COMMA375=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format21s4949);  
+			stream_COMMA.add(COMMA375);
 
-			pushFollow(FOLLOW_integral_literal_in_insn_format21s4534);
-			integral_literal334=integral_literal();
+			pushFollow(FOLLOW_integral_literal_in_insn_format21s4951);
+			integral_literal376=integral_literal();
 			state._fsp--;
 
-			stream_integral_literal.add(integral_literal334.getTree());
+			stream_integral_literal.add(integral_literal376.getTree());
 			// AST REWRITE
-			// elements: integral_literal, REGISTER, INSTRUCTION_FORMAT21s
+			// elements: INSTRUCTION_FORMAT21s, REGISTER, integral_literal
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -11606,9 +12735,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 935:5: -> ^( I_STATEMENT_FORMAT21s[$start, \"I_STATEMENT_FORMAT21s\"] INSTRUCTION_FORMAT21s REGISTER integral_literal )
+			// 987:5: -> ^( I_STATEMENT_FORMAT21s[$start, \"I_STATEMENT_FORMAT21s\"] INSTRUCTION_FORMAT21s REGISTER integral_literal )
 			{
-				// smaliParser.g:935:8: ^( I_STATEMENT_FORMAT21s[$start, \"I_STATEMENT_FORMAT21s\"] INSTRUCTION_FORMAT21s REGISTER integral_literal )
+				// smaliParser.g:987:8: ^( I_STATEMENT_FORMAT21s[$start, \"I_STATEMENT_FORMAT21s\"] INSTRUCTION_FORMAT21s REGISTER integral_literal )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT21s, (retval.start), "I_STATEMENT_FORMAT21s"), root_1);
@@ -11652,46 +12781,46 @@
 
 
 	// $ANTLR start "insn_format21t"
-	// smaliParser.g:937:1: insn_format21t : INSTRUCTION_FORMAT21t REGISTER COMMA label_ref -> ^( I_STATEMENT_FORMAT21t[$start, \"I_STATEMENT_FORMAT21t\"] INSTRUCTION_FORMAT21t REGISTER label_ref ) ;
+	// smaliParser.g:989:1: insn_format21t : INSTRUCTION_FORMAT21t REGISTER COMMA label_ref -> ^( I_STATEMENT_FORMAT21t[$start, \"I_STATEMENT_FORMAT21t\"] INSTRUCTION_FORMAT21t REGISTER label_ref ) ;
 	public final smaliParser.insn_format21t_return insn_format21t() throws RecognitionException {
 		smaliParser.insn_format21t_return retval = new smaliParser.insn_format21t_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT21t335=null;
-		Token REGISTER336=null;
-		Token COMMA337=null;
-		ParserRuleReturnScope label_ref338 =null;
+		Token INSTRUCTION_FORMAT21t377=null;
+		Token REGISTER378=null;
+		Token COMMA379=null;
+		ParserRuleReturnScope label_ref380 =null;
 
-		CommonTree INSTRUCTION_FORMAT21t335_tree=null;
-		CommonTree REGISTER336_tree=null;
-		CommonTree COMMA337_tree=null;
+		CommonTree INSTRUCTION_FORMAT21t377_tree=null;
+		CommonTree REGISTER378_tree=null;
+		CommonTree COMMA379_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT21t=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT21t");
 		RewriteRuleSubtreeStream stream_label_ref=new RewriteRuleSubtreeStream(adaptor,"rule label_ref");
 
 		try {
-			// smaliParser.g:938:3: ( INSTRUCTION_FORMAT21t REGISTER COMMA label_ref -> ^( I_STATEMENT_FORMAT21t[$start, \"I_STATEMENT_FORMAT21t\"] INSTRUCTION_FORMAT21t REGISTER label_ref ) )
-			// smaliParser.g:939:5: INSTRUCTION_FORMAT21t REGISTER COMMA label_ref
+			// smaliParser.g:990:3: ( INSTRUCTION_FORMAT21t REGISTER COMMA label_ref -> ^( I_STATEMENT_FORMAT21t[$start, \"I_STATEMENT_FORMAT21t\"] INSTRUCTION_FORMAT21t REGISTER label_ref ) )
+			// smaliParser.g:991:5: INSTRUCTION_FORMAT21t REGISTER COMMA label_ref
 			{
-			INSTRUCTION_FORMAT21t335=(Token)match(input,INSTRUCTION_FORMAT21t,FOLLOW_INSTRUCTION_FORMAT21t_in_insn_format21t4566);  
-			stream_INSTRUCTION_FORMAT21t.add(INSTRUCTION_FORMAT21t335);
+			INSTRUCTION_FORMAT21t377=(Token)match(input,INSTRUCTION_FORMAT21t,FOLLOW_INSTRUCTION_FORMAT21t_in_insn_format21t4983);  
+			stream_INSTRUCTION_FORMAT21t.add(INSTRUCTION_FORMAT21t377);
 
-			REGISTER336=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21t4568);  
-			stream_REGISTER.add(REGISTER336);
+			REGISTER378=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21t4985);  
+			stream_REGISTER.add(REGISTER378);
 
-			COMMA337=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format21t4570);  
-			stream_COMMA.add(COMMA337);
+			COMMA379=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format21t4987);  
+			stream_COMMA.add(COMMA379);
 
-			pushFollow(FOLLOW_label_ref_in_insn_format21t4572);
-			label_ref338=label_ref();
+			pushFollow(FOLLOW_label_ref_in_insn_format21t4989);
+			label_ref380=label_ref();
 			state._fsp--;
 
-			stream_label_ref.add(label_ref338.getTree());
+			stream_label_ref.add(label_ref380.getTree());
 			// AST REWRITE
-			// elements: INSTRUCTION_FORMAT21t, label_ref, REGISTER
+			// elements: REGISTER, INSTRUCTION_FORMAT21t, label_ref
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -11701,9 +12830,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 940:5: -> ^( I_STATEMENT_FORMAT21t[$start, \"I_STATEMENT_FORMAT21t\"] INSTRUCTION_FORMAT21t REGISTER label_ref )
+			// 992:5: -> ^( I_STATEMENT_FORMAT21t[$start, \"I_STATEMENT_FORMAT21t\"] INSTRUCTION_FORMAT21t REGISTER label_ref )
 			{
-				// smaliParser.g:940:8: ^( I_STATEMENT_FORMAT21t[$start, \"I_STATEMENT_FORMAT21t\"] INSTRUCTION_FORMAT21t REGISTER label_ref )
+				// smaliParser.g:992:8: ^( I_STATEMENT_FORMAT21t[$start, \"I_STATEMENT_FORMAT21t\"] INSTRUCTION_FORMAT21t REGISTER label_ref )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT21t, (retval.start), "I_STATEMENT_FORMAT21t"), root_1);
@@ -11747,56 +12876,56 @@
 
 
 	// $ANTLR start "insn_format22b"
-	// smaliParser.g:942:1: insn_format22b : INSTRUCTION_FORMAT22b REGISTER COMMA REGISTER COMMA integral_literal -> ^( I_STATEMENT_FORMAT22b[$start, \"I_STATEMENT_FORMAT22b\"] INSTRUCTION_FORMAT22b REGISTER REGISTER integral_literal ) ;
+	// smaliParser.g:994:1: insn_format22b : INSTRUCTION_FORMAT22b REGISTER COMMA REGISTER COMMA integral_literal -> ^( I_STATEMENT_FORMAT22b[$start, \"I_STATEMENT_FORMAT22b\"] INSTRUCTION_FORMAT22b REGISTER REGISTER integral_literal ) ;
 	public final smaliParser.insn_format22b_return insn_format22b() throws RecognitionException {
 		smaliParser.insn_format22b_return retval = new smaliParser.insn_format22b_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT22b339=null;
-		Token REGISTER340=null;
-		Token COMMA341=null;
-		Token REGISTER342=null;
-		Token COMMA343=null;
-		ParserRuleReturnScope integral_literal344 =null;
+		Token INSTRUCTION_FORMAT22b381=null;
+		Token REGISTER382=null;
+		Token COMMA383=null;
+		Token REGISTER384=null;
+		Token COMMA385=null;
+		ParserRuleReturnScope integral_literal386 =null;
 
-		CommonTree INSTRUCTION_FORMAT22b339_tree=null;
-		CommonTree REGISTER340_tree=null;
-		CommonTree COMMA341_tree=null;
-		CommonTree REGISTER342_tree=null;
-		CommonTree COMMA343_tree=null;
+		CommonTree INSTRUCTION_FORMAT22b381_tree=null;
+		CommonTree REGISTER382_tree=null;
+		CommonTree COMMA383_tree=null;
+		CommonTree REGISTER384_tree=null;
+		CommonTree COMMA385_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT22b=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT22b");
 		RewriteRuleSubtreeStream stream_integral_literal=new RewriteRuleSubtreeStream(adaptor,"rule integral_literal");
 
 		try {
-			// smaliParser.g:943:3: ( INSTRUCTION_FORMAT22b REGISTER COMMA REGISTER COMMA integral_literal -> ^( I_STATEMENT_FORMAT22b[$start, \"I_STATEMENT_FORMAT22b\"] INSTRUCTION_FORMAT22b REGISTER REGISTER integral_literal ) )
-			// smaliParser.g:944:5: INSTRUCTION_FORMAT22b REGISTER COMMA REGISTER COMMA integral_literal
+			// smaliParser.g:995:3: ( INSTRUCTION_FORMAT22b REGISTER COMMA REGISTER COMMA integral_literal -> ^( I_STATEMENT_FORMAT22b[$start, \"I_STATEMENT_FORMAT22b\"] INSTRUCTION_FORMAT22b REGISTER REGISTER integral_literal ) )
+			// smaliParser.g:996:5: INSTRUCTION_FORMAT22b REGISTER COMMA REGISTER COMMA integral_literal
 			{
-			INSTRUCTION_FORMAT22b339=(Token)match(input,INSTRUCTION_FORMAT22b,FOLLOW_INSTRUCTION_FORMAT22b_in_insn_format22b4604);  
-			stream_INSTRUCTION_FORMAT22b.add(INSTRUCTION_FORMAT22b339);
+			INSTRUCTION_FORMAT22b381=(Token)match(input,INSTRUCTION_FORMAT22b,FOLLOW_INSTRUCTION_FORMAT22b_in_insn_format22b5021);  
+			stream_INSTRUCTION_FORMAT22b.add(INSTRUCTION_FORMAT22b381);
 
-			REGISTER340=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22b4606);  
-			stream_REGISTER.add(REGISTER340);
+			REGISTER382=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22b5023);  
+			stream_REGISTER.add(REGISTER382);
 
-			COMMA341=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22b4608);  
-			stream_COMMA.add(COMMA341);
+			COMMA383=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22b5025);  
+			stream_COMMA.add(COMMA383);
 
-			REGISTER342=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22b4610);  
-			stream_REGISTER.add(REGISTER342);
+			REGISTER384=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22b5027);  
+			stream_REGISTER.add(REGISTER384);
 
-			COMMA343=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22b4612);  
-			stream_COMMA.add(COMMA343);
+			COMMA385=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22b5029);  
+			stream_COMMA.add(COMMA385);
 
-			pushFollow(FOLLOW_integral_literal_in_insn_format22b4614);
-			integral_literal344=integral_literal();
+			pushFollow(FOLLOW_integral_literal_in_insn_format22b5031);
+			integral_literal386=integral_literal();
 			state._fsp--;
 
-			stream_integral_literal.add(integral_literal344.getTree());
+			stream_integral_literal.add(integral_literal386.getTree());
 			// AST REWRITE
-			// elements: REGISTER, REGISTER, integral_literal, INSTRUCTION_FORMAT22b
+			// elements: REGISTER, INSTRUCTION_FORMAT22b, REGISTER, integral_literal
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -11806,9 +12935,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 945:5: -> ^( I_STATEMENT_FORMAT22b[$start, \"I_STATEMENT_FORMAT22b\"] INSTRUCTION_FORMAT22b REGISTER REGISTER integral_literal )
+			// 997:5: -> ^( I_STATEMENT_FORMAT22b[$start, \"I_STATEMENT_FORMAT22b\"] INSTRUCTION_FORMAT22b REGISTER REGISTER integral_literal )
 			{
-				// smaliParser.g:945:8: ^( I_STATEMENT_FORMAT22b[$start, \"I_STATEMENT_FORMAT22b\"] INSTRUCTION_FORMAT22b REGISTER REGISTER integral_literal )
+				// smaliParser.g:997:8: ^( I_STATEMENT_FORMAT22b[$start, \"I_STATEMENT_FORMAT22b\"] INSTRUCTION_FORMAT22b REGISTER REGISTER integral_literal )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT22b, (retval.start), "I_STATEMENT_FORMAT22b"), root_1);
@@ -11853,54 +12982,54 @@
 
 
 	// $ANTLR start "insn_format22c_field"
-	// smaliParser.g:947:1: insn_format22c_field : INSTRUCTION_FORMAT22c_FIELD REGISTER COMMA REGISTER COMMA field_reference -> ^( I_STATEMENT_FORMAT22c_FIELD[$start, \"I_STATEMENT_FORMAT22c_FIELD\"] INSTRUCTION_FORMAT22c_FIELD REGISTER REGISTER field_reference ) ;
+	// smaliParser.g:999:1: insn_format22c_field : INSTRUCTION_FORMAT22c_FIELD REGISTER COMMA REGISTER COMMA field_reference -> ^( I_STATEMENT_FORMAT22c_FIELD[$start, \"I_STATEMENT_FORMAT22c_FIELD\"] INSTRUCTION_FORMAT22c_FIELD REGISTER REGISTER field_reference ) ;
 	public final smaliParser.insn_format22c_field_return insn_format22c_field() throws RecognitionException {
 		smaliParser.insn_format22c_field_return retval = new smaliParser.insn_format22c_field_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT22c_FIELD345=null;
-		Token REGISTER346=null;
-		Token COMMA347=null;
-		Token REGISTER348=null;
-		Token COMMA349=null;
-		ParserRuleReturnScope field_reference350 =null;
+		Token INSTRUCTION_FORMAT22c_FIELD387=null;
+		Token REGISTER388=null;
+		Token COMMA389=null;
+		Token REGISTER390=null;
+		Token COMMA391=null;
+		ParserRuleReturnScope field_reference392 =null;
 
-		CommonTree INSTRUCTION_FORMAT22c_FIELD345_tree=null;
-		CommonTree REGISTER346_tree=null;
-		CommonTree COMMA347_tree=null;
-		CommonTree REGISTER348_tree=null;
-		CommonTree COMMA349_tree=null;
+		CommonTree INSTRUCTION_FORMAT22c_FIELD387_tree=null;
+		CommonTree REGISTER388_tree=null;
+		CommonTree COMMA389_tree=null;
+		CommonTree REGISTER390_tree=null;
+		CommonTree COMMA391_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT22c_FIELD=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT22c_FIELD");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleSubtreeStream stream_field_reference=new RewriteRuleSubtreeStream(adaptor,"rule field_reference");
 
 		try {
-			// smaliParser.g:948:3: ( INSTRUCTION_FORMAT22c_FIELD REGISTER COMMA REGISTER COMMA field_reference -> ^( I_STATEMENT_FORMAT22c_FIELD[$start, \"I_STATEMENT_FORMAT22c_FIELD\"] INSTRUCTION_FORMAT22c_FIELD REGISTER REGISTER field_reference ) )
-			// smaliParser.g:949:5: INSTRUCTION_FORMAT22c_FIELD REGISTER COMMA REGISTER COMMA field_reference
+			// smaliParser.g:1000:3: ( INSTRUCTION_FORMAT22c_FIELD REGISTER COMMA REGISTER COMMA field_reference -> ^( I_STATEMENT_FORMAT22c_FIELD[$start, \"I_STATEMENT_FORMAT22c_FIELD\"] INSTRUCTION_FORMAT22c_FIELD REGISTER REGISTER field_reference ) )
+			// smaliParser.g:1001:5: INSTRUCTION_FORMAT22c_FIELD REGISTER COMMA REGISTER COMMA field_reference
 			{
-			INSTRUCTION_FORMAT22c_FIELD345=(Token)match(input,INSTRUCTION_FORMAT22c_FIELD,FOLLOW_INSTRUCTION_FORMAT22c_FIELD_in_insn_format22c_field4648);  
-			stream_INSTRUCTION_FORMAT22c_FIELD.add(INSTRUCTION_FORMAT22c_FIELD345);
+			INSTRUCTION_FORMAT22c_FIELD387=(Token)match(input,INSTRUCTION_FORMAT22c_FIELD,FOLLOW_INSTRUCTION_FORMAT22c_FIELD_in_insn_format22c_field5065);  
+			stream_INSTRUCTION_FORMAT22c_FIELD.add(INSTRUCTION_FORMAT22c_FIELD387);
 
-			REGISTER346=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_field4650);  
-			stream_REGISTER.add(REGISTER346);
+			REGISTER388=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_field5067);  
+			stream_REGISTER.add(REGISTER388);
 
-			COMMA347=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22c_field4652);  
-			stream_COMMA.add(COMMA347);
+			COMMA389=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22c_field5069);  
+			stream_COMMA.add(COMMA389);
 
-			REGISTER348=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_field4654);  
-			stream_REGISTER.add(REGISTER348);
+			REGISTER390=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_field5071);  
+			stream_REGISTER.add(REGISTER390);
 
-			COMMA349=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22c_field4656);  
-			stream_COMMA.add(COMMA349);
+			COMMA391=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22c_field5073);  
+			stream_COMMA.add(COMMA391);
 
-			pushFollow(FOLLOW_field_reference_in_insn_format22c_field4658);
-			field_reference350=field_reference();
+			pushFollow(FOLLOW_field_reference_in_insn_format22c_field5075);
+			field_reference392=field_reference();
 			state._fsp--;
 
-			stream_field_reference.add(field_reference350.getTree());
+			stream_field_reference.add(field_reference392.getTree());
 			// AST REWRITE
 			// elements: INSTRUCTION_FORMAT22c_FIELD, REGISTER, field_reference, REGISTER
 			// token labels: 
@@ -11912,9 +13041,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 950:5: -> ^( I_STATEMENT_FORMAT22c_FIELD[$start, \"I_STATEMENT_FORMAT22c_FIELD\"] INSTRUCTION_FORMAT22c_FIELD REGISTER REGISTER field_reference )
+			// 1002:5: -> ^( I_STATEMENT_FORMAT22c_FIELD[$start, \"I_STATEMENT_FORMAT22c_FIELD\"] INSTRUCTION_FORMAT22c_FIELD REGISTER REGISTER field_reference )
 			{
-				// smaliParser.g:950:8: ^( I_STATEMENT_FORMAT22c_FIELD[$start, \"I_STATEMENT_FORMAT22c_FIELD\"] INSTRUCTION_FORMAT22c_FIELD REGISTER REGISTER field_reference )
+				// smaliParser.g:1002:8: ^( I_STATEMENT_FORMAT22c_FIELD[$start, \"I_STATEMENT_FORMAT22c_FIELD\"] INSTRUCTION_FORMAT22c_FIELD REGISTER REGISTER field_reference )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT22c_FIELD, (retval.start), "I_STATEMENT_FORMAT22c_FIELD"), root_1);
@@ -11959,61 +13088,61 @@
 
 
 	// $ANTLR start "insn_format22c_field_odex"
-	// smaliParser.g:952:1: insn_format22c_field_odex : INSTRUCTION_FORMAT22c_FIELD_ODEX REGISTER COMMA REGISTER COMMA field_reference -> ^( I_STATEMENT_FORMAT22c_FIELD[$start, \"I_STATEMENT_FORMAT22c_FIELD\"] INSTRUCTION_FORMAT22c_FIELD_ODEX REGISTER REGISTER field_reference ) ;
+	// smaliParser.g:1004:1: insn_format22c_field_odex : INSTRUCTION_FORMAT22c_FIELD_ODEX REGISTER COMMA REGISTER COMMA field_reference -> ^( I_STATEMENT_FORMAT22c_FIELD[$start, \"I_STATEMENT_FORMAT22c_FIELD\"] INSTRUCTION_FORMAT22c_FIELD_ODEX REGISTER REGISTER field_reference ) ;
 	public final smaliParser.insn_format22c_field_odex_return insn_format22c_field_odex() throws RecognitionException {
 		smaliParser.insn_format22c_field_odex_return retval = new smaliParser.insn_format22c_field_odex_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT22c_FIELD_ODEX351=null;
-		Token REGISTER352=null;
-		Token COMMA353=null;
-		Token REGISTER354=null;
-		Token COMMA355=null;
-		ParserRuleReturnScope field_reference356 =null;
+		Token INSTRUCTION_FORMAT22c_FIELD_ODEX393=null;
+		Token REGISTER394=null;
+		Token COMMA395=null;
+		Token REGISTER396=null;
+		Token COMMA397=null;
+		ParserRuleReturnScope field_reference398 =null;
 
-		CommonTree INSTRUCTION_FORMAT22c_FIELD_ODEX351_tree=null;
-		CommonTree REGISTER352_tree=null;
-		CommonTree COMMA353_tree=null;
-		CommonTree REGISTER354_tree=null;
-		CommonTree COMMA355_tree=null;
+		CommonTree INSTRUCTION_FORMAT22c_FIELD_ODEX393_tree=null;
+		CommonTree REGISTER394_tree=null;
+		CommonTree COMMA395_tree=null;
+		CommonTree REGISTER396_tree=null;
+		CommonTree COMMA397_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT22c_FIELD_ODEX=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT22c_FIELD_ODEX");
 		RewriteRuleSubtreeStream stream_field_reference=new RewriteRuleSubtreeStream(adaptor,"rule field_reference");
 
 		try {
-			// smaliParser.g:953:3: ( INSTRUCTION_FORMAT22c_FIELD_ODEX REGISTER COMMA REGISTER COMMA field_reference -> ^( I_STATEMENT_FORMAT22c_FIELD[$start, \"I_STATEMENT_FORMAT22c_FIELD\"] INSTRUCTION_FORMAT22c_FIELD_ODEX REGISTER REGISTER field_reference ) )
-			// smaliParser.g:954:5: INSTRUCTION_FORMAT22c_FIELD_ODEX REGISTER COMMA REGISTER COMMA field_reference
+			// smaliParser.g:1005:3: ( INSTRUCTION_FORMAT22c_FIELD_ODEX REGISTER COMMA REGISTER COMMA field_reference -> ^( I_STATEMENT_FORMAT22c_FIELD[$start, \"I_STATEMENT_FORMAT22c_FIELD\"] INSTRUCTION_FORMAT22c_FIELD_ODEX REGISTER REGISTER field_reference ) )
+			// smaliParser.g:1006:5: INSTRUCTION_FORMAT22c_FIELD_ODEX REGISTER COMMA REGISTER COMMA field_reference
 			{
-			INSTRUCTION_FORMAT22c_FIELD_ODEX351=(Token)match(input,INSTRUCTION_FORMAT22c_FIELD_ODEX,FOLLOW_INSTRUCTION_FORMAT22c_FIELD_ODEX_in_insn_format22c_field_odex4692);  
-			stream_INSTRUCTION_FORMAT22c_FIELD_ODEX.add(INSTRUCTION_FORMAT22c_FIELD_ODEX351);
+			INSTRUCTION_FORMAT22c_FIELD_ODEX393=(Token)match(input,INSTRUCTION_FORMAT22c_FIELD_ODEX,FOLLOW_INSTRUCTION_FORMAT22c_FIELD_ODEX_in_insn_format22c_field_odex5109);  
+			stream_INSTRUCTION_FORMAT22c_FIELD_ODEX.add(INSTRUCTION_FORMAT22c_FIELD_ODEX393);
 
-			REGISTER352=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_field_odex4694);  
-			stream_REGISTER.add(REGISTER352);
+			REGISTER394=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_field_odex5111);  
+			stream_REGISTER.add(REGISTER394);
 
-			COMMA353=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22c_field_odex4696);  
-			stream_COMMA.add(COMMA353);
+			COMMA395=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22c_field_odex5113);  
+			stream_COMMA.add(COMMA395);
 
-			REGISTER354=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_field_odex4698);  
-			stream_REGISTER.add(REGISTER354);
+			REGISTER396=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_field_odex5115);  
+			stream_REGISTER.add(REGISTER396);
 
-			COMMA355=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22c_field_odex4700);  
-			stream_COMMA.add(COMMA355);
+			COMMA397=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22c_field_odex5117);  
+			stream_COMMA.add(COMMA397);
 
-			pushFollow(FOLLOW_field_reference_in_insn_format22c_field_odex4702);
-			field_reference356=field_reference();
+			pushFollow(FOLLOW_field_reference_in_insn_format22c_field_odex5119);
+			field_reference398=field_reference();
 			state._fsp--;
 
-			stream_field_reference.add(field_reference356.getTree());
+			stream_field_reference.add(field_reference398.getTree());
 
-			      if (!allowOdex || opcodes.getOpcodeByName((INSTRUCTION_FORMAT22c_FIELD_ODEX351!=null?INSTRUCTION_FORMAT22c_FIELD_ODEX351.getText():null)) == null || apiLevel >= 14) {
-			        throwOdexedInstructionException(input, (INSTRUCTION_FORMAT22c_FIELD_ODEX351!=null?INSTRUCTION_FORMAT22c_FIELD_ODEX351.getText():null));
+			      if (!allowOdex || opcodes.getOpcodeByName((INSTRUCTION_FORMAT22c_FIELD_ODEX393!=null?INSTRUCTION_FORMAT22c_FIELD_ODEX393.getText():null)) == null || apiLevel >= 14) {
+			        throwOdexedInstructionException(input, (INSTRUCTION_FORMAT22c_FIELD_ODEX393!=null?INSTRUCTION_FORMAT22c_FIELD_ODEX393.getText():null));
 			      }
 			    
 			// AST REWRITE
-			// elements: INSTRUCTION_FORMAT22c_FIELD_ODEX, field_reference, REGISTER, REGISTER
+			// elements: INSTRUCTION_FORMAT22c_FIELD_ODEX, REGISTER, field_reference, REGISTER
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -12023,9 +13152,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 960:5: -> ^( I_STATEMENT_FORMAT22c_FIELD[$start, \"I_STATEMENT_FORMAT22c_FIELD\"] INSTRUCTION_FORMAT22c_FIELD_ODEX REGISTER REGISTER field_reference )
+			// 1012:5: -> ^( I_STATEMENT_FORMAT22c_FIELD[$start, \"I_STATEMENT_FORMAT22c_FIELD\"] INSTRUCTION_FORMAT22c_FIELD_ODEX REGISTER REGISTER field_reference )
 			{
-				// smaliParser.g:960:8: ^( I_STATEMENT_FORMAT22c_FIELD[$start, \"I_STATEMENT_FORMAT22c_FIELD\"] INSTRUCTION_FORMAT22c_FIELD_ODEX REGISTER REGISTER field_reference )
+				// smaliParser.g:1012:8: ^( I_STATEMENT_FORMAT22c_FIELD[$start, \"I_STATEMENT_FORMAT22c_FIELD\"] INSTRUCTION_FORMAT22c_FIELD_ODEX REGISTER REGISTER field_reference )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT22c_FIELD, (retval.start), "I_STATEMENT_FORMAT22c_FIELD"), root_1);
@@ -12070,54 +13199,54 @@
 
 
 	// $ANTLR start "insn_format22c_type"
-	// smaliParser.g:962:1: insn_format22c_type : INSTRUCTION_FORMAT22c_TYPE REGISTER COMMA REGISTER COMMA nonvoid_type_descriptor -> ^( I_STATEMENT_FORMAT22c_TYPE[$start, \"I_STATEMENT_FORMAT22c_TYPE\"] INSTRUCTION_FORMAT22c_TYPE REGISTER REGISTER nonvoid_type_descriptor ) ;
+	// smaliParser.g:1014:1: insn_format22c_type : INSTRUCTION_FORMAT22c_TYPE REGISTER COMMA REGISTER COMMA nonvoid_type_descriptor -> ^( I_STATEMENT_FORMAT22c_TYPE[$start, \"I_STATEMENT_FORMAT22c_TYPE\"] INSTRUCTION_FORMAT22c_TYPE REGISTER REGISTER nonvoid_type_descriptor ) ;
 	public final smaliParser.insn_format22c_type_return insn_format22c_type() throws RecognitionException {
 		smaliParser.insn_format22c_type_return retval = new smaliParser.insn_format22c_type_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT22c_TYPE357=null;
-		Token REGISTER358=null;
-		Token COMMA359=null;
-		Token REGISTER360=null;
-		Token COMMA361=null;
-		ParserRuleReturnScope nonvoid_type_descriptor362 =null;
+		Token INSTRUCTION_FORMAT22c_TYPE399=null;
+		Token REGISTER400=null;
+		Token COMMA401=null;
+		Token REGISTER402=null;
+		Token COMMA403=null;
+		ParserRuleReturnScope nonvoid_type_descriptor404 =null;
 
-		CommonTree INSTRUCTION_FORMAT22c_TYPE357_tree=null;
-		CommonTree REGISTER358_tree=null;
-		CommonTree COMMA359_tree=null;
-		CommonTree REGISTER360_tree=null;
-		CommonTree COMMA361_tree=null;
+		CommonTree INSTRUCTION_FORMAT22c_TYPE399_tree=null;
+		CommonTree REGISTER400_tree=null;
+		CommonTree COMMA401_tree=null;
+		CommonTree REGISTER402_tree=null;
+		CommonTree COMMA403_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT22c_TYPE=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT22c_TYPE");
 		RewriteRuleSubtreeStream stream_nonvoid_type_descriptor=new RewriteRuleSubtreeStream(adaptor,"rule nonvoid_type_descriptor");
 
 		try {
-			// smaliParser.g:963:3: ( INSTRUCTION_FORMAT22c_TYPE REGISTER COMMA REGISTER COMMA nonvoid_type_descriptor -> ^( I_STATEMENT_FORMAT22c_TYPE[$start, \"I_STATEMENT_FORMAT22c_TYPE\"] INSTRUCTION_FORMAT22c_TYPE REGISTER REGISTER nonvoid_type_descriptor ) )
-			// smaliParser.g:964:5: INSTRUCTION_FORMAT22c_TYPE REGISTER COMMA REGISTER COMMA nonvoid_type_descriptor
+			// smaliParser.g:1015:3: ( INSTRUCTION_FORMAT22c_TYPE REGISTER COMMA REGISTER COMMA nonvoid_type_descriptor -> ^( I_STATEMENT_FORMAT22c_TYPE[$start, \"I_STATEMENT_FORMAT22c_TYPE\"] INSTRUCTION_FORMAT22c_TYPE REGISTER REGISTER nonvoid_type_descriptor ) )
+			// smaliParser.g:1016:5: INSTRUCTION_FORMAT22c_TYPE REGISTER COMMA REGISTER COMMA nonvoid_type_descriptor
 			{
-			INSTRUCTION_FORMAT22c_TYPE357=(Token)match(input,INSTRUCTION_FORMAT22c_TYPE,FOLLOW_INSTRUCTION_FORMAT22c_TYPE_in_insn_format22c_type4742);  
-			stream_INSTRUCTION_FORMAT22c_TYPE.add(INSTRUCTION_FORMAT22c_TYPE357);
+			INSTRUCTION_FORMAT22c_TYPE399=(Token)match(input,INSTRUCTION_FORMAT22c_TYPE,FOLLOW_INSTRUCTION_FORMAT22c_TYPE_in_insn_format22c_type5159);  
+			stream_INSTRUCTION_FORMAT22c_TYPE.add(INSTRUCTION_FORMAT22c_TYPE399);
 
-			REGISTER358=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_type4744);  
-			stream_REGISTER.add(REGISTER358);
+			REGISTER400=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_type5161);  
+			stream_REGISTER.add(REGISTER400);
 
-			COMMA359=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22c_type4746);  
-			stream_COMMA.add(COMMA359);
+			COMMA401=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22c_type5163);  
+			stream_COMMA.add(COMMA401);
 
-			REGISTER360=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_type4748);  
-			stream_REGISTER.add(REGISTER360);
+			REGISTER402=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_type5165);  
+			stream_REGISTER.add(REGISTER402);
 
-			COMMA361=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22c_type4750);  
-			stream_COMMA.add(COMMA361);
+			COMMA403=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22c_type5167);  
+			stream_COMMA.add(COMMA403);
 
-			pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format22c_type4752);
-			nonvoid_type_descriptor362=nonvoid_type_descriptor();
+			pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format22c_type5169);
+			nonvoid_type_descriptor404=nonvoid_type_descriptor();
 			state._fsp--;
 
-			stream_nonvoid_type_descriptor.add(nonvoid_type_descriptor362.getTree());
+			stream_nonvoid_type_descriptor.add(nonvoid_type_descriptor404.getTree());
 			// AST REWRITE
 			// elements: REGISTER, REGISTER, nonvoid_type_descriptor, INSTRUCTION_FORMAT22c_TYPE
 			// token labels: 
@@ -12129,9 +13258,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 965:5: -> ^( I_STATEMENT_FORMAT22c_TYPE[$start, \"I_STATEMENT_FORMAT22c_TYPE\"] INSTRUCTION_FORMAT22c_TYPE REGISTER REGISTER nonvoid_type_descriptor )
+			// 1017:5: -> ^( I_STATEMENT_FORMAT22c_TYPE[$start, \"I_STATEMENT_FORMAT22c_TYPE\"] INSTRUCTION_FORMAT22c_TYPE REGISTER REGISTER nonvoid_type_descriptor )
 			{
-				// smaliParser.g:965:8: ^( I_STATEMENT_FORMAT22c_TYPE[$start, \"I_STATEMENT_FORMAT22c_TYPE\"] INSTRUCTION_FORMAT22c_TYPE REGISTER REGISTER nonvoid_type_descriptor )
+				// smaliParser.g:1017:8: ^( I_STATEMENT_FORMAT22c_TYPE[$start, \"I_STATEMENT_FORMAT22c_TYPE\"] INSTRUCTION_FORMAT22c_TYPE REGISTER REGISTER nonvoid_type_descriptor )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT22c_TYPE, (retval.start), "I_STATEMENT_FORMAT22c_TYPE"), root_1);
@@ -12176,60 +13305,60 @@
 
 
 	// $ANTLR start "insn_format22cs_field"
-	// smaliParser.g:967:1: insn_format22cs_field : INSTRUCTION_FORMAT22cs_FIELD REGISTER COMMA REGISTER COMMA FIELD_OFFSET ;
+	// smaliParser.g:1019:1: insn_format22cs_field : INSTRUCTION_FORMAT22cs_FIELD REGISTER COMMA REGISTER COMMA FIELD_OFFSET ;
 	public final smaliParser.insn_format22cs_field_return insn_format22cs_field() throws RecognitionException {
 		smaliParser.insn_format22cs_field_return retval = new smaliParser.insn_format22cs_field_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT22cs_FIELD363=null;
-		Token REGISTER364=null;
-		Token COMMA365=null;
-		Token REGISTER366=null;
-		Token COMMA367=null;
-		Token FIELD_OFFSET368=null;
+		Token INSTRUCTION_FORMAT22cs_FIELD405=null;
+		Token REGISTER406=null;
+		Token COMMA407=null;
+		Token REGISTER408=null;
+		Token COMMA409=null;
+		Token FIELD_OFFSET410=null;
 
-		CommonTree INSTRUCTION_FORMAT22cs_FIELD363_tree=null;
-		CommonTree REGISTER364_tree=null;
-		CommonTree COMMA365_tree=null;
-		CommonTree REGISTER366_tree=null;
-		CommonTree COMMA367_tree=null;
-		CommonTree FIELD_OFFSET368_tree=null;
+		CommonTree INSTRUCTION_FORMAT22cs_FIELD405_tree=null;
+		CommonTree REGISTER406_tree=null;
+		CommonTree COMMA407_tree=null;
+		CommonTree REGISTER408_tree=null;
+		CommonTree COMMA409_tree=null;
+		CommonTree FIELD_OFFSET410_tree=null;
 
 		try {
-			// smaliParser.g:968:3: ( INSTRUCTION_FORMAT22cs_FIELD REGISTER COMMA REGISTER COMMA FIELD_OFFSET )
-			// smaliParser.g:969:5: INSTRUCTION_FORMAT22cs_FIELD REGISTER COMMA REGISTER COMMA FIELD_OFFSET
+			// smaliParser.g:1020:3: ( INSTRUCTION_FORMAT22cs_FIELD REGISTER COMMA REGISTER COMMA FIELD_OFFSET )
+			// smaliParser.g:1021:5: INSTRUCTION_FORMAT22cs_FIELD REGISTER COMMA REGISTER COMMA FIELD_OFFSET
 			{
 			root_0 = (CommonTree)adaptor.nil();
 
 
-			INSTRUCTION_FORMAT22cs_FIELD363=(Token)match(input,INSTRUCTION_FORMAT22cs_FIELD,FOLLOW_INSTRUCTION_FORMAT22cs_FIELD_in_insn_format22cs_field4786); 
-			INSTRUCTION_FORMAT22cs_FIELD363_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT22cs_FIELD363);
-			adaptor.addChild(root_0, INSTRUCTION_FORMAT22cs_FIELD363_tree);
+			INSTRUCTION_FORMAT22cs_FIELD405=(Token)match(input,INSTRUCTION_FORMAT22cs_FIELD,FOLLOW_INSTRUCTION_FORMAT22cs_FIELD_in_insn_format22cs_field5203); 
+			INSTRUCTION_FORMAT22cs_FIELD405_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT22cs_FIELD405);
+			adaptor.addChild(root_0, INSTRUCTION_FORMAT22cs_FIELD405_tree);
 
-			REGISTER364=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22cs_field4788); 
-			REGISTER364_tree = (CommonTree)adaptor.create(REGISTER364);
-			adaptor.addChild(root_0, REGISTER364_tree);
+			REGISTER406=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22cs_field5205); 
+			REGISTER406_tree = (CommonTree)adaptor.create(REGISTER406);
+			adaptor.addChild(root_0, REGISTER406_tree);
 
-			COMMA365=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22cs_field4790); 
-			COMMA365_tree = (CommonTree)adaptor.create(COMMA365);
-			adaptor.addChild(root_0, COMMA365_tree);
+			COMMA407=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22cs_field5207); 
+			COMMA407_tree = (CommonTree)adaptor.create(COMMA407);
+			adaptor.addChild(root_0, COMMA407_tree);
 
-			REGISTER366=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22cs_field4792); 
-			REGISTER366_tree = (CommonTree)adaptor.create(REGISTER366);
-			adaptor.addChild(root_0, REGISTER366_tree);
+			REGISTER408=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22cs_field5209); 
+			REGISTER408_tree = (CommonTree)adaptor.create(REGISTER408);
+			adaptor.addChild(root_0, REGISTER408_tree);
 
-			COMMA367=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22cs_field4794); 
-			COMMA367_tree = (CommonTree)adaptor.create(COMMA367);
-			adaptor.addChild(root_0, COMMA367_tree);
+			COMMA409=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22cs_field5211); 
+			COMMA409_tree = (CommonTree)adaptor.create(COMMA409);
+			adaptor.addChild(root_0, COMMA409_tree);
 
-			FIELD_OFFSET368=(Token)match(input,FIELD_OFFSET,FOLLOW_FIELD_OFFSET_in_insn_format22cs_field4796); 
-			FIELD_OFFSET368_tree = (CommonTree)adaptor.create(FIELD_OFFSET368);
-			adaptor.addChild(root_0, FIELD_OFFSET368_tree);
+			FIELD_OFFSET410=(Token)match(input,FIELD_OFFSET,FOLLOW_FIELD_OFFSET_in_insn_format22cs_field5213); 
+			FIELD_OFFSET410_tree = (CommonTree)adaptor.create(FIELD_OFFSET410);
+			adaptor.addChild(root_0, FIELD_OFFSET410_tree);
 
 
-			      throwOdexedInstructionException(input, (INSTRUCTION_FORMAT22cs_FIELD363!=null?INSTRUCTION_FORMAT22cs_FIELD363.getText():null));
+			      throwOdexedInstructionException(input, (INSTRUCTION_FORMAT22cs_FIELD405!=null?INSTRUCTION_FORMAT22cs_FIELD405.getText():null));
 			    
 			}
 
@@ -12260,57 +13389,57 @@
 
 
 	// $ANTLR start "insn_format22s"
-	// smaliParser.g:974:1: insn_format22s : instruction_format22s REGISTER COMMA REGISTER COMMA integral_literal -> ^( I_STATEMENT_FORMAT22s[$start, \"I_STATEMENT_FORMAT22s\"] instruction_format22s REGISTER REGISTER integral_literal ) ;
+	// smaliParser.g:1026:1: insn_format22s : instruction_format22s REGISTER COMMA REGISTER COMMA integral_literal -> ^( I_STATEMENT_FORMAT22s[$start, \"I_STATEMENT_FORMAT22s\"] instruction_format22s REGISTER REGISTER integral_literal ) ;
 	public final smaliParser.insn_format22s_return insn_format22s() throws RecognitionException {
 		smaliParser.insn_format22s_return retval = new smaliParser.insn_format22s_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token REGISTER370=null;
-		Token COMMA371=null;
-		Token REGISTER372=null;
-		Token COMMA373=null;
-		ParserRuleReturnScope instruction_format22s369 =null;
-		ParserRuleReturnScope integral_literal374 =null;
+		Token REGISTER412=null;
+		Token COMMA413=null;
+		Token REGISTER414=null;
+		Token COMMA415=null;
+		ParserRuleReturnScope instruction_format22s411 =null;
+		ParserRuleReturnScope integral_literal416 =null;
 
-		CommonTree REGISTER370_tree=null;
-		CommonTree COMMA371_tree=null;
-		CommonTree REGISTER372_tree=null;
-		CommonTree COMMA373_tree=null;
+		CommonTree REGISTER412_tree=null;
+		CommonTree COMMA413_tree=null;
+		CommonTree REGISTER414_tree=null;
+		CommonTree COMMA415_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleSubtreeStream stream_instruction_format22s=new RewriteRuleSubtreeStream(adaptor,"rule instruction_format22s");
 		RewriteRuleSubtreeStream stream_integral_literal=new RewriteRuleSubtreeStream(adaptor,"rule integral_literal");
 
 		try {
-			// smaliParser.g:975:3: ( instruction_format22s REGISTER COMMA REGISTER COMMA integral_literal -> ^( I_STATEMENT_FORMAT22s[$start, \"I_STATEMENT_FORMAT22s\"] instruction_format22s REGISTER REGISTER integral_literal ) )
-			// smaliParser.g:976:5: instruction_format22s REGISTER COMMA REGISTER COMMA integral_literal
+			// smaliParser.g:1027:3: ( instruction_format22s REGISTER COMMA REGISTER COMMA integral_literal -> ^( I_STATEMENT_FORMAT22s[$start, \"I_STATEMENT_FORMAT22s\"] instruction_format22s REGISTER REGISTER integral_literal ) )
+			// smaliParser.g:1028:5: instruction_format22s REGISTER COMMA REGISTER COMMA integral_literal
 			{
-			pushFollow(FOLLOW_instruction_format22s_in_insn_format22s4817);
-			instruction_format22s369=instruction_format22s();
+			pushFollow(FOLLOW_instruction_format22s_in_insn_format22s5234);
+			instruction_format22s411=instruction_format22s();
 			state._fsp--;
 
-			stream_instruction_format22s.add(instruction_format22s369.getTree());
-			REGISTER370=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22s4819);  
-			stream_REGISTER.add(REGISTER370);
+			stream_instruction_format22s.add(instruction_format22s411.getTree());
+			REGISTER412=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22s5236);  
+			stream_REGISTER.add(REGISTER412);
 
-			COMMA371=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22s4821);  
-			stream_COMMA.add(COMMA371);
+			COMMA413=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22s5238);  
+			stream_COMMA.add(COMMA413);
 
-			REGISTER372=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22s4823);  
-			stream_REGISTER.add(REGISTER372);
+			REGISTER414=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22s5240);  
+			stream_REGISTER.add(REGISTER414);
 
-			COMMA373=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22s4825);  
-			stream_COMMA.add(COMMA373);
+			COMMA415=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22s5242);  
+			stream_COMMA.add(COMMA415);
 
-			pushFollow(FOLLOW_integral_literal_in_insn_format22s4827);
-			integral_literal374=integral_literal();
+			pushFollow(FOLLOW_integral_literal_in_insn_format22s5244);
+			integral_literal416=integral_literal();
 			state._fsp--;
 
-			stream_integral_literal.add(integral_literal374.getTree());
+			stream_integral_literal.add(integral_literal416.getTree());
 			// AST REWRITE
-			// elements: REGISTER, REGISTER, instruction_format22s, integral_literal
+			// elements: instruction_format22s, REGISTER, REGISTER, integral_literal
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -12320,9 +13449,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 977:5: -> ^( I_STATEMENT_FORMAT22s[$start, \"I_STATEMENT_FORMAT22s\"] instruction_format22s REGISTER REGISTER integral_literal )
+			// 1029:5: -> ^( I_STATEMENT_FORMAT22s[$start, \"I_STATEMENT_FORMAT22s\"] instruction_format22s REGISTER REGISTER integral_literal )
 			{
-				// smaliParser.g:977:8: ^( I_STATEMENT_FORMAT22s[$start, \"I_STATEMENT_FORMAT22s\"] instruction_format22s REGISTER REGISTER integral_literal )
+				// smaliParser.g:1029:8: ^( I_STATEMENT_FORMAT22s[$start, \"I_STATEMENT_FORMAT22s\"] instruction_format22s REGISTER REGISTER integral_literal )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT22s, (retval.start), "I_STATEMENT_FORMAT22s"), root_1);
@@ -12367,56 +13496,56 @@
 
 
 	// $ANTLR start "insn_format22t"
-	// smaliParser.g:979:1: insn_format22t : INSTRUCTION_FORMAT22t REGISTER COMMA REGISTER COMMA label_ref -> ^( I_STATEMENT_FORMAT22t[$start, \"I_STATEMENT_FFORMAT22t\"] INSTRUCTION_FORMAT22t REGISTER REGISTER label_ref ) ;
+	// smaliParser.g:1031:1: insn_format22t : INSTRUCTION_FORMAT22t REGISTER COMMA REGISTER COMMA label_ref -> ^( I_STATEMENT_FORMAT22t[$start, \"I_STATEMENT_FFORMAT22t\"] INSTRUCTION_FORMAT22t REGISTER REGISTER label_ref ) ;
 	public final smaliParser.insn_format22t_return insn_format22t() throws RecognitionException {
 		smaliParser.insn_format22t_return retval = new smaliParser.insn_format22t_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT22t375=null;
-		Token REGISTER376=null;
-		Token COMMA377=null;
-		Token REGISTER378=null;
-		Token COMMA379=null;
-		ParserRuleReturnScope label_ref380 =null;
+		Token INSTRUCTION_FORMAT22t417=null;
+		Token REGISTER418=null;
+		Token COMMA419=null;
+		Token REGISTER420=null;
+		Token COMMA421=null;
+		ParserRuleReturnScope label_ref422 =null;
 
-		CommonTree INSTRUCTION_FORMAT22t375_tree=null;
-		CommonTree REGISTER376_tree=null;
-		CommonTree COMMA377_tree=null;
-		CommonTree REGISTER378_tree=null;
-		CommonTree COMMA379_tree=null;
+		CommonTree INSTRUCTION_FORMAT22t417_tree=null;
+		CommonTree REGISTER418_tree=null;
+		CommonTree COMMA419_tree=null;
+		CommonTree REGISTER420_tree=null;
+		CommonTree COMMA421_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT22t=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT22t");
 		RewriteRuleSubtreeStream stream_label_ref=new RewriteRuleSubtreeStream(adaptor,"rule label_ref");
 
 		try {
-			// smaliParser.g:980:3: ( INSTRUCTION_FORMAT22t REGISTER COMMA REGISTER COMMA label_ref -> ^( I_STATEMENT_FORMAT22t[$start, \"I_STATEMENT_FFORMAT22t\"] INSTRUCTION_FORMAT22t REGISTER REGISTER label_ref ) )
-			// smaliParser.g:981:5: INSTRUCTION_FORMAT22t REGISTER COMMA REGISTER COMMA label_ref
+			// smaliParser.g:1032:3: ( INSTRUCTION_FORMAT22t REGISTER COMMA REGISTER COMMA label_ref -> ^( I_STATEMENT_FORMAT22t[$start, \"I_STATEMENT_FFORMAT22t\"] INSTRUCTION_FORMAT22t REGISTER REGISTER label_ref ) )
+			// smaliParser.g:1033:5: INSTRUCTION_FORMAT22t REGISTER COMMA REGISTER COMMA label_ref
 			{
-			INSTRUCTION_FORMAT22t375=(Token)match(input,INSTRUCTION_FORMAT22t,FOLLOW_INSTRUCTION_FORMAT22t_in_insn_format22t4861);  
-			stream_INSTRUCTION_FORMAT22t.add(INSTRUCTION_FORMAT22t375);
+			INSTRUCTION_FORMAT22t417=(Token)match(input,INSTRUCTION_FORMAT22t,FOLLOW_INSTRUCTION_FORMAT22t_in_insn_format22t5278);  
+			stream_INSTRUCTION_FORMAT22t.add(INSTRUCTION_FORMAT22t417);
 
-			REGISTER376=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22t4863);  
-			stream_REGISTER.add(REGISTER376);
+			REGISTER418=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22t5280);  
+			stream_REGISTER.add(REGISTER418);
 
-			COMMA377=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22t4865);  
-			stream_COMMA.add(COMMA377);
+			COMMA419=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22t5282);  
+			stream_COMMA.add(COMMA419);
 
-			REGISTER378=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22t4867);  
-			stream_REGISTER.add(REGISTER378);
+			REGISTER420=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22t5284);  
+			stream_REGISTER.add(REGISTER420);
 
-			COMMA379=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22t4869);  
-			stream_COMMA.add(COMMA379);
+			COMMA421=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22t5286);  
+			stream_COMMA.add(COMMA421);
 
-			pushFollow(FOLLOW_label_ref_in_insn_format22t4871);
-			label_ref380=label_ref();
+			pushFollow(FOLLOW_label_ref_in_insn_format22t5288);
+			label_ref422=label_ref();
 			state._fsp--;
 
-			stream_label_ref.add(label_ref380.getTree());
+			stream_label_ref.add(label_ref422.getTree());
 			// AST REWRITE
-			// elements: REGISTER, INSTRUCTION_FORMAT22t, REGISTER, label_ref
+			// elements: REGISTER, label_ref, REGISTER, INSTRUCTION_FORMAT22t
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -12426,9 +13555,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 982:5: -> ^( I_STATEMENT_FORMAT22t[$start, \"I_STATEMENT_FFORMAT22t\"] INSTRUCTION_FORMAT22t REGISTER REGISTER label_ref )
+			// 1034:5: -> ^( I_STATEMENT_FORMAT22t[$start, \"I_STATEMENT_FFORMAT22t\"] INSTRUCTION_FORMAT22t REGISTER REGISTER label_ref )
 			{
-				// smaliParser.g:982:8: ^( I_STATEMENT_FORMAT22t[$start, \"I_STATEMENT_FFORMAT22t\"] INSTRUCTION_FORMAT22t REGISTER REGISTER label_ref )
+				// smaliParser.g:1034:8: ^( I_STATEMENT_FORMAT22t[$start, \"I_STATEMENT_FFORMAT22t\"] INSTRUCTION_FORMAT22t REGISTER REGISTER label_ref )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT22t, (retval.start), "I_STATEMENT_FFORMAT22t"), root_1);
@@ -12473,44 +13602,44 @@
 
 
 	// $ANTLR start "insn_format22x"
-	// smaliParser.g:984:1: insn_format22x : INSTRUCTION_FORMAT22x REGISTER COMMA REGISTER -> ^( I_STATEMENT_FORMAT22x[$start, \"I_STATEMENT_FORMAT22x\"] INSTRUCTION_FORMAT22x REGISTER REGISTER ) ;
+	// smaliParser.g:1036:1: insn_format22x : INSTRUCTION_FORMAT22x REGISTER COMMA REGISTER -> ^( I_STATEMENT_FORMAT22x[$start, \"I_STATEMENT_FORMAT22x\"] INSTRUCTION_FORMAT22x REGISTER REGISTER ) ;
 	public final smaliParser.insn_format22x_return insn_format22x() throws RecognitionException {
 		smaliParser.insn_format22x_return retval = new smaliParser.insn_format22x_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT22x381=null;
-		Token REGISTER382=null;
-		Token COMMA383=null;
-		Token REGISTER384=null;
+		Token INSTRUCTION_FORMAT22x423=null;
+		Token REGISTER424=null;
+		Token COMMA425=null;
+		Token REGISTER426=null;
 
-		CommonTree INSTRUCTION_FORMAT22x381_tree=null;
-		CommonTree REGISTER382_tree=null;
-		CommonTree COMMA383_tree=null;
-		CommonTree REGISTER384_tree=null;
+		CommonTree INSTRUCTION_FORMAT22x423_tree=null;
+		CommonTree REGISTER424_tree=null;
+		CommonTree COMMA425_tree=null;
+		CommonTree REGISTER426_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT22x=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT22x");
 
 		try {
-			// smaliParser.g:985:3: ( INSTRUCTION_FORMAT22x REGISTER COMMA REGISTER -> ^( I_STATEMENT_FORMAT22x[$start, \"I_STATEMENT_FORMAT22x\"] INSTRUCTION_FORMAT22x REGISTER REGISTER ) )
-			// smaliParser.g:986:5: INSTRUCTION_FORMAT22x REGISTER COMMA REGISTER
+			// smaliParser.g:1037:3: ( INSTRUCTION_FORMAT22x REGISTER COMMA REGISTER -> ^( I_STATEMENT_FORMAT22x[$start, \"I_STATEMENT_FORMAT22x\"] INSTRUCTION_FORMAT22x REGISTER REGISTER ) )
+			// smaliParser.g:1038:5: INSTRUCTION_FORMAT22x REGISTER COMMA REGISTER
 			{
-			INSTRUCTION_FORMAT22x381=(Token)match(input,INSTRUCTION_FORMAT22x,FOLLOW_INSTRUCTION_FORMAT22x_in_insn_format22x4905);  
-			stream_INSTRUCTION_FORMAT22x.add(INSTRUCTION_FORMAT22x381);
+			INSTRUCTION_FORMAT22x423=(Token)match(input,INSTRUCTION_FORMAT22x,FOLLOW_INSTRUCTION_FORMAT22x_in_insn_format22x5322);  
+			stream_INSTRUCTION_FORMAT22x.add(INSTRUCTION_FORMAT22x423);
 
-			REGISTER382=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22x4907);  
-			stream_REGISTER.add(REGISTER382);
+			REGISTER424=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22x5324);  
+			stream_REGISTER.add(REGISTER424);
 
-			COMMA383=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22x4909);  
-			stream_COMMA.add(COMMA383);
+			COMMA425=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format22x5326);  
+			stream_COMMA.add(COMMA425);
 
-			REGISTER384=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22x4911);  
-			stream_REGISTER.add(REGISTER384);
+			REGISTER426=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22x5328);  
+			stream_REGISTER.add(REGISTER426);
 
 			// AST REWRITE
-			// elements: REGISTER, REGISTER, INSTRUCTION_FORMAT22x
+			// elements: REGISTER, INSTRUCTION_FORMAT22x, REGISTER
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -12520,9 +13649,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 987:5: -> ^( I_STATEMENT_FORMAT22x[$start, \"I_STATEMENT_FORMAT22x\"] INSTRUCTION_FORMAT22x REGISTER REGISTER )
+			// 1039:5: -> ^( I_STATEMENT_FORMAT22x[$start, \"I_STATEMENT_FORMAT22x\"] INSTRUCTION_FORMAT22x REGISTER REGISTER )
 			{
-				// smaliParser.g:987:8: ^( I_STATEMENT_FORMAT22x[$start, \"I_STATEMENT_FORMAT22x\"] INSTRUCTION_FORMAT22x REGISTER REGISTER )
+				// smaliParser.g:1039:8: ^( I_STATEMENT_FORMAT22x[$start, \"I_STATEMENT_FORMAT22x\"] INSTRUCTION_FORMAT22x REGISTER REGISTER )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT22x, (retval.start), "I_STATEMENT_FORMAT22x"), root_1);
@@ -12566,51 +13695,51 @@
 
 
 	// $ANTLR start "insn_format23x"
-	// smaliParser.g:989:1: insn_format23x : INSTRUCTION_FORMAT23x REGISTER COMMA REGISTER COMMA REGISTER -> ^( I_STATEMENT_FORMAT23x[$start, \"I_STATEMENT_FORMAT23x\"] INSTRUCTION_FORMAT23x REGISTER REGISTER REGISTER ) ;
+	// smaliParser.g:1041:1: insn_format23x : INSTRUCTION_FORMAT23x REGISTER COMMA REGISTER COMMA REGISTER -> ^( I_STATEMENT_FORMAT23x[$start, \"I_STATEMENT_FORMAT23x\"] INSTRUCTION_FORMAT23x REGISTER REGISTER REGISTER ) ;
 	public final smaliParser.insn_format23x_return insn_format23x() throws RecognitionException {
 		smaliParser.insn_format23x_return retval = new smaliParser.insn_format23x_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT23x385=null;
-		Token REGISTER386=null;
-		Token COMMA387=null;
-		Token REGISTER388=null;
-		Token COMMA389=null;
-		Token REGISTER390=null;
+		Token INSTRUCTION_FORMAT23x427=null;
+		Token REGISTER428=null;
+		Token COMMA429=null;
+		Token REGISTER430=null;
+		Token COMMA431=null;
+		Token REGISTER432=null;
 
-		CommonTree INSTRUCTION_FORMAT23x385_tree=null;
-		CommonTree REGISTER386_tree=null;
-		CommonTree COMMA387_tree=null;
-		CommonTree REGISTER388_tree=null;
-		CommonTree COMMA389_tree=null;
-		CommonTree REGISTER390_tree=null;
+		CommonTree INSTRUCTION_FORMAT23x427_tree=null;
+		CommonTree REGISTER428_tree=null;
+		CommonTree COMMA429_tree=null;
+		CommonTree REGISTER430_tree=null;
+		CommonTree COMMA431_tree=null;
+		CommonTree REGISTER432_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT23x=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT23x");
 
 		try {
-			// smaliParser.g:990:3: ( INSTRUCTION_FORMAT23x REGISTER COMMA REGISTER COMMA REGISTER -> ^( I_STATEMENT_FORMAT23x[$start, \"I_STATEMENT_FORMAT23x\"] INSTRUCTION_FORMAT23x REGISTER REGISTER REGISTER ) )
-			// smaliParser.g:991:5: INSTRUCTION_FORMAT23x REGISTER COMMA REGISTER COMMA REGISTER
+			// smaliParser.g:1042:3: ( INSTRUCTION_FORMAT23x REGISTER COMMA REGISTER COMMA REGISTER -> ^( I_STATEMENT_FORMAT23x[$start, \"I_STATEMENT_FORMAT23x\"] INSTRUCTION_FORMAT23x REGISTER REGISTER REGISTER ) )
+			// smaliParser.g:1043:5: INSTRUCTION_FORMAT23x REGISTER COMMA REGISTER COMMA REGISTER
 			{
-			INSTRUCTION_FORMAT23x385=(Token)match(input,INSTRUCTION_FORMAT23x,FOLLOW_INSTRUCTION_FORMAT23x_in_insn_format23x4943);  
-			stream_INSTRUCTION_FORMAT23x.add(INSTRUCTION_FORMAT23x385);
+			INSTRUCTION_FORMAT23x427=(Token)match(input,INSTRUCTION_FORMAT23x,FOLLOW_INSTRUCTION_FORMAT23x_in_insn_format23x5360);  
+			stream_INSTRUCTION_FORMAT23x.add(INSTRUCTION_FORMAT23x427);
 
-			REGISTER386=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format23x4945);  
-			stream_REGISTER.add(REGISTER386);
+			REGISTER428=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format23x5362);  
+			stream_REGISTER.add(REGISTER428);
 
-			COMMA387=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format23x4947);  
-			stream_COMMA.add(COMMA387);
+			COMMA429=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format23x5364);  
+			stream_COMMA.add(COMMA429);
 
-			REGISTER388=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format23x4949);  
-			stream_REGISTER.add(REGISTER388);
+			REGISTER430=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format23x5366);  
+			stream_REGISTER.add(REGISTER430);
 
-			COMMA389=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format23x4951);  
-			stream_COMMA.add(COMMA389);
+			COMMA431=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format23x5368);  
+			stream_COMMA.add(COMMA431);
 
-			REGISTER390=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format23x4953);  
-			stream_REGISTER.add(REGISTER390);
+			REGISTER432=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format23x5370);  
+			stream_REGISTER.add(REGISTER432);
 
 			// AST REWRITE
 			// elements: REGISTER, REGISTER, INSTRUCTION_FORMAT23x, REGISTER
@@ -12623,9 +13752,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 992:5: -> ^( I_STATEMENT_FORMAT23x[$start, \"I_STATEMENT_FORMAT23x\"] INSTRUCTION_FORMAT23x REGISTER REGISTER REGISTER )
+			// 1044:5: -> ^( I_STATEMENT_FORMAT23x[$start, \"I_STATEMENT_FORMAT23x\"] INSTRUCTION_FORMAT23x REGISTER REGISTER REGISTER )
 			{
-				// smaliParser.g:992:8: ^( I_STATEMENT_FORMAT23x[$start, \"I_STATEMENT_FORMAT23x\"] INSTRUCTION_FORMAT23x REGISTER REGISTER REGISTER )
+				// smaliParser.g:1044:8: ^( I_STATEMENT_FORMAT23x[$start, \"I_STATEMENT_FORMAT23x\"] INSTRUCTION_FORMAT23x REGISTER REGISTER REGISTER )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT23x, (retval.start), "I_STATEMENT_FORMAT23x"), root_1);
@@ -12670,32 +13799,32 @@
 
 
 	// $ANTLR start "insn_format30t"
-	// smaliParser.g:994:1: insn_format30t : INSTRUCTION_FORMAT30t label_ref -> ^( I_STATEMENT_FORMAT30t[$start, \"I_STATEMENT_FORMAT30t\"] INSTRUCTION_FORMAT30t label_ref ) ;
+	// smaliParser.g:1046:1: insn_format30t : INSTRUCTION_FORMAT30t label_ref -> ^( I_STATEMENT_FORMAT30t[$start, \"I_STATEMENT_FORMAT30t\"] INSTRUCTION_FORMAT30t label_ref ) ;
 	public final smaliParser.insn_format30t_return insn_format30t() throws RecognitionException {
 		smaliParser.insn_format30t_return retval = new smaliParser.insn_format30t_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT30t391=null;
-		ParserRuleReturnScope label_ref392 =null;
+		Token INSTRUCTION_FORMAT30t433=null;
+		ParserRuleReturnScope label_ref434 =null;
 
-		CommonTree INSTRUCTION_FORMAT30t391_tree=null;
+		CommonTree INSTRUCTION_FORMAT30t433_tree=null;
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT30t=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT30t");
 		RewriteRuleSubtreeStream stream_label_ref=new RewriteRuleSubtreeStream(adaptor,"rule label_ref");
 
 		try {
-			// smaliParser.g:995:3: ( INSTRUCTION_FORMAT30t label_ref -> ^( I_STATEMENT_FORMAT30t[$start, \"I_STATEMENT_FORMAT30t\"] INSTRUCTION_FORMAT30t label_ref ) )
-			// smaliParser.g:996:5: INSTRUCTION_FORMAT30t label_ref
+			// smaliParser.g:1047:3: ( INSTRUCTION_FORMAT30t label_ref -> ^( I_STATEMENT_FORMAT30t[$start, \"I_STATEMENT_FORMAT30t\"] INSTRUCTION_FORMAT30t label_ref ) )
+			// smaliParser.g:1048:5: INSTRUCTION_FORMAT30t label_ref
 			{
-			INSTRUCTION_FORMAT30t391=(Token)match(input,INSTRUCTION_FORMAT30t,FOLLOW_INSTRUCTION_FORMAT30t_in_insn_format30t4987);  
-			stream_INSTRUCTION_FORMAT30t.add(INSTRUCTION_FORMAT30t391);
+			INSTRUCTION_FORMAT30t433=(Token)match(input,INSTRUCTION_FORMAT30t,FOLLOW_INSTRUCTION_FORMAT30t_in_insn_format30t5404);  
+			stream_INSTRUCTION_FORMAT30t.add(INSTRUCTION_FORMAT30t433);
 
-			pushFollow(FOLLOW_label_ref_in_insn_format30t4989);
-			label_ref392=label_ref();
+			pushFollow(FOLLOW_label_ref_in_insn_format30t5406);
+			label_ref434=label_ref();
 			state._fsp--;
 
-			stream_label_ref.add(label_ref392.getTree());
+			stream_label_ref.add(label_ref434.getTree());
 			// AST REWRITE
 			// elements: INSTRUCTION_FORMAT30t, label_ref
 			// token labels: 
@@ -12707,9 +13836,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 997:5: -> ^( I_STATEMENT_FORMAT30t[$start, \"I_STATEMENT_FORMAT30t\"] INSTRUCTION_FORMAT30t label_ref )
+			// 1049:5: -> ^( I_STATEMENT_FORMAT30t[$start, \"I_STATEMENT_FORMAT30t\"] INSTRUCTION_FORMAT30t label_ref )
 			{
-				// smaliParser.g:997:8: ^( I_STATEMENT_FORMAT30t[$start, \"I_STATEMENT_FORMAT30t\"] INSTRUCTION_FORMAT30t label_ref )
+				// smaliParser.g:1049:8: ^( I_STATEMENT_FORMAT30t[$start, \"I_STATEMENT_FORMAT30t\"] INSTRUCTION_FORMAT30t label_ref )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT30t, (retval.start), "I_STATEMENT_FORMAT30t"), root_1);
@@ -12752,45 +13881,45 @@
 
 
 	// $ANTLR start "insn_format31c"
-	// smaliParser.g:999:1: insn_format31c : INSTRUCTION_FORMAT31c REGISTER COMMA STRING_LITERAL -> ^( I_STATEMENT_FORMAT31c[$start, \"I_STATEMENT_FORMAT31c\"] INSTRUCTION_FORMAT31c REGISTER STRING_LITERAL ) ;
+	// smaliParser.g:1051:1: insn_format31c : INSTRUCTION_FORMAT31c REGISTER COMMA STRING_LITERAL -> ^( I_STATEMENT_FORMAT31c[$start, \"I_STATEMENT_FORMAT31c\"] INSTRUCTION_FORMAT31c REGISTER STRING_LITERAL ) ;
 	public final smaliParser.insn_format31c_return insn_format31c() throws RecognitionException {
 		smaliParser.insn_format31c_return retval = new smaliParser.insn_format31c_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT31c393=null;
-		Token REGISTER394=null;
-		Token COMMA395=null;
-		Token STRING_LITERAL396=null;
+		Token INSTRUCTION_FORMAT31c435=null;
+		Token REGISTER436=null;
+		Token COMMA437=null;
+		Token STRING_LITERAL438=null;
 
-		CommonTree INSTRUCTION_FORMAT31c393_tree=null;
-		CommonTree REGISTER394_tree=null;
-		CommonTree COMMA395_tree=null;
-		CommonTree STRING_LITERAL396_tree=null;
+		CommonTree INSTRUCTION_FORMAT31c435_tree=null;
+		CommonTree REGISTER436_tree=null;
+		CommonTree COMMA437_tree=null;
+		CommonTree STRING_LITERAL438_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT31c=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT31c");
 		RewriteRuleTokenStream stream_STRING_LITERAL=new RewriteRuleTokenStream(adaptor,"token STRING_LITERAL");
 
 		try {
-			// smaliParser.g:1000:3: ( INSTRUCTION_FORMAT31c REGISTER COMMA STRING_LITERAL -> ^( I_STATEMENT_FORMAT31c[$start, \"I_STATEMENT_FORMAT31c\"] INSTRUCTION_FORMAT31c REGISTER STRING_LITERAL ) )
-			// smaliParser.g:1001:5: INSTRUCTION_FORMAT31c REGISTER COMMA STRING_LITERAL
+			// smaliParser.g:1052:3: ( INSTRUCTION_FORMAT31c REGISTER COMMA STRING_LITERAL -> ^( I_STATEMENT_FORMAT31c[$start, \"I_STATEMENT_FORMAT31c\"] INSTRUCTION_FORMAT31c REGISTER STRING_LITERAL ) )
+			// smaliParser.g:1053:5: INSTRUCTION_FORMAT31c REGISTER COMMA STRING_LITERAL
 			{
-			INSTRUCTION_FORMAT31c393=(Token)match(input,INSTRUCTION_FORMAT31c,FOLLOW_INSTRUCTION_FORMAT31c_in_insn_format31c5019);  
-			stream_INSTRUCTION_FORMAT31c.add(INSTRUCTION_FORMAT31c393);
+			INSTRUCTION_FORMAT31c435=(Token)match(input,INSTRUCTION_FORMAT31c,FOLLOW_INSTRUCTION_FORMAT31c_in_insn_format31c5436);  
+			stream_INSTRUCTION_FORMAT31c.add(INSTRUCTION_FORMAT31c435);
 
-			REGISTER394=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format31c5021);  
-			stream_REGISTER.add(REGISTER394);
+			REGISTER436=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format31c5438);  
+			stream_REGISTER.add(REGISTER436);
 
-			COMMA395=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format31c5023);  
-			stream_COMMA.add(COMMA395);
+			COMMA437=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format31c5440);  
+			stream_COMMA.add(COMMA437);
 
-			STRING_LITERAL396=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_insn_format31c5025);  
-			stream_STRING_LITERAL.add(STRING_LITERAL396);
+			STRING_LITERAL438=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_insn_format31c5442);  
+			stream_STRING_LITERAL.add(STRING_LITERAL438);
 
 			// AST REWRITE
-			// elements: REGISTER, STRING_LITERAL, INSTRUCTION_FORMAT31c
+			// elements: REGISTER, INSTRUCTION_FORMAT31c, STRING_LITERAL
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -12800,9 +13929,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 1002:5: -> ^( I_STATEMENT_FORMAT31c[$start, \"I_STATEMENT_FORMAT31c\"] INSTRUCTION_FORMAT31c REGISTER STRING_LITERAL )
+			// 1054:5: -> ^( I_STATEMENT_FORMAT31c[$start, \"I_STATEMENT_FORMAT31c\"] INSTRUCTION_FORMAT31c REGISTER STRING_LITERAL )
 			{
-				// smaliParser.g:1002:7: ^( I_STATEMENT_FORMAT31c[$start, \"I_STATEMENT_FORMAT31c\"] INSTRUCTION_FORMAT31c REGISTER STRING_LITERAL )
+				// smaliParser.g:1054:7: ^( I_STATEMENT_FORMAT31c[$start, \"I_STATEMENT_FORMAT31c\"] INSTRUCTION_FORMAT31c REGISTER STRING_LITERAL )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT31c, (retval.start), "I_STATEMENT_FORMAT31c"), root_1);
@@ -12846,47 +13975,47 @@
 
 
 	// $ANTLR start "insn_format31i"
-	// smaliParser.g:1004:1: insn_format31i : instruction_format31i REGISTER COMMA fixed_32bit_literal -> ^( I_STATEMENT_FORMAT31i[$start, \"I_STATEMENT_FORMAT31i\"] instruction_format31i REGISTER fixed_32bit_literal ) ;
+	// smaliParser.g:1056:1: insn_format31i : instruction_format31i REGISTER COMMA fixed_32bit_literal -> ^( I_STATEMENT_FORMAT31i[$start, \"I_STATEMENT_FORMAT31i\"] instruction_format31i REGISTER fixed_32bit_literal ) ;
 	public final smaliParser.insn_format31i_return insn_format31i() throws RecognitionException {
 		smaliParser.insn_format31i_return retval = new smaliParser.insn_format31i_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token REGISTER398=null;
-		Token COMMA399=null;
-		ParserRuleReturnScope instruction_format31i397 =null;
-		ParserRuleReturnScope fixed_32bit_literal400 =null;
+		Token REGISTER440=null;
+		Token COMMA441=null;
+		ParserRuleReturnScope instruction_format31i439 =null;
+		ParserRuleReturnScope fixed_32bit_literal442 =null;
 
-		CommonTree REGISTER398_tree=null;
-		CommonTree COMMA399_tree=null;
+		CommonTree REGISTER440_tree=null;
+		CommonTree COMMA441_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleSubtreeStream stream_fixed_32bit_literal=new RewriteRuleSubtreeStream(adaptor,"rule fixed_32bit_literal");
 		RewriteRuleSubtreeStream stream_instruction_format31i=new RewriteRuleSubtreeStream(adaptor,"rule instruction_format31i");
 
 		try {
-			// smaliParser.g:1005:3: ( instruction_format31i REGISTER COMMA fixed_32bit_literal -> ^( I_STATEMENT_FORMAT31i[$start, \"I_STATEMENT_FORMAT31i\"] instruction_format31i REGISTER fixed_32bit_literal ) )
-			// smaliParser.g:1006:5: instruction_format31i REGISTER COMMA fixed_32bit_literal
+			// smaliParser.g:1057:3: ( instruction_format31i REGISTER COMMA fixed_32bit_literal -> ^( I_STATEMENT_FORMAT31i[$start, \"I_STATEMENT_FORMAT31i\"] instruction_format31i REGISTER fixed_32bit_literal ) )
+			// smaliParser.g:1058:5: instruction_format31i REGISTER COMMA fixed_32bit_literal
 			{
-			pushFollow(FOLLOW_instruction_format31i_in_insn_format31i5056);
-			instruction_format31i397=instruction_format31i();
+			pushFollow(FOLLOW_instruction_format31i_in_insn_format31i5473);
+			instruction_format31i439=instruction_format31i();
 			state._fsp--;
 
-			stream_instruction_format31i.add(instruction_format31i397.getTree());
-			REGISTER398=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format31i5058);  
-			stream_REGISTER.add(REGISTER398);
+			stream_instruction_format31i.add(instruction_format31i439.getTree());
+			REGISTER440=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format31i5475);  
+			stream_REGISTER.add(REGISTER440);
 
-			COMMA399=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format31i5060);  
-			stream_COMMA.add(COMMA399);
+			COMMA441=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format31i5477);  
+			stream_COMMA.add(COMMA441);
 
-			pushFollow(FOLLOW_fixed_32bit_literal_in_insn_format31i5062);
-			fixed_32bit_literal400=fixed_32bit_literal();
+			pushFollow(FOLLOW_fixed_32bit_literal_in_insn_format31i5479);
+			fixed_32bit_literal442=fixed_32bit_literal();
 			state._fsp--;
 
-			stream_fixed_32bit_literal.add(fixed_32bit_literal400.getTree());
+			stream_fixed_32bit_literal.add(fixed_32bit_literal442.getTree());
 			// AST REWRITE
-			// elements: instruction_format31i, REGISTER, fixed_32bit_literal
+			// elements: REGISTER, instruction_format31i, fixed_32bit_literal
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -12896,9 +14025,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 1007:5: -> ^( I_STATEMENT_FORMAT31i[$start, \"I_STATEMENT_FORMAT31i\"] instruction_format31i REGISTER fixed_32bit_literal )
+			// 1059:5: -> ^( I_STATEMENT_FORMAT31i[$start, \"I_STATEMENT_FORMAT31i\"] instruction_format31i REGISTER fixed_32bit_literal )
 			{
-				// smaliParser.g:1007:8: ^( I_STATEMENT_FORMAT31i[$start, \"I_STATEMENT_FORMAT31i\"] instruction_format31i REGISTER fixed_32bit_literal )
+				// smaliParser.g:1059:8: ^( I_STATEMENT_FORMAT31i[$start, \"I_STATEMENT_FORMAT31i\"] instruction_format31i REGISTER fixed_32bit_literal )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT31i, (retval.start), "I_STATEMENT_FORMAT31i"), root_1);
@@ -12942,46 +14071,46 @@
 
 
 	// $ANTLR start "insn_format31t"
-	// smaliParser.g:1009:1: insn_format31t : INSTRUCTION_FORMAT31t REGISTER COMMA label_ref -> ^( I_STATEMENT_FORMAT31t[$start, \"I_STATEMENT_FORMAT31t\"] INSTRUCTION_FORMAT31t REGISTER label_ref ) ;
+	// smaliParser.g:1061:1: insn_format31t : INSTRUCTION_FORMAT31t REGISTER COMMA label_ref -> ^( I_STATEMENT_FORMAT31t[$start, \"I_STATEMENT_FORMAT31t\"] INSTRUCTION_FORMAT31t REGISTER label_ref ) ;
 	public final smaliParser.insn_format31t_return insn_format31t() throws RecognitionException {
 		smaliParser.insn_format31t_return retval = new smaliParser.insn_format31t_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT31t401=null;
-		Token REGISTER402=null;
-		Token COMMA403=null;
-		ParserRuleReturnScope label_ref404 =null;
+		Token INSTRUCTION_FORMAT31t443=null;
+		Token REGISTER444=null;
+		Token COMMA445=null;
+		ParserRuleReturnScope label_ref446 =null;
 
-		CommonTree INSTRUCTION_FORMAT31t401_tree=null;
-		CommonTree REGISTER402_tree=null;
-		CommonTree COMMA403_tree=null;
+		CommonTree INSTRUCTION_FORMAT31t443_tree=null;
+		CommonTree REGISTER444_tree=null;
+		CommonTree COMMA445_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT31t=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT31t");
 		RewriteRuleSubtreeStream stream_label_ref=new RewriteRuleSubtreeStream(adaptor,"rule label_ref");
 
 		try {
-			// smaliParser.g:1010:3: ( INSTRUCTION_FORMAT31t REGISTER COMMA label_ref -> ^( I_STATEMENT_FORMAT31t[$start, \"I_STATEMENT_FORMAT31t\"] INSTRUCTION_FORMAT31t REGISTER label_ref ) )
-			// smaliParser.g:1011:5: INSTRUCTION_FORMAT31t REGISTER COMMA label_ref
+			// smaliParser.g:1062:3: ( INSTRUCTION_FORMAT31t REGISTER COMMA label_ref -> ^( I_STATEMENT_FORMAT31t[$start, \"I_STATEMENT_FORMAT31t\"] INSTRUCTION_FORMAT31t REGISTER label_ref ) )
+			// smaliParser.g:1063:5: INSTRUCTION_FORMAT31t REGISTER COMMA label_ref
 			{
-			INSTRUCTION_FORMAT31t401=(Token)match(input,INSTRUCTION_FORMAT31t,FOLLOW_INSTRUCTION_FORMAT31t_in_insn_format31t5094);  
-			stream_INSTRUCTION_FORMAT31t.add(INSTRUCTION_FORMAT31t401);
+			INSTRUCTION_FORMAT31t443=(Token)match(input,INSTRUCTION_FORMAT31t,FOLLOW_INSTRUCTION_FORMAT31t_in_insn_format31t5511);  
+			stream_INSTRUCTION_FORMAT31t.add(INSTRUCTION_FORMAT31t443);
 
-			REGISTER402=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format31t5096);  
-			stream_REGISTER.add(REGISTER402);
+			REGISTER444=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format31t5513);  
+			stream_REGISTER.add(REGISTER444);
 
-			COMMA403=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format31t5098);  
-			stream_COMMA.add(COMMA403);
+			COMMA445=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format31t5515);  
+			stream_COMMA.add(COMMA445);
 
-			pushFollow(FOLLOW_label_ref_in_insn_format31t5100);
-			label_ref404=label_ref();
+			pushFollow(FOLLOW_label_ref_in_insn_format31t5517);
+			label_ref446=label_ref();
 			state._fsp--;
 
-			stream_label_ref.add(label_ref404.getTree());
+			stream_label_ref.add(label_ref446.getTree());
 			// AST REWRITE
-			// elements: INSTRUCTION_FORMAT31t, REGISTER, label_ref
+			// elements: label_ref, INSTRUCTION_FORMAT31t, REGISTER
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -12991,9 +14120,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 1012:5: -> ^( I_STATEMENT_FORMAT31t[$start, \"I_STATEMENT_FORMAT31t\"] INSTRUCTION_FORMAT31t REGISTER label_ref )
+			// 1064:5: -> ^( I_STATEMENT_FORMAT31t[$start, \"I_STATEMENT_FORMAT31t\"] INSTRUCTION_FORMAT31t REGISTER label_ref )
 			{
-				// smaliParser.g:1012:8: ^( I_STATEMENT_FORMAT31t[$start, \"I_STATEMENT_FORMAT31t\"] INSTRUCTION_FORMAT31t REGISTER label_ref )
+				// smaliParser.g:1064:8: ^( I_STATEMENT_FORMAT31t[$start, \"I_STATEMENT_FORMAT31t\"] INSTRUCTION_FORMAT31t REGISTER label_ref )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT31t, (retval.start), "I_STATEMENT_FORMAT31t"), root_1);
@@ -13037,44 +14166,44 @@
 
 
 	// $ANTLR start "insn_format32x"
-	// smaliParser.g:1014:1: insn_format32x : INSTRUCTION_FORMAT32x REGISTER COMMA REGISTER -> ^( I_STATEMENT_FORMAT32x[$start, \"I_STATEMENT_FORMAT32x\"] INSTRUCTION_FORMAT32x REGISTER REGISTER ) ;
+	// smaliParser.g:1066:1: insn_format32x : INSTRUCTION_FORMAT32x REGISTER COMMA REGISTER -> ^( I_STATEMENT_FORMAT32x[$start, \"I_STATEMENT_FORMAT32x\"] INSTRUCTION_FORMAT32x REGISTER REGISTER ) ;
 	public final smaliParser.insn_format32x_return insn_format32x() throws RecognitionException {
 		smaliParser.insn_format32x_return retval = new smaliParser.insn_format32x_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT32x405=null;
-		Token REGISTER406=null;
-		Token COMMA407=null;
-		Token REGISTER408=null;
+		Token INSTRUCTION_FORMAT32x447=null;
+		Token REGISTER448=null;
+		Token COMMA449=null;
+		Token REGISTER450=null;
 
-		CommonTree INSTRUCTION_FORMAT32x405_tree=null;
-		CommonTree REGISTER406_tree=null;
-		CommonTree COMMA407_tree=null;
-		CommonTree REGISTER408_tree=null;
+		CommonTree INSTRUCTION_FORMAT32x447_tree=null;
+		CommonTree REGISTER448_tree=null;
+		CommonTree COMMA449_tree=null;
+		CommonTree REGISTER450_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT32x=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT32x");
 
 		try {
-			// smaliParser.g:1015:3: ( INSTRUCTION_FORMAT32x REGISTER COMMA REGISTER -> ^( I_STATEMENT_FORMAT32x[$start, \"I_STATEMENT_FORMAT32x\"] INSTRUCTION_FORMAT32x REGISTER REGISTER ) )
-			// smaliParser.g:1016:5: INSTRUCTION_FORMAT32x REGISTER COMMA REGISTER
+			// smaliParser.g:1067:3: ( INSTRUCTION_FORMAT32x REGISTER COMMA REGISTER -> ^( I_STATEMENT_FORMAT32x[$start, \"I_STATEMENT_FORMAT32x\"] INSTRUCTION_FORMAT32x REGISTER REGISTER ) )
+			// smaliParser.g:1068:5: INSTRUCTION_FORMAT32x REGISTER COMMA REGISTER
 			{
-			INSTRUCTION_FORMAT32x405=(Token)match(input,INSTRUCTION_FORMAT32x,FOLLOW_INSTRUCTION_FORMAT32x_in_insn_format32x5132);  
-			stream_INSTRUCTION_FORMAT32x.add(INSTRUCTION_FORMAT32x405);
+			INSTRUCTION_FORMAT32x447=(Token)match(input,INSTRUCTION_FORMAT32x,FOLLOW_INSTRUCTION_FORMAT32x_in_insn_format32x5549);  
+			stream_INSTRUCTION_FORMAT32x.add(INSTRUCTION_FORMAT32x447);
 
-			REGISTER406=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format32x5134);  
-			stream_REGISTER.add(REGISTER406);
+			REGISTER448=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format32x5551);  
+			stream_REGISTER.add(REGISTER448);
 
-			COMMA407=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format32x5136);  
-			stream_COMMA.add(COMMA407);
+			COMMA449=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format32x5553);  
+			stream_COMMA.add(COMMA449);
 
-			REGISTER408=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format32x5138);  
-			stream_REGISTER.add(REGISTER408);
+			REGISTER450=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format32x5555);  
+			stream_REGISTER.add(REGISTER450);
 
 			// AST REWRITE
-			// elements: INSTRUCTION_FORMAT32x, REGISTER, REGISTER
+			// elements: REGISTER, INSTRUCTION_FORMAT32x, REGISTER
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -13084,9 +14213,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 1017:5: -> ^( I_STATEMENT_FORMAT32x[$start, \"I_STATEMENT_FORMAT32x\"] INSTRUCTION_FORMAT32x REGISTER REGISTER )
+			// 1069:5: -> ^( I_STATEMENT_FORMAT32x[$start, \"I_STATEMENT_FORMAT32x\"] INSTRUCTION_FORMAT32x REGISTER REGISTER )
 			{
-				// smaliParser.g:1017:8: ^( I_STATEMENT_FORMAT32x[$start, \"I_STATEMENT_FORMAT32x\"] INSTRUCTION_FORMAT32x REGISTER REGISTER )
+				// smaliParser.g:1069:8: ^( I_STATEMENT_FORMAT32x[$start, \"I_STATEMENT_FORMAT32x\"] INSTRUCTION_FORMAT32x REGISTER REGISTER )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT32x, (retval.start), "I_STATEMENT_FORMAT32x"), root_1);
@@ -13122,67 +14251,67 @@
 	// $ANTLR end "insn_format32x"
 
 
-	public static class insn_format35c_method_return extends ParserRuleReturnScope {
+	public static class insn_format35c_call_site_return extends ParserRuleReturnScope {
 		CommonTree tree;
 		@Override
 		public CommonTree getTree() { return tree; }
 	};
 
 
-	// $ANTLR start "insn_format35c_method"
-	// smaliParser.g:1019:1: insn_format35c_method : INSTRUCTION_FORMAT35c_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference -> ^( I_STATEMENT_FORMAT35c_METHOD[$start, \"I_STATEMENT_FORMAT35c_METHOD\"] INSTRUCTION_FORMAT35c_METHOD register_list method_reference ) ;
-	public final smaliParser.insn_format35c_method_return insn_format35c_method() throws RecognitionException {
-		smaliParser.insn_format35c_method_return retval = new smaliParser.insn_format35c_method_return();
+	// $ANTLR start "insn_format35c_call_site"
+	// smaliParser.g:1071:1: insn_format35c_call_site : INSTRUCTION_FORMAT35c_CALL_SITE OPEN_BRACE register_list CLOSE_BRACE COMMA call_site_reference -> ^( I_STATEMENT_FORMAT35c_CALL_SITE[$start, \"I_STATEMENT_FORMAT35c_CALL_SITE\"] INSTRUCTION_FORMAT35c_CALL_SITE register_list call_site_reference ) ;
+	public final smaliParser.insn_format35c_call_site_return insn_format35c_call_site() throws RecognitionException {
+		smaliParser.insn_format35c_call_site_return retval = new smaliParser.insn_format35c_call_site_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT35c_METHOD409=null;
-		Token OPEN_BRACE410=null;
-		Token CLOSE_BRACE412=null;
-		Token COMMA413=null;
-		ParserRuleReturnScope register_list411 =null;
-		ParserRuleReturnScope method_reference414 =null;
+		Token INSTRUCTION_FORMAT35c_CALL_SITE451=null;
+		Token OPEN_BRACE452=null;
+		Token CLOSE_BRACE454=null;
+		Token COMMA455=null;
+		ParserRuleReturnScope register_list453 =null;
+		ParserRuleReturnScope call_site_reference456 =null;
 
-		CommonTree INSTRUCTION_FORMAT35c_METHOD409_tree=null;
-		CommonTree OPEN_BRACE410_tree=null;
-		CommonTree CLOSE_BRACE412_tree=null;
-		CommonTree COMMA413_tree=null;
-		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT35c_METHOD=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT35c_METHOD");
+		CommonTree INSTRUCTION_FORMAT35c_CALL_SITE451_tree=null;
+		CommonTree OPEN_BRACE452_tree=null;
+		CommonTree CLOSE_BRACE454_tree=null;
+		CommonTree COMMA455_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_OPEN_BRACE=new RewriteRuleTokenStream(adaptor,"token OPEN_BRACE");
 		RewriteRuleTokenStream stream_CLOSE_BRACE=new RewriteRuleTokenStream(adaptor,"token CLOSE_BRACE");
-		RewriteRuleSubtreeStream stream_method_reference=new RewriteRuleSubtreeStream(adaptor,"rule method_reference");
+		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT35c_CALL_SITE=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT35c_CALL_SITE");
 		RewriteRuleSubtreeStream stream_register_list=new RewriteRuleSubtreeStream(adaptor,"rule register_list");
+		RewriteRuleSubtreeStream stream_call_site_reference=new RewriteRuleSubtreeStream(adaptor,"rule call_site_reference");
 
 		try {
-			// smaliParser.g:1020:3: ( INSTRUCTION_FORMAT35c_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference -> ^( I_STATEMENT_FORMAT35c_METHOD[$start, \"I_STATEMENT_FORMAT35c_METHOD\"] INSTRUCTION_FORMAT35c_METHOD register_list method_reference ) )
-			// smaliParser.g:1021:5: INSTRUCTION_FORMAT35c_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference
+			// smaliParser.g:1072:3: ( INSTRUCTION_FORMAT35c_CALL_SITE OPEN_BRACE register_list CLOSE_BRACE COMMA call_site_reference -> ^( I_STATEMENT_FORMAT35c_CALL_SITE[$start, \"I_STATEMENT_FORMAT35c_CALL_SITE\"] INSTRUCTION_FORMAT35c_CALL_SITE register_list call_site_reference ) )
+			// smaliParser.g:1074:5: INSTRUCTION_FORMAT35c_CALL_SITE OPEN_BRACE register_list CLOSE_BRACE COMMA call_site_reference
 			{
-			INSTRUCTION_FORMAT35c_METHOD409=(Token)match(input,INSTRUCTION_FORMAT35c_METHOD,FOLLOW_INSTRUCTION_FORMAT35c_METHOD_in_insn_format35c_method5170);  
-			stream_INSTRUCTION_FORMAT35c_METHOD.add(INSTRUCTION_FORMAT35c_METHOD409);
+			INSTRUCTION_FORMAT35c_CALL_SITE451=(Token)match(input,INSTRUCTION_FORMAT35c_CALL_SITE,FOLLOW_INSTRUCTION_FORMAT35c_CALL_SITE_in_insn_format35c_call_site5592);  
+			stream_INSTRUCTION_FORMAT35c_CALL_SITE.add(INSTRUCTION_FORMAT35c_CALL_SITE451);
 
-			OPEN_BRACE410=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format35c_method5172);  
-			stream_OPEN_BRACE.add(OPEN_BRACE410);
+			OPEN_BRACE452=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format35c_call_site5594);  
+			stream_OPEN_BRACE.add(OPEN_BRACE452);
 
-			pushFollow(FOLLOW_register_list_in_insn_format35c_method5174);
-			register_list411=register_list();
+			pushFollow(FOLLOW_register_list_in_insn_format35c_call_site5596);
+			register_list453=register_list();
 			state._fsp--;
 
-			stream_register_list.add(register_list411.getTree());
-			CLOSE_BRACE412=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format35c_method5176);  
-			stream_CLOSE_BRACE.add(CLOSE_BRACE412);
+			stream_register_list.add(register_list453.getTree());
+			CLOSE_BRACE454=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format35c_call_site5598);  
+			stream_CLOSE_BRACE.add(CLOSE_BRACE454);
 
-			COMMA413=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format35c_method5178);  
-			stream_COMMA.add(COMMA413);
+			COMMA455=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format35c_call_site5600);  
+			stream_COMMA.add(COMMA455);
 
-			pushFollow(FOLLOW_method_reference_in_insn_format35c_method5180);
-			method_reference414=method_reference();
+			pushFollow(FOLLOW_call_site_reference_in_insn_format35c_call_site5602);
+			call_site_reference456=call_site_reference();
 			state._fsp--;
 
-			stream_method_reference.add(method_reference414.getTree());
+			stream_call_site_reference.add(call_site_reference456.getTree());
 			// AST REWRITE
-			// elements: INSTRUCTION_FORMAT35c_METHOD, register_list, method_reference
+			// elements: register_list, call_site_reference, INSTRUCTION_FORMAT35c_CALL_SITE
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -13192,13 +14321,122 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 1022:5: -> ^( I_STATEMENT_FORMAT35c_METHOD[$start, \"I_STATEMENT_FORMAT35c_METHOD\"] INSTRUCTION_FORMAT35c_METHOD register_list method_reference )
+			// 1075:5: -> ^( I_STATEMENT_FORMAT35c_CALL_SITE[$start, \"I_STATEMENT_FORMAT35c_CALL_SITE\"] INSTRUCTION_FORMAT35c_CALL_SITE register_list call_site_reference )
 			{
-				// smaliParser.g:1022:8: ^( I_STATEMENT_FORMAT35c_METHOD[$start, \"I_STATEMENT_FORMAT35c_METHOD\"] INSTRUCTION_FORMAT35c_METHOD register_list method_reference )
+				// smaliParser.g:1075:8: ^( I_STATEMENT_FORMAT35c_CALL_SITE[$start, \"I_STATEMENT_FORMAT35c_CALL_SITE\"] INSTRUCTION_FORMAT35c_CALL_SITE register_list call_site_reference )
+				{
+				CommonTree root_1 = (CommonTree)adaptor.nil();
+				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT35c_CALL_SITE, (retval.start), "I_STATEMENT_FORMAT35c_CALL_SITE"), root_1);
+				adaptor.addChild(root_1, stream_INSTRUCTION_FORMAT35c_CALL_SITE.nextNode());
+				adaptor.addChild(root_1, stream_register_list.nextTree());
+				adaptor.addChild(root_1, stream_call_site_reference.nextTree());
+				adaptor.addChild(root_0, root_1);
+				}
+
+			}
+
+
+			retval.tree = root_0;
+
+			}
+
+			retval.stop = input.LT(-1);
+
+			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+		}
+		catch (RecognitionException re) {
+			reportError(re);
+			recover(input,re);
+			retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+		}
+		finally {
+			// do for sure before leaving
+		}
+		return retval;
+	}
+	// $ANTLR end "insn_format35c_call_site"
+
+
+	public static class insn_format35c_method_return extends ParserRuleReturnScope {
+		CommonTree tree;
+		@Override
+		public CommonTree getTree() { return tree; }
+	};
+
+
+	// $ANTLR start "insn_format35c_method"
+	// smaliParser.g:1077:1: insn_format35c_method : instruction_format35c_method OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference -> ^( I_STATEMENT_FORMAT35c_METHOD[$start, \"I_STATEMENT_FORMAT35c_METHOD\"] instruction_format35c_method register_list method_reference ) ;
+	public final smaliParser.insn_format35c_method_return insn_format35c_method() throws RecognitionException {
+		smaliParser.insn_format35c_method_return retval = new smaliParser.insn_format35c_method_return();
+		retval.start = input.LT(1);
+
+		CommonTree root_0 = null;
+
+		Token OPEN_BRACE458=null;
+		Token CLOSE_BRACE460=null;
+		Token COMMA461=null;
+		ParserRuleReturnScope instruction_format35c_method457 =null;
+		ParserRuleReturnScope register_list459 =null;
+		ParserRuleReturnScope method_reference462 =null;
+
+		CommonTree OPEN_BRACE458_tree=null;
+		CommonTree CLOSE_BRACE460_tree=null;
+		CommonTree COMMA461_tree=null;
+		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
+		RewriteRuleTokenStream stream_OPEN_BRACE=new RewriteRuleTokenStream(adaptor,"token OPEN_BRACE");
+		RewriteRuleTokenStream stream_CLOSE_BRACE=new RewriteRuleTokenStream(adaptor,"token CLOSE_BRACE");
+		RewriteRuleSubtreeStream stream_instruction_format35c_method=new RewriteRuleSubtreeStream(adaptor,"rule instruction_format35c_method");
+		RewriteRuleSubtreeStream stream_method_reference=new RewriteRuleSubtreeStream(adaptor,"rule method_reference");
+		RewriteRuleSubtreeStream stream_register_list=new RewriteRuleSubtreeStream(adaptor,"rule register_list");
+
+		try {
+			// smaliParser.g:1078:3: ( instruction_format35c_method OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference -> ^( I_STATEMENT_FORMAT35c_METHOD[$start, \"I_STATEMENT_FORMAT35c_METHOD\"] instruction_format35c_method register_list method_reference ) )
+			// smaliParser.g:1079:5: instruction_format35c_method OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference
+			{
+			pushFollow(FOLLOW_instruction_format35c_method_in_insn_format35c_method5634);
+			instruction_format35c_method457=instruction_format35c_method();
+			state._fsp--;
+
+			stream_instruction_format35c_method.add(instruction_format35c_method457.getTree());
+			OPEN_BRACE458=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format35c_method5636);  
+			stream_OPEN_BRACE.add(OPEN_BRACE458);
+
+			pushFollow(FOLLOW_register_list_in_insn_format35c_method5638);
+			register_list459=register_list();
+			state._fsp--;
+
+			stream_register_list.add(register_list459.getTree());
+			CLOSE_BRACE460=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format35c_method5640);  
+			stream_CLOSE_BRACE.add(CLOSE_BRACE460);
+
+			COMMA461=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format35c_method5642);  
+			stream_COMMA.add(COMMA461);
+
+			pushFollow(FOLLOW_method_reference_in_insn_format35c_method5644);
+			method_reference462=method_reference();
+			state._fsp--;
+
+			stream_method_reference.add(method_reference462.getTree());
+			// AST REWRITE
+			// elements: instruction_format35c_method, register_list, method_reference
+			// token labels: 
+			// rule labels: retval
+			// token list labels: 
+			// rule list labels: 
+			// wildcard labels: 
+			retval.tree = root_0;
+			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
+
+			root_0 = (CommonTree)adaptor.nil();
+			// 1080:5: -> ^( I_STATEMENT_FORMAT35c_METHOD[$start, \"I_STATEMENT_FORMAT35c_METHOD\"] instruction_format35c_method register_list method_reference )
+			{
+				// smaliParser.g:1080:8: ^( I_STATEMENT_FORMAT35c_METHOD[$start, \"I_STATEMENT_FORMAT35c_METHOD\"] instruction_format35c_method register_list method_reference )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT35c_METHOD, (retval.start), "I_STATEMENT_FORMAT35c_METHOD"), root_1);
-				adaptor.addChild(root_1, stream_INSTRUCTION_FORMAT35c_METHOD.nextNode());
+				adaptor.addChild(root_1, stream_instruction_format35c_method.nextTree());
 				adaptor.addChild(root_1, stream_register_list.nextTree());
 				adaptor.addChild(root_1, stream_method_reference.nextTree());
 				adaptor.addChild(root_0, root_1);
@@ -13238,24 +14476,24 @@
 
 
 	// $ANTLR start "insn_format35c_type"
-	// smaliParser.g:1024:1: insn_format35c_type : INSTRUCTION_FORMAT35c_TYPE OPEN_BRACE register_list CLOSE_BRACE COMMA nonvoid_type_descriptor -> ^( I_STATEMENT_FORMAT35c_TYPE[$start, \"I_STATEMENT_FORMAT35c_TYPE\"] INSTRUCTION_FORMAT35c_TYPE register_list nonvoid_type_descriptor ) ;
+	// smaliParser.g:1082:1: insn_format35c_type : INSTRUCTION_FORMAT35c_TYPE OPEN_BRACE register_list CLOSE_BRACE COMMA nonvoid_type_descriptor -> ^( I_STATEMENT_FORMAT35c_TYPE[$start, \"I_STATEMENT_FORMAT35c_TYPE\"] INSTRUCTION_FORMAT35c_TYPE register_list nonvoid_type_descriptor ) ;
 	public final smaliParser.insn_format35c_type_return insn_format35c_type() throws RecognitionException {
 		smaliParser.insn_format35c_type_return retval = new smaliParser.insn_format35c_type_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT35c_TYPE415=null;
-		Token OPEN_BRACE416=null;
-		Token CLOSE_BRACE418=null;
-		Token COMMA419=null;
-		ParserRuleReturnScope register_list417 =null;
-		ParserRuleReturnScope nonvoid_type_descriptor420 =null;
+		Token INSTRUCTION_FORMAT35c_TYPE463=null;
+		Token OPEN_BRACE464=null;
+		Token CLOSE_BRACE466=null;
+		Token COMMA467=null;
+		ParserRuleReturnScope register_list465 =null;
+		ParserRuleReturnScope nonvoid_type_descriptor468 =null;
 
-		CommonTree INSTRUCTION_FORMAT35c_TYPE415_tree=null;
-		CommonTree OPEN_BRACE416_tree=null;
-		CommonTree CLOSE_BRACE418_tree=null;
-		CommonTree COMMA419_tree=null;
+		CommonTree INSTRUCTION_FORMAT35c_TYPE463_tree=null;
+		CommonTree OPEN_BRACE464_tree=null;
+		CommonTree CLOSE_BRACE466_tree=null;
+		CommonTree COMMA467_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT35c_TYPE=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT35c_TYPE");
 		RewriteRuleTokenStream stream_OPEN_BRACE=new RewriteRuleTokenStream(adaptor,"token OPEN_BRACE");
@@ -13264,33 +14502,33 @@
 		RewriteRuleSubtreeStream stream_nonvoid_type_descriptor=new RewriteRuleSubtreeStream(adaptor,"rule nonvoid_type_descriptor");
 
 		try {
-			// smaliParser.g:1025:3: ( INSTRUCTION_FORMAT35c_TYPE OPEN_BRACE register_list CLOSE_BRACE COMMA nonvoid_type_descriptor -> ^( I_STATEMENT_FORMAT35c_TYPE[$start, \"I_STATEMENT_FORMAT35c_TYPE\"] INSTRUCTION_FORMAT35c_TYPE register_list nonvoid_type_descriptor ) )
-			// smaliParser.g:1026:5: INSTRUCTION_FORMAT35c_TYPE OPEN_BRACE register_list CLOSE_BRACE COMMA nonvoid_type_descriptor
+			// smaliParser.g:1083:3: ( INSTRUCTION_FORMAT35c_TYPE OPEN_BRACE register_list CLOSE_BRACE COMMA nonvoid_type_descriptor -> ^( I_STATEMENT_FORMAT35c_TYPE[$start, \"I_STATEMENT_FORMAT35c_TYPE\"] INSTRUCTION_FORMAT35c_TYPE register_list nonvoid_type_descriptor ) )
+			// smaliParser.g:1084:5: INSTRUCTION_FORMAT35c_TYPE OPEN_BRACE register_list CLOSE_BRACE COMMA nonvoid_type_descriptor
 			{
-			INSTRUCTION_FORMAT35c_TYPE415=(Token)match(input,INSTRUCTION_FORMAT35c_TYPE,FOLLOW_INSTRUCTION_FORMAT35c_TYPE_in_insn_format35c_type5212);  
-			stream_INSTRUCTION_FORMAT35c_TYPE.add(INSTRUCTION_FORMAT35c_TYPE415);
+			INSTRUCTION_FORMAT35c_TYPE463=(Token)match(input,INSTRUCTION_FORMAT35c_TYPE,FOLLOW_INSTRUCTION_FORMAT35c_TYPE_in_insn_format35c_type5676);  
+			stream_INSTRUCTION_FORMAT35c_TYPE.add(INSTRUCTION_FORMAT35c_TYPE463);
 
-			OPEN_BRACE416=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format35c_type5214);  
-			stream_OPEN_BRACE.add(OPEN_BRACE416);
+			OPEN_BRACE464=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format35c_type5678);  
+			stream_OPEN_BRACE.add(OPEN_BRACE464);
 
-			pushFollow(FOLLOW_register_list_in_insn_format35c_type5216);
-			register_list417=register_list();
+			pushFollow(FOLLOW_register_list_in_insn_format35c_type5680);
+			register_list465=register_list();
 			state._fsp--;
 
-			stream_register_list.add(register_list417.getTree());
-			CLOSE_BRACE418=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format35c_type5218);  
-			stream_CLOSE_BRACE.add(CLOSE_BRACE418);
+			stream_register_list.add(register_list465.getTree());
+			CLOSE_BRACE466=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format35c_type5682);  
+			stream_CLOSE_BRACE.add(CLOSE_BRACE466);
 
-			COMMA419=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format35c_type5220);  
-			stream_COMMA.add(COMMA419);
+			COMMA467=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format35c_type5684);  
+			stream_COMMA.add(COMMA467);
 
-			pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format35c_type5222);
-			nonvoid_type_descriptor420=nonvoid_type_descriptor();
+			pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format35c_type5686);
+			nonvoid_type_descriptor468=nonvoid_type_descriptor();
 			state._fsp--;
 
-			stream_nonvoid_type_descriptor.add(nonvoid_type_descriptor420.getTree());
+			stream_nonvoid_type_descriptor.add(nonvoid_type_descriptor468.getTree());
 			// AST REWRITE
-			// elements: register_list, INSTRUCTION_FORMAT35c_TYPE, nonvoid_type_descriptor
+			// elements: INSTRUCTION_FORMAT35c_TYPE, nonvoid_type_descriptor, register_list
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -13300,9 +14538,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 1027:5: -> ^( I_STATEMENT_FORMAT35c_TYPE[$start, \"I_STATEMENT_FORMAT35c_TYPE\"] INSTRUCTION_FORMAT35c_TYPE register_list nonvoid_type_descriptor )
+			// 1085:5: -> ^( I_STATEMENT_FORMAT35c_TYPE[$start, \"I_STATEMENT_FORMAT35c_TYPE\"] INSTRUCTION_FORMAT35c_TYPE register_list nonvoid_type_descriptor )
 			{
-				// smaliParser.g:1027:8: ^( I_STATEMENT_FORMAT35c_TYPE[$start, \"I_STATEMENT_FORMAT35c_TYPE\"] INSTRUCTION_FORMAT35c_TYPE register_list nonvoid_type_descriptor )
+				// smaliParser.g:1085:8: ^( I_STATEMENT_FORMAT35c_TYPE[$start, \"I_STATEMENT_FORMAT35c_TYPE\"] INSTRUCTION_FORMAT35c_TYPE register_list nonvoid_type_descriptor )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT35c_TYPE, (retval.start), "I_STATEMENT_FORMAT35c_TYPE"), root_1);
@@ -13346,62 +14584,62 @@
 
 
 	// $ANTLR start "insn_format35c_method_odex"
-	// smaliParser.g:1029:1: insn_format35c_method_odex : INSTRUCTION_FORMAT35c_METHOD_ODEX OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference ;
+	// smaliParser.g:1087:1: insn_format35c_method_odex : INSTRUCTION_FORMAT35c_METHOD_ODEX OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference ;
 	public final smaliParser.insn_format35c_method_odex_return insn_format35c_method_odex() throws RecognitionException {
 		smaliParser.insn_format35c_method_odex_return retval = new smaliParser.insn_format35c_method_odex_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT35c_METHOD_ODEX421=null;
-		Token OPEN_BRACE422=null;
-		Token CLOSE_BRACE424=null;
-		Token COMMA425=null;
-		ParserRuleReturnScope register_list423 =null;
-		ParserRuleReturnScope method_reference426 =null;
+		Token INSTRUCTION_FORMAT35c_METHOD_ODEX469=null;
+		Token OPEN_BRACE470=null;
+		Token CLOSE_BRACE472=null;
+		Token COMMA473=null;
+		ParserRuleReturnScope register_list471 =null;
+		ParserRuleReturnScope method_reference474 =null;
 
-		CommonTree INSTRUCTION_FORMAT35c_METHOD_ODEX421_tree=null;
-		CommonTree OPEN_BRACE422_tree=null;
-		CommonTree CLOSE_BRACE424_tree=null;
-		CommonTree COMMA425_tree=null;
+		CommonTree INSTRUCTION_FORMAT35c_METHOD_ODEX469_tree=null;
+		CommonTree OPEN_BRACE470_tree=null;
+		CommonTree CLOSE_BRACE472_tree=null;
+		CommonTree COMMA473_tree=null;
 
 		try {
-			// smaliParser.g:1030:3: ( INSTRUCTION_FORMAT35c_METHOD_ODEX OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference )
-			// smaliParser.g:1031:5: INSTRUCTION_FORMAT35c_METHOD_ODEX OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference
+			// smaliParser.g:1088:3: ( INSTRUCTION_FORMAT35c_METHOD_ODEX OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference )
+			// smaliParser.g:1089:5: INSTRUCTION_FORMAT35c_METHOD_ODEX OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference
 			{
 			root_0 = (CommonTree)adaptor.nil();
 
 
-			INSTRUCTION_FORMAT35c_METHOD_ODEX421=(Token)match(input,INSTRUCTION_FORMAT35c_METHOD_ODEX,FOLLOW_INSTRUCTION_FORMAT35c_METHOD_ODEX_in_insn_format35c_method_odex5254); 
-			INSTRUCTION_FORMAT35c_METHOD_ODEX421_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT35c_METHOD_ODEX421);
-			adaptor.addChild(root_0, INSTRUCTION_FORMAT35c_METHOD_ODEX421_tree);
+			INSTRUCTION_FORMAT35c_METHOD_ODEX469=(Token)match(input,INSTRUCTION_FORMAT35c_METHOD_ODEX,FOLLOW_INSTRUCTION_FORMAT35c_METHOD_ODEX_in_insn_format35c_method_odex5718); 
+			INSTRUCTION_FORMAT35c_METHOD_ODEX469_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT35c_METHOD_ODEX469);
+			adaptor.addChild(root_0, INSTRUCTION_FORMAT35c_METHOD_ODEX469_tree);
 
-			OPEN_BRACE422=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format35c_method_odex5256); 
-			OPEN_BRACE422_tree = (CommonTree)adaptor.create(OPEN_BRACE422);
-			adaptor.addChild(root_0, OPEN_BRACE422_tree);
+			OPEN_BRACE470=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format35c_method_odex5720); 
+			OPEN_BRACE470_tree = (CommonTree)adaptor.create(OPEN_BRACE470);
+			adaptor.addChild(root_0, OPEN_BRACE470_tree);
 
-			pushFollow(FOLLOW_register_list_in_insn_format35c_method_odex5258);
-			register_list423=register_list();
+			pushFollow(FOLLOW_register_list_in_insn_format35c_method_odex5722);
+			register_list471=register_list();
 			state._fsp--;
 
-			adaptor.addChild(root_0, register_list423.getTree());
+			adaptor.addChild(root_0, register_list471.getTree());
 
-			CLOSE_BRACE424=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format35c_method_odex5260); 
-			CLOSE_BRACE424_tree = (CommonTree)adaptor.create(CLOSE_BRACE424);
-			adaptor.addChild(root_0, CLOSE_BRACE424_tree);
+			CLOSE_BRACE472=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format35c_method_odex5724); 
+			CLOSE_BRACE472_tree = (CommonTree)adaptor.create(CLOSE_BRACE472);
+			adaptor.addChild(root_0, CLOSE_BRACE472_tree);
 
-			COMMA425=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format35c_method_odex5262); 
-			COMMA425_tree = (CommonTree)adaptor.create(COMMA425);
-			adaptor.addChild(root_0, COMMA425_tree);
+			COMMA473=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format35c_method_odex5726); 
+			COMMA473_tree = (CommonTree)adaptor.create(COMMA473);
+			adaptor.addChild(root_0, COMMA473_tree);
 
-			pushFollow(FOLLOW_method_reference_in_insn_format35c_method_odex5264);
-			method_reference426=method_reference();
+			pushFollow(FOLLOW_method_reference_in_insn_format35c_method_odex5728);
+			method_reference474=method_reference();
 			state._fsp--;
 
-			adaptor.addChild(root_0, method_reference426.getTree());
+			adaptor.addChild(root_0, method_reference474.getTree());
 
 
-			      throwOdexedInstructionException(input, (INSTRUCTION_FORMAT35c_METHOD_ODEX421!=null?INSTRUCTION_FORMAT35c_METHOD_ODEX421.getText():null));
+			      throwOdexedInstructionException(input, (INSTRUCTION_FORMAT35c_METHOD_ODEX469!=null?INSTRUCTION_FORMAT35c_METHOD_ODEX469.getText():null));
 			    
 			}
 
@@ -13432,61 +14670,61 @@
 
 
 	// $ANTLR start "insn_format35mi_method"
-	// smaliParser.g:1036:1: insn_format35mi_method : INSTRUCTION_FORMAT35mi_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA INLINE_INDEX ;
+	// smaliParser.g:1094:1: insn_format35mi_method : INSTRUCTION_FORMAT35mi_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA INLINE_INDEX ;
 	public final smaliParser.insn_format35mi_method_return insn_format35mi_method() throws RecognitionException {
 		smaliParser.insn_format35mi_method_return retval = new smaliParser.insn_format35mi_method_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT35mi_METHOD427=null;
-		Token OPEN_BRACE428=null;
-		Token CLOSE_BRACE430=null;
-		Token COMMA431=null;
-		Token INLINE_INDEX432=null;
-		ParserRuleReturnScope register_list429 =null;
+		Token INSTRUCTION_FORMAT35mi_METHOD475=null;
+		Token OPEN_BRACE476=null;
+		Token CLOSE_BRACE478=null;
+		Token COMMA479=null;
+		Token INLINE_INDEX480=null;
+		ParserRuleReturnScope register_list477 =null;
 
-		CommonTree INSTRUCTION_FORMAT35mi_METHOD427_tree=null;
-		CommonTree OPEN_BRACE428_tree=null;
-		CommonTree CLOSE_BRACE430_tree=null;
-		CommonTree COMMA431_tree=null;
-		CommonTree INLINE_INDEX432_tree=null;
+		CommonTree INSTRUCTION_FORMAT35mi_METHOD475_tree=null;
+		CommonTree OPEN_BRACE476_tree=null;
+		CommonTree CLOSE_BRACE478_tree=null;
+		CommonTree COMMA479_tree=null;
+		CommonTree INLINE_INDEX480_tree=null;
 
 		try {
-			// smaliParser.g:1037:3: ( INSTRUCTION_FORMAT35mi_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA INLINE_INDEX )
-			// smaliParser.g:1038:5: INSTRUCTION_FORMAT35mi_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA INLINE_INDEX
+			// smaliParser.g:1095:3: ( INSTRUCTION_FORMAT35mi_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA INLINE_INDEX )
+			// smaliParser.g:1096:5: INSTRUCTION_FORMAT35mi_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA INLINE_INDEX
 			{
 			root_0 = (CommonTree)adaptor.nil();
 
 
-			INSTRUCTION_FORMAT35mi_METHOD427=(Token)match(input,INSTRUCTION_FORMAT35mi_METHOD,FOLLOW_INSTRUCTION_FORMAT35mi_METHOD_in_insn_format35mi_method5285); 
-			INSTRUCTION_FORMAT35mi_METHOD427_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT35mi_METHOD427);
-			adaptor.addChild(root_0, INSTRUCTION_FORMAT35mi_METHOD427_tree);
+			INSTRUCTION_FORMAT35mi_METHOD475=(Token)match(input,INSTRUCTION_FORMAT35mi_METHOD,FOLLOW_INSTRUCTION_FORMAT35mi_METHOD_in_insn_format35mi_method5749); 
+			INSTRUCTION_FORMAT35mi_METHOD475_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT35mi_METHOD475);
+			adaptor.addChild(root_0, INSTRUCTION_FORMAT35mi_METHOD475_tree);
 
-			OPEN_BRACE428=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format35mi_method5287); 
-			OPEN_BRACE428_tree = (CommonTree)adaptor.create(OPEN_BRACE428);
-			adaptor.addChild(root_0, OPEN_BRACE428_tree);
+			OPEN_BRACE476=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format35mi_method5751); 
+			OPEN_BRACE476_tree = (CommonTree)adaptor.create(OPEN_BRACE476);
+			adaptor.addChild(root_0, OPEN_BRACE476_tree);
 
-			pushFollow(FOLLOW_register_list_in_insn_format35mi_method5289);
-			register_list429=register_list();
+			pushFollow(FOLLOW_register_list_in_insn_format35mi_method5753);
+			register_list477=register_list();
 			state._fsp--;
 
-			adaptor.addChild(root_0, register_list429.getTree());
+			adaptor.addChild(root_0, register_list477.getTree());
 
-			CLOSE_BRACE430=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format35mi_method5291); 
-			CLOSE_BRACE430_tree = (CommonTree)adaptor.create(CLOSE_BRACE430);
-			adaptor.addChild(root_0, CLOSE_BRACE430_tree);
+			CLOSE_BRACE478=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format35mi_method5755); 
+			CLOSE_BRACE478_tree = (CommonTree)adaptor.create(CLOSE_BRACE478);
+			adaptor.addChild(root_0, CLOSE_BRACE478_tree);
 
-			COMMA431=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format35mi_method5293); 
-			COMMA431_tree = (CommonTree)adaptor.create(COMMA431);
-			adaptor.addChild(root_0, COMMA431_tree);
+			COMMA479=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format35mi_method5757); 
+			COMMA479_tree = (CommonTree)adaptor.create(COMMA479);
+			adaptor.addChild(root_0, COMMA479_tree);
 
-			INLINE_INDEX432=(Token)match(input,INLINE_INDEX,FOLLOW_INLINE_INDEX_in_insn_format35mi_method5295); 
-			INLINE_INDEX432_tree = (CommonTree)adaptor.create(INLINE_INDEX432);
-			adaptor.addChild(root_0, INLINE_INDEX432_tree);
+			INLINE_INDEX480=(Token)match(input,INLINE_INDEX,FOLLOW_INLINE_INDEX_in_insn_format35mi_method5759); 
+			INLINE_INDEX480_tree = (CommonTree)adaptor.create(INLINE_INDEX480);
+			adaptor.addChild(root_0, INLINE_INDEX480_tree);
 
 
-			      throwOdexedInstructionException(input, (INSTRUCTION_FORMAT35mi_METHOD427!=null?INSTRUCTION_FORMAT35mi_METHOD427.getText():null));
+			      throwOdexedInstructionException(input, (INSTRUCTION_FORMAT35mi_METHOD475!=null?INSTRUCTION_FORMAT35mi_METHOD475.getText():null));
 			    
 			}
 
@@ -13517,61 +14755,61 @@
 
 
 	// $ANTLR start "insn_format35ms_method"
-	// smaliParser.g:1043:1: insn_format35ms_method : INSTRUCTION_FORMAT35ms_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA VTABLE_INDEX ;
+	// smaliParser.g:1101:1: insn_format35ms_method : INSTRUCTION_FORMAT35ms_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA VTABLE_INDEX ;
 	public final smaliParser.insn_format35ms_method_return insn_format35ms_method() throws RecognitionException {
 		smaliParser.insn_format35ms_method_return retval = new smaliParser.insn_format35ms_method_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT35ms_METHOD433=null;
-		Token OPEN_BRACE434=null;
-		Token CLOSE_BRACE436=null;
-		Token COMMA437=null;
-		Token VTABLE_INDEX438=null;
-		ParserRuleReturnScope register_list435 =null;
+		Token INSTRUCTION_FORMAT35ms_METHOD481=null;
+		Token OPEN_BRACE482=null;
+		Token CLOSE_BRACE484=null;
+		Token COMMA485=null;
+		Token VTABLE_INDEX486=null;
+		ParserRuleReturnScope register_list483 =null;
 
-		CommonTree INSTRUCTION_FORMAT35ms_METHOD433_tree=null;
-		CommonTree OPEN_BRACE434_tree=null;
-		CommonTree CLOSE_BRACE436_tree=null;
-		CommonTree COMMA437_tree=null;
-		CommonTree VTABLE_INDEX438_tree=null;
+		CommonTree INSTRUCTION_FORMAT35ms_METHOD481_tree=null;
+		CommonTree OPEN_BRACE482_tree=null;
+		CommonTree CLOSE_BRACE484_tree=null;
+		CommonTree COMMA485_tree=null;
+		CommonTree VTABLE_INDEX486_tree=null;
 
 		try {
-			// smaliParser.g:1044:3: ( INSTRUCTION_FORMAT35ms_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA VTABLE_INDEX )
-			// smaliParser.g:1045:5: INSTRUCTION_FORMAT35ms_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA VTABLE_INDEX
+			// smaliParser.g:1102:3: ( INSTRUCTION_FORMAT35ms_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA VTABLE_INDEX )
+			// smaliParser.g:1103:5: INSTRUCTION_FORMAT35ms_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA VTABLE_INDEX
 			{
 			root_0 = (CommonTree)adaptor.nil();
 
 
-			INSTRUCTION_FORMAT35ms_METHOD433=(Token)match(input,INSTRUCTION_FORMAT35ms_METHOD,FOLLOW_INSTRUCTION_FORMAT35ms_METHOD_in_insn_format35ms_method5316); 
-			INSTRUCTION_FORMAT35ms_METHOD433_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT35ms_METHOD433);
-			adaptor.addChild(root_0, INSTRUCTION_FORMAT35ms_METHOD433_tree);
+			INSTRUCTION_FORMAT35ms_METHOD481=(Token)match(input,INSTRUCTION_FORMAT35ms_METHOD,FOLLOW_INSTRUCTION_FORMAT35ms_METHOD_in_insn_format35ms_method5780); 
+			INSTRUCTION_FORMAT35ms_METHOD481_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT35ms_METHOD481);
+			adaptor.addChild(root_0, INSTRUCTION_FORMAT35ms_METHOD481_tree);
 
-			OPEN_BRACE434=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format35ms_method5318); 
-			OPEN_BRACE434_tree = (CommonTree)adaptor.create(OPEN_BRACE434);
-			adaptor.addChild(root_0, OPEN_BRACE434_tree);
+			OPEN_BRACE482=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format35ms_method5782); 
+			OPEN_BRACE482_tree = (CommonTree)adaptor.create(OPEN_BRACE482);
+			adaptor.addChild(root_0, OPEN_BRACE482_tree);
 
-			pushFollow(FOLLOW_register_list_in_insn_format35ms_method5320);
-			register_list435=register_list();
+			pushFollow(FOLLOW_register_list_in_insn_format35ms_method5784);
+			register_list483=register_list();
 			state._fsp--;
 
-			adaptor.addChild(root_0, register_list435.getTree());
+			adaptor.addChild(root_0, register_list483.getTree());
 
-			CLOSE_BRACE436=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format35ms_method5322); 
-			CLOSE_BRACE436_tree = (CommonTree)adaptor.create(CLOSE_BRACE436);
-			adaptor.addChild(root_0, CLOSE_BRACE436_tree);
+			CLOSE_BRACE484=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format35ms_method5786); 
+			CLOSE_BRACE484_tree = (CommonTree)adaptor.create(CLOSE_BRACE484);
+			adaptor.addChild(root_0, CLOSE_BRACE484_tree);
 
-			COMMA437=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format35ms_method5324); 
-			COMMA437_tree = (CommonTree)adaptor.create(COMMA437);
-			adaptor.addChild(root_0, COMMA437_tree);
+			COMMA485=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format35ms_method5788); 
+			COMMA485_tree = (CommonTree)adaptor.create(COMMA485);
+			adaptor.addChild(root_0, COMMA485_tree);
 
-			VTABLE_INDEX438=(Token)match(input,VTABLE_INDEX,FOLLOW_VTABLE_INDEX_in_insn_format35ms_method5326); 
-			VTABLE_INDEX438_tree = (CommonTree)adaptor.create(VTABLE_INDEX438);
-			adaptor.addChild(root_0, VTABLE_INDEX438_tree);
+			VTABLE_INDEX486=(Token)match(input,VTABLE_INDEX,FOLLOW_VTABLE_INDEX_in_insn_format35ms_method5790); 
+			VTABLE_INDEX486_tree = (CommonTree)adaptor.create(VTABLE_INDEX486);
+			adaptor.addChild(root_0, VTABLE_INDEX486_tree);
 
 
-			      throwOdexedInstructionException(input, (INSTRUCTION_FORMAT35ms_METHOD433!=null?INSTRUCTION_FORMAT35ms_METHOD433.getText():null));
+			      throwOdexedInstructionException(input, (INSTRUCTION_FORMAT35ms_METHOD481!=null?INSTRUCTION_FORMAT35ms_METHOD481.getText():null));
 			    
 			}
 
@@ -13594,67 +14832,67 @@
 	// $ANTLR end "insn_format35ms_method"
 
 
-	public static class insn_format3rc_method_return extends ParserRuleReturnScope {
+	public static class insn_format3rc_call_site_return extends ParserRuleReturnScope {
 		CommonTree tree;
 		@Override
 		public CommonTree getTree() { return tree; }
 	};
 
 
-	// $ANTLR start "insn_format3rc_method"
-	// smaliParser.g:1050:1: insn_format3rc_method : INSTRUCTION_FORMAT3rc_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA method_reference -> ^( I_STATEMENT_FORMAT3rc_METHOD[$start, \"I_STATEMENT_FORMAT3rc_METHOD\"] INSTRUCTION_FORMAT3rc_METHOD register_range method_reference ) ;
-	public final smaliParser.insn_format3rc_method_return insn_format3rc_method() throws RecognitionException {
-		smaliParser.insn_format3rc_method_return retval = new smaliParser.insn_format3rc_method_return();
+	// $ANTLR start "insn_format3rc_call_site"
+	// smaliParser.g:1108:1: insn_format3rc_call_site : INSTRUCTION_FORMAT3rc_CALL_SITE OPEN_BRACE register_range CLOSE_BRACE COMMA call_site_reference -> ^( I_STATEMENT_FORMAT3rc_CALL_SITE[$start, \"I_STATEMENT_FORMAT3rc_CALL_SITE\"] INSTRUCTION_FORMAT3rc_CALL_SITE register_range call_site_reference ) ;
+	public final smaliParser.insn_format3rc_call_site_return insn_format3rc_call_site() throws RecognitionException {
+		smaliParser.insn_format3rc_call_site_return retval = new smaliParser.insn_format3rc_call_site_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT3rc_METHOD439=null;
-		Token OPEN_BRACE440=null;
-		Token CLOSE_BRACE442=null;
-		Token COMMA443=null;
-		ParserRuleReturnScope register_range441 =null;
-		ParserRuleReturnScope method_reference444 =null;
+		Token INSTRUCTION_FORMAT3rc_CALL_SITE487=null;
+		Token OPEN_BRACE488=null;
+		Token CLOSE_BRACE490=null;
+		Token COMMA491=null;
+		ParserRuleReturnScope register_range489 =null;
+		ParserRuleReturnScope call_site_reference492 =null;
 
-		CommonTree INSTRUCTION_FORMAT3rc_METHOD439_tree=null;
-		CommonTree OPEN_BRACE440_tree=null;
-		CommonTree CLOSE_BRACE442_tree=null;
-		CommonTree COMMA443_tree=null;
+		CommonTree INSTRUCTION_FORMAT3rc_CALL_SITE487_tree=null;
+		CommonTree OPEN_BRACE488_tree=null;
+		CommonTree CLOSE_BRACE490_tree=null;
+		CommonTree COMMA491_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
-		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT3rc_METHOD=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT3rc_METHOD");
 		RewriteRuleTokenStream stream_OPEN_BRACE=new RewriteRuleTokenStream(adaptor,"token OPEN_BRACE");
 		RewriteRuleTokenStream stream_CLOSE_BRACE=new RewriteRuleTokenStream(adaptor,"token CLOSE_BRACE");
-		RewriteRuleSubtreeStream stream_method_reference=new RewriteRuleSubtreeStream(adaptor,"rule method_reference");
+		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT3rc_CALL_SITE=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT3rc_CALL_SITE");
 		RewriteRuleSubtreeStream stream_register_range=new RewriteRuleSubtreeStream(adaptor,"rule register_range");
+		RewriteRuleSubtreeStream stream_call_site_reference=new RewriteRuleSubtreeStream(adaptor,"rule call_site_reference");
 
 		try {
-			// smaliParser.g:1051:3: ( INSTRUCTION_FORMAT3rc_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA method_reference -> ^( I_STATEMENT_FORMAT3rc_METHOD[$start, \"I_STATEMENT_FORMAT3rc_METHOD\"] INSTRUCTION_FORMAT3rc_METHOD register_range method_reference ) )
-			// smaliParser.g:1052:5: INSTRUCTION_FORMAT3rc_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA method_reference
+			// smaliParser.g:1109:3: ( INSTRUCTION_FORMAT3rc_CALL_SITE OPEN_BRACE register_range CLOSE_BRACE COMMA call_site_reference -> ^( I_STATEMENT_FORMAT3rc_CALL_SITE[$start, \"I_STATEMENT_FORMAT3rc_CALL_SITE\"] INSTRUCTION_FORMAT3rc_CALL_SITE register_range call_site_reference ) )
+			// smaliParser.g:1111:5: INSTRUCTION_FORMAT3rc_CALL_SITE OPEN_BRACE register_range CLOSE_BRACE COMMA call_site_reference
 			{
-			INSTRUCTION_FORMAT3rc_METHOD439=(Token)match(input,INSTRUCTION_FORMAT3rc_METHOD,FOLLOW_INSTRUCTION_FORMAT3rc_METHOD_in_insn_format3rc_method5347);  
-			stream_INSTRUCTION_FORMAT3rc_METHOD.add(INSTRUCTION_FORMAT3rc_METHOD439);
+			INSTRUCTION_FORMAT3rc_CALL_SITE487=(Token)match(input,INSTRUCTION_FORMAT3rc_CALL_SITE,FOLLOW_INSTRUCTION_FORMAT3rc_CALL_SITE_in_insn_format3rc_call_site5816);  
+			stream_INSTRUCTION_FORMAT3rc_CALL_SITE.add(INSTRUCTION_FORMAT3rc_CALL_SITE487);
 
-			OPEN_BRACE440=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format3rc_method5349);  
-			stream_OPEN_BRACE.add(OPEN_BRACE440);
+			OPEN_BRACE488=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format3rc_call_site5818);  
+			stream_OPEN_BRACE.add(OPEN_BRACE488);
 
-			pushFollow(FOLLOW_register_range_in_insn_format3rc_method5351);
-			register_range441=register_range();
+			pushFollow(FOLLOW_register_range_in_insn_format3rc_call_site5820);
+			register_range489=register_range();
 			state._fsp--;
 
-			stream_register_range.add(register_range441.getTree());
-			CLOSE_BRACE442=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format3rc_method5353);  
-			stream_CLOSE_BRACE.add(CLOSE_BRACE442);
+			stream_register_range.add(register_range489.getTree());
+			CLOSE_BRACE490=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format3rc_call_site5822);  
+			stream_CLOSE_BRACE.add(CLOSE_BRACE490);
 
-			COMMA443=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format3rc_method5355);  
-			stream_COMMA.add(COMMA443);
+			COMMA491=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format3rc_call_site5824);  
+			stream_COMMA.add(COMMA491);
 
-			pushFollow(FOLLOW_method_reference_in_insn_format3rc_method5357);
-			method_reference444=method_reference();
+			pushFollow(FOLLOW_call_site_reference_in_insn_format3rc_call_site5826);
+			call_site_reference492=call_site_reference();
 			state._fsp--;
 
-			stream_method_reference.add(method_reference444.getTree());
+			stream_call_site_reference.add(call_site_reference492.getTree());
 			// AST REWRITE
-			// elements: register_range, INSTRUCTION_FORMAT3rc_METHOD, method_reference
+			// elements: call_site_reference, INSTRUCTION_FORMAT3rc_CALL_SITE, register_range
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -13664,9 +14902,117 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 1053:5: -> ^( I_STATEMENT_FORMAT3rc_METHOD[$start, \"I_STATEMENT_FORMAT3rc_METHOD\"] INSTRUCTION_FORMAT3rc_METHOD register_range method_reference )
+			// 1112:5: -> ^( I_STATEMENT_FORMAT3rc_CALL_SITE[$start, \"I_STATEMENT_FORMAT3rc_CALL_SITE\"] INSTRUCTION_FORMAT3rc_CALL_SITE register_range call_site_reference )
 			{
-				// smaliParser.g:1053:8: ^( I_STATEMENT_FORMAT3rc_METHOD[$start, \"I_STATEMENT_FORMAT3rc_METHOD\"] INSTRUCTION_FORMAT3rc_METHOD register_range method_reference )
+				// smaliParser.g:1112:8: ^( I_STATEMENT_FORMAT3rc_CALL_SITE[$start, \"I_STATEMENT_FORMAT3rc_CALL_SITE\"] INSTRUCTION_FORMAT3rc_CALL_SITE register_range call_site_reference )
+				{
+				CommonTree root_1 = (CommonTree)adaptor.nil();
+				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT3rc_CALL_SITE, (retval.start), "I_STATEMENT_FORMAT3rc_CALL_SITE"), root_1);
+				adaptor.addChild(root_1, stream_INSTRUCTION_FORMAT3rc_CALL_SITE.nextNode());
+				adaptor.addChild(root_1, stream_register_range.nextTree());
+				adaptor.addChild(root_1, stream_call_site_reference.nextTree());
+				adaptor.addChild(root_0, root_1);
+				}
+
+			}
+
+
+			retval.tree = root_0;
+
+			}
+
+			retval.stop = input.LT(-1);
+
+			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
+			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
+
+		}
+		catch (RecognitionException re) {
+			reportError(re);
+			recover(input,re);
+			retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
+		}
+		finally {
+			// do for sure before leaving
+		}
+		return retval;
+	}
+	// $ANTLR end "insn_format3rc_call_site"
+
+
+	public static class insn_format3rc_method_return extends ParserRuleReturnScope {
+		CommonTree tree;
+		@Override
+		public CommonTree getTree() { return tree; }
+	};
+
+
+	// $ANTLR start "insn_format3rc_method"
+	// smaliParser.g:1114:1: insn_format3rc_method : INSTRUCTION_FORMAT3rc_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA method_reference -> ^( I_STATEMENT_FORMAT3rc_METHOD[$start, \"I_STATEMENT_FORMAT3rc_METHOD\"] INSTRUCTION_FORMAT3rc_METHOD register_range method_reference ) ;
+	public final smaliParser.insn_format3rc_method_return insn_format3rc_method() throws RecognitionException {
+		smaliParser.insn_format3rc_method_return retval = new smaliParser.insn_format3rc_method_return();
+		retval.start = input.LT(1);
+
+		CommonTree root_0 = null;
+
+		Token INSTRUCTION_FORMAT3rc_METHOD493=null;
+		Token OPEN_BRACE494=null;
+		Token CLOSE_BRACE496=null;
+		Token COMMA497=null;
+		ParserRuleReturnScope register_range495 =null;
+		ParserRuleReturnScope method_reference498 =null;
+
+		CommonTree INSTRUCTION_FORMAT3rc_METHOD493_tree=null;
+		CommonTree OPEN_BRACE494_tree=null;
+		CommonTree CLOSE_BRACE496_tree=null;
+		CommonTree COMMA497_tree=null;
+		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
+		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT3rc_METHOD=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT3rc_METHOD");
+		RewriteRuleTokenStream stream_OPEN_BRACE=new RewriteRuleTokenStream(adaptor,"token OPEN_BRACE");
+		RewriteRuleTokenStream stream_CLOSE_BRACE=new RewriteRuleTokenStream(adaptor,"token CLOSE_BRACE");
+		RewriteRuleSubtreeStream stream_method_reference=new RewriteRuleSubtreeStream(adaptor,"rule method_reference");
+		RewriteRuleSubtreeStream stream_register_range=new RewriteRuleSubtreeStream(adaptor,"rule register_range");
+
+		try {
+			// smaliParser.g:1115:3: ( INSTRUCTION_FORMAT3rc_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA method_reference -> ^( I_STATEMENT_FORMAT3rc_METHOD[$start, \"I_STATEMENT_FORMAT3rc_METHOD\"] INSTRUCTION_FORMAT3rc_METHOD register_range method_reference ) )
+			// smaliParser.g:1116:5: INSTRUCTION_FORMAT3rc_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA method_reference
+			{
+			INSTRUCTION_FORMAT3rc_METHOD493=(Token)match(input,INSTRUCTION_FORMAT3rc_METHOD,FOLLOW_INSTRUCTION_FORMAT3rc_METHOD_in_insn_format3rc_method5858);  
+			stream_INSTRUCTION_FORMAT3rc_METHOD.add(INSTRUCTION_FORMAT3rc_METHOD493);
+
+			OPEN_BRACE494=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format3rc_method5860);  
+			stream_OPEN_BRACE.add(OPEN_BRACE494);
+
+			pushFollow(FOLLOW_register_range_in_insn_format3rc_method5862);
+			register_range495=register_range();
+			state._fsp--;
+
+			stream_register_range.add(register_range495.getTree());
+			CLOSE_BRACE496=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format3rc_method5864);  
+			stream_CLOSE_BRACE.add(CLOSE_BRACE496);
+
+			COMMA497=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format3rc_method5866);  
+			stream_COMMA.add(COMMA497);
+
+			pushFollow(FOLLOW_method_reference_in_insn_format3rc_method5868);
+			method_reference498=method_reference();
+			state._fsp--;
+
+			stream_method_reference.add(method_reference498.getTree());
+			// AST REWRITE
+			// elements: method_reference, INSTRUCTION_FORMAT3rc_METHOD, register_range
+			// token labels: 
+			// rule labels: retval
+			// token list labels: 
+			// rule list labels: 
+			// wildcard labels: 
+			retval.tree = root_0;
+			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
+
+			root_0 = (CommonTree)adaptor.nil();
+			// 1117:5: -> ^( I_STATEMENT_FORMAT3rc_METHOD[$start, \"I_STATEMENT_FORMAT3rc_METHOD\"] INSTRUCTION_FORMAT3rc_METHOD register_range method_reference )
+			{
+				// smaliParser.g:1117:8: ^( I_STATEMENT_FORMAT3rc_METHOD[$start, \"I_STATEMENT_FORMAT3rc_METHOD\"] INSTRUCTION_FORMAT3rc_METHOD register_range method_reference )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT3rc_METHOD, (retval.start), "I_STATEMENT_FORMAT3rc_METHOD"), root_1);
@@ -13710,62 +15056,62 @@
 
 
 	// $ANTLR start "insn_format3rc_method_odex"
-	// smaliParser.g:1055:1: insn_format3rc_method_odex : INSTRUCTION_FORMAT3rc_METHOD_ODEX OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference ;
+	// smaliParser.g:1119:1: insn_format3rc_method_odex : INSTRUCTION_FORMAT3rc_METHOD_ODEX OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference ;
 	public final smaliParser.insn_format3rc_method_odex_return insn_format3rc_method_odex() throws RecognitionException {
 		smaliParser.insn_format3rc_method_odex_return retval = new smaliParser.insn_format3rc_method_odex_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT3rc_METHOD_ODEX445=null;
-		Token OPEN_BRACE446=null;
-		Token CLOSE_BRACE448=null;
-		Token COMMA449=null;
-		ParserRuleReturnScope register_list447 =null;
-		ParserRuleReturnScope method_reference450 =null;
+		Token INSTRUCTION_FORMAT3rc_METHOD_ODEX499=null;
+		Token OPEN_BRACE500=null;
+		Token CLOSE_BRACE502=null;
+		Token COMMA503=null;
+		ParserRuleReturnScope register_list501 =null;
+		ParserRuleReturnScope method_reference504 =null;
 
-		CommonTree INSTRUCTION_FORMAT3rc_METHOD_ODEX445_tree=null;
-		CommonTree OPEN_BRACE446_tree=null;
-		CommonTree CLOSE_BRACE448_tree=null;
-		CommonTree COMMA449_tree=null;
+		CommonTree INSTRUCTION_FORMAT3rc_METHOD_ODEX499_tree=null;
+		CommonTree OPEN_BRACE500_tree=null;
+		CommonTree CLOSE_BRACE502_tree=null;
+		CommonTree COMMA503_tree=null;
 
 		try {
-			// smaliParser.g:1056:3: ( INSTRUCTION_FORMAT3rc_METHOD_ODEX OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference )
-			// smaliParser.g:1057:5: INSTRUCTION_FORMAT3rc_METHOD_ODEX OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference
+			// smaliParser.g:1120:3: ( INSTRUCTION_FORMAT3rc_METHOD_ODEX OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference )
+			// smaliParser.g:1121:5: INSTRUCTION_FORMAT3rc_METHOD_ODEX OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference
 			{
 			root_0 = (CommonTree)adaptor.nil();
 
 
-			INSTRUCTION_FORMAT3rc_METHOD_ODEX445=(Token)match(input,INSTRUCTION_FORMAT3rc_METHOD_ODEX,FOLLOW_INSTRUCTION_FORMAT3rc_METHOD_ODEX_in_insn_format3rc_method_odex5389); 
-			INSTRUCTION_FORMAT3rc_METHOD_ODEX445_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT3rc_METHOD_ODEX445);
-			adaptor.addChild(root_0, INSTRUCTION_FORMAT3rc_METHOD_ODEX445_tree);
+			INSTRUCTION_FORMAT3rc_METHOD_ODEX499=(Token)match(input,INSTRUCTION_FORMAT3rc_METHOD_ODEX,FOLLOW_INSTRUCTION_FORMAT3rc_METHOD_ODEX_in_insn_format3rc_method_odex5900); 
+			INSTRUCTION_FORMAT3rc_METHOD_ODEX499_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT3rc_METHOD_ODEX499);
+			adaptor.addChild(root_0, INSTRUCTION_FORMAT3rc_METHOD_ODEX499_tree);
 
-			OPEN_BRACE446=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format3rc_method_odex5391); 
-			OPEN_BRACE446_tree = (CommonTree)adaptor.create(OPEN_BRACE446);
-			adaptor.addChild(root_0, OPEN_BRACE446_tree);
+			OPEN_BRACE500=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format3rc_method_odex5902); 
+			OPEN_BRACE500_tree = (CommonTree)adaptor.create(OPEN_BRACE500);
+			adaptor.addChild(root_0, OPEN_BRACE500_tree);
 
-			pushFollow(FOLLOW_register_list_in_insn_format3rc_method_odex5393);
-			register_list447=register_list();
+			pushFollow(FOLLOW_register_list_in_insn_format3rc_method_odex5904);
+			register_list501=register_list();
 			state._fsp--;
 
-			adaptor.addChild(root_0, register_list447.getTree());
+			adaptor.addChild(root_0, register_list501.getTree());
 
-			CLOSE_BRACE448=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format3rc_method_odex5395); 
-			CLOSE_BRACE448_tree = (CommonTree)adaptor.create(CLOSE_BRACE448);
-			adaptor.addChild(root_0, CLOSE_BRACE448_tree);
+			CLOSE_BRACE502=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format3rc_method_odex5906); 
+			CLOSE_BRACE502_tree = (CommonTree)adaptor.create(CLOSE_BRACE502);
+			adaptor.addChild(root_0, CLOSE_BRACE502_tree);
 
-			COMMA449=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format3rc_method_odex5397); 
-			COMMA449_tree = (CommonTree)adaptor.create(COMMA449);
-			adaptor.addChild(root_0, COMMA449_tree);
+			COMMA503=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format3rc_method_odex5908); 
+			COMMA503_tree = (CommonTree)adaptor.create(COMMA503);
+			adaptor.addChild(root_0, COMMA503_tree);
 
-			pushFollow(FOLLOW_method_reference_in_insn_format3rc_method_odex5399);
-			method_reference450=method_reference();
+			pushFollow(FOLLOW_method_reference_in_insn_format3rc_method_odex5910);
+			method_reference504=method_reference();
 			state._fsp--;
 
-			adaptor.addChild(root_0, method_reference450.getTree());
+			adaptor.addChild(root_0, method_reference504.getTree());
 
 
-			      throwOdexedInstructionException(input, (INSTRUCTION_FORMAT3rc_METHOD_ODEX445!=null?INSTRUCTION_FORMAT3rc_METHOD_ODEX445.getText():null));
+			      throwOdexedInstructionException(input, (INSTRUCTION_FORMAT3rc_METHOD_ODEX499!=null?INSTRUCTION_FORMAT3rc_METHOD_ODEX499.getText():null));
 			    
 			}
 
@@ -13796,24 +15142,24 @@
 
 
 	// $ANTLR start "insn_format3rc_type"
-	// smaliParser.g:1062:1: insn_format3rc_type : INSTRUCTION_FORMAT3rc_TYPE OPEN_BRACE register_range CLOSE_BRACE COMMA nonvoid_type_descriptor -> ^( I_STATEMENT_FORMAT3rc_TYPE[$start, \"I_STATEMENT_FORMAT3rc_TYPE\"] INSTRUCTION_FORMAT3rc_TYPE register_range nonvoid_type_descriptor ) ;
+	// smaliParser.g:1126:1: insn_format3rc_type : INSTRUCTION_FORMAT3rc_TYPE OPEN_BRACE register_range CLOSE_BRACE COMMA nonvoid_type_descriptor -> ^( I_STATEMENT_FORMAT3rc_TYPE[$start, \"I_STATEMENT_FORMAT3rc_TYPE\"] INSTRUCTION_FORMAT3rc_TYPE register_range nonvoid_type_descriptor ) ;
 	public final smaliParser.insn_format3rc_type_return insn_format3rc_type() throws RecognitionException {
 		smaliParser.insn_format3rc_type_return retval = new smaliParser.insn_format3rc_type_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT3rc_TYPE451=null;
-		Token OPEN_BRACE452=null;
-		Token CLOSE_BRACE454=null;
-		Token COMMA455=null;
-		ParserRuleReturnScope register_range453 =null;
-		ParserRuleReturnScope nonvoid_type_descriptor456 =null;
+		Token INSTRUCTION_FORMAT3rc_TYPE505=null;
+		Token OPEN_BRACE506=null;
+		Token CLOSE_BRACE508=null;
+		Token COMMA509=null;
+		ParserRuleReturnScope register_range507 =null;
+		ParserRuleReturnScope nonvoid_type_descriptor510 =null;
 
-		CommonTree INSTRUCTION_FORMAT3rc_TYPE451_tree=null;
-		CommonTree OPEN_BRACE452_tree=null;
-		CommonTree CLOSE_BRACE454_tree=null;
-		CommonTree COMMA455_tree=null;
+		CommonTree INSTRUCTION_FORMAT3rc_TYPE505_tree=null;
+		CommonTree OPEN_BRACE506_tree=null;
+		CommonTree CLOSE_BRACE508_tree=null;
+		CommonTree COMMA509_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_OPEN_BRACE=new RewriteRuleTokenStream(adaptor,"token OPEN_BRACE");
 		RewriteRuleTokenStream stream_CLOSE_BRACE=new RewriteRuleTokenStream(adaptor,"token CLOSE_BRACE");
@@ -13822,33 +15168,33 @@
 		RewriteRuleSubtreeStream stream_register_range=new RewriteRuleSubtreeStream(adaptor,"rule register_range");
 
 		try {
-			// smaliParser.g:1063:3: ( INSTRUCTION_FORMAT3rc_TYPE OPEN_BRACE register_range CLOSE_BRACE COMMA nonvoid_type_descriptor -> ^( I_STATEMENT_FORMAT3rc_TYPE[$start, \"I_STATEMENT_FORMAT3rc_TYPE\"] INSTRUCTION_FORMAT3rc_TYPE register_range nonvoid_type_descriptor ) )
-			// smaliParser.g:1064:5: INSTRUCTION_FORMAT3rc_TYPE OPEN_BRACE register_range CLOSE_BRACE COMMA nonvoid_type_descriptor
+			// smaliParser.g:1127:3: ( INSTRUCTION_FORMAT3rc_TYPE OPEN_BRACE register_range CLOSE_BRACE COMMA nonvoid_type_descriptor -> ^( I_STATEMENT_FORMAT3rc_TYPE[$start, \"I_STATEMENT_FORMAT3rc_TYPE\"] INSTRUCTION_FORMAT3rc_TYPE register_range nonvoid_type_descriptor ) )
+			// smaliParser.g:1128:5: INSTRUCTION_FORMAT3rc_TYPE OPEN_BRACE register_range CLOSE_BRACE COMMA nonvoid_type_descriptor
 			{
-			INSTRUCTION_FORMAT3rc_TYPE451=(Token)match(input,INSTRUCTION_FORMAT3rc_TYPE,FOLLOW_INSTRUCTION_FORMAT3rc_TYPE_in_insn_format3rc_type5420);  
-			stream_INSTRUCTION_FORMAT3rc_TYPE.add(INSTRUCTION_FORMAT3rc_TYPE451);
+			INSTRUCTION_FORMAT3rc_TYPE505=(Token)match(input,INSTRUCTION_FORMAT3rc_TYPE,FOLLOW_INSTRUCTION_FORMAT3rc_TYPE_in_insn_format3rc_type5931);  
+			stream_INSTRUCTION_FORMAT3rc_TYPE.add(INSTRUCTION_FORMAT3rc_TYPE505);
 
-			OPEN_BRACE452=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format3rc_type5422);  
-			stream_OPEN_BRACE.add(OPEN_BRACE452);
+			OPEN_BRACE506=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format3rc_type5933);  
+			stream_OPEN_BRACE.add(OPEN_BRACE506);
 
-			pushFollow(FOLLOW_register_range_in_insn_format3rc_type5424);
-			register_range453=register_range();
+			pushFollow(FOLLOW_register_range_in_insn_format3rc_type5935);
+			register_range507=register_range();
 			state._fsp--;
 
-			stream_register_range.add(register_range453.getTree());
-			CLOSE_BRACE454=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format3rc_type5426);  
-			stream_CLOSE_BRACE.add(CLOSE_BRACE454);
+			stream_register_range.add(register_range507.getTree());
+			CLOSE_BRACE508=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format3rc_type5937);  
+			stream_CLOSE_BRACE.add(CLOSE_BRACE508);
 
-			COMMA455=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format3rc_type5428);  
-			stream_COMMA.add(COMMA455);
+			COMMA509=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format3rc_type5939);  
+			stream_COMMA.add(COMMA509);
 
-			pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format3rc_type5430);
-			nonvoid_type_descriptor456=nonvoid_type_descriptor();
+			pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format3rc_type5941);
+			nonvoid_type_descriptor510=nonvoid_type_descriptor();
 			state._fsp--;
 
-			stream_nonvoid_type_descriptor.add(nonvoid_type_descriptor456.getTree());
+			stream_nonvoid_type_descriptor.add(nonvoid_type_descriptor510.getTree());
 			// AST REWRITE
-			// elements: nonvoid_type_descriptor, INSTRUCTION_FORMAT3rc_TYPE, register_range
+			// elements: register_range, INSTRUCTION_FORMAT3rc_TYPE, nonvoid_type_descriptor
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -13858,9 +15204,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 1065:5: -> ^( I_STATEMENT_FORMAT3rc_TYPE[$start, \"I_STATEMENT_FORMAT3rc_TYPE\"] INSTRUCTION_FORMAT3rc_TYPE register_range nonvoid_type_descriptor )
+			// 1129:5: -> ^( I_STATEMENT_FORMAT3rc_TYPE[$start, \"I_STATEMENT_FORMAT3rc_TYPE\"] INSTRUCTION_FORMAT3rc_TYPE register_range nonvoid_type_descriptor )
 			{
-				// smaliParser.g:1065:8: ^( I_STATEMENT_FORMAT3rc_TYPE[$start, \"I_STATEMENT_FORMAT3rc_TYPE\"] INSTRUCTION_FORMAT3rc_TYPE register_range nonvoid_type_descriptor )
+				// smaliParser.g:1129:8: ^( I_STATEMENT_FORMAT3rc_TYPE[$start, \"I_STATEMENT_FORMAT3rc_TYPE\"] INSTRUCTION_FORMAT3rc_TYPE register_range nonvoid_type_descriptor )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT3rc_TYPE, (retval.start), "I_STATEMENT_FORMAT3rc_TYPE"), root_1);
@@ -13904,61 +15250,61 @@
 
 
 	// $ANTLR start "insn_format3rmi_method"
-	// smaliParser.g:1067:1: insn_format3rmi_method : INSTRUCTION_FORMAT3rmi_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA INLINE_INDEX ;
+	// smaliParser.g:1131:1: insn_format3rmi_method : INSTRUCTION_FORMAT3rmi_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA INLINE_INDEX ;
 	public final smaliParser.insn_format3rmi_method_return insn_format3rmi_method() throws RecognitionException {
 		smaliParser.insn_format3rmi_method_return retval = new smaliParser.insn_format3rmi_method_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT3rmi_METHOD457=null;
-		Token OPEN_BRACE458=null;
-		Token CLOSE_BRACE460=null;
-		Token COMMA461=null;
-		Token INLINE_INDEX462=null;
-		ParserRuleReturnScope register_range459 =null;
+		Token INSTRUCTION_FORMAT3rmi_METHOD511=null;
+		Token OPEN_BRACE512=null;
+		Token CLOSE_BRACE514=null;
+		Token COMMA515=null;
+		Token INLINE_INDEX516=null;
+		ParserRuleReturnScope register_range513 =null;
 
-		CommonTree INSTRUCTION_FORMAT3rmi_METHOD457_tree=null;
-		CommonTree OPEN_BRACE458_tree=null;
-		CommonTree CLOSE_BRACE460_tree=null;
-		CommonTree COMMA461_tree=null;
-		CommonTree INLINE_INDEX462_tree=null;
+		CommonTree INSTRUCTION_FORMAT3rmi_METHOD511_tree=null;
+		CommonTree OPEN_BRACE512_tree=null;
+		CommonTree CLOSE_BRACE514_tree=null;
+		CommonTree COMMA515_tree=null;
+		CommonTree INLINE_INDEX516_tree=null;
 
 		try {
-			// smaliParser.g:1068:3: ( INSTRUCTION_FORMAT3rmi_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA INLINE_INDEX )
-			// smaliParser.g:1069:5: INSTRUCTION_FORMAT3rmi_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA INLINE_INDEX
+			// smaliParser.g:1132:3: ( INSTRUCTION_FORMAT3rmi_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA INLINE_INDEX )
+			// smaliParser.g:1133:5: INSTRUCTION_FORMAT3rmi_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA INLINE_INDEX
 			{
 			root_0 = (CommonTree)adaptor.nil();
 
 
-			INSTRUCTION_FORMAT3rmi_METHOD457=(Token)match(input,INSTRUCTION_FORMAT3rmi_METHOD,FOLLOW_INSTRUCTION_FORMAT3rmi_METHOD_in_insn_format3rmi_method5462); 
-			INSTRUCTION_FORMAT3rmi_METHOD457_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT3rmi_METHOD457);
-			adaptor.addChild(root_0, INSTRUCTION_FORMAT3rmi_METHOD457_tree);
+			INSTRUCTION_FORMAT3rmi_METHOD511=(Token)match(input,INSTRUCTION_FORMAT3rmi_METHOD,FOLLOW_INSTRUCTION_FORMAT3rmi_METHOD_in_insn_format3rmi_method5973); 
+			INSTRUCTION_FORMAT3rmi_METHOD511_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT3rmi_METHOD511);
+			adaptor.addChild(root_0, INSTRUCTION_FORMAT3rmi_METHOD511_tree);
 
-			OPEN_BRACE458=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format3rmi_method5464); 
-			OPEN_BRACE458_tree = (CommonTree)adaptor.create(OPEN_BRACE458);
-			adaptor.addChild(root_0, OPEN_BRACE458_tree);
+			OPEN_BRACE512=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format3rmi_method5975); 
+			OPEN_BRACE512_tree = (CommonTree)adaptor.create(OPEN_BRACE512);
+			adaptor.addChild(root_0, OPEN_BRACE512_tree);
 
-			pushFollow(FOLLOW_register_range_in_insn_format3rmi_method5466);
-			register_range459=register_range();
+			pushFollow(FOLLOW_register_range_in_insn_format3rmi_method5977);
+			register_range513=register_range();
 			state._fsp--;
 
-			adaptor.addChild(root_0, register_range459.getTree());
+			adaptor.addChild(root_0, register_range513.getTree());
 
-			CLOSE_BRACE460=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format3rmi_method5468); 
-			CLOSE_BRACE460_tree = (CommonTree)adaptor.create(CLOSE_BRACE460);
-			adaptor.addChild(root_0, CLOSE_BRACE460_tree);
+			CLOSE_BRACE514=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format3rmi_method5979); 
+			CLOSE_BRACE514_tree = (CommonTree)adaptor.create(CLOSE_BRACE514);
+			adaptor.addChild(root_0, CLOSE_BRACE514_tree);
 
-			COMMA461=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format3rmi_method5470); 
-			COMMA461_tree = (CommonTree)adaptor.create(COMMA461);
-			adaptor.addChild(root_0, COMMA461_tree);
+			COMMA515=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format3rmi_method5981); 
+			COMMA515_tree = (CommonTree)adaptor.create(COMMA515);
+			adaptor.addChild(root_0, COMMA515_tree);
 
-			INLINE_INDEX462=(Token)match(input,INLINE_INDEX,FOLLOW_INLINE_INDEX_in_insn_format3rmi_method5472); 
-			INLINE_INDEX462_tree = (CommonTree)adaptor.create(INLINE_INDEX462);
-			adaptor.addChild(root_0, INLINE_INDEX462_tree);
+			INLINE_INDEX516=(Token)match(input,INLINE_INDEX,FOLLOW_INLINE_INDEX_in_insn_format3rmi_method5983); 
+			INLINE_INDEX516_tree = (CommonTree)adaptor.create(INLINE_INDEX516);
+			adaptor.addChild(root_0, INLINE_INDEX516_tree);
 
 
-			      throwOdexedInstructionException(input, (INSTRUCTION_FORMAT3rmi_METHOD457!=null?INSTRUCTION_FORMAT3rmi_METHOD457.getText():null));
+			      throwOdexedInstructionException(input, (INSTRUCTION_FORMAT3rmi_METHOD511!=null?INSTRUCTION_FORMAT3rmi_METHOD511.getText():null));
 			    
 			}
 
@@ -13989,61 +15335,61 @@
 
 
 	// $ANTLR start "insn_format3rms_method"
-	// smaliParser.g:1074:1: insn_format3rms_method : INSTRUCTION_FORMAT3rms_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA VTABLE_INDEX ;
+	// smaliParser.g:1138:1: insn_format3rms_method : INSTRUCTION_FORMAT3rms_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA VTABLE_INDEX ;
 	public final smaliParser.insn_format3rms_method_return insn_format3rms_method() throws RecognitionException {
 		smaliParser.insn_format3rms_method_return retval = new smaliParser.insn_format3rms_method_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT3rms_METHOD463=null;
-		Token OPEN_BRACE464=null;
-		Token CLOSE_BRACE466=null;
-		Token COMMA467=null;
-		Token VTABLE_INDEX468=null;
-		ParserRuleReturnScope register_range465 =null;
+		Token INSTRUCTION_FORMAT3rms_METHOD517=null;
+		Token OPEN_BRACE518=null;
+		Token CLOSE_BRACE520=null;
+		Token COMMA521=null;
+		Token VTABLE_INDEX522=null;
+		ParserRuleReturnScope register_range519 =null;
 
-		CommonTree INSTRUCTION_FORMAT3rms_METHOD463_tree=null;
-		CommonTree OPEN_BRACE464_tree=null;
-		CommonTree CLOSE_BRACE466_tree=null;
-		CommonTree COMMA467_tree=null;
-		CommonTree VTABLE_INDEX468_tree=null;
+		CommonTree INSTRUCTION_FORMAT3rms_METHOD517_tree=null;
+		CommonTree OPEN_BRACE518_tree=null;
+		CommonTree CLOSE_BRACE520_tree=null;
+		CommonTree COMMA521_tree=null;
+		CommonTree VTABLE_INDEX522_tree=null;
 
 		try {
-			// smaliParser.g:1075:3: ( INSTRUCTION_FORMAT3rms_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA VTABLE_INDEX )
-			// smaliParser.g:1076:5: INSTRUCTION_FORMAT3rms_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA VTABLE_INDEX
+			// smaliParser.g:1139:3: ( INSTRUCTION_FORMAT3rms_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA VTABLE_INDEX )
+			// smaliParser.g:1140:5: INSTRUCTION_FORMAT3rms_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA VTABLE_INDEX
 			{
 			root_0 = (CommonTree)adaptor.nil();
 
 
-			INSTRUCTION_FORMAT3rms_METHOD463=(Token)match(input,INSTRUCTION_FORMAT3rms_METHOD,FOLLOW_INSTRUCTION_FORMAT3rms_METHOD_in_insn_format3rms_method5493); 
-			INSTRUCTION_FORMAT3rms_METHOD463_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT3rms_METHOD463);
-			adaptor.addChild(root_0, INSTRUCTION_FORMAT3rms_METHOD463_tree);
+			INSTRUCTION_FORMAT3rms_METHOD517=(Token)match(input,INSTRUCTION_FORMAT3rms_METHOD,FOLLOW_INSTRUCTION_FORMAT3rms_METHOD_in_insn_format3rms_method6004); 
+			INSTRUCTION_FORMAT3rms_METHOD517_tree = (CommonTree)adaptor.create(INSTRUCTION_FORMAT3rms_METHOD517);
+			adaptor.addChild(root_0, INSTRUCTION_FORMAT3rms_METHOD517_tree);
 
-			OPEN_BRACE464=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format3rms_method5495); 
-			OPEN_BRACE464_tree = (CommonTree)adaptor.create(OPEN_BRACE464);
-			adaptor.addChild(root_0, OPEN_BRACE464_tree);
+			OPEN_BRACE518=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format3rms_method6006); 
+			OPEN_BRACE518_tree = (CommonTree)adaptor.create(OPEN_BRACE518);
+			adaptor.addChild(root_0, OPEN_BRACE518_tree);
 
-			pushFollow(FOLLOW_register_range_in_insn_format3rms_method5497);
-			register_range465=register_range();
+			pushFollow(FOLLOW_register_range_in_insn_format3rms_method6008);
+			register_range519=register_range();
 			state._fsp--;
 
-			adaptor.addChild(root_0, register_range465.getTree());
+			adaptor.addChild(root_0, register_range519.getTree());
 
-			CLOSE_BRACE466=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format3rms_method5499); 
-			CLOSE_BRACE466_tree = (CommonTree)adaptor.create(CLOSE_BRACE466);
-			adaptor.addChild(root_0, CLOSE_BRACE466_tree);
+			CLOSE_BRACE520=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format3rms_method6010); 
+			CLOSE_BRACE520_tree = (CommonTree)adaptor.create(CLOSE_BRACE520);
+			adaptor.addChild(root_0, CLOSE_BRACE520_tree);
 
-			COMMA467=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format3rms_method5501); 
-			COMMA467_tree = (CommonTree)adaptor.create(COMMA467);
-			adaptor.addChild(root_0, COMMA467_tree);
+			COMMA521=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format3rms_method6012); 
+			COMMA521_tree = (CommonTree)adaptor.create(COMMA521);
+			adaptor.addChild(root_0, COMMA521_tree);
 
-			VTABLE_INDEX468=(Token)match(input,VTABLE_INDEX,FOLLOW_VTABLE_INDEX_in_insn_format3rms_method5503); 
-			VTABLE_INDEX468_tree = (CommonTree)adaptor.create(VTABLE_INDEX468);
-			adaptor.addChild(root_0, VTABLE_INDEX468_tree);
+			VTABLE_INDEX522=(Token)match(input,VTABLE_INDEX,FOLLOW_VTABLE_INDEX_in_insn_format3rms_method6014); 
+			VTABLE_INDEX522_tree = (CommonTree)adaptor.create(VTABLE_INDEX522);
+			adaptor.addChild(root_0, VTABLE_INDEX522_tree);
 
 
-			      throwOdexedInstructionException(input, (INSTRUCTION_FORMAT3rms_METHOD463!=null?INSTRUCTION_FORMAT3rms_METHOD463.getText():null));
+			      throwOdexedInstructionException(input, (INSTRUCTION_FORMAT3rms_METHOD517!=null?INSTRUCTION_FORMAT3rms_METHOD517.getText():null));
 			    
 			}
 
@@ -14074,27 +15420,27 @@
 
 
 	// $ANTLR start "insn_format45cc_method"
-	// smaliParser.g:1081:1: insn_format45cc_method : INSTRUCTION_FORMAT45cc_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference COMMA method_prototype -> ^( I_STATEMENT_FORMAT45cc_METHOD[$start, \"I_STATEMENT_FORMAT45cc_METHOD\"] INSTRUCTION_FORMAT45cc_METHOD register_list method_reference method_prototype ) ;
+	// smaliParser.g:1145:1: insn_format45cc_method : INSTRUCTION_FORMAT45cc_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference COMMA method_prototype -> ^( I_STATEMENT_FORMAT45cc_METHOD[$start, \"I_STATEMENT_FORMAT45cc_METHOD\"] INSTRUCTION_FORMAT45cc_METHOD register_list method_reference method_prototype ) ;
 	public final smaliParser.insn_format45cc_method_return insn_format45cc_method() throws RecognitionException {
 		smaliParser.insn_format45cc_method_return retval = new smaliParser.insn_format45cc_method_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT45cc_METHOD469=null;
-		Token OPEN_BRACE470=null;
-		Token CLOSE_BRACE472=null;
-		Token COMMA473=null;
-		Token COMMA475=null;
-		ParserRuleReturnScope register_list471 =null;
-		ParserRuleReturnScope method_reference474 =null;
-		ParserRuleReturnScope method_prototype476 =null;
+		Token INSTRUCTION_FORMAT45cc_METHOD523=null;
+		Token OPEN_BRACE524=null;
+		Token CLOSE_BRACE526=null;
+		Token COMMA527=null;
+		Token COMMA529=null;
+		ParserRuleReturnScope register_list525 =null;
+		ParserRuleReturnScope method_reference528 =null;
+		ParserRuleReturnScope method_prototype530 =null;
 
-		CommonTree INSTRUCTION_FORMAT45cc_METHOD469_tree=null;
-		CommonTree OPEN_BRACE470_tree=null;
-		CommonTree CLOSE_BRACE472_tree=null;
-		CommonTree COMMA473_tree=null;
-		CommonTree COMMA475_tree=null;
+		CommonTree INSTRUCTION_FORMAT45cc_METHOD523_tree=null;
+		CommonTree OPEN_BRACE524_tree=null;
+		CommonTree CLOSE_BRACE526_tree=null;
+		CommonTree COMMA527_tree=null;
+		CommonTree COMMA529_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT45cc_METHOD=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT45cc_METHOD");
 		RewriteRuleTokenStream stream_OPEN_BRACE=new RewriteRuleTokenStream(adaptor,"token OPEN_BRACE");
@@ -14104,39 +15450,39 @@
 		RewriteRuleSubtreeStream stream_register_list=new RewriteRuleSubtreeStream(adaptor,"rule register_list");
 
 		try {
-			// smaliParser.g:1082:3: ( INSTRUCTION_FORMAT45cc_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference COMMA method_prototype -> ^( I_STATEMENT_FORMAT45cc_METHOD[$start, \"I_STATEMENT_FORMAT45cc_METHOD\"] INSTRUCTION_FORMAT45cc_METHOD register_list method_reference method_prototype ) )
-			// smaliParser.g:1083:5: INSTRUCTION_FORMAT45cc_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference COMMA method_prototype
+			// smaliParser.g:1146:3: ( INSTRUCTION_FORMAT45cc_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference COMMA method_prototype -> ^( I_STATEMENT_FORMAT45cc_METHOD[$start, \"I_STATEMENT_FORMAT45cc_METHOD\"] INSTRUCTION_FORMAT45cc_METHOD register_list method_reference method_prototype ) )
+			// smaliParser.g:1147:5: INSTRUCTION_FORMAT45cc_METHOD OPEN_BRACE register_list CLOSE_BRACE COMMA method_reference COMMA method_prototype
 			{
-			INSTRUCTION_FORMAT45cc_METHOD469=(Token)match(input,INSTRUCTION_FORMAT45cc_METHOD,FOLLOW_INSTRUCTION_FORMAT45cc_METHOD_in_insn_format45cc_method5524);  
-			stream_INSTRUCTION_FORMAT45cc_METHOD.add(INSTRUCTION_FORMAT45cc_METHOD469);
+			INSTRUCTION_FORMAT45cc_METHOD523=(Token)match(input,INSTRUCTION_FORMAT45cc_METHOD,FOLLOW_INSTRUCTION_FORMAT45cc_METHOD_in_insn_format45cc_method6035);  
+			stream_INSTRUCTION_FORMAT45cc_METHOD.add(INSTRUCTION_FORMAT45cc_METHOD523);
 
-			OPEN_BRACE470=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format45cc_method5526);  
-			stream_OPEN_BRACE.add(OPEN_BRACE470);
+			OPEN_BRACE524=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format45cc_method6037);  
+			stream_OPEN_BRACE.add(OPEN_BRACE524);
 
-			pushFollow(FOLLOW_register_list_in_insn_format45cc_method5528);
-			register_list471=register_list();
+			pushFollow(FOLLOW_register_list_in_insn_format45cc_method6039);
+			register_list525=register_list();
 			state._fsp--;
 
-			stream_register_list.add(register_list471.getTree());
-			CLOSE_BRACE472=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format45cc_method5530);  
-			stream_CLOSE_BRACE.add(CLOSE_BRACE472);
+			stream_register_list.add(register_list525.getTree());
+			CLOSE_BRACE526=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format45cc_method6041);  
+			stream_CLOSE_BRACE.add(CLOSE_BRACE526);
 
-			COMMA473=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format45cc_method5532);  
-			stream_COMMA.add(COMMA473);
+			COMMA527=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format45cc_method6043);  
+			stream_COMMA.add(COMMA527);
 
-			pushFollow(FOLLOW_method_reference_in_insn_format45cc_method5534);
-			method_reference474=method_reference();
+			pushFollow(FOLLOW_method_reference_in_insn_format45cc_method6045);
+			method_reference528=method_reference();
 			state._fsp--;
 
-			stream_method_reference.add(method_reference474.getTree());
-			COMMA475=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format45cc_method5536);  
-			stream_COMMA.add(COMMA475);
+			stream_method_reference.add(method_reference528.getTree());
+			COMMA529=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format45cc_method6047);  
+			stream_COMMA.add(COMMA529);
 
-			pushFollow(FOLLOW_method_prototype_in_insn_format45cc_method5538);
-			method_prototype476=method_prototype();
+			pushFollow(FOLLOW_method_prototype_in_insn_format45cc_method6049);
+			method_prototype530=method_prototype();
 			state._fsp--;
 
-			stream_method_prototype.add(method_prototype476.getTree());
+			stream_method_prototype.add(method_prototype530.getTree());
 			// AST REWRITE
 			// elements: method_reference, method_prototype, INSTRUCTION_FORMAT45cc_METHOD, register_list
 			// token labels: 
@@ -14148,9 +15494,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 1084:5: -> ^( I_STATEMENT_FORMAT45cc_METHOD[$start, \"I_STATEMENT_FORMAT45cc_METHOD\"] INSTRUCTION_FORMAT45cc_METHOD register_list method_reference method_prototype )
+			// 1148:5: -> ^( I_STATEMENT_FORMAT45cc_METHOD[$start, \"I_STATEMENT_FORMAT45cc_METHOD\"] INSTRUCTION_FORMAT45cc_METHOD register_list method_reference method_prototype )
 			{
-				// smaliParser.g:1084:8: ^( I_STATEMENT_FORMAT45cc_METHOD[$start, \"I_STATEMENT_FORMAT45cc_METHOD\"] INSTRUCTION_FORMAT45cc_METHOD register_list method_reference method_prototype )
+				// smaliParser.g:1148:8: ^( I_STATEMENT_FORMAT45cc_METHOD[$start, \"I_STATEMENT_FORMAT45cc_METHOD\"] INSTRUCTION_FORMAT45cc_METHOD register_list method_reference method_prototype )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT45cc_METHOD, (retval.start), "I_STATEMENT_FORMAT45cc_METHOD"), root_1);
@@ -14195,27 +15541,27 @@
 
 
 	// $ANTLR start "insn_format4rcc_method"
-	// smaliParser.g:1086:1: insn_format4rcc_method : INSTRUCTION_FORMAT4rcc_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA method_reference COMMA method_prototype -> ^( I_STATEMENT_FORMAT4rcc_METHOD[$start, \"I_STATEMENT_FORMAT4rcc_METHOD\"] INSTRUCTION_FORMAT4rcc_METHOD register_range method_reference method_prototype ) ;
+	// smaliParser.g:1150:1: insn_format4rcc_method : INSTRUCTION_FORMAT4rcc_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA method_reference COMMA method_prototype -> ^( I_STATEMENT_FORMAT4rcc_METHOD[$start, \"I_STATEMENT_FORMAT4rcc_METHOD\"] INSTRUCTION_FORMAT4rcc_METHOD register_range method_reference method_prototype ) ;
 	public final smaliParser.insn_format4rcc_method_return insn_format4rcc_method() throws RecognitionException {
 		smaliParser.insn_format4rcc_method_return retval = new smaliParser.insn_format4rcc_method_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT4rcc_METHOD477=null;
-		Token OPEN_BRACE478=null;
-		Token CLOSE_BRACE480=null;
-		Token COMMA481=null;
-		Token COMMA483=null;
-		ParserRuleReturnScope register_range479 =null;
-		ParserRuleReturnScope method_reference482 =null;
-		ParserRuleReturnScope method_prototype484 =null;
+		Token INSTRUCTION_FORMAT4rcc_METHOD531=null;
+		Token OPEN_BRACE532=null;
+		Token CLOSE_BRACE534=null;
+		Token COMMA535=null;
+		Token COMMA537=null;
+		ParserRuleReturnScope register_range533 =null;
+		ParserRuleReturnScope method_reference536 =null;
+		ParserRuleReturnScope method_prototype538 =null;
 
-		CommonTree INSTRUCTION_FORMAT4rcc_METHOD477_tree=null;
-		CommonTree OPEN_BRACE478_tree=null;
-		CommonTree CLOSE_BRACE480_tree=null;
-		CommonTree COMMA481_tree=null;
-		CommonTree COMMA483_tree=null;
+		CommonTree INSTRUCTION_FORMAT4rcc_METHOD531_tree=null;
+		CommonTree OPEN_BRACE532_tree=null;
+		CommonTree CLOSE_BRACE534_tree=null;
+		CommonTree COMMA535_tree=null;
+		CommonTree COMMA537_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_OPEN_BRACE=new RewriteRuleTokenStream(adaptor,"token OPEN_BRACE");
 		RewriteRuleTokenStream stream_CLOSE_BRACE=new RewriteRuleTokenStream(adaptor,"token CLOSE_BRACE");
@@ -14225,41 +15571,41 @@
 		RewriteRuleSubtreeStream stream_register_range=new RewriteRuleSubtreeStream(adaptor,"rule register_range");
 
 		try {
-			// smaliParser.g:1087:3: ( INSTRUCTION_FORMAT4rcc_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA method_reference COMMA method_prototype -> ^( I_STATEMENT_FORMAT4rcc_METHOD[$start, \"I_STATEMENT_FORMAT4rcc_METHOD\"] INSTRUCTION_FORMAT4rcc_METHOD register_range method_reference method_prototype ) )
-			// smaliParser.g:1088:5: INSTRUCTION_FORMAT4rcc_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA method_reference COMMA method_prototype
+			// smaliParser.g:1151:3: ( INSTRUCTION_FORMAT4rcc_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA method_reference COMMA method_prototype -> ^( I_STATEMENT_FORMAT4rcc_METHOD[$start, \"I_STATEMENT_FORMAT4rcc_METHOD\"] INSTRUCTION_FORMAT4rcc_METHOD register_range method_reference method_prototype ) )
+			// smaliParser.g:1152:5: INSTRUCTION_FORMAT4rcc_METHOD OPEN_BRACE register_range CLOSE_BRACE COMMA method_reference COMMA method_prototype
 			{
-			INSTRUCTION_FORMAT4rcc_METHOD477=(Token)match(input,INSTRUCTION_FORMAT4rcc_METHOD,FOLLOW_INSTRUCTION_FORMAT4rcc_METHOD_in_insn_format4rcc_method5572);  
-			stream_INSTRUCTION_FORMAT4rcc_METHOD.add(INSTRUCTION_FORMAT4rcc_METHOD477);
+			INSTRUCTION_FORMAT4rcc_METHOD531=(Token)match(input,INSTRUCTION_FORMAT4rcc_METHOD,FOLLOW_INSTRUCTION_FORMAT4rcc_METHOD_in_insn_format4rcc_method6083);  
+			stream_INSTRUCTION_FORMAT4rcc_METHOD.add(INSTRUCTION_FORMAT4rcc_METHOD531);
 
-			OPEN_BRACE478=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format4rcc_method5574);  
-			stream_OPEN_BRACE.add(OPEN_BRACE478);
+			OPEN_BRACE532=(Token)match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_insn_format4rcc_method6085);  
+			stream_OPEN_BRACE.add(OPEN_BRACE532);
 
-			pushFollow(FOLLOW_register_range_in_insn_format4rcc_method5576);
-			register_range479=register_range();
+			pushFollow(FOLLOW_register_range_in_insn_format4rcc_method6087);
+			register_range533=register_range();
 			state._fsp--;
 
-			stream_register_range.add(register_range479.getTree());
-			CLOSE_BRACE480=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format4rcc_method5578);  
-			stream_CLOSE_BRACE.add(CLOSE_BRACE480);
+			stream_register_range.add(register_range533.getTree());
+			CLOSE_BRACE534=(Token)match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_insn_format4rcc_method6089);  
+			stream_CLOSE_BRACE.add(CLOSE_BRACE534);
 
-			COMMA481=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format4rcc_method5580);  
-			stream_COMMA.add(COMMA481);
+			COMMA535=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format4rcc_method6091);  
+			stream_COMMA.add(COMMA535);
 
-			pushFollow(FOLLOW_method_reference_in_insn_format4rcc_method5582);
-			method_reference482=method_reference();
+			pushFollow(FOLLOW_method_reference_in_insn_format4rcc_method6093);
+			method_reference536=method_reference();
 			state._fsp--;
 
-			stream_method_reference.add(method_reference482.getTree());
-			COMMA483=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format4rcc_method5584);  
-			stream_COMMA.add(COMMA483);
+			stream_method_reference.add(method_reference536.getTree());
+			COMMA537=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format4rcc_method6095);  
+			stream_COMMA.add(COMMA537);
 
-			pushFollow(FOLLOW_method_prototype_in_insn_format4rcc_method5586);
-			method_prototype484=method_prototype();
+			pushFollow(FOLLOW_method_prototype_in_insn_format4rcc_method6097);
+			method_prototype538=method_prototype();
 			state._fsp--;
 
-			stream_method_prototype.add(method_prototype484.getTree());
+			stream_method_prototype.add(method_prototype538.getTree());
 			// AST REWRITE
-			// elements: register_range, INSTRUCTION_FORMAT4rcc_METHOD, method_reference, method_prototype
+			// elements: INSTRUCTION_FORMAT4rcc_METHOD, method_prototype, method_reference, register_range
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -14269,9 +15615,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 1089:5: -> ^( I_STATEMENT_FORMAT4rcc_METHOD[$start, \"I_STATEMENT_FORMAT4rcc_METHOD\"] INSTRUCTION_FORMAT4rcc_METHOD register_range method_reference method_prototype )
+			// 1153:5: -> ^( I_STATEMENT_FORMAT4rcc_METHOD[$start, \"I_STATEMENT_FORMAT4rcc_METHOD\"] INSTRUCTION_FORMAT4rcc_METHOD register_range method_reference method_prototype )
 			{
-				// smaliParser.g:1089:8: ^( I_STATEMENT_FORMAT4rcc_METHOD[$start, \"I_STATEMENT_FORMAT4rcc_METHOD\"] INSTRUCTION_FORMAT4rcc_METHOD register_range method_reference method_prototype )
+				// smaliParser.g:1153:8: ^( I_STATEMENT_FORMAT4rcc_METHOD[$start, \"I_STATEMENT_FORMAT4rcc_METHOD\"] INSTRUCTION_FORMAT4rcc_METHOD register_range method_reference method_prototype )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT4rcc_METHOD, (retval.start), "I_STATEMENT_FORMAT4rcc_METHOD"), root_1);
@@ -14316,46 +15662,46 @@
 
 
 	// $ANTLR start "insn_format51l"
-	// smaliParser.g:1091:1: insn_format51l : INSTRUCTION_FORMAT51l REGISTER COMMA fixed_literal -> ^( I_STATEMENT_FORMAT51l[$start, \"I_STATEMENT_FORMAT51l\"] INSTRUCTION_FORMAT51l REGISTER fixed_literal ) ;
+	// smaliParser.g:1155:1: insn_format51l : INSTRUCTION_FORMAT51l REGISTER COMMA fixed_literal -> ^( I_STATEMENT_FORMAT51l[$start, \"I_STATEMENT_FORMAT51l\"] INSTRUCTION_FORMAT51l REGISTER fixed_literal ) ;
 	public final smaliParser.insn_format51l_return insn_format51l() throws RecognitionException {
 		smaliParser.insn_format51l_return retval = new smaliParser.insn_format51l_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token INSTRUCTION_FORMAT51l485=null;
-		Token REGISTER486=null;
-		Token COMMA487=null;
-		ParserRuleReturnScope fixed_literal488 =null;
+		Token INSTRUCTION_FORMAT51l539=null;
+		Token REGISTER540=null;
+		Token COMMA541=null;
+		ParserRuleReturnScope fixed_literal542 =null;
 
-		CommonTree INSTRUCTION_FORMAT51l485_tree=null;
-		CommonTree REGISTER486_tree=null;
-		CommonTree COMMA487_tree=null;
+		CommonTree INSTRUCTION_FORMAT51l539_tree=null;
+		CommonTree REGISTER540_tree=null;
+		CommonTree COMMA541_tree=null;
 		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
 		RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
 		RewriteRuleTokenStream stream_INSTRUCTION_FORMAT51l=new RewriteRuleTokenStream(adaptor,"token INSTRUCTION_FORMAT51l");
 		RewriteRuleSubtreeStream stream_fixed_literal=new RewriteRuleSubtreeStream(adaptor,"rule fixed_literal");
 
 		try {
-			// smaliParser.g:1092:3: ( INSTRUCTION_FORMAT51l REGISTER COMMA fixed_literal -> ^( I_STATEMENT_FORMAT51l[$start, \"I_STATEMENT_FORMAT51l\"] INSTRUCTION_FORMAT51l REGISTER fixed_literal ) )
-			// smaliParser.g:1093:5: INSTRUCTION_FORMAT51l REGISTER COMMA fixed_literal
+			// smaliParser.g:1156:3: ( INSTRUCTION_FORMAT51l REGISTER COMMA fixed_literal -> ^( I_STATEMENT_FORMAT51l[$start, \"I_STATEMENT_FORMAT51l\"] INSTRUCTION_FORMAT51l REGISTER fixed_literal ) )
+			// smaliParser.g:1157:5: INSTRUCTION_FORMAT51l REGISTER COMMA fixed_literal
 			{
-			INSTRUCTION_FORMAT51l485=(Token)match(input,INSTRUCTION_FORMAT51l,FOLLOW_INSTRUCTION_FORMAT51l_in_insn_format51l5620);  
-			stream_INSTRUCTION_FORMAT51l.add(INSTRUCTION_FORMAT51l485);
+			INSTRUCTION_FORMAT51l539=(Token)match(input,INSTRUCTION_FORMAT51l,FOLLOW_INSTRUCTION_FORMAT51l_in_insn_format51l6131);  
+			stream_INSTRUCTION_FORMAT51l.add(INSTRUCTION_FORMAT51l539);
 
-			REGISTER486=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format51l5622);  
-			stream_REGISTER.add(REGISTER486);
+			REGISTER540=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format51l6133);  
+			stream_REGISTER.add(REGISTER540);
 
-			COMMA487=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format51l5624);  
-			stream_COMMA.add(COMMA487);
+			COMMA541=(Token)match(input,COMMA,FOLLOW_COMMA_in_insn_format51l6135);  
+			stream_COMMA.add(COMMA541);
 
-			pushFollow(FOLLOW_fixed_literal_in_insn_format51l5626);
-			fixed_literal488=fixed_literal();
+			pushFollow(FOLLOW_fixed_literal_in_insn_format51l6137);
+			fixed_literal542=fixed_literal();
 			state._fsp--;
 
-			stream_fixed_literal.add(fixed_literal488.getTree());
+			stream_fixed_literal.add(fixed_literal542.getTree());
 			// AST REWRITE
-			// elements: REGISTER, INSTRUCTION_FORMAT51l, fixed_literal
+			// elements: INSTRUCTION_FORMAT51l, fixed_literal, REGISTER
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -14365,9 +15711,9 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 1094:5: -> ^( I_STATEMENT_FORMAT51l[$start, \"I_STATEMENT_FORMAT51l\"] INSTRUCTION_FORMAT51l REGISTER fixed_literal )
+			// 1158:5: -> ^( I_STATEMENT_FORMAT51l[$start, \"I_STATEMENT_FORMAT51l\"] INSTRUCTION_FORMAT51l REGISTER fixed_literal )
 			{
-				// smaliParser.g:1094:8: ^( I_STATEMENT_FORMAT51l[$start, \"I_STATEMENT_FORMAT51l\"] INSTRUCTION_FORMAT51l REGISTER fixed_literal )
+				// smaliParser.g:1158:8: ^( I_STATEMENT_FORMAT51l[$start, \"I_STATEMENT_FORMAT51l\"] INSTRUCTION_FORMAT51l REGISTER fixed_literal )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_FORMAT51l, (retval.start), "I_STATEMENT_FORMAT51l"), root_1);
@@ -14411,71 +15757,71 @@
 
 
 	// $ANTLR start "insn_array_data_directive"
-	// smaliParser.g:1096:1: insn_array_data_directive : ARRAY_DATA_DIRECTIVE parsed_integer_literal ( fixed_literal )* END_ARRAY_DATA_DIRECTIVE -> ^( I_STATEMENT_ARRAY_DATA[$start, \"I_STATEMENT_ARRAY_DATA\"] ^( I_ARRAY_ELEMENT_SIZE parsed_integer_literal ) ^( I_ARRAY_ELEMENTS ( fixed_literal )* ) ) ;
+	// smaliParser.g:1160:1: insn_array_data_directive : ARRAY_DATA_DIRECTIVE parsed_integer_literal ( fixed_literal )* END_ARRAY_DATA_DIRECTIVE -> ^( I_STATEMENT_ARRAY_DATA[$start, \"I_STATEMENT_ARRAY_DATA\"] ^( I_ARRAY_ELEMENT_SIZE parsed_integer_literal ) ^( I_ARRAY_ELEMENTS ( fixed_literal )* ) ) ;
 	public final smaliParser.insn_array_data_directive_return insn_array_data_directive() throws RecognitionException {
 		smaliParser.insn_array_data_directive_return retval = new smaliParser.insn_array_data_directive_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token ARRAY_DATA_DIRECTIVE489=null;
-		Token END_ARRAY_DATA_DIRECTIVE492=null;
-		ParserRuleReturnScope parsed_integer_literal490 =null;
-		ParserRuleReturnScope fixed_literal491 =null;
+		Token ARRAY_DATA_DIRECTIVE543=null;
+		Token END_ARRAY_DATA_DIRECTIVE546=null;
+		ParserRuleReturnScope parsed_integer_literal544 =null;
+		ParserRuleReturnScope fixed_literal545 =null;
 
-		CommonTree ARRAY_DATA_DIRECTIVE489_tree=null;
-		CommonTree END_ARRAY_DATA_DIRECTIVE492_tree=null;
+		CommonTree ARRAY_DATA_DIRECTIVE543_tree=null;
+		CommonTree END_ARRAY_DATA_DIRECTIVE546_tree=null;
 		RewriteRuleTokenStream stream_END_ARRAY_DATA_DIRECTIVE=new RewriteRuleTokenStream(adaptor,"token END_ARRAY_DATA_DIRECTIVE");
 		RewriteRuleTokenStream stream_ARRAY_DATA_DIRECTIVE=new RewriteRuleTokenStream(adaptor,"token ARRAY_DATA_DIRECTIVE");
 		RewriteRuleSubtreeStream stream_parsed_integer_literal=new RewriteRuleSubtreeStream(adaptor,"rule parsed_integer_literal");
 		RewriteRuleSubtreeStream stream_fixed_literal=new RewriteRuleSubtreeStream(adaptor,"rule fixed_literal");
 
 		try {
-			// smaliParser.g:1097:3: ( ARRAY_DATA_DIRECTIVE parsed_integer_literal ( fixed_literal )* END_ARRAY_DATA_DIRECTIVE -> ^( I_STATEMENT_ARRAY_DATA[$start, \"I_STATEMENT_ARRAY_DATA\"] ^( I_ARRAY_ELEMENT_SIZE parsed_integer_literal ) ^( I_ARRAY_ELEMENTS ( fixed_literal )* ) ) )
-			// smaliParser.g:1097:5: ARRAY_DATA_DIRECTIVE parsed_integer_literal ( fixed_literal )* END_ARRAY_DATA_DIRECTIVE
+			// smaliParser.g:1161:3: ( ARRAY_DATA_DIRECTIVE parsed_integer_literal ( fixed_literal )* END_ARRAY_DATA_DIRECTIVE -> ^( I_STATEMENT_ARRAY_DATA[$start, \"I_STATEMENT_ARRAY_DATA\"] ^( I_ARRAY_ELEMENT_SIZE parsed_integer_literal ) ^( I_ARRAY_ELEMENTS ( fixed_literal )* ) ) )
+			// smaliParser.g:1161:5: ARRAY_DATA_DIRECTIVE parsed_integer_literal ( fixed_literal )* END_ARRAY_DATA_DIRECTIVE
 			{
-			ARRAY_DATA_DIRECTIVE489=(Token)match(input,ARRAY_DATA_DIRECTIVE,FOLLOW_ARRAY_DATA_DIRECTIVE_in_insn_array_data_directive5653);  
-			stream_ARRAY_DATA_DIRECTIVE.add(ARRAY_DATA_DIRECTIVE489);
+			ARRAY_DATA_DIRECTIVE543=(Token)match(input,ARRAY_DATA_DIRECTIVE,FOLLOW_ARRAY_DATA_DIRECTIVE_in_insn_array_data_directive6164);  
+			stream_ARRAY_DATA_DIRECTIVE.add(ARRAY_DATA_DIRECTIVE543);
 
-			pushFollow(FOLLOW_parsed_integer_literal_in_insn_array_data_directive5659);
-			parsed_integer_literal490=parsed_integer_literal();
+			pushFollow(FOLLOW_parsed_integer_literal_in_insn_array_data_directive6170);
+			parsed_integer_literal544=parsed_integer_literal();
 			state._fsp--;
 
-			stream_parsed_integer_literal.add(parsed_integer_literal490.getTree());
+			stream_parsed_integer_literal.add(parsed_integer_literal544.getTree());
 
-			        int elementWidth = (parsed_integer_literal490!=null?((smaliParser.parsed_integer_literal_return)parsed_integer_literal490).value:0);
+			        int elementWidth = (parsed_integer_literal544!=null?((smaliParser.parsed_integer_literal_return)parsed_integer_literal544).value:0);
 			        if (elementWidth != 4 && elementWidth != 8 && elementWidth != 1 && elementWidth != 2) {
 			            throw new SemanticException(input, (retval.start), "Invalid element width: %d. Must be 1, 2, 4 or 8", elementWidth);
 			        }
 			    
-			// smaliParser.g:1105:5: ( fixed_literal )*
-			loop52:
+			// smaliParser.g:1169:5: ( fixed_literal )*
+			loop55:
 			while (true) {
-				int alt52=2;
-				int LA52_0 = input.LA(1);
-				if ( ((LA52_0 >= BOOL_LITERAL && LA52_0 <= BYTE_LITERAL)||LA52_0==CHAR_LITERAL||(LA52_0 >= DOUBLE_LITERAL && LA52_0 <= DOUBLE_LITERAL_OR_ID)||(LA52_0 >= FLOAT_LITERAL && LA52_0 <= FLOAT_LITERAL_OR_ID)||LA52_0==LONG_LITERAL||LA52_0==NEGATIVE_INTEGER_LITERAL||LA52_0==POSITIVE_INTEGER_LITERAL||LA52_0==SHORT_LITERAL) ) {
-					alt52=1;
+				int alt55=2;
+				int LA55_0 = input.LA(1);
+				if ( ((LA55_0 >= BOOL_LITERAL && LA55_0 <= BYTE_LITERAL)||LA55_0==CHAR_LITERAL||(LA55_0 >= DOUBLE_LITERAL && LA55_0 <= DOUBLE_LITERAL_OR_ID)||(LA55_0 >= FLOAT_LITERAL && LA55_0 <= FLOAT_LITERAL_OR_ID)||LA55_0==LONG_LITERAL||LA55_0==NEGATIVE_INTEGER_LITERAL||LA55_0==POSITIVE_INTEGER_LITERAL||LA55_0==SHORT_LITERAL) ) {
+					alt55=1;
 				}
 
-				switch (alt52) {
+				switch (alt55) {
 				case 1 :
-					// smaliParser.g:1105:5: fixed_literal
+					// smaliParser.g:1169:5: fixed_literal
 					{
-					pushFollow(FOLLOW_fixed_literal_in_insn_array_data_directive5671);
-					fixed_literal491=fixed_literal();
+					pushFollow(FOLLOW_fixed_literal_in_insn_array_data_directive6182);
+					fixed_literal545=fixed_literal();
 					state._fsp--;
 
-					stream_fixed_literal.add(fixed_literal491.getTree());
+					stream_fixed_literal.add(fixed_literal545.getTree());
 					}
 					break;
 
 				default :
-					break loop52;
+					break loop55;
 				}
 			}
 
-			END_ARRAY_DATA_DIRECTIVE492=(Token)match(input,END_ARRAY_DATA_DIRECTIVE,FOLLOW_END_ARRAY_DATA_DIRECTIVE_in_insn_array_data_directive5674);  
-			stream_END_ARRAY_DATA_DIRECTIVE.add(END_ARRAY_DATA_DIRECTIVE492);
+			END_ARRAY_DATA_DIRECTIVE546=(Token)match(input,END_ARRAY_DATA_DIRECTIVE,FOLLOW_END_ARRAY_DATA_DIRECTIVE_in_insn_array_data_directive6185);  
+			stream_END_ARRAY_DATA_DIRECTIVE.add(END_ARRAY_DATA_DIRECTIVE546);
 
 			// AST REWRITE
 			// elements: parsed_integer_literal, fixed_literal
@@ -14488,13 +15834,13 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 1107:5: -> ^( I_STATEMENT_ARRAY_DATA[$start, \"I_STATEMENT_ARRAY_DATA\"] ^( I_ARRAY_ELEMENT_SIZE parsed_integer_literal ) ^( I_ARRAY_ELEMENTS ( fixed_literal )* ) )
+			// 1171:5: -> ^( I_STATEMENT_ARRAY_DATA[$start, \"I_STATEMENT_ARRAY_DATA\"] ^( I_ARRAY_ELEMENT_SIZE parsed_integer_literal ) ^( I_ARRAY_ELEMENTS ( fixed_literal )* ) )
 			{
-				// smaliParser.g:1107:8: ^( I_STATEMENT_ARRAY_DATA[$start, \"I_STATEMENT_ARRAY_DATA\"] ^( I_ARRAY_ELEMENT_SIZE parsed_integer_literal ) ^( I_ARRAY_ELEMENTS ( fixed_literal )* ) )
+				// smaliParser.g:1171:8: ^( I_STATEMENT_ARRAY_DATA[$start, \"I_STATEMENT_ARRAY_DATA\"] ^( I_ARRAY_ELEMENT_SIZE parsed_integer_literal ) ^( I_ARRAY_ELEMENTS ( fixed_literal )* ) )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_ARRAY_DATA, (retval.start), "I_STATEMENT_ARRAY_DATA"), root_1);
-				// smaliParser.g:1107:67: ^( I_ARRAY_ELEMENT_SIZE parsed_integer_literal )
+				// smaliParser.g:1171:67: ^( I_ARRAY_ELEMENT_SIZE parsed_integer_literal )
 				{
 				CommonTree root_2 = (CommonTree)adaptor.nil();
 				root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_ARRAY_ELEMENT_SIZE, "I_ARRAY_ELEMENT_SIZE"), root_2);
@@ -14502,11 +15848,11 @@
 				adaptor.addChild(root_1, root_2);
 				}
 
-				// smaliParser.g:1108:8: ^( I_ARRAY_ELEMENTS ( fixed_literal )* )
+				// smaliParser.g:1172:8: ^( I_ARRAY_ELEMENTS ( fixed_literal )* )
 				{
 				CommonTree root_2 = (CommonTree)adaptor.nil();
 				root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_ARRAY_ELEMENTS, "I_ARRAY_ELEMENTS"), root_2);
-				// smaliParser.g:1108:27: ( fixed_literal )*
+				// smaliParser.g:1172:27: ( fixed_literal )*
 				while ( stream_fixed_literal.hasNext() ) {
 					adaptor.addChild(root_2, stream_fixed_literal.nextTree());
 				}
@@ -14552,68 +15898,68 @@
 
 
 	// $ANTLR start "insn_packed_switch_directive"
-	// smaliParser.g:1110:1: insn_packed_switch_directive : PACKED_SWITCH_DIRECTIVE fixed_32bit_literal ( label_ref )* END_PACKED_SWITCH_DIRECTIVE -> ^( I_STATEMENT_PACKED_SWITCH[$start, \"I_STATEMENT_PACKED_SWITCH\"] ^( I_PACKED_SWITCH_START_KEY[$start, \"I_PACKED_SWITCH_START_KEY\"] fixed_32bit_literal ) ^( I_PACKED_SWITCH_ELEMENTS[$start, \"I_PACKED_SWITCH_ELEMENTS\"] ( label_ref )* ) ) ;
+	// smaliParser.g:1174:1: insn_packed_switch_directive : PACKED_SWITCH_DIRECTIVE fixed_32bit_literal ( label_ref )* END_PACKED_SWITCH_DIRECTIVE -> ^( I_STATEMENT_PACKED_SWITCH[$start, \"I_STATEMENT_PACKED_SWITCH\"] ^( I_PACKED_SWITCH_START_KEY[$start, \"I_PACKED_SWITCH_START_KEY\"] fixed_32bit_literal ) ^( I_PACKED_SWITCH_ELEMENTS[$start, \"I_PACKED_SWITCH_ELEMENTS\"] ( label_ref )* ) ) ;
 	public final smaliParser.insn_packed_switch_directive_return insn_packed_switch_directive() throws RecognitionException {
 		smaliParser.insn_packed_switch_directive_return retval = new smaliParser.insn_packed_switch_directive_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token PACKED_SWITCH_DIRECTIVE493=null;
-		Token END_PACKED_SWITCH_DIRECTIVE496=null;
-		ParserRuleReturnScope fixed_32bit_literal494 =null;
-		ParserRuleReturnScope label_ref495 =null;
+		Token PACKED_SWITCH_DIRECTIVE547=null;
+		Token END_PACKED_SWITCH_DIRECTIVE550=null;
+		ParserRuleReturnScope fixed_32bit_literal548 =null;
+		ParserRuleReturnScope label_ref549 =null;
 
-		CommonTree PACKED_SWITCH_DIRECTIVE493_tree=null;
-		CommonTree END_PACKED_SWITCH_DIRECTIVE496_tree=null;
+		CommonTree PACKED_SWITCH_DIRECTIVE547_tree=null;
+		CommonTree END_PACKED_SWITCH_DIRECTIVE550_tree=null;
 		RewriteRuleTokenStream stream_END_PACKED_SWITCH_DIRECTIVE=new RewriteRuleTokenStream(adaptor,"token END_PACKED_SWITCH_DIRECTIVE");
 		RewriteRuleTokenStream stream_PACKED_SWITCH_DIRECTIVE=new RewriteRuleTokenStream(adaptor,"token PACKED_SWITCH_DIRECTIVE");
 		RewriteRuleSubtreeStream stream_fixed_32bit_literal=new RewriteRuleSubtreeStream(adaptor,"rule fixed_32bit_literal");
 		RewriteRuleSubtreeStream stream_label_ref=new RewriteRuleSubtreeStream(adaptor,"rule label_ref");
 
 		try {
-			// smaliParser.g:1111:5: ( PACKED_SWITCH_DIRECTIVE fixed_32bit_literal ( label_ref )* END_PACKED_SWITCH_DIRECTIVE -> ^( I_STATEMENT_PACKED_SWITCH[$start, \"I_STATEMENT_PACKED_SWITCH\"] ^( I_PACKED_SWITCH_START_KEY[$start, \"I_PACKED_SWITCH_START_KEY\"] fixed_32bit_literal ) ^( I_PACKED_SWITCH_ELEMENTS[$start, \"I_PACKED_SWITCH_ELEMENTS\"] ( label_ref )* ) ) )
-			// smaliParser.g:1111:9: PACKED_SWITCH_DIRECTIVE fixed_32bit_literal ( label_ref )* END_PACKED_SWITCH_DIRECTIVE
+			// smaliParser.g:1175:5: ( PACKED_SWITCH_DIRECTIVE fixed_32bit_literal ( label_ref )* END_PACKED_SWITCH_DIRECTIVE -> ^( I_STATEMENT_PACKED_SWITCH[$start, \"I_STATEMENT_PACKED_SWITCH\"] ^( I_PACKED_SWITCH_START_KEY[$start, \"I_PACKED_SWITCH_START_KEY\"] fixed_32bit_literal ) ^( I_PACKED_SWITCH_ELEMENTS[$start, \"I_PACKED_SWITCH_ELEMENTS\"] ( label_ref )* ) ) )
+			// smaliParser.g:1175:9: PACKED_SWITCH_DIRECTIVE fixed_32bit_literal ( label_ref )* END_PACKED_SWITCH_DIRECTIVE
 			{
-			PACKED_SWITCH_DIRECTIVE493=(Token)match(input,PACKED_SWITCH_DIRECTIVE,FOLLOW_PACKED_SWITCH_DIRECTIVE_in_insn_packed_switch_directive5720);  
-			stream_PACKED_SWITCH_DIRECTIVE.add(PACKED_SWITCH_DIRECTIVE493);
+			PACKED_SWITCH_DIRECTIVE547=(Token)match(input,PACKED_SWITCH_DIRECTIVE,FOLLOW_PACKED_SWITCH_DIRECTIVE_in_insn_packed_switch_directive6231);  
+			stream_PACKED_SWITCH_DIRECTIVE.add(PACKED_SWITCH_DIRECTIVE547);
 
-			pushFollow(FOLLOW_fixed_32bit_literal_in_insn_packed_switch_directive5726);
-			fixed_32bit_literal494=fixed_32bit_literal();
+			pushFollow(FOLLOW_fixed_32bit_literal_in_insn_packed_switch_directive6237);
+			fixed_32bit_literal548=fixed_32bit_literal();
 			state._fsp--;
 
-			stream_fixed_32bit_literal.add(fixed_32bit_literal494.getTree());
-			// smaliParser.g:1113:5: ( label_ref )*
-			loop53:
+			stream_fixed_32bit_literal.add(fixed_32bit_literal548.getTree());
+			// smaliParser.g:1177:5: ( label_ref )*
+			loop56:
 			while (true) {
-				int alt53=2;
-				int LA53_0 = input.LA(1);
-				if ( (LA53_0==COLON) ) {
-					alt53=1;
+				int alt56=2;
+				int LA56_0 = input.LA(1);
+				if ( (LA56_0==COLON) ) {
+					alt56=1;
 				}
 
-				switch (alt53) {
+				switch (alt56) {
 				case 1 :
-					// smaliParser.g:1113:5: label_ref
+					// smaliParser.g:1177:5: label_ref
 					{
-					pushFollow(FOLLOW_label_ref_in_insn_packed_switch_directive5732);
-					label_ref495=label_ref();
+					pushFollow(FOLLOW_label_ref_in_insn_packed_switch_directive6243);
+					label_ref549=label_ref();
 					state._fsp--;
 
-					stream_label_ref.add(label_ref495.getTree());
+					stream_label_ref.add(label_ref549.getTree());
 					}
 					break;
 
 				default :
-					break loop53;
+					break loop56;
 				}
 			}
 
-			END_PACKED_SWITCH_DIRECTIVE496=(Token)match(input,END_PACKED_SWITCH_DIRECTIVE,FOLLOW_END_PACKED_SWITCH_DIRECTIVE_in_insn_packed_switch_directive5739);  
-			stream_END_PACKED_SWITCH_DIRECTIVE.add(END_PACKED_SWITCH_DIRECTIVE496);
+			END_PACKED_SWITCH_DIRECTIVE550=(Token)match(input,END_PACKED_SWITCH_DIRECTIVE,FOLLOW_END_PACKED_SWITCH_DIRECTIVE_in_insn_packed_switch_directive6250);  
+			stream_END_PACKED_SWITCH_DIRECTIVE.add(END_PACKED_SWITCH_DIRECTIVE550);
 
 			// AST REWRITE
-			// elements: fixed_32bit_literal, label_ref
+			// elements: label_ref, fixed_32bit_literal
 			// token labels: 
 			// rule labels: retval
 			// token list labels: 
@@ -14623,13 +15969,13 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 1115:5: -> ^( I_STATEMENT_PACKED_SWITCH[$start, \"I_STATEMENT_PACKED_SWITCH\"] ^( I_PACKED_SWITCH_START_KEY[$start, \"I_PACKED_SWITCH_START_KEY\"] fixed_32bit_literal ) ^( I_PACKED_SWITCH_ELEMENTS[$start, \"I_PACKED_SWITCH_ELEMENTS\"] ( label_ref )* ) )
+			// 1179:5: -> ^( I_STATEMENT_PACKED_SWITCH[$start, \"I_STATEMENT_PACKED_SWITCH\"] ^( I_PACKED_SWITCH_START_KEY[$start, \"I_PACKED_SWITCH_START_KEY\"] fixed_32bit_literal ) ^( I_PACKED_SWITCH_ELEMENTS[$start, \"I_PACKED_SWITCH_ELEMENTS\"] ( label_ref )* ) )
 			{
-				// smaliParser.g:1115:8: ^( I_STATEMENT_PACKED_SWITCH[$start, \"I_STATEMENT_PACKED_SWITCH\"] ^( I_PACKED_SWITCH_START_KEY[$start, \"I_PACKED_SWITCH_START_KEY\"] fixed_32bit_literal ) ^( I_PACKED_SWITCH_ELEMENTS[$start, \"I_PACKED_SWITCH_ELEMENTS\"] ( label_ref )* ) )
+				// smaliParser.g:1179:8: ^( I_STATEMENT_PACKED_SWITCH[$start, \"I_STATEMENT_PACKED_SWITCH\"] ^( I_PACKED_SWITCH_START_KEY[$start, \"I_PACKED_SWITCH_START_KEY\"] fixed_32bit_literal ) ^( I_PACKED_SWITCH_ELEMENTS[$start, \"I_PACKED_SWITCH_ELEMENTS\"] ( label_ref )* ) )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_PACKED_SWITCH, (retval.start), "I_STATEMENT_PACKED_SWITCH"), root_1);
-				// smaliParser.g:1116:10: ^( I_PACKED_SWITCH_START_KEY[$start, \"I_PACKED_SWITCH_START_KEY\"] fixed_32bit_literal )
+				// smaliParser.g:1180:10: ^( I_PACKED_SWITCH_START_KEY[$start, \"I_PACKED_SWITCH_START_KEY\"] fixed_32bit_literal )
 				{
 				CommonTree root_2 = (CommonTree)adaptor.nil();
 				root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_PACKED_SWITCH_START_KEY, (retval.start), "I_PACKED_SWITCH_START_KEY"), root_2);
@@ -14637,11 +15983,11 @@
 				adaptor.addChild(root_1, root_2);
 				}
 
-				// smaliParser.g:1117:10: ^( I_PACKED_SWITCH_ELEMENTS[$start, \"I_PACKED_SWITCH_ELEMENTS\"] ( label_ref )* )
+				// smaliParser.g:1181:10: ^( I_PACKED_SWITCH_ELEMENTS[$start, \"I_PACKED_SWITCH_ELEMENTS\"] ( label_ref )* )
 				{
 				CommonTree root_2 = (CommonTree)adaptor.nil();
 				root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_PACKED_SWITCH_ELEMENTS, (retval.start), "I_PACKED_SWITCH_ELEMENTS"), root_2);
-				// smaliParser.g:1118:11: ( label_ref )*
+				// smaliParser.g:1182:11: ( label_ref )*
 				while ( stream_label_ref.hasNext() ) {
 					adaptor.addChild(root_2, stream_label_ref.nextTree());
 				}
@@ -14687,22 +16033,22 @@
 
 
 	// $ANTLR start "insn_sparse_switch_directive"
-	// smaliParser.g:1121:1: insn_sparse_switch_directive : SPARSE_SWITCH_DIRECTIVE ( fixed_32bit_literal ARROW label_ref )* END_SPARSE_SWITCH_DIRECTIVE -> ^( I_STATEMENT_SPARSE_SWITCH[$start, \"I_STATEMENT_SPARSE_SWITCH\"] ^( I_SPARSE_SWITCH_ELEMENTS[$start, \"I_SPARSE_SWITCH_ELEMENTS\"] ( fixed_32bit_literal label_ref )* ) ) ;
+	// smaliParser.g:1185:1: insn_sparse_switch_directive : SPARSE_SWITCH_DIRECTIVE ( fixed_32bit_literal ARROW label_ref )* END_SPARSE_SWITCH_DIRECTIVE -> ^( I_STATEMENT_SPARSE_SWITCH[$start, \"I_STATEMENT_SPARSE_SWITCH\"] ^( I_SPARSE_SWITCH_ELEMENTS[$start, \"I_SPARSE_SWITCH_ELEMENTS\"] ( fixed_32bit_literal label_ref )* ) ) ;
 	public final smaliParser.insn_sparse_switch_directive_return insn_sparse_switch_directive() throws RecognitionException {
 		smaliParser.insn_sparse_switch_directive_return retval = new smaliParser.insn_sparse_switch_directive_return();
 		retval.start = input.LT(1);
 
 		CommonTree root_0 = null;
 
-		Token SPARSE_SWITCH_DIRECTIVE497=null;
-		Token ARROW499=null;
-		Token END_SPARSE_SWITCH_DIRECTIVE501=null;
-		ParserRuleReturnScope fixed_32bit_literal498 =null;
-		ParserRuleReturnScope label_ref500 =null;
+		Token SPARSE_SWITCH_DIRECTIVE551=null;
+		Token ARROW553=null;
+		Token END_SPARSE_SWITCH_DIRECTIVE555=null;
+		ParserRuleReturnScope fixed_32bit_literal552 =null;
+		ParserRuleReturnScope label_ref554 =null;
 
-		CommonTree SPARSE_SWITCH_DIRECTIVE497_tree=null;
-		CommonTree ARROW499_tree=null;
-		CommonTree END_SPARSE_SWITCH_DIRECTIVE501_tree=null;
+		CommonTree SPARSE_SWITCH_DIRECTIVE551_tree=null;
+		CommonTree ARROW553_tree=null;
+		CommonTree END_SPARSE_SWITCH_DIRECTIVE555_tree=null;
 		RewriteRuleTokenStream stream_ARROW=new RewriteRuleTokenStream(adaptor,"token ARROW");
 		RewriteRuleTokenStream stream_SPARSE_SWITCH_DIRECTIVE=new RewriteRuleTokenStream(adaptor,"token SPARSE_SWITCH_DIRECTIVE");
 		RewriteRuleTokenStream stream_END_SPARSE_SWITCH_DIRECTIVE=new RewriteRuleTokenStream(adaptor,"token END_SPARSE_SWITCH_DIRECTIVE");
@@ -14710,48 +16056,48 @@
 		RewriteRuleSubtreeStream stream_label_ref=new RewriteRuleSubtreeStream(adaptor,"rule label_ref");
 
 		try {
-			// smaliParser.g:1122:3: ( SPARSE_SWITCH_DIRECTIVE ( fixed_32bit_literal ARROW label_ref )* END_SPARSE_SWITCH_DIRECTIVE -> ^( I_STATEMENT_SPARSE_SWITCH[$start, \"I_STATEMENT_SPARSE_SWITCH\"] ^( I_SPARSE_SWITCH_ELEMENTS[$start, \"I_SPARSE_SWITCH_ELEMENTS\"] ( fixed_32bit_literal label_ref )* ) ) )
-			// smaliParser.g:1122:7: SPARSE_SWITCH_DIRECTIVE ( fixed_32bit_literal ARROW label_ref )* END_SPARSE_SWITCH_DIRECTIVE
+			// smaliParser.g:1186:3: ( SPARSE_SWITCH_DIRECTIVE ( fixed_32bit_literal ARROW label_ref )* END_SPARSE_SWITCH_DIRECTIVE -> ^( I_STATEMENT_SPARSE_SWITCH[$start, \"I_STATEMENT_SPARSE_SWITCH\"] ^( I_SPARSE_SWITCH_ELEMENTS[$start, \"I_SPARSE_SWITCH_ELEMENTS\"] ( fixed_32bit_literal label_ref )* ) ) )
+			// smaliParser.g:1186:7: SPARSE_SWITCH_DIRECTIVE ( fixed_32bit_literal ARROW label_ref )* END_SPARSE_SWITCH_DIRECTIVE
 			{
-			SPARSE_SWITCH_DIRECTIVE497=(Token)match(input,SPARSE_SWITCH_DIRECTIVE,FOLLOW_SPARSE_SWITCH_DIRECTIVE_in_insn_sparse_switch_directive5813);  
-			stream_SPARSE_SWITCH_DIRECTIVE.add(SPARSE_SWITCH_DIRECTIVE497);
+			SPARSE_SWITCH_DIRECTIVE551=(Token)match(input,SPARSE_SWITCH_DIRECTIVE,FOLLOW_SPARSE_SWITCH_DIRECTIVE_in_insn_sparse_switch_directive6324);  
+			stream_SPARSE_SWITCH_DIRECTIVE.add(SPARSE_SWITCH_DIRECTIVE551);
 
-			// smaliParser.g:1123:5: ( fixed_32bit_literal ARROW label_ref )*
-			loop54:
+			// smaliParser.g:1187:5: ( fixed_32bit_literal ARROW label_ref )*
+			loop57:
 			while (true) {
-				int alt54=2;
-				int LA54_0 = input.LA(1);
-				if ( ((LA54_0 >= BOOL_LITERAL && LA54_0 <= BYTE_LITERAL)||LA54_0==CHAR_LITERAL||(LA54_0 >= FLOAT_LITERAL && LA54_0 <= FLOAT_LITERAL_OR_ID)||LA54_0==LONG_LITERAL||LA54_0==NEGATIVE_INTEGER_LITERAL||LA54_0==POSITIVE_INTEGER_LITERAL||LA54_0==SHORT_LITERAL) ) {
-					alt54=1;
+				int alt57=2;
+				int LA57_0 = input.LA(1);
+				if ( ((LA57_0 >= BOOL_LITERAL && LA57_0 <= BYTE_LITERAL)||LA57_0==CHAR_LITERAL||(LA57_0 >= FLOAT_LITERAL && LA57_0 <= FLOAT_LITERAL_OR_ID)||LA57_0==LONG_LITERAL||LA57_0==NEGATIVE_INTEGER_LITERAL||LA57_0==POSITIVE_INTEGER_LITERAL||LA57_0==SHORT_LITERAL) ) {
+					alt57=1;
 				}
 
-				switch (alt54) {
+				switch (alt57) {
 				case 1 :
-					// smaliParser.g:1123:6: fixed_32bit_literal ARROW label_ref
+					// smaliParser.g:1187:6: fixed_32bit_literal ARROW label_ref
 					{
-					pushFollow(FOLLOW_fixed_32bit_literal_in_insn_sparse_switch_directive5820);
-					fixed_32bit_literal498=fixed_32bit_literal();
+					pushFollow(FOLLOW_fixed_32bit_literal_in_insn_sparse_switch_directive6331);
+					fixed_32bit_literal552=fixed_32bit_literal();
 					state._fsp--;
 
-					stream_fixed_32bit_literal.add(fixed_32bit_literal498.getTree());
-					ARROW499=(Token)match(input,ARROW,FOLLOW_ARROW_in_insn_sparse_switch_directive5822);  
-					stream_ARROW.add(ARROW499);
+					stream_fixed_32bit_literal.add(fixed_32bit_literal552.getTree());
+					ARROW553=(Token)match(input,ARROW,FOLLOW_ARROW_in_insn_sparse_switch_directive6333);  
+					stream_ARROW.add(ARROW553);
 
-					pushFollow(FOLLOW_label_ref_in_insn_sparse_switch_directive5824);
-					label_ref500=label_ref();
+					pushFollow(FOLLOW_label_ref_in_insn_sparse_switch_directive6335);
+					label_ref554=label_ref();
 					state._fsp--;
 
-					stream_label_ref.add(label_ref500.getTree());
+					stream_label_ref.add(label_ref554.getTree());
 					}
 					break;
 
 				default :
-					break loop54;
+					break loop57;
 				}
 			}
 
-			END_SPARSE_SWITCH_DIRECTIVE501=(Token)match(input,END_SPARSE_SWITCH_DIRECTIVE,FOLLOW_END_SPARSE_SWITCH_DIRECTIVE_in_insn_sparse_switch_directive5832);  
-			stream_END_SPARSE_SWITCH_DIRECTIVE.add(END_SPARSE_SWITCH_DIRECTIVE501);
+			END_SPARSE_SWITCH_DIRECTIVE555=(Token)match(input,END_SPARSE_SWITCH_DIRECTIVE,FOLLOW_END_SPARSE_SWITCH_DIRECTIVE_in_insn_sparse_switch_directive6343);  
+			stream_END_SPARSE_SWITCH_DIRECTIVE.add(END_SPARSE_SWITCH_DIRECTIVE555);
 
 			// AST REWRITE
 			// elements: fixed_32bit_literal, label_ref
@@ -14764,17 +16110,17 @@
 			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
 
 			root_0 = (CommonTree)adaptor.nil();
-			// 1125:5: -> ^( I_STATEMENT_SPARSE_SWITCH[$start, \"I_STATEMENT_SPARSE_SWITCH\"] ^( I_SPARSE_SWITCH_ELEMENTS[$start, \"I_SPARSE_SWITCH_ELEMENTS\"] ( fixed_32bit_literal label_ref )* ) )
+			// 1189:5: -> ^( I_STATEMENT_SPARSE_SWITCH[$start, \"I_STATEMENT_SPARSE_SWITCH\"] ^( I_SPARSE_SWITCH_ELEMENTS[$start, \"I_SPARSE_SWITCH_ELEMENTS\"] ( fixed_32bit_literal label_ref )* ) )
 			{
-				// smaliParser.g:1125:8: ^( I_STATEMENT_SPARSE_SWITCH[$start, \"I_STATEMENT_SPARSE_SWITCH\"] ^( I_SPARSE_SWITCH_ELEMENTS[$start, \"I_SPARSE_SWITCH_ELEMENTS\"] ( fixed_32bit_literal label_ref )* ) )
+				// smaliParser.g:1189:8: ^( I_STATEMENT_SPARSE_SWITCH[$start, \"I_STATEMENT_SPARSE_SWITCH\"] ^( I_SPARSE_SWITCH_ELEMENTS[$start, \"I_SPARSE_SWITCH_ELEMENTS\"] ( fixed_32bit_literal label_ref )* ) )
 				{
 				CommonTree root_1 = (CommonTree)adaptor.nil();
 				root_1 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_STATEMENT_SPARSE_SWITCH, (retval.start), "I_STATEMENT_SPARSE_SWITCH"), root_1);
-				// smaliParser.g:1126:8: ^( I_SPARSE_SWITCH_ELEMENTS[$start, \"I_SPARSE_SWITCH_ELEMENTS\"] ( fixed_32bit_literal label_ref )* )
+				// smaliParser.g:1190:8: ^( I_SPARSE_SWITCH_ELEMENTS[$start, \"I_SPARSE_SWITCH_ELEMENTS\"] ( fixed_32bit_literal label_ref )* )
 				{
 				CommonTree root_2 = (CommonTree)adaptor.nil();
 				root_2 = (CommonTree)adaptor.becomeRoot((CommonTree)adaptor.create(I_SPARSE_SWITCH_ELEMENTS, (retval.start), "I_SPARSE_SWITCH_ELEMENTS"), root_2);
-				// smaliParser.g:1126:71: ( fixed_32bit_literal label_ref )*
+				// smaliParser.g:1190:71: ( fixed_32bit_literal label_ref )*
 				while ( stream_fixed_32bit_literal.hasNext()||stream_label_ref.hasNext() ) {
 					adaptor.addChild(root_2, stream_fixed_32bit_literal.nextTree());
 					adaptor.addChild(root_2, stream_label_ref.nextTree());
@@ -14817,69 +16163,75 @@
 
 
 	protected DFA30 dfa30 = new DFA30(this);
-	protected DFA38 dfa38 = new DFA38(this);
 	protected DFA40 dfa40 = new DFA40(this);
+	protected DFA42 dfa42 = new DFA42(this);
 	static final String DFA30_eotS =
-		"\55\uffff";
+		"\63\uffff";
 	static final String DFA30_eofS =
-		"\55\uffff";
+		"\63\uffff";
 	static final String DFA30_minS =
-		"\1\4\52\23\2\uffff";
+		"\1\4\60\24\2\uffff";
 	static final String DFA30_maxS =
-		"\1\u00c6\12\u00b4\1\u00b7\37\u00b4\2\uffff";
+		"\1\u00d5\12\u00c3\1\u00c6\45\u00c3\2\uffff";
 	static final String DFA30_acceptS =
-		"\53\uffff\1\1\1\2";
+		"\61\uffff\1\1\1\2";
 	static final String DFA30_specialS =
-		"\55\uffff}>";
+		"\63\uffff}>";
 	static final String[] DFA30_transitionS = {
-			"\1\2\1\uffff\1\16\3\uffff\1\10\14\uffff\1\7\17\uffff\1\6\2\uffff\1\17"+
-			"\1\20\1\21\1\uffff\1\22\1\uffff\1\23\2\uffff\1\24\1\25\1\26\1\27\3\uffff"+
-			"\1\30\1\uffff\1\31\1\32\1\33\1\34\1\uffff\1\35\1\36\1\uffff\1\37\3\uffff"+
-			"\1\40\1\41\1\uffff\1\42\1\43\1\44\1\45\1\46\5\uffff\1\47\1\50\1\51\127"+
-			"\uffff\1\52\1\uffff\1\5\1\11\4\uffff\1\13\1\4\1\14\1\uffff\1\12\3\uffff"+
-			"\1\1\5\uffff\1\3\1\15",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54\2\uffff\1\13",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
-			"\1\53\u00a0\uffff\1\54",
+			"\1\2\1\uffff\1\16\4\uffff\1\10\14\uffff\1\7\17\uffff\1\6\2\uffff\1\21"+
+			"\1\22\1\23\1\uffff\1\24\1\uffff\1\25\2\uffff\1\26\1\27\1\30\1\31\1\32"+
+			"\1\33\3\uffff\1\34\1\uffff\1\35\1\36\1\37\1\40\1\uffff\1\41\1\42\1\uffff"+
+			"\1\43\3\uffff\1\44\1\45\1\uffff\1\46\1\47\1\50\1\51\1\52\1\53\1\54\6"+
+			"\uffff\1\55\1\56\1\57\136\uffff\1\60\1\uffff\1\17\1\20\1\5\1\11\4\uffff"+
+			"\1\13\1\4\1\14\1\uffff\1\12\3\uffff\1\1\5\uffff\1\3\1\15",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62\2\uffff\1\13",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
+			"\1\61\u00ae\uffff\1\62",
 			"",
 			""
 	};
@@ -14915,138 +16267,145 @@
 		}
 		@Override
 		public String getDescription() {
-			return "695:7: ( member_name COLON nonvoid_type_descriptor -> ^( I_ENCODED_FIELD ( reference_type_descriptor )? member_name nonvoid_type_descriptor ) | member_name method_prototype -> ^( I_ENCODED_METHOD ( reference_type_descriptor )? member_name method_prototype ) )";
-		}
-	}
-
-	static final String DFA38_eotS =
-		"\62\uffff";
-	static final String DFA38_eofS =
-		"\62\uffff";
-	static final String DFA38_minS =
-		"\1\4\1\5\1\17\52\23\1\uffff\1\4\1\11\2\uffff";
-	static final String DFA38_maxS =
-		"\1\u00c6\1\u00c1\1\u00b9\12\u00b4\1\u00b7\37\u00b4\1\uffff\1\u00c6\1\11"+
-		"\2\uffff";
-	static final String DFA38_acceptS =
-		"\55\uffff\1\1\2\uffff\1\2\1\3";
-	static final String DFA38_specialS =
-		"\62\uffff}>";
-	static final String[] DFA38_transitionS = {
-			"\1\4\1\uffff\1\20\1\uffff\1\2\1\uffff\1\12\4\uffff\1\1\7\uffff\1\11\17"+
-			"\uffff\1\10\2\uffff\1\21\1\22\1\23\1\uffff\1\24\1\uffff\1\25\2\uffff"+
-			"\1\26\1\27\1\30\1\31\3\uffff\1\32\1\uffff\1\33\1\34\1\35\1\36\1\uffff"+
-			"\1\37\1\40\1\uffff\1\41\3\uffff\1\42\1\43\1\uffff\1\44\1\45\1\46\1\47"+
-			"\1\50\5\uffff\1\51\1\52\1\53\127\uffff\1\54\1\uffff\1\7\1\13\4\uffff"+
-			"\1\15\1\6\1\16\1\uffff\1\14\3\uffff\1\3\5\uffff\1\5\1\17",
-			"\1\55\1\uffff\1\55\1\uffff\1\56\2\uffff\2\55\5\uffff\1\55\7\uffff\2"+
-			"\55\5\uffff\1\55\7\uffff\56\55\123\uffff\3\55\7\uffff\2\55\3\uffff\1"+
-			"\55\1\uffff\2\55\2\uffff\2\55",
-			"\1\57\u00a9\uffff\1\57",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61\2\uffff\1\15",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"\1\60\u00a0\uffff\1\61",
-			"",
-			"\1\4\1\uffff\1\20\3\uffff\1\12\14\uffff\1\11\17\uffff\1\10\2\uffff\1"+
-			"\21\1\22\1\23\1\uffff\1\24\1\uffff\1\25\2\uffff\1\26\1\27\1\30\1\31\3"+
-			"\uffff\1\32\1\uffff\1\33\1\34\1\35\1\36\1\uffff\1\37\1\40\1\uffff\1\41"+
-			"\3\uffff\1\42\1\43\1\uffff\1\44\1\45\1\46\1\47\1\50\5\uffff\1\51\1\52"+
-			"\1\53\127\uffff\1\54\1\uffff\1\7\1\13\4\uffff\1\15\1\6\1\16\1\uffff\1"+
-			"\14\3\uffff\1\3\5\uffff\1\5\1\17",
-			"\1\56",
-			"",
-			""
-	};
-
-	static final short[] DFA38_eot = DFA.unpackEncodedString(DFA38_eotS);
-	static final short[] DFA38_eof = DFA.unpackEncodedString(DFA38_eofS);
-	static final char[] DFA38_min = DFA.unpackEncodedStringToUnsignedChars(DFA38_minS);
-	static final char[] DFA38_max = DFA.unpackEncodedStringToUnsignedChars(DFA38_maxS);
-	static final short[] DFA38_accept = DFA.unpackEncodedString(DFA38_acceptS);
-	static final short[] DFA38_special = DFA.unpackEncodedString(DFA38_specialS);
-	static final short[][] DFA38_transition;
-
-	static {
-		int numStates = DFA38_transitionS.length;
-		DFA38_transition = new short[numStates][];
-		for (int i=0; i<numStates; i++) {
-			DFA38_transition[i] = DFA.unpackEncodedString(DFA38_transitionS[i]);
-		}
-	}
-
-	protected class DFA38 extends DFA {
-
-		public DFA38(BaseRecognizer recognizer) {
-			this.recognizer = recognizer;
-			this.decisionNumber = 38;
-			this.eot = DFA38_eot;
-			this.eof = DFA38_eof;
-			this.min = DFA38_min;
-			this.max = DFA38_max;
-			this.accept = DFA38_accept;
-			this.special = DFA38_special;
-			this.transition = DFA38_transition;
-		}
-		@Override
-		public String getDescription() {
-			return "723:1: verification_error_reference : ( CLASS_DESCRIPTOR | field_reference | method_reference );";
+			return "715:7: ( member_name COLON nonvoid_type_descriptor -> ^( I_ENCODED_FIELD ( reference_type_descriptor )? member_name nonvoid_type_descriptor ) | member_name method_prototype -> ^( I_ENCODED_METHOD ( reference_type_descriptor )? member_name method_prototype ) )";
 		}
 	}
 
 	static final String DFA40_eotS =
-		"\103\uffff";
+		"\70\uffff";
 	static final String DFA40_eofS =
-		"\103\uffff";
+		"\70\uffff";
 	static final String DFA40_minS =
-		"\1\5\100\uffff\1\0\1\uffff";
+		"\1\4\1\5\1\20\60\24\1\uffff\1\4\1\11\2\uffff";
 	static final String DFA40_maxS =
-		"\1\u00c1\100\uffff\1\0\1\uffff";
+		"\1\u00d5\1\u00d0\1\u00c8\12\u00c3\1\u00c6\45\u00c3\1\uffff\1\u00d5\1\11"+
+		"\2\uffff";
 	static final String DFA40_acceptS =
-		"\1\uffff\1\2\100\uffff\1\1";
+		"\63\uffff\1\1\2\uffff\1\2\1\3";
 	static final String DFA40_specialS =
-		"\101\uffff\1\0\1\uffff}>";
+		"\70\uffff}>";
 	static final String[] DFA40_transitionS = {
-			"\1\101\1\uffff\1\1\4\uffff\2\1\5\uffff\1\1\7\uffff\2\1\1\uffff\1\1\3"+
-			"\uffff\1\1\7\uffff\56\1\123\uffff\3\1\7\uffff\2\1\3\uffff\1\1\1\uffff"+
+			"\1\4\1\uffff\1\20\1\uffff\1\2\2\uffff\1\12\4\uffff\1\1\7\uffff\1\11\17"+
+			"\uffff\1\10\2\uffff\1\23\1\24\1\25\1\uffff\1\26\1\uffff\1\27\2\uffff"+
+			"\1\30\1\31\1\32\1\33\1\34\1\35\3\uffff\1\36\1\uffff\1\37\1\40\1\41\1"+
+			"\42\1\uffff\1\43\1\44\1\uffff\1\45\3\uffff\1\46\1\47\1\uffff\1\50\1\51"+
+			"\1\52\1\53\1\54\1\55\1\56\6\uffff\1\57\1\60\1\61\136\uffff\1\62\1\uffff"+
+			"\1\21\1\22\1\7\1\13\4\uffff\1\15\1\6\1\16\1\uffff\1\14\3\uffff\1\3\5"+
+			"\uffff\1\5\1\17",
+			"\1\63\1\uffff\1\63\1\uffff\1\64\3\uffff\2\63\5\uffff\1\63\7\uffff\2"+
+			"\63\5\uffff\1\63\7\uffff\63\63\132\uffff\3\63\11\uffff\2\63\3\uffff\1"+
+			"\63\1\uffff\2\63\2\uffff\2\63",
+			"\1\65\u00b7\uffff\1\65",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67\2\uffff\1\15",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"\1\66\u00ae\uffff\1\67",
+			"",
+			"\1\4\1\uffff\1\20\4\uffff\1\12\14\uffff\1\11\17\uffff\1\10\2\uffff\1"+
+			"\23\1\24\1\25\1\uffff\1\26\1\uffff\1\27\2\uffff\1\30\1\31\1\32\1\33\1"+
+			"\34\1\35\3\uffff\1\36\1\uffff\1\37\1\40\1\41\1\42\1\uffff\1\43\1\44\1"+
+			"\uffff\1\45\3\uffff\1\46\1\47\1\uffff\1\50\1\51\1\52\1\53\1\54\1\55\1"+
+			"\56\6\uffff\1\57\1\60\1\61\136\uffff\1\62\1\uffff\1\21\1\22\1\7\1\13"+
+			"\4\uffff\1\15\1\6\1\16\1\uffff\1\14\3\uffff\1\3\5\uffff\1\5\1\17",
+			"\1\64",
+			"",
+			""
+	};
+
+	static final short[] DFA40_eot = DFA.unpackEncodedString(DFA40_eotS);
+	static final short[] DFA40_eof = DFA.unpackEncodedString(DFA40_eofS);
+	static final char[] DFA40_min = DFA.unpackEncodedStringToUnsignedChars(DFA40_minS);
+	static final char[] DFA40_max = DFA.unpackEncodedStringToUnsignedChars(DFA40_maxS);
+	static final short[] DFA40_accept = DFA.unpackEncodedString(DFA40_acceptS);
+	static final short[] DFA40_special = DFA.unpackEncodedString(DFA40_specialS);
+	static final short[][] DFA40_transition;
+
+	static {
+		int numStates = DFA40_transitionS.length;
+		DFA40_transition = new short[numStates][];
+		for (int i=0; i<numStates; i++) {
+			DFA40_transition[i] = DFA.unpackEncodedString(DFA40_transitionS[i]);
+		}
+	}
+
+	protected class DFA40 extends DFA {
+
+		public DFA40(BaseRecognizer recognizer) {
+			this.recognizer = recognizer;
+			this.decisionNumber = 40;
+			this.eot = DFA40_eot;
+			this.eof = DFA40_eof;
+			this.min = DFA40_min;
+			this.max = DFA40_max;
+			this.accept = DFA40_accept;
+			this.special = DFA40_special;
+			this.transition = DFA40_transition;
+		}
+		@Override
+		public String getDescription() {
+			return "757:1: verification_error_reference : ( CLASS_DESCRIPTOR | field_reference | method_reference );";
+		}
+	}
+
+	static final String DFA42_eotS =
+		"\110\uffff";
+	static final String DFA42_eofS =
+		"\110\uffff";
+	static final String DFA42_minS =
+		"\1\5\105\uffff\1\0\1\uffff";
+	static final String DFA42_maxS =
+		"\1\u00d0\105\uffff\1\0\1\uffff";
+	static final String DFA42_acceptS =
+		"\1\uffff\1\2\105\uffff\1\1";
+	static final String DFA42_specialS =
+		"\106\uffff\1\0\1\uffff}>";
+	static final String[] DFA42_transitionS = {
+			"\1\106\1\uffff\1\1\5\uffff\2\1\5\uffff\1\1\7\uffff\2\1\1\uffff\1\1\3"+
+			"\uffff\1\1\7\uffff\63\1\132\uffff\3\1\11\uffff\2\1\3\uffff\1\1\1\uffff"+
 			"\2\1\2\uffff\2\1",
 			"",
 			"",
@@ -15112,42 +16471,47 @@
 			"",
 			"",
 			"",
+			"",
+			"",
+			"",
+			"",
+			"",
 			"\1\uffff",
 			""
 	};
 
-	static final short[] DFA40_eot = DFA.unpackEncodedString(DFA40_eotS);
-	static final short[] DFA40_eof = DFA.unpackEncodedString(DFA40_eofS);
-	static final char[] DFA40_min = DFA.unpackEncodedStringToUnsignedChars(DFA40_minS);
-	static final char[] DFA40_max = DFA.unpackEncodedStringToUnsignedChars(DFA40_maxS);
-	static final short[] DFA40_accept = DFA.unpackEncodedString(DFA40_acceptS);
-	static final short[] DFA40_special = DFA.unpackEncodedString(DFA40_specialS);
-	static final short[][] DFA40_transition;
+	static final short[] DFA42_eot = DFA.unpackEncodedString(DFA42_eotS);
+	static final short[] DFA42_eof = DFA.unpackEncodedString(DFA42_eofS);
+	static final char[] DFA42_min = DFA.unpackEncodedStringToUnsignedChars(DFA42_minS);
+	static final char[] DFA42_max = DFA.unpackEncodedStringToUnsignedChars(DFA42_maxS);
+	static final short[] DFA42_accept = DFA.unpackEncodedString(DFA42_acceptS);
+	static final short[] DFA42_special = DFA.unpackEncodedString(DFA42_specialS);
+	static final short[][] DFA42_transition;
 
 	static {
-		int numStates = DFA40_transitionS.length;
-		DFA40_transition = new short[numStates][];
+		int numStates = DFA42_transitionS.length;
+		DFA42_transition = new short[numStates][];
 		for (int i=0; i<numStates; i++) {
-			DFA40_transition[i] = DFA.unpackEncodedString(DFA40_transitionS[i]);
+			DFA42_transition[i] = DFA.unpackEncodedString(DFA42_transitionS[i]);
 		}
 	}
 
-	protected class DFA40 extends DFA {
+	protected class DFA42 extends DFA {
 
-		public DFA40(BaseRecognizer recognizer) {
+		public DFA42(BaseRecognizer recognizer) {
 			this.recognizer = recognizer;
-			this.decisionNumber = 40;
-			this.eot = DFA40_eot;
-			this.eof = DFA40_eof;
-			this.min = DFA40_min;
-			this.max = DFA40_max;
-			this.accept = DFA40_accept;
-			this.special = DFA40_special;
-			this.transition = DFA40_transition;
+			this.decisionNumber = 42;
+			this.eot = DFA42_eot;
+			this.eof = DFA42_eof;
+			this.min = DFA42_min;
+			this.max = DFA42_max;
+			this.accept = DFA42_accept;
+			this.special = DFA42_special;
+			this.transition = DFA42_transition;
 		}
 		@Override
 		public String getDescription() {
-			return "()* loopback of 741:5: ({...}? annotation )*";
+			return "()* loopback of 775:5: ({...}? annotation )*";
 		}
 		@Override
 		public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
@@ -15155,538 +16519,592 @@
 			int _s = s;
 			switch ( s ) {
 					case 0 : 
-						int LA40_65 = input.LA(1);
+						int LA42_70 = input.LA(1);
 						 
-						int index40_65 = input.index();
+						int index42_70 = input.index();
 						input.rewind();
 						s = -1;
-						if ( ((input.LA(1) == ANNOTATION_DIRECTIVE)) ) {s = 66;}
+						if ( ((input.LA(1) == ANNOTATION_DIRECTIVE)) ) {s = 71;}
 						else if ( (true) ) {s = 1;}
 						 
-						input.seek(index40_65);
+						input.seek(index42_70);
 						if ( s>=0 ) return s;
 						break;
 			}
 			NoViableAltException nvae =
-				new NoViableAltException(getDescription(), 40, _s, input);
+				new NoViableAltException(getDescription(), 42, _s, input);
 			error(nvae);
 			throw nvae;
 		}
 	}
 
-	public static final BitSet FOLLOW_class_spec_in_smali_file1075 = new BitSet(new long[]{0x0000011000010020L,0x0000000000000000L,0x0001000000000000L,0x0000000000000011L});
-	public static final BitSet FOLLOW_super_spec_in_smali_file1086 = new BitSet(new long[]{0x0000011000010020L,0x0000000000000000L,0x0001000000000000L,0x0000000000000011L});
-	public static final BitSet FOLLOW_implements_spec_in_smali_file1094 = new BitSet(new long[]{0x0000011000010020L,0x0000000000000000L,0x0001000000000000L,0x0000000000000011L});
-	public static final BitSet FOLLOW_source_spec_in_smali_file1103 = new BitSet(new long[]{0x0000011000010020L,0x0000000000000000L,0x0001000000000000L,0x0000000000000011L});
-	public static final BitSet FOLLOW_method_in_smali_file1111 = new BitSet(new long[]{0x0000011000010020L,0x0000000000000000L,0x0001000000000000L,0x0000000000000011L});
-	public static final BitSet FOLLOW_field_in_smali_file1117 = new BitSet(new long[]{0x0000011000010020L,0x0000000000000000L,0x0001000000000000L,0x0000000000000011L});
-	public static final BitSet FOLLOW_annotation_in_smali_file1123 = new BitSet(new long[]{0x0000011000010020L,0x0000000000000000L,0x0001000000000000L,0x0000000000000011L});
-	public static final BitSet FOLLOW_EOF_in_smali_file1134 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_CLASS_DIRECTIVE_in_class_spec1221 = new BitSet(new long[]{0x0000000000008010L});
-	public static final BitSet FOLLOW_access_list_in_class_spec1223 = new BitSet(new long[]{0x0000000000008000L});
-	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_class_spec1225 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_SUPER_DIRECTIVE_in_super_spec1243 = new BitSet(new long[]{0x0000000000008000L});
-	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_super_spec1245 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_IMPLEMENTS_DIRECTIVE_in_implements_spec1264 = new BitSet(new long[]{0x0000000000008000L});
-	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_implements_spec1266 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_SOURCE_DIRECTIVE_in_source_spec1285 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
-	public static final BitSet FOLLOW_STRING_LITERAL_in_source_spec1287 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_ACCESS_SPEC_in_access_list1306 = new BitSet(new long[]{0x0000000000000012L});
-	public static final BitSet FOLLOW_FIELD_DIRECTIVE_in_field1337 = new BitSet(new long[]{0xF4795C8000800450L,0x0000000000E0FB16L,0x8B86800000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_access_list_in_field1339 = new BitSet(new long[]{0xF4795C8000800450L,0x0000000000E0FB16L,0x8B86800000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_member_name_in_field1341 = new BitSet(new long[]{0x0000000000080000L});
-	public static final BitSet FOLLOW_COLON_in_field1343 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x0200000000000000L});
-	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_field1345 = new BitSet(new long[]{0x0000000804000022L});
-	public static final BitSet FOLLOW_EQUAL_in_field1348 = new BitSet(new long[]{0xF4795CC200C0CD50L,0x0000000000E0FB16L,0xCB8EC00000000000L,0x000000000000006CL});
-	public static final BitSet FOLLOW_literal_in_field1350 = new BitSet(new long[]{0x0000000004000022L});
-	public static final BitSet FOLLOW_annotation_in_field1363 = new BitSet(new long[]{0x0000000004000022L});
-	public static final BitSet FOLLOW_END_FIELD_DIRECTIVE_in_field1377 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_METHOD_DIRECTIVE_in_method1488 = new BitSet(new long[]{0xF4795C8000800450L,0x0000000000E0FB16L,0x8B86800000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_access_list_in_method1490 = new BitSet(new long[]{0xF4795C8000800450L,0x0000000000E0FB16L,0x8B86800000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_member_name_in_method1492 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0010000000000000L});
-	public static final BitSet FOLLOW_method_prototype_in_method1494 = new BitSet(new long[]{0xFFFFFC04180830A0L,0x0000000000FFFFFFL,0x3460380000000000L,0x0000000000000003L});
-	public static final BitSet FOLLOW_statements_and_directives_in_method1496 = new BitSet(new long[]{0x0000000010000000L});
-	public static final BitSet FOLLOW_END_METHOD_DIRECTIVE_in_method1502 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_ordered_method_item_in_statements_and_directives1547 = new BitSet(new long[]{0xFFFFFC04080830A2L,0x0000000000FFFFFFL,0x3460380000000000L,0x0000000000000003L});
-	public static final BitSet FOLLOW_registers_directive_in_statements_and_directives1555 = new BitSet(new long[]{0xFFFFFC04080830A2L,0x0000000000FFFFFFL,0x3460380000000000L,0x0000000000000003L});
-	public static final BitSet FOLLOW_catch_directive_in_statements_and_directives1563 = new BitSet(new long[]{0xFFFFFC04080830A2L,0x0000000000FFFFFFL,0x3460380000000000L,0x0000000000000003L});
-	public static final BitSet FOLLOW_catchall_directive_in_statements_and_directives1571 = new BitSet(new long[]{0xFFFFFC04080830A2L,0x0000000000FFFFFFL,0x3460380000000000L,0x0000000000000003L});
-	public static final BitSet FOLLOW_parameter_directive_in_statements_and_directives1579 = new BitSet(new long[]{0xFFFFFC04080830A2L,0x0000000000FFFFFFL,0x3460380000000000L,0x0000000000000003L});
-	public static final BitSet FOLLOW_annotation_in_statements_and_directives1587 = new BitSet(new long[]{0xFFFFFC04080830A2L,0x0000000000FFFFFFL,0x3460380000000000L,0x0000000000000003L});
-	public static final BitSet FOLLOW_label_in_ordered_method_item1672 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_instruction_in_ordered_method_item1678 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_debug_directive_in_ordered_method_item1684 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_REGISTERS_DIRECTIVE_in_registers_directive1704 = new BitSet(new long[]{0x0000000000004800L,0x0000000000000000L,0x4102400000000000L});
-	public static final BitSet FOLLOW_integral_literal_in_registers_directive1708 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_LOCALS_DIRECTIVE_in_registers_directive1728 = new BitSet(new long[]{0x0000000000004800L,0x0000000000000000L,0x4102400000000000L});
-	public static final BitSet FOLLOW_integral_literal_in_registers_directive1732 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_PARAM_LIST_OR_ID_PRIMITIVE_TYPE_in_param_list_or_id1764 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0080000000000000L});
-	public static final BitSet FOLLOW_SIMPLE_NAME_in_simple_name1777 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_ACCESS_SPEC_in_simple_name1783 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_VERIFICATION_ERROR_TYPE_in_simple_name1794 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_POSITIVE_INTEGER_LITERAL_in_simple_name1805 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_NEGATIVE_INTEGER_LITERAL_in_simple_name1816 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_FLOAT_LITERAL_OR_ID_in_simple_name1827 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_DOUBLE_LITERAL_OR_ID_in_simple_name1838 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_BOOL_LITERAL_in_simple_name1849 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_NULL_LITERAL_in_simple_name1860 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_REGISTER_in_simple_name1871 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_param_list_or_id_in_simple_name1882 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_PRIMITIVE_TYPE_in_simple_name1892 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_VOID_TYPE_in_simple_name1903 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_ANNOTATION_VISIBILITY_in_simple_name1914 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT10t_in_simple_name1925 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT10x_in_simple_name1936 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT10x_ODEX_in_simple_name1947 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT11x_in_simple_name1958 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT12x_OR_ID_in_simple_name1969 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_FIELD_in_simple_name1980 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_FIELD_ODEX_in_simple_name1991 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_STRING_in_simple_name2002 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_TYPE_in_simple_name2013 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21t_in_simple_name2024 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22c_FIELD_in_simple_name2035 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22c_FIELD_ODEX_in_simple_name2046 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22c_TYPE_in_simple_name2057 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22cs_FIELD_in_simple_name2068 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22s_OR_ID_in_simple_name2079 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22t_in_simple_name2090 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT23x_in_simple_name2101 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT31i_OR_ID_in_simple_name2112 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT31t_in_simple_name2123 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_METHOD_in_simple_name2134 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_METHOD_ODEX_in_simple_name2145 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_TYPE_in_simple_name2156 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35mi_METHOD_in_simple_name2167 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35ms_METHOD_in_simple_name2178 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT45cc_METHOD_in_simple_name2189 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT4rcc_METHOD_in_simple_name2200 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT51l_in_simple_name2211 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_simple_name_in_member_name2226 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_MEMBER_NAME_in_member_name2232 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_OPEN_PAREN_in_method_prototype2247 = new BitSet(new long[]{0x0000000000048100L,0x0000000000000000L,0x0280000000000000L});
-	public static final BitSet FOLLOW_param_list_in_method_prototype2249 = new BitSet(new long[]{0x0000000000040000L});
-	public static final BitSet FOLLOW_CLOSE_PAREN_in_method_prototype2251 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x0200000000000000L,0x0000000000000040L});
-	public static final BitSet FOLLOW_type_descriptor_in_method_prototype2253 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_PARAM_LIST_OR_ID_PRIMITIVE_TYPE_in_param_list_or_id_primitive_type2283 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_param_list_or_id_primitive_type_in_param_list2298 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0080000000000000L});
-	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_param_list2305 = new BitSet(new long[]{0x0000000000008102L,0x0000000000000000L,0x0200000000000000L});
-	public static final BitSet FOLLOW_ARRAY_TYPE_PREFIX_in_array_descriptor2316 = new BitSet(new long[]{0x0000000000008000L,0x0000000000000000L,0x0200000000000000L});
-	public static final BitSet FOLLOW_set_in_array_descriptor2318 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_VOID_TYPE_in_type_descriptor2334 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_PRIMITIVE_TYPE_in_type_descriptor2340 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_type_descriptor2346 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_array_descriptor_in_type_descriptor2352 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_PRIMITIVE_TYPE_in_nonvoid_type_descriptor2362 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_nonvoid_type_descriptor2368 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_array_descriptor_in_nonvoid_type_descriptor2374 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_reference_type_descriptor2384 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_array_descriptor_in_reference_type_descriptor2390 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_POSITIVE_INTEGER_LITERAL_in_integer_literal2400 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_NEGATIVE_INTEGER_LITERAL_in_integer_literal2411 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_FLOAT_LITERAL_OR_ID_in_float_literal2426 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_FLOAT_LITERAL_in_float_literal2437 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_DOUBLE_LITERAL_OR_ID_in_double_literal2447 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_DOUBLE_LITERAL_in_double_literal2458 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_LONG_LITERAL_in_literal2468 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_integer_literal_in_literal2474 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_SHORT_LITERAL_in_literal2480 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_BYTE_LITERAL_in_literal2486 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_float_literal_in_literal2492 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_double_literal_in_literal2498 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_CHAR_LITERAL_in_literal2504 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_STRING_LITERAL_in_literal2510 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_BOOL_LITERAL_in_literal2516 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_NULL_LITERAL_in_literal2522 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_array_literal_in_literal2528 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_subannotation_in_literal2534 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_type_field_method_literal_in_literal2540 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_enum_literal_in_literal2546 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_integer_literal_in_parsed_integer_literal2559 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_LONG_LITERAL_in_integral_literal2571 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_integer_literal_in_integral_literal2577 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_SHORT_LITERAL_in_integral_literal2583 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_CHAR_LITERAL_in_integral_literal2589 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_BYTE_LITERAL_in_integral_literal2595 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_LONG_LITERAL_in_fixed_32bit_literal2605 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_integer_literal_in_fixed_32bit_literal2611 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_SHORT_LITERAL_in_fixed_32bit_literal2617 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_BYTE_LITERAL_in_fixed_32bit_literal2623 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_float_literal_in_fixed_32bit_literal2629 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_CHAR_LITERAL_in_fixed_32bit_literal2635 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_BOOL_LITERAL_in_fixed_32bit_literal2641 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_integer_literal_in_fixed_literal2651 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_LONG_LITERAL_in_fixed_literal2657 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_SHORT_LITERAL_in_fixed_literal2663 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_BYTE_LITERAL_in_fixed_literal2669 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_float_literal_in_fixed_literal2675 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_double_literal_in_fixed_literal2681 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_CHAR_LITERAL_in_fixed_literal2687 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_BOOL_LITERAL_in_fixed_literal2693 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_OPEN_BRACE_in_array_literal2703 = new BitSet(new long[]{0xF4795CC200C2CD50L,0x0000000000E0FB16L,0xCB8EC00000000000L,0x000000000000006CL});
-	public static final BitSet FOLLOW_literal_in_array_literal2706 = new BitSet(new long[]{0x0000000000120000L});
-	public static final BitSet FOLLOW_COMMA_in_array_literal2709 = new BitSet(new long[]{0xF4795CC200C0CD50L,0x0000000000E0FB16L,0xCB8EC00000000000L,0x000000000000006CL});
-	public static final BitSet FOLLOW_literal_in_array_literal2711 = new BitSet(new long[]{0x0000000000120000L});
-	public static final BitSet FOLLOW_CLOSE_BRACE_in_array_literal2719 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_simple_name_in_annotation_element2743 = new BitSet(new long[]{0x0000000800000000L});
-	public static final BitSet FOLLOW_EQUAL_in_annotation_element2745 = new BitSet(new long[]{0xF4795CC200C0CD50L,0x0000000000E0FB16L,0xCB8EC00000000000L,0x000000000000006CL});
-	public static final BitSet FOLLOW_literal_in_annotation_element2747 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_ANNOTATION_DIRECTIVE_in_annotation2772 = new BitSet(new long[]{0x0000000000000040L});
-	public static final BitSet FOLLOW_ANNOTATION_VISIBILITY_in_annotation2774 = new BitSet(new long[]{0x0000000000008000L});
-	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_annotation2776 = new BitSet(new long[]{0xF4795C8001800450L,0x0000000000E0FB16L,0x8B86000000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_annotation_element_in_annotation2782 = new BitSet(new long[]{0xF4795C8001800450L,0x0000000000E0FB16L,0x8B86000000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_END_ANNOTATION_DIRECTIVE_in_annotation2785 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_SUBANNOTATION_DIRECTIVE_in_subannotation2818 = new BitSet(new long[]{0x0000000000008000L});
-	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_subannotation2820 = new BitSet(new long[]{0xF4795C8100800450L,0x0000000000E0FB16L,0x8B86000000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_annotation_element_in_subannotation2822 = new BitSet(new long[]{0xF4795C8100800450L,0x0000000000E0FB16L,0x8B86000000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_END_SUBANNOTATION_DIRECTIVE_in_subannotation2825 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_ENUM_DIRECTIVE_in_enum_literal2852 = new BitSet(new long[]{0xF4795C8000808550L,0x0000000000E0FB16L,0x8B86800000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_field_reference_in_enum_literal2854 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_reference_type_descriptor_in_type_field_method_literal2874 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_reference_type_descriptor_in_type_field_method_literal2883 = new BitSet(new long[]{0x0000000000000200L});
-	public static final BitSet FOLLOW_ARROW_in_type_field_method_literal2885 = new BitSet(new long[]{0xF4795C8000800450L,0x0000000000E0FB16L,0x8B86800000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_member_name_in_type_field_method_literal2897 = new BitSet(new long[]{0x0000000000080000L});
-	public static final BitSet FOLLOW_COLON_in_type_field_method_literal2899 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x0200000000000000L});
-	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_type_field_method_literal2901 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_member_name_in_type_field_method_literal2924 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0010000000000000L});
-	public static final BitSet FOLLOW_method_prototype_in_type_field_method_literal2926 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_PRIMITIVE_TYPE_in_type_field_method_literal2959 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_VOID_TYPE_in_type_field_method_literal2965 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_reference_type_descriptor_in_method_reference2976 = new BitSet(new long[]{0x0000000000000200L});
-	public static final BitSet FOLLOW_ARROW_in_method_reference2978 = new BitSet(new long[]{0xF4795C8000800450L,0x0000000000E0FB16L,0x8B86800000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_member_name_in_method_reference2982 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0010000000000000L});
-	public static final BitSet FOLLOW_method_prototype_in_method_reference2984 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_reference_type_descriptor_in_field_reference3006 = new BitSet(new long[]{0x0000000000000200L});
-	public static final BitSet FOLLOW_ARROW_in_field_reference3008 = new BitSet(new long[]{0xF4795C8000800450L,0x0000000000E0FB16L,0x8B86800000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_member_name_in_field_reference3012 = new BitSet(new long[]{0x0000000000080000L});
-	public static final BitSet FOLLOW_COLON_in_field_reference3014 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x0200000000000000L});
-	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_field_reference3016 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_COLON_in_label3037 = new BitSet(new long[]{0xF4795C8000800450L,0x0000000000E0FB16L,0x8B86000000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_simple_name_in_label3039 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_COLON_in_label_ref3058 = new BitSet(new long[]{0xF4795C8000800450L,0x0000000000E0FB16L,0x8B86000000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_simple_name_in_label_ref3060 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_REGISTER_in_register_list3074 = new BitSet(new long[]{0x0000000000100002L});
-	public static final BitSet FOLLOW_COMMA_in_register_list3077 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_register_list3079 = new BitSet(new long[]{0x0000000000100002L});
-	public static final BitSet FOLLOW_REGISTER_in_register_range3114 = new BitSet(new long[]{0x0000000000200002L});
-	public static final BitSet FOLLOW_DOTDOT_in_register_range3117 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_register_range3121 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_verification_error_reference3150 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_field_reference_in_verification_error_reference3154 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_method_reference_in_verification_error_reference3158 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_CATCH_DIRECTIVE_in_catch_directive3168 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x0200000000000000L});
-	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_catch_directive3170 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0008000000000000L});
-	public static final BitSet FOLLOW_OPEN_BRACE_in_catch_directive3172 = new BitSet(new long[]{0x0000000000080000L});
-	public static final BitSet FOLLOW_label_ref_in_catch_directive3176 = new BitSet(new long[]{0x0000000000200000L});
-	public static final BitSet FOLLOW_DOTDOT_in_catch_directive3178 = new BitSet(new long[]{0x0000000000080000L});
-	public static final BitSet FOLLOW_label_ref_in_catch_directive3182 = new BitSet(new long[]{0x0000000000020000L});
-	public static final BitSet FOLLOW_CLOSE_BRACE_in_catch_directive3184 = new BitSet(new long[]{0x0000000000080000L});
-	public static final BitSet FOLLOW_label_ref_in_catch_directive3188 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_CATCHALL_DIRECTIVE_in_catchall_directive3220 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0008000000000000L});
-	public static final BitSet FOLLOW_OPEN_BRACE_in_catchall_directive3222 = new BitSet(new long[]{0x0000000000080000L});
-	public static final BitSet FOLLOW_label_ref_in_catchall_directive3226 = new BitSet(new long[]{0x0000000000200000L});
-	public static final BitSet FOLLOW_DOTDOT_in_catchall_directive3228 = new BitSet(new long[]{0x0000000000080000L});
-	public static final BitSet FOLLOW_label_ref_in_catchall_directive3232 = new BitSet(new long[]{0x0000000000020000L});
-	public static final BitSet FOLLOW_CLOSE_BRACE_in_catchall_directive3234 = new BitSet(new long[]{0x0000000000080000L});
-	public static final BitSet FOLLOW_label_ref_in_catchall_directive3238 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_PARAMETER_DIRECTIVE_in_parameter_directive3277 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_parameter_directive3279 = new BitSet(new long[]{0x0000000040100022L});
-	public static final BitSet FOLLOW_COMMA_in_parameter_directive3282 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
-	public static final BitSet FOLLOW_STRING_LITERAL_in_parameter_directive3284 = new BitSet(new long[]{0x0000000040000022L});
-	public static final BitSet FOLLOW_annotation_in_parameter_directive3295 = new BitSet(new long[]{0x0000000040000022L});
-	public static final BitSet FOLLOW_END_PARAMETER_DIRECTIVE_in_parameter_directive3308 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_line_directive_in_debug_directive3381 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_local_directive_in_debug_directive3387 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_end_local_directive_in_debug_directive3393 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_restart_local_directive_in_debug_directive3399 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_prologue_directive_in_debug_directive3405 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_epilogue_directive_in_debug_directive3411 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_source_directive_in_debug_directive3417 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_LINE_DIRECTIVE_in_line_directive3427 = new BitSet(new long[]{0x0000000000004800L,0x0000000000000000L,0x4102400000000000L});
-	public static final BitSet FOLLOW_integral_literal_in_line_directive3429 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_LOCAL_DIRECTIVE_in_local_directive3452 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_local_directive3454 = new BitSet(new long[]{0x0000000000100002L});
-	public static final BitSet FOLLOW_COMMA_in_local_directive3457 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0004000000000000L,0x0000000000000004L});
-	public static final BitSet FOLLOW_NULL_LITERAL_in_local_directive3460 = new BitSet(new long[]{0x0000000000080000L});
-	public static final BitSet FOLLOW_STRING_LITERAL_in_local_directive3466 = new BitSet(new long[]{0x0000000000080000L});
-	public static final BitSet FOLLOW_COLON_in_local_directive3469 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x0200000000000000L,0x0000000000000040L});
-	public static final BitSet FOLLOW_VOID_TYPE_in_local_directive3472 = new BitSet(new long[]{0x0000000000100002L});
-	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_local_directive3476 = new BitSet(new long[]{0x0000000000100002L});
-	public static final BitSet FOLLOW_COMMA_in_local_directive3510 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
-	public static final BitSet FOLLOW_STRING_LITERAL_in_local_directive3514 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_END_LOCAL_DIRECTIVE_in_end_local_directive3556 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_end_local_directive3558 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_RESTART_LOCAL_DIRECTIVE_in_restart_local_directive3581 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_restart_local_directive3583 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_PROLOGUE_DIRECTIVE_in_prologue_directive3606 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_EPILOGUE_DIRECTIVE_in_epilogue_directive3627 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_SOURCE_DIRECTIVE_in_source_directive3648 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
-	public static final BitSet FOLLOW_STRING_LITERAL_in_source_directive3650 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT12x_in_instruction_format12x3675 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT12x_OR_ID_in_instruction_format12x3681 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22s_in_instruction_format22s3696 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22s_OR_ID_in_instruction_format22s3702 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT31i_in_instruction_format31i3717 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT31i_OR_ID_in_instruction_format31i3723 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format10t_in_instruction3740 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format10x_in_instruction3746 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format10x_odex_in_instruction3752 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format11n_in_instruction3758 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format11x_in_instruction3764 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format12x_in_instruction3770 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format20bc_in_instruction3776 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format20t_in_instruction3782 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format21c_field_in_instruction3788 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format21c_field_odex_in_instruction3794 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format21c_string_in_instruction3800 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format21c_type_in_instruction3806 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format21ih_in_instruction3812 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format21lh_in_instruction3818 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format21s_in_instruction3824 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format21t_in_instruction3830 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format22b_in_instruction3836 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format22c_field_in_instruction3842 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format22c_field_odex_in_instruction3848 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format22c_type_in_instruction3854 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format22cs_field_in_instruction3860 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format22s_in_instruction3866 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format22t_in_instruction3872 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format22x_in_instruction3878 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format23x_in_instruction3884 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format30t_in_instruction3890 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format31c_in_instruction3896 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format31i_in_instruction3902 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format31t_in_instruction3908 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format32x_in_instruction3914 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format35c_method_in_instruction3920 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format35c_type_in_instruction3926 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format35c_method_odex_in_instruction3932 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format35mi_method_in_instruction3938 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format35ms_method_in_instruction3944 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format3rc_method_in_instruction3950 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format3rc_method_odex_in_instruction3956 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format3rc_type_in_instruction3962 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format3rmi_method_in_instruction3968 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format3rms_method_in_instruction3974 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format45cc_method_in_instruction3980 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format4rcc_method_in_instruction3986 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format51l_in_instruction3992 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_array_data_directive_in_instruction3998 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_packed_switch_directive_in_instruction4004 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_sparse_switch_directive_in_instruction4010 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT10t_in_insn_format10t4030 = new BitSet(new long[]{0x0000000000080000L});
-	public static final BitSet FOLLOW_label_ref_in_insn_format10t4032 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT10x_in_insn_format10x4062 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT10x_ODEX_in_insn_format10x_odex4090 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT11n_in_insn_format11n4111 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format11n4113 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format11n4115 = new BitSet(new long[]{0x0000000000004800L,0x0000000000000000L,0x4102400000000000L});
-	public static final BitSet FOLLOW_integral_literal_in_insn_format11n4117 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT11x_in_insn_format11x4149 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format11x4151 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_instruction_format12x_in_insn_format12x4181 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format12x4183 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format12x4185 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format12x4187 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT20bc_in_insn_format20bc4219 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
-	public static final BitSet FOLLOW_VERIFICATION_ERROR_TYPE_in_insn_format20bc4221 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format20bc4223 = new BitSet(new long[]{0xF4795C8000808550L,0x0000000000E0FB16L,0x8B86800000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_verification_error_reference_in_insn_format20bc4225 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT20t_in_insn_format20t4262 = new BitSet(new long[]{0x0000000000080000L});
-	public static final BitSet FOLLOW_label_ref_in_insn_format20t4264 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_FIELD_in_insn_format21c_field4294 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format21c_field4296 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format21c_field4298 = new BitSet(new long[]{0xF4795C8000808550L,0x0000000000E0FB16L,0x8B86800000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_field_reference_in_insn_format21c_field4300 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_FIELD_ODEX_in_insn_format21c_field_odex4332 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format21c_field_odex4334 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format21c_field_odex4336 = new BitSet(new long[]{0xF4795C8000808550L,0x0000000000E0FB16L,0x8B86800000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_field_reference_in_insn_format21c_field_odex4338 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_STRING_in_insn_format21c_string4376 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format21c_string4378 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format21c_string4380 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
-	public static final BitSet FOLLOW_STRING_LITERAL_in_insn_format21c_string4382 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_TYPE_in_insn_format21c_type4414 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format21c_type4416 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format21c_type4418 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x0200000000000000L});
-	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format21c_type4420 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21ih_in_insn_format21ih4452 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format21ih4454 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format21ih4456 = new BitSet(new long[]{0x000000C000004C00L,0x0000000000000000L,0x4102400000000000L});
-	public static final BitSet FOLLOW_fixed_32bit_literal_in_insn_format21ih4458 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21lh_in_insn_format21lh4490 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format21lh4492 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format21lh4494 = new BitSet(new long[]{0x000000C000004C00L,0x0000000000000000L,0x4102400000000000L});
-	public static final BitSet FOLLOW_fixed_32bit_literal_in_insn_format21lh4496 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21s_in_insn_format21s4528 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format21s4530 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format21s4532 = new BitSet(new long[]{0x0000000000004800L,0x0000000000000000L,0x4102400000000000L});
-	public static final BitSet FOLLOW_integral_literal_in_insn_format21s4534 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21t_in_insn_format21t4566 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format21t4568 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format21t4570 = new BitSet(new long[]{0x0000000000080000L});
-	public static final BitSet FOLLOW_label_ref_in_insn_format21t4572 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22b_in_insn_format22b4604 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22b4606 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format22b4608 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22b4610 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format22b4612 = new BitSet(new long[]{0x0000000000004800L,0x0000000000000000L,0x4102400000000000L});
-	public static final BitSet FOLLOW_integral_literal_in_insn_format22b4614 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22c_FIELD_in_insn_format22c_field4648 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_field4650 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format22c_field4652 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_field4654 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format22c_field4656 = new BitSet(new long[]{0xF4795C8000808550L,0x0000000000E0FB16L,0x8B86800000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_field_reference_in_insn_format22c_field4658 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22c_FIELD_ODEX_in_insn_format22c_field_odex4692 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_field_odex4694 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format22c_field_odex4696 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_field_odex4698 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format22c_field_odex4700 = new BitSet(new long[]{0xF4795C8000808550L,0x0000000000E0FB16L,0x8B86800000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_field_reference_in_insn_format22c_field_odex4702 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22c_TYPE_in_insn_format22c_type4742 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_type4744 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format22c_type4746 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_type4748 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format22c_type4750 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x0200000000000000L});
-	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format22c_type4752 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22cs_FIELD_in_insn_format22cs_field4786 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22cs_field4788 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format22cs_field4790 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22cs_field4792 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format22cs_field4794 = new BitSet(new long[]{0x0000002000000000L});
-	public static final BitSet FOLLOW_FIELD_OFFSET_in_insn_format22cs_field4796 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_instruction_format22s_in_insn_format22s4817 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22s4819 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format22s4821 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22s4823 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format22s4825 = new BitSet(new long[]{0x0000000000004800L,0x0000000000000000L,0x4102400000000000L});
-	public static final BitSet FOLLOW_integral_literal_in_insn_format22s4827 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22t_in_insn_format22t4861 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22t4863 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format22t4865 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22t4867 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format22t4869 = new BitSet(new long[]{0x0000000000080000L});
-	public static final BitSet FOLLOW_label_ref_in_insn_format22t4871 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22x_in_insn_format22x4905 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22x4907 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format22x4909 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22x4911 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT23x_in_insn_format23x4943 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format23x4945 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format23x4947 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format23x4949 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format23x4951 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format23x4953 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT30t_in_insn_format30t4987 = new BitSet(new long[]{0x0000000000080000L});
-	public static final BitSet FOLLOW_label_ref_in_insn_format30t4989 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT31c_in_insn_format31c5019 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format31c5021 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format31c5023 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
-	public static final BitSet FOLLOW_STRING_LITERAL_in_insn_format31c5025 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_instruction_format31i_in_insn_format31i5056 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format31i5058 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format31i5060 = new BitSet(new long[]{0x000000C000004C00L,0x0000000000000000L,0x4102400000000000L});
-	public static final BitSet FOLLOW_fixed_32bit_literal_in_insn_format31i5062 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT31t_in_insn_format31t5094 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format31t5096 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format31t5098 = new BitSet(new long[]{0x0000000000080000L});
-	public static final BitSet FOLLOW_label_ref_in_insn_format31t5100 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT32x_in_insn_format32x5132 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format32x5134 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format32x5136 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format32x5138 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_METHOD_in_insn_format35c_method5170 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0008000000000000L});
-	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format35c_method5172 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_register_list_in_insn_format35c_method5174 = new BitSet(new long[]{0x0000000000020000L});
-	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format35c_method5176 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format35c_method5178 = new BitSet(new long[]{0xF4795C8000808550L,0x0000000000E0FB16L,0x8B86800000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_method_reference_in_insn_format35c_method5180 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_TYPE_in_insn_format35c_type5212 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0008000000000000L});
-	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format35c_type5214 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_register_list_in_insn_format35c_type5216 = new BitSet(new long[]{0x0000000000020000L});
-	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format35c_type5218 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format35c_type5220 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x0200000000000000L});
-	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format35c_type5222 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_METHOD_ODEX_in_insn_format35c_method_odex5254 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0008000000000000L});
-	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format35c_method_odex5256 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_register_list_in_insn_format35c_method_odex5258 = new BitSet(new long[]{0x0000000000020000L});
-	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format35c_method_odex5260 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format35c_method_odex5262 = new BitSet(new long[]{0xF4795C8000808550L,0x0000000000E0FB16L,0x8B86800000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_method_reference_in_insn_format35c_method_odex5264 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35mi_METHOD_in_insn_format35mi_method5285 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0008000000000000L});
-	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format35mi_method5287 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_register_list_in_insn_format35mi_method5289 = new BitSet(new long[]{0x0000000000020000L});
-	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format35mi_method5291 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format35mi_method5293 = new BitSet(new long[]{0x0000020000000000L});
-	public static final BitSet FOLLOW_INLINE_INDEX_in_insn_format35mi_method5295 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35ms_METHOD_in_insn_format35ms_method5316 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0008000000000000L});
-	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format35ms_method5318 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_register_list_in_insn_format35ms_method5320 = new BitSet(new long[]{0x0000000000020000L});
-	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format35ms_method5322 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format35ms_method5324 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000080L});
-	public static final BitSet FOLLOW_VTABLE_INDEX_in_insn_format35ms_method5326 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rc_METHOD_in_insn_format3rc_method5347 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0008000000000000L});
-	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format3rc_method5349 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_register_range_in_insn_format3rc_method5351 = new BitSet(new long[]{0x0000000000020000L});
-	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format3rc_method5353 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format3rc_method5355 = new BitSet(new long[]{0xF4795C8000808550L,0x0000000000E0FB16L,0x8B86800000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_method_reference_in_insn_format3rc_method5357 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rc_METHOD_ODEX_in_insn_format3rc_method_odex5389 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0008000000000000L});
-	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format3rc_method_odex5391 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_register_list_in_insn_format3rc_method_odex5393 = new BitSet(new long[]{0x0000000000020000L});
-	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format3rc_method_odex5395 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format3rc_method_odex5397 = new BitSet(new long[]{0xF4795C8000808550L,0x0000000000E0FB16L,0x8B86800000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_method_reference_in_insn_format3rc_method_odex5399 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rc_TYPE_in_insn_format3rc_type5420 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0008000000000000L});
-	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format3rc_type5422 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_register_range_in_insn_format3rc_type5424 = new BitSet(new long[]{0x0000000000020000L});
-	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format3rc_type5426 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format3rc_type5428 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x0200000000000000L});
-	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format3rc_type5430 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rmi_METHOD_in_insn_format3rmi_method5462 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0008000000000000L});
-	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format3rmi_method5464 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_register_range_in_insn_format3rmi_method5466 = new BitSet(new long[]{0x0000000000020000L});
-	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format3rmi_method5468 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format3rmi_method5470 = new BitSet(new long[]{0x0000020000000000L});
-	public static final BitSet FOLLOW_INLINE_INDEX_in_insn_format3rmi_method5472 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rms_METHOD_in_insn_format3rms_method5493 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0008000000000000L});
-	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format3rms_method5495 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_register_range_in_insn_format3rms_method5497 = new BitSet(new long[]{0x0000000000020000L});
-	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format3rms_method5499 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format3rms_method5501 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000080L});
-	public static final BitSet FOLLOW_VTABLE_INDEX_in_insn_format3rms_method5503 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT45cc_METHOD_in_insn_format45cc_method5524 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0008000000000000L});
-	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format45cc_method5526 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_register_list_in_insn_format45cc_method5528 = new BitSet(new long[]{0x0000000000020000L});
-	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format45cc_method5530 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format45cc_method5532 = new BitSet(new long[]{0xF4795C8000808550L,0x0000000000E0FB16L,0x8B86800000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_method_reference_in_insn_format45cc_method5534 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format45cc_method5536 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0010000000000000L});
-	public static final BitSet FOLLOW_method_prototype_in_insn_format45cc_method5538 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT4rcc_METHOD_in_insn_format4rcc_method5572 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0008000000000000L});
-	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format4rcc_method5574 = new BitSet(new long[]{0x0000000000020000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_register_range_in_insn_format4rcc_method5576 = new BitSet(new long[]{0x0000000000020000L});
-	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format4rcc_method5578 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format4rcc_method5580 = new BitSet(new long[]{0xF4795C8000808550L,0x0000000000E0FB16L,0x8B86800000000000L,0x0000000000000060L});
-	public static final BitSet FOLLOW_method_reference_in_insn_format4rcc_method5582 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format4rcc_method5584 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0010000000000000L});
-	public static final BitSet FOLLOW_method_prototype_in_insn_format4rcc_method5586 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT51l_in_insn_format51l5620 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format51l5622 = new BitSet(new long[]{0x0000000000100000L});
-	public static final BitSet FOLLOW_COMMA_in_insn_format51l5624 = new BitSet(new long[]{0x000000C000C04C00L,0x0000000000000000L,0x4102400000000000L});
-	public static final BitSet FOLLOW_fixed_literal_in_insn_format51l5626 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_ARRAY_DATA_DIRECTIVE_in_insn_array_data_directive5653 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0102000000000000L});
-	public static final BitSet FOLLOW_parsed_integer_literal_in_insn_array_data_directive5659 = new BitSet(new long[]{0x000000C002C04C00L,0x0000000000000000L,0x4102400000000000L});
-	public static final BitSet FOLLOW_fixed_literal_in_insn_array_data_directive5671 = new BitSet(new long[]{0x000000C002C04C00L,0x0000000000000000L,0x4102400000000000L});
-	public static final BitSet FOLLOW_END_ARRAY_DATA_DIRECTIVE_in_insn_array_data_directive5674 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_PACKED_SWITCH_DIRECTIVE_in_insn_packed_switch_directive5720 = new BitSet(new long[]{0x000000C000004C00L,0x0000000000000000L,0x4102400000000000L});
-	public static final BitSet FOLLOW_fixed_32bit_literal_in_insn_packed_switch_directive5726 = new BitSet(new long[]{0x0000000020080000L});
-	public static final BitSet FOLLOW_label_ref_in_insn_packed_switch_directive5732 = new BitSet(new long[]{0x0000000020080000L});
-	public static final BitSet FOLLOW_END_PACKED_SWITCH_DIRECTIVE_in_insn_packed_switch_directive5739 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_SPARSE_SWITCH_DIRECTIVE_in_insn_sparse_switch_directive5813 = new BitSet(new long[]{0x000000C080004C00L,0x0000000000000000L,0x4102400000000000L});
-	public static final BitSet FOLLOW_fixed_32bit_literal_in_insn_sparse_switch_directive5820 = new BitSet(new long[]{0x0000000000000200L});
-	public static final BitSet FOLLOW_ARROW_in_insn_sparse_switch_directive5822 = new BitSet(new long[]{0x0000000000080000L});
-	public static final BitSet FOLLOW_label_ref_in_insn_sparse_switch_directive5824 = new BitSet(new long[]{0x000000C080004C00L,0x0000000000000000L,0x4102400000000000L});
-	public static final BitSet FOLLOW_END_SPARSE_SWITCH_DIRECTIVE_in_insn_sparse_switch_directive5832 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_class_spec_in_smali_file1140 = new BitSet(new long[]{0x0000022000020020L,0x0000000000000000L,0x2000000000000000L,0x0000000000088000L});
+	public static final BitSet FOLLOW_super_spec_in_smali_file1151 = new BitSet(new long[]{0x0000022000020020L,0x0000000000000000L,0x2000000000000000L,0x0000000000088000L});
+	public static final BitSet FOLLOW_implements_spec_in_smali_file1159 = new BitSet(new long[]{0x0000022000020020L,0x0000000000000000L,0x2000000000000000L,0x0000000000088000L});
+	public static final BitSet FOLLOW_source_spec_in_smali_file1168 = new BitSet(new long[]{0x0000022000020020L,0x0000000000000000L,0x2000000000000000L,0x0000000000088000L});
+	public static final BitSet FOLLOW_method_in_smali_file1176 = new BitSet(new long[]{0x0000022000020020L,0x0000000000000000L,0x2000000000000000L,0x0000000000088000L});
+	public static final BitSet FOLLOW_field_in_smali_file1182 = new BitSet(new long[]{0x0000022000020020L,0x0000000000000000L,0x2000000000000000L,0x0000000000088000L});
+	public static final BitSet FOLLOW_annotation_in_smali_file1188 = new BitSet(new long[]{0x0000022000020020L,0x0000000000000000L,0x2000000000000000L,0x0000000000088000L});
+	public static final BitSet FOLLOW_EOF_in_smali_file1199 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_CLASS_DIRECTIVE_in_class_spec1286 = new BitSet(new long[]{0x0000000000010010L});
+	public static final BitSet FOLLOW_access_list_in_class_spec1288 = new BitSet(new long[]{0x0000000000010000L});
+	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_class_spec1290 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_SUPER_DIRECTIVE_in_super_spec1308 = new BitSet(new long[]{0x0000000000010000L});
+	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_super_spec1310 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_IMPLEMENTS_DIRECTIVE_in_implements_spec1329 = new BitSet(new long[]{0x0000000000010000L});
+	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_implements_spec1331 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_SOURCE_DIRECTIVE_in_source_spec1350 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000020000L});
+	public static final BitSet FOLLOW_STRING_LITERAL_in_source_spec1352 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_ACCESS_SPEC_in_access_list1371 = new BitSet(new long[]{0x0000000000000012L});
+	public static final BitSet FOLLOW_FIELD_DIRECTIVE_in_field1402 = new BitSet(new long[]{0xA3F2B90001000850L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_access_list_in_field1404 = new BitSet(new long[]{0xA3F2B90001000850L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_member_name_in_field1406 = new BitSet(new long[]{0x0000000000100000L});
+	public static final BitSet FOLLOW_COLON_in_field1408 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_field1410 = new BitSet(new long[]{0x0000001008000022L});
+	public static final BitSet FOLLOW_EQUAL_in_field1413 = new BitSet(new long[]{0xA3F2B98401819950L,0x00000000381FD8B7L,0xD800000000000000L,0x00000000003665CFL});
+	public static final BitSet FOLLOW_literal_in_field1415 = new BitSet(new long[]{0x0000000008000022L});
+	public static final BitSet FOLLOW_annotation_in_field1428 = new BitSet(new long[]{0x0000000008000022L});
+	public static final BitSet FOLLOW_END_FIELD_DIRECTIVE_in_field1442 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_METHOD_DIRECTIVE_in_method1553 = new BitSet(new long[]{0xA3F2B90001000850L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_access_list_in_method1555 = new BitSet(new long[]{0xA3F2B90001000850L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_member_name_in_method1557 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+	public static final BitSet FOLLOW_method_prototype_in_method1559 = new BitSet(new long[]{0xFFFFF808301060A0L,0x000000003FFFFFFFL,0x0700000000000000L,0x0000000000019A30L});
+	public static final BitSet FOLLOW_statements_and_directives_in_method1561 = new BitSet(new long[]{0x0000000020000000L});
+	public static final BitSet FOLLOW_END_METHOD_DIRECTIVE_in_method1567 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_ordered_method_item_in_statements_and_directives1612 = new BitSet(new long[]{0xFFFFF808101060A2L,0x000000003FFFFFFFL,0x0700000000000000L,0x0000000000019A30L});
+	public static final BitSet FOLLOW_registers_directive_in_statements_and_directives1620 = new BitSet(new long[]{0xFFFFF808101060A2L,0x000000003FFFFFFFL,0x0700000000000000L,0x0000000000019A30L});
+	public static final BitSet FOLLOW_catch_directive_in_statements_and_directives1628 = new BitSet(new long[]{0xFFFFF808101060A2L,0x000000003FFFFFFFL,0x0700000000000000L,0x0000000000019A30L});
+	public static final BitSet FOLLOW_catchall_directive_in_statements_and_directives1636 = new BitSet(new long[]{0xFFFFF808101060A2L,0x000000003FFFFFFFL,0x0700000000000000L,0x0000000000019A30L});
+	public static final BitSet FOLLOW_parameter_directive_in_statements_and_directives1644 = new BitSet(new long[]{0xFFFFF808101060A2L,0x000000003FFFFFFFL,0x0700000000000000L,0x0000000000019A30L});
+	public static final BitSet FOLLOW_annotation_in_statements_and_directives1652 = new BitSet(new long[]{0xFFFFF808101060A2L,0x000000003FFFFFFFL,0x0700000000000000L,0x0000000000019A30L});
+	public static final BitSet FOLLOW_label_in_ordered_method_item1737 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_instruction_in_ordered_method_item1743 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_debug_directive_in_ordered_method_item1749 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_REGISTERS_DIRECTIVE_in_registers_directive1769 = new BitSet(new long[]{0x0000000000009000L,0x0000000000000000L,0x0800000000000000L,0x0000000000002081L});
+	public static final BitSet FOLLOW_integral_literal_in_registers_directive1773 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_LOCALS_DIRECTIVE_in_registers_directive1793 = new BitSet(new long[]{0x0000000000009000L,0x0000000000000000L,0x0800000000000000L,0x0000000000002081L});
+	public static final BitSet FOLLOW_integral_literal_in_registers_directive1797 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_PARAM_LIST_OR_ID_PRIMITIVE_TYPE_in_param_list_or_id1829 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+	public static final BitSet FOLLOW_SIMPLE_NAME_in_simple_name1842 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_ACCESS_SPEC_in_simple_name1848 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_VERIFICATION_ERROR_TYPE_in_simple_name1859 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_POSITIVE_INTEGER_LITERAL_in_simple_name1870 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_NEGATIVE_INTEGER_LITERAL_in_simple_name1881 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_FLOAT_LITERAL_OR_ID_in_simple_name1892 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_DOUBLE_LITERAL_OR_ID_in_simple_name1903 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_BOOL_LITERAL_in_simple_name1914 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_NULL_LITERAL_in_simple_name1925 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_REGISTER_in_simple_name1936 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_param_list_or_id_in_simple_name1947 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_PRIMITIVE_TYPE_in_simple_name1957 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_VOID_TYPE_in_simple_name1968 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_ANNOTATION_VISIBILITY_in_simple_name1979 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_METHOD_HANDLE_TYPE_FIELD_in_simple_name1990 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_METHOD_HANDLE_TYPE_METHOD_in_simple_name1996 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT10t_in_simple_name2002 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT10x_in_simple_name2013 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT10x_ODEX_in_simple_name2024 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT11x_in_simple_name2035 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT12x_OR_ID_in_simple_name2046 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_FIELD_in_simple_name2057 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_FIELD_ODEX_in_simple_name2068 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_METHOD_HANDLE_in_simple_name2079 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_METHOD_TYPE_in_simple_name2090 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_STRING_in_simple_name2101 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_TYPE_in_simple_name2112 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21t_in_simple_name2123 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22c_FIELD_in_simple_name2134 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22c_FIELD_ODEX_in_simple_name2145 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22c_TYPE_in_simple_name2156 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22cs_FIELD_in_simple_name2167 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22s_OR_ID_in_simple_name2178 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22t_in_simple_name2189 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT23x_in_simple_name2200 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT31i_OR_ID_in_simple_name2211 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT31t_in_simple_name2222 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_CALL_SITE_in_simple_name2233 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_METHOD_in_simple_name2244 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_METHOD_ODEX_in_simple_name2255 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE_in_simple_name2266 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_TYPE_in_simple_name2277 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35mi_METHOD_in_simple_name2288 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35ms_METHOD_in_simple_name2299 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT45cc_METHOD_in_simple_name2310 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT4rcc_METHOD_in_simple_name2321 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT51l_in_simple_name2332 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_simple_name_in_member_name2347 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_MEMBER_NAME_in_member_name2353 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_OPEN_PAREN_in_method_prototype2368 = new BitSet(new long[]{0x0000000000090100L,0x0000000000000000L,0x0000000000000000L,0x0000000000000140L});
+	public static final BitSet FOLLOW_param_list_in_method_prototype2370 = new BitSet(new long[]{0x0000000000080000L});
+	public static final BitSet FOLLOW_CLOSE_PAREN_in_method_prototype2372 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000200100L});
+	public static final BitSet FOLLOW_type_descriptor_in_method_prototype2374 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_PARAM_LIST_OR_ID_PRIMITIVE_TYPE_in_param_list_or_id_primitive_type2404 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_param_list_or_id_primitive_type_in_param_list2419 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
+	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_param_list2426 = new BitSet(new long[]{0x0000000000010102L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_ARRAY_TYPE_PREFIX_in_array_descriptor2437 = new BitSet(new long[]{0x0000000000010000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_set_in_array_descriptor2439 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_VOID_TYPE_in_type_descriptor2455 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_PRIMITIVE_TYPE_in_type_descriptor2461 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_type_descriptor2467 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_array_descriptor_in_type_descriptor2473 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_PRIMITIVE_TYPE_in_nonvoid_type_descriptor2483 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_nonvoid_type_descriptor2489 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_array_descriptor_in_nonvoid_type_descriptor2495 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_reference_type_descriptor2505 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_array_descriptor_in_reference_type_descriptor2511 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_POSITIVE_INTEGER_LITERAL_in_integer_literal2521 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_NEGATIVE_INTEGER_LITERAL_in_integer_literal2532 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_FLOAT_LITERAL_OR_ID_in_float_literal2547 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_FLOAT_LITERAL_in_float_literal2558 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_DOUBLE_LITERAL_OR_ID_in_double_literal2568 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_DOUBLE_LITERAL_in_double_literal2579 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_LONG_LITERAL_in_literal2589 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_integer_literal_in_literal2595 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_SHORT_LITERAL_in_literal2601 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_BYTE_LITERAL_in_literal2607 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_float_literal_in_literal2613 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_double_literal_in_literal2619 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_CHAR_LITERAL_in_literal2625 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_STRING_LITERAL_in_literal2631 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_BOOL_LITERAL_in_literal2637 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_NULL_LITERAL_in_literal2643 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_array_literal_in_literal2649 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_subannotation_in_literal2655 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_type_field_method_literal_in_literal2661 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_enum_literal_in_literal2667 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_method_handle_literal_in_literal2673 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_method_prototype_in_literal2679 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_integer_literal_in_parsed_integer_literal2692 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_LONG_LITERAL_in_integral_literal2704 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_integer_literal_in_integral_literal2710 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_SHORT_LITERAL_in_integral_literal2716 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_CHAR_LITERAL_in_integral_literal2722 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_BYTE_LITERAL_in_integral_literal2728 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_LONG_LITERAL_in_fixed_32bit_literal2738 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_integer_literal_in_fixed_32bit_literal2744 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_SHORT_LITERAL_in_fixed_32bit_literal2750 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_BYTE_LITERAL_in_fixed_32bit_literal2756 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_float_literal_in_fixed_32bit_literal2762 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_CHAR_LITERAL_in_fixed_32bit_literal2768 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_BOOL_LITERAL_in_fixed_32bit_literal2774 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_integer_literal_in_fixed_literal2784 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_LONG_LITERAL_in_fixed_literal2790 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_SHORT_LITERAL_in_fixed_literal2796 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_BYTE_LITERAL_in_fixed_literal2802 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_float_literal_in_fixed_literal2808 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_double_literal_in_fixed_literal2814 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_CHAR_LITERAL_in_fixed_literal2820 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_BOOL_LITERAL_in_fixed_literal2826 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_OPEN_BRACE_in_array_literal2836 = new BitSet(new long[]{0xA3F2B98401859950L,0x00000000381FD8B7L,0xD800000000000000L,0x00000000003665CFL});
+	public static final BitSet FOLLOW_literal_in_array_literal2839 = new BitSet(new long[]{0x0000000000240000L});
+	public static final BitSet FOLLOW_COMMA_in_array_literal2842 = new BitSet(new long[]{0xA3F2B98401819950L,0x00000000381FD8B7L,0xD800000000000000L,0x00000000003665CFL});
+	public static final BitSet FOLLOW_literal_in_array_literal2844 = new BitSet(new long[]{0x0000000000240000L});
+	public static final BitSet FOLLOW_CLOSE_BRACE_in_array_literal2852 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_simple_name_in_annotation_element2876 = new BitSet(new long[]{0x0000001000000000L});
+	public static final BitSet FOLLOW_EQUAL_in_annotation_element2878 = new BitSet(new long[]{0xA3F2B98401819950L,0x00000000381FD8B7L,0xD800000000000000L,0x00000000003665CFL});
+	public static final BitSet FOLLOW_literal_in_annotation_element2880 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_ANNOTATION_DIRECTIVE_in_annotation2905 = new BitSet(new long[]{0x0000000000000040L});
+	public static final BitSet FOLLOW_ANNOTATION_VISIBILITY_in_annotation2907 = new BitSet(new long[]{0x0000000000010000L});
+	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_annotation2909 = new BitSet(new long[]{0xA3F2B90003000850L,0x00000000381FD8B7L,0xC000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_annotation_element_in_annotation2915 = new BitSet(new long[]{0xA3F2B90003000850L,0x00000000381FD8B7L,0xC000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_END_ANNOTATION_DIRECTIVE_in_annotation2918 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_SUBANNOTATION_DIRECTIVE_in_subannotation2951 = new BitSet(new long[]{0x0000000000010000L});
+	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_subannotation2953 = new BitSet(new long[]{0xA3F2B90201000850L,0x00000000381FD8B7L,0xC000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_annotation_element_in_subannotation2955 = new BitSet(new long[]{0xA3F2B90201000850L,0x00000000381FD8B7L,0xC000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_END_SUBANNOTATION_DIRECTIVE_in_subannotation2958 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_ENUM_DIRECTIVE_in_enum_literal2985 = new BitSet(new long[]{0xA3F2B90001010950L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_field_reference_in_enum_literal2987 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_reference_type_descriptor_in_type_field_method_literal3007 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_reference_type_descriptor_in_type_field_method_literal3016 = new BitSet(new long[]{0x0000000000000200L});
+	public static final BitSet FOLLOW_ARROW_in_type_field_method_literal3018 = new BitSet(new long[]{0xA3F2B90001000850L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_member_name_in_type_field_method_literal3030 = new BitSet(new long[]{0x0000000000100000L});
+	public static final BitSet FOLLOW_COLON_in_type_field_method_literal3032 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_type_field_method_literal3034 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_member_name_in_type_field_method_literal3057 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+	public static final BitSet FOLLOW_method_prototype_in_type_field_method_literal3059 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_PRIMITIVE_TYPE_in_type_field_method_literal3092 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_VOID_TYPE_in_type_field_method_literal3098 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_simple_name_in_call_site_reference3108 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+	public static final BitSet FOLLOW_OPEN_PAREN_in_call_site_reference3110 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000020000L});
+	public static final BitSet FOLLOW_STRING_LITERAL_in_call_site_reference3112 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_call_site_reference3114 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+	public static final BitSet FOLLOW_method_prototype_in_call_site_reference3116 = new BitSet(new long[]{0x0000000000280000L});
+	public static final BitSet FOLLOW_COMMA_in_call_site_reference3119 = new BitSet(new long[]{0xA3F2B98401819950L,0x00000000381FD8B7L,0xD800000000000000L,0x00000000003665CFL});
+	public static final BitSet FOLLOW_literal_in_call_site_reference3121 = new BitSet(new long[]{0x0000000000280000L});
+	public static final BitSet FOLLOW_CLOSE_PAREN_in_call_site_reference3125 = new BitSet(new long[]{0x0000000000000400L});
+	public static final BitSet FOLLOW_AT_in_call_site_reference3127 = new BitSet(new long[]{0xA3F2B90001010950L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_method_reference_in_call_site_reference3129 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_METHOD_HANDLE_TYPE_FIELD_in_method_handle_reference3173 = new BitSet(new long[]{0x0000000000000400L});
+	public static final BitSet FOLLOW_AT_in_method_handle_reference3175 = new BitSet(new long[]{0xA3F2B90001010950L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_field_reference_in_method_handle_reference3177 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_METHOD_HANDLE_TYPE_METHOD_in_method_handle_reference3189 = new BitSet(new long[]{0x0000000000000400L});
+	public static final BitSet FOLLOW_AT_in_method_handle_reference3191 = new BitSet(new long[]{0xA3F2B90001010950L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_method_reference_in_method_handle_reference3193 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE_in_method_handle_reference3205 = new BitSet(new long[]{0x0000000000000400L});
+	public static final BitSet FOLLOW_AT_in_method_handle_reference3207 = new BitSet(new long[]{0xA3F2B90001010950L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_method_reference_in_method_handle_reference3209 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_method_handle_reference_in_method_handle_literal3225 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_reference_type_descriptor_in_method_reference3246 = new BitSet(new long[]{0x0000000000000200L});
+	public static final BitSet FOLLOW_ARROW_in_method_reference3248 = new BitSet(new long[]{0xA3F2B90001000850L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_member_name_in_method_reference3252 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+	public static final BitSet FOLLOW_method_prototype_in_method_reference3254 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_reference_type_descriptor_in_field_reference3276 = new BitSet(new long[]{0x0000000000000200L});
+	public static final BitSet FOLLOW_ARROW_in_field_reference3278 = new BitSet(new long[]{0xA3F2B90001000850L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_member_name_in_field_reference3282 = new BitSet(new long[]{0x0000000000100000L});
+	public static final BitSet FOLLOW_COLON_in_field_reference3284 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_field_reference3286 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_COLON_in_label3307 = new BitSet(new long[]{0xA3F2B90001000850L,0x00000000381FD8B7L,0xC000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_simple_name_in_label3309 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_COLON_in_label_ref3328 = new BitSet(new long[]{0xA3F2B90001000850L,0x00000000381FD8B7L,0xC000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_simple_name_in_label_ref3330 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_REGISTER_in_register_list3344 = new BitSet(new long[]{0x0000000000200002L});
+	public static final BitSet FOLLOW_COMMA_in_register_list3347 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_register_list3349 = new BitSet(new long[]{0x0000000000200002L});
+	public static final BitSet FOLLOW_REGISTER_in_register_range3384 = new BitSet(new long[]{0x0000000000400002L});
+	public static final BitSet FOLLOW_DOTDOT_in_register_range3387 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_register_range3391 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_verification_error_reference3420 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_field_reference_in_verification_error_reference3424 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_method_reference_in_verification_error_reference3428 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_CATCH_DIRECTIVE_in_catch_directive3438 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_catch_directive3440 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
+	public static final BitSet FOLLOW_OPEN_BRACE_in_catch_directive3442 = new BitSet(new long[]{0x0000000000100000L});
+	public static final BitSet FOLLOW_label_ref_in_catch_directive3446 = new BitSet(new long[]{0x0000000000400000L});
+	public static final BitSet FOLLOW_DOTDOT_in_catch_directive3448 = new BitSet(new long[]{0x0000000000100000L});
+	public static final BitSet FOLLOW_label_ref_in_catch_directive3452 = new BitSet(new long[]{0x0000000000040000L});
+	public static final BitSet FOLLOW_CLOSE_BRACE_in_catch_directive3454 = new BitSet(new long[]{0x0000000000100000L});
+	public static final BitSet FOLLOW_label_ref_in_catch_directive3458 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_CATCHALL_DIRECTIVE_in_catchall_directive3490 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
+	public static final BitSet FOLLOW_OPEN_BRACE_in_catchall_directive3492 = new BitSet(new long[]{0x0000000000100000L});
+	public static final BitSet FOLLOW_label_ref_in_catchall_directive3496 = new BitSet(new long[]{0x0000000000400000L});
+	public static final BitSet FOLLOW_DOTDOT_in_catchall_directive3498 = new BitSet(new long[]{0x0000000000100000L});
+	public static final BitSet FOLLOW_label_ref_in_catchall_directive3502 = new BitSet(new long[]{0x0000000000040000L});
+	public static final BitSet FOLLOW_CLOSE_BRACE_in_catchall_directive3504 = new BitSet(new long[]{0x0000000000100000L});
+	public static final BitSet FOLLOW_label_ref_in_catchall_directive3508 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_PARAMETER_DIRECTIVE_in_parameter_directive3547 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_parameter_directive3549 = new BitSet(new long[]{0x0000000080200022L});
+	public static final BitSet FOLLOW_COMMA_in_parameter_directive3552 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000020000L});
+	public static final BitSet FOLLOW_STRING_LITERAL_in_parameter_directive3554 = new BitSet(new long[]{0x0000000080000022L});
+	public static final BitSet FOLLOW_annotation_in_parameter_directive3565 = new BitSet(new long[]{0x0000000080000022L});
+	public static final BitSet FOLLOW_END_PARAMETER_DIRECTIVE_in_parameter_directive3578 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_line_directive_in_debug_directive3651 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_local_directive_in_debug_directive3657 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_end_local_directive_in_debug_directive3663 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_restart_local_directive_in_debug_directive3669 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_prologue_directive_in_debug_directive3675 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_epilogue_directive_in_debug_directive3681 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_source_directive_in_debug_directive3687 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_LINE_DIRECTIVE_in_line_directive3697 = new BitSet(new long[]{0x0000000000009000L,0x0000000000000000L,0x0800000000000000L,0x0000000000002081L});
+	public static final BitSet FOLLOW_integral_literal_in_line_directive3699 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_LOCAL_DIRECTIVE_in_local_directive3722 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_local_directive3724 = new BitSet(new long[]{0x0000000000200002L});
+	public static final BitSet FOLLOW_COMMA_in_local_directive3727 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000020002L});
+	public static final BitSet FOLLOW_NULL_LITERAL_in_local_directive3730 = new BitSet(new long[]{0x0000000000100000L});
+	public static final BitSet FOLLOW_STRING_LITERAL_in_local_directive3736 = new BitSet(new long[]{0x0000000000100000L});
+	public static final BitSet FOLLOW_COLON_in_local_directive3739 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000200100L});
+	public static final BitSet FOLLOW_VOID_TYPE_in_local_directive3742 = new BitSet(new long[]{0x0000000000200002L});
+	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_local_directive3746 = new BitSet(new long[]{0x0000000000200002L});
+	public static final BitSet FOLLOW_COMMA_in_local_directive3780 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000020000L});
+	public static final BitSet FOLLOW_STRING_LITERAL_in_local_directive3784 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_END_LOCAL_DIRECTIVE_in_end_local_directive3826 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_end_local_directive3828 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_RESTART_LOCAL_DIRECTIVE_in_restart_local_directive3851 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_restart_local_directive3853 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_PROLOGUE_DIRECTIVE_in_prologue_directive3876 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_EPILOGUE_DIRECTIVE_in_epilogue_directive3897 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_SOURCE_DIRECTIVE_in_source_directive3918 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000020000L});
+	public static final BitSet FOLLOW_STRING_LITERAL_in_source_directive3920 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT12x_in_instruction_format12x3945 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT12x_OR_ID_in_instruction_format12x3951 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22s_in_instruction_format22s3966 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22s_OR_ID_in_instruction_format22s3972 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT31i_in_instruction_format31i3987 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT31i_OR_ID_in_instruction_format31i3993 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_METHOD_in_instruction_format35c_method4010 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE_in_instruction_format35c_method4016 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format10t_in_instruction4031 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format10x_in_instruction4037 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format10x_odex_in_instruction4043 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format11n_in_instruction4049 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format11x_in_instruction4055 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format12x_in_instruction4061 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format20bc_in_instruction4067 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format20t_in_instruction4073 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format21c_field_in_instruction4079 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format21c_field_odex_in_instruction4085 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format21c_method_handle_in_instruction4091 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format21c_method_type_in_instruction4097 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format21c_string_in_instruction4103 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format21c_type_in_instruction4109 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format21ih_in_instruction4115 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format21lh_in_instruction4121 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format21s_in_instruction4127 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format21t_in_instruction4133 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format22b_in_instruction4139 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format22c_field_in_instruction4145 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format22c_field_odex_in_instruction4151 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format22c_type_in_instruction4157 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format22cs_field_in_instruction4163 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format22s_in_instruction4169 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format22t_in_instruction4175 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format22x_in_instruction4181 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format23x_in_instruction4187 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format30t_in_instruction4193 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format31c_in_instruction4199 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format31i_in_instruction4205 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format31t_in_instruction4211 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format32x_in_instruction4217 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format35c_call_site_in_instruction4223 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format35c_method_in_instruction4229 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format35c_type_in_instruction4235 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format35c_method_odex_in_instruction4241 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format35mi_method_in_instruction4247 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format35ms_method_in_instruction4253 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format3rc_call_site_in_instruction4259 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format3rc_method_in_instruction4265 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format3rc_method_odex_in_instruction4271 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format3rc_type_in_instruction4277 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format3rmi_method_in_instruction4283 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format3rms_method_in_instruction4289 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format45cc_method_in_instruction4295 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format4rcc_method_in_instruction4301 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format51l_in_instruction4307 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_array_data_directive_in_instruction4313 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_packed_switch_directive_in_instruction4319 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_sparse_switch_directive_in_instruction4325 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT10t_in_insn_format10t4345 = new BitSet(new long[]{0x0000000000100000L});
+	public static final BitSet FOLLOW_label_ref_in_insn_format10t4347 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT10x_in_insn_format10x4377 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT10x_ODEX_in_insn_format10x_odex4405 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT11n_in_insn_format11n4426 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format11n4428 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format11n4430 = new BitSet(new long[]{0x0000000000009000L,0x0000000000000000L,0x0800000000000000L,0x0000000000002081L});
+	public static final BitSet FOLLOW_integral_literal_in_insn_format11n4432 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT11x_in_insn_format11x4464 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format11x4466 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_instruction_format12x_in_insn_format12x4496 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format12x4498 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format12x4500 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format12x4502 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT20bc_in_insn_format20bc4534 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+	public static final BitSet FOLLOW_VERIFICATION_ERROR_TYPE_in_insn_format20bc4536 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format20bc4538 = new BitSet(new long[]{0xA3F2B90001010950L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_verification_error_reference_in_insn_format20bc4540 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT20t_in_insn_format20t4577 = new BitSet(new long[]{0x0000000000100000L});
+	public static final BitSet FOLLOW_label_ref_in_insn_format20t4579 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_FIELD_in_insn_format21c_field4609 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format21c_field4611 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format21c_field4613 = new BitSet(new long[]{0xA3F2B90001010950L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_field_reference_in_insn_format21c_field4615 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_FIELD_ODEX_in_insn_format21c_field_odex4647 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format21c_field_odex4649 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format21c_field_odex4651 = new BitSet(new long[]{0xA3F2B90001010950L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_field_reference_in_insn_format21c_field_odex4653 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_METHOD_HANDLE_in_insn_format21c_method_handle4691 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format21c_method_handle4693 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format21c_method_handle4695 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L,0xC000000000000000L});
+	public static final BitSet FOLLOW_method_handle_reference_in_insn_format21c_method_handle4697 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_METHOD_TYPE_in_insn_format21c_method_type4743 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format21c_method_type4745 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format21c_method_type4747 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+	public static final BitSet FOLLOW_method_prototype_in_insn_format21c_method_type4749 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_STRING_in_insn_format21c_string4793 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format21c_string4795 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format21c_string4797 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000020000L});
+	public static final BitSet FOLLOW_STRING_LITERAL_in_insn_format21c_string4799 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_TYPE_in_insn_format21c_type4831 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format21c_type4833 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format21c_type4835 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format21c_type4837 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21ih_in_insn_format21ih4869 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format21ih4871 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format21ih4873 = new BitSet(new long[]{0x0000018000009800L,0x0000000000000000L,0x0800000000000000L,0x0000000000002081L});
+	public static final BitSet FOLLOW_fixed_32bit_literal_in_insn_format21ih4875 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21lh_in_insn_format21lh4907 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format21lh4909 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format21lh4911 = new BitSet(new long[]{0x0000018000009800L,0x0000000000000000L,0x0800000000000000L,0x0000000000002081L});
+	public static final BitSet FOLLOW_fixed_32bit_literal_in_insn_format21lh4913 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21s_in_insn_format21s4945 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format21s4947 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format21s4949 = new BitSet(new long[]{0x0000000000009000L,0x0000000000000000L,0x0800000000000000L,0x0000000000002081L});
+	public static final BitSet FOLLOW_integral_literal_in_insn_format21s4951 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21t_in_insn_format21t4983 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format21t4985 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format21t4987 = new BitSet(new long[]{0x0000000000100000L});
+	public static final BitSet FOLLOW_label_ref_in_insn_format21t4989 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22b_in_insn_format22b5021 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22b5023 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format22b5025 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22b5027 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format22b5029 = new BitSet(new long[]{0x0000000000009000L,0x0000000000000000L,0x0800000000000000L,0x0000000000002081L});
+	public static final BitSet FOLLOW_integral_literal_in_insn_format22b5031 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22c_FIELD_in_insn_format22c_field5065 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_field5067 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format22c_field5069 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_field5071 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format22c_field5073 = new BitSet(new long[]{0xA3F2B90001010950L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_field_reference_in_insn_format22c_field5075 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22c_FIELD_ODEX_in_insn_format22c_field_odex5109 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_field_odex5111 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format22c_field_odex5113 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_field_odex5115 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format22c_field_odex5117 = new BitSet(new long[]{0xA3F2B90001010950L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_field_reference_in_insn_format22c_field_odex5119 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22c_TYPE_in_insn_format22c_type5159 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_type5161 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format22c_type5163 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_type5165 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format22c_type5167 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format22c_type5169 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22cs_FIELD_in_insn_format22cs_field5203 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22cs_field5205 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format22cs_field5207 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22cs_field5209 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format22cs_field5211 = new BitSet(new long[]{0x0000004000000000L});
+	public static final BitSet FOLLOW_FIELD_OFFSET_in_insn_format22cs_field5213 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_instruction_format22s_in_insn_format22s5234 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22s5236 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format22s5238 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22s5240 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format22s5242 = new BitSet(new long[]{0x0000000000009000L,0x0000000000000000L,0x0800000000000000L,0x0000000000002081L});
+	public static final BitSet FOLLOW_integral_literal_in_insn_format22s5244 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22t_in_insn_format22t5278 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22t5280 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format22t5282 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22t5284 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format22t5286 = new BitSet(new long[]{0x0000000000100000L});
+	public static final BitSet FOLLOW_label_ref_in_insn_format22t5288 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22x_in_insn_format22x5322 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22x5324 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format22x5326 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22x5328 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT23x_in_insn_format23x5360 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format23x5362 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format23x5364 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format23x5366 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format23x5368 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format23x5370 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT30t_in_insn_format30t5404 = new BitSet(new long[]{0x0000000000100000L});
+	public static final BitSet FOLLOW_label_ref_in_insn_format30t5406 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT31c_in_insn_format31c5436 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format31c5438 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format31c5440 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000020000L});
+	public static final BitSet FOLLOW_STRING_LITERAL_in_insn_format31c5442 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_instruction_format31i_in_insn_format31i5473 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format31i5475 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format31i5477 = new BitSet(new long[]{0x0000018000009800L,0x0000000000000000L,0x0800000000000000L,0x0000000000002081L});
+	public static final BitSet FOLLOW_fixed_32bit_literal_in_insn_format31i5479 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT31t_in_insn_format31t5511 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format31t5513 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format31t5515 = new BitSet(new long[]{0x0000000000100000L});
+	public static final BitSet FOLLOW_label_ref_in_insn_format31t5517 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT32x_in_insn_format32x5549 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format32x5551 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format32x5553 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format32x5555 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_CALL_SITE_in_insn_format35c_call_site5592 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
+	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format35c_call_site5594 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_register_list_in_insn_format35c_call_site5596 = new BitSet(new long[]{0x0000000000040000L});
+	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format35c_call_site5598 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format35c_call_site5600 = new BitSet(new long[]{0xA3F2B90001000850L,0x00000000381FD8B7L,0xC000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_call_site_reference_in_insn_format35c_call_site5602 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_instruction_format35c_method_in_insn_format35c_method5634 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
+	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format35c_method5636 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_register_list_in_insn_format35c_method5638 = new BitSet(new long[]{0x0000000000040000L});
+	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format35c_method5640 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format35c_method5642 = new BitSet(new long[]{0xA3F2B90001010950L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_method_reference_in_insn_format35c_method5644 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_TYPE_in_insn_format35c_type5676 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
+	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format35c_type5678 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_register_list_in_insn_format35c_type5680 = new BitSet(new long[]{0x0000000000040000L});
+	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format35c_type5682 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format35c_type5684 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format35c_type5686 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_METHOD_ODEX_in_insn_format35c_method_odex5718 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
+	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format35c_method_odex5720 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_register_list_in_insn_format35c_method_odex5722 = new BitSet(new long[]{0x0000000000040000L});
+	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format35c_method_odex5724 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format35c_method_odex5726 = new BitSet(new long[]{0xA3F2B90001010950L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_method_reference_in_insn_format35c_method_odex5728 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35mi_METHOD_in_insn_format35mi_method5749 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
+	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format35mi_method5751 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_register_list_in_insn_format35mi_method5753 = new BitSet(new long[]{0x0000000000040000L});
+	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format35mi_method5755 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format35mi_method5757 = new BitSet(new long[]{0x0000040000000000L});
+	public static final BitSet FOLLOW_INLINE_INDEX_in_insn_format35mi_method5759 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35ms_METHOD_in_insn_format35ms_method5780 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
+	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format35ms_method5782 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_register_list_in_insn_format35ms_method5784 = new BitSet(new long[]{0x0000000000040000L});
+	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format35ms_method5786 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format35ms_method5788 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000400000L});
+	public static final BitSet FOLLOW_VTABLE_INDEX_in_insn_format35ms_method5790 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rc_CALL_SITE_in_insn_format3rc_call_site5816 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
+	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format3rc_call_site5818 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_register_range_in_insn_format3rc_call_site5820 = new BitSet(new long[]{0x0000000000040000L});
+	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format3rc_call_site5822 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format3rc_call_site5824 = new BitSet(new long[]{0xA3F2B90001000850L,0x00000000381FD8B7L,0xC000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_call_site_reference_in_insn_format3rc_call_site5826 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rc_METHOD_in_insn_format3rc_method5858 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
+	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format3rc_method5860 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_register_range_in_insn_format3rc_method5862 = new BitSet(new long[]{0x0000000000040000L});
+	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format3rc_method5864 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format3rc_method5866 = new BitSet(new long[]{0xA3F2B90001010950L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_method_reference_in_insn_format3rc_method5868 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rc_METHOD_ODEX_in_insn_format3rc_method_odex5900 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
+	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format3rc_method_odex5902 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_register_list_in_insn_format3rc_method_odex5904 = new BitSet(new long[]{0x0000000000040000L});
+	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format3rc_method_odex5906 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format3rc_method_odex5908 = new BitSet(new long[]{0xA3F2B90001010950L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_method_reference_in_insn_format3rc_method_odex5910 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rc_TYPE_in_insn_format3rc_type5931 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
+	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format3rc_type5933 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_register_range_in_insn_format3rc_type5935 = new BitSet(new long[]{0x0000000000040000L});
+	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format3rc_type5937 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format3rc_type5939 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format3rc_type5941 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rmi_METHOD_in_insn_format3rmi_method5973 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
+	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format3rmi_method5975 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_register_range_in_insn_format3rmi_method5977 = new BitSet(new long[]{0x0000000000040000L});
+	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format3rmi_method5979 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format3rmi_method5981 = new BitSet(new long[]{0x0000040000000000L});
+	public static final BitSet FOLLOW_INLINE_INDEX_in_insn_format3rmi_method5983 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rms_METHOD_in_insn_format3rms_method6004 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
+	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format3rms_method6006 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_register_range_in_insn_format3rms_method6008 = new BitSet(new long[]{0x0000000000040000L});
+	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format3rms_method6010 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format3rms_method6012 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000400000L});
+	public static final BitSet FOLLOW_VTABLE_INDEX_in_insn_format3rms_method6014 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT45cc_METHOD_in_insn_format45cc_method6035 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
+	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format45cc_method6037 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_register_list_in_insn_format45cc_method6039 = new BitSet(new long[]{0x0000000000040000L});
+	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format45cc_method6041 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format45cc_method6043 = new BitSet(new long[]{0xA3F2B90001010950L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_method_reference_in_insn_format45cc_method6045 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format45cc_method6047 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+	public static final BitSet FOLLOW_method_prototype_in_insn_format45cc_method6049 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT4rcc_METHOD_in_insn_format4rcc_method6083 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
+	public static final BitSet FOLLOW_OPEN_BRACE_in_insn_format4rcc_method6085 = new BitSet(new long[]{0x0000000000040000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_register_range_in_insn_format4rcc_method6087 = new BitSet(new long[]{0x0000000000040000L});
+	public static final BitSet FOLLOW_CLOSE_BRACE_in_insn_format4rcc_method6089 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format4rcc_method6091 = new BitSet(new long[]{0xA3F2B90001010950L,0x00000000381FD8B7L,0xD000000000000000L,0x00000000003045C3L});
+	public static final BitSet FOLLOW_method_reference_in_insn_format4rcc_method6093 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format4rcc_method6095 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000008L});
+	public static final BitSet FOLLOW_method_prototype_in_insn_format4rcc_method6097 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT51l_in_insn_format51l6131 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format51l6133 = new BitSet(new long[]{0x0000000000200000L});
+	public static final BitSet FOLLOW_COMMA_in_insn_format51l6135 = new BitSet(new long[]{0x0000018001809800L,0x0000000000000000L,0x0800000000000000L,0x0000000000002081L});
+	public static final BitSet FOLLOW_fixed_literal_in_insn_format51l6137 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_ARRAY_DATA_DIRECTIVE_in_insn_array_data_directive6164 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000081L});
+	public static final BitSet FOLLOW_parsed_integer_literal_in_insn_array_data_directive6170 = new BitSet(new long[]{0x0000018005809800L,0x0000000000000000L,0x0800000000000000L,0x0000000000002081L});
+	public static final BitSet FOLLOW_fixed_literal_in_insn_array_data_directive6182 = new BitSet(new long[]{0x0000018005809800L,0x0000000000000000L,0x0800000000000000L,0x0000000000002081L});
+	public static final BitSet FOLLOW_END_ARRAY_DATA_DIRECTIVE_in_insn_array_data_directive6185 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_PACKED_SWITCH_DIRECTIVE_in_insn_packed_switch_directive6231 = new BitSet(new long[]{0x0000018000009800L,0x0000000000000000L,0x0800000000000000L,0x0000000000002081L});
+	public static final BitSet FOLLOW_fixed_32bit_literal_in_insn_packed_switch_directive6237 = new BitSet(new long[]{0x0000000040100000L});
+	public static final BitSet FOLLOW_label_ref_in_insn_packed_switch_directive6243 = new BitSet(new long[]{0x0000000040100000L});
+	public static final BitSet FOLLOW_END_PACKED_SWITCH_DIRECTIVE_in_insn_packed_switch_directive6250 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_SPARSE_SWITCH_DIRECTIVE_in_insn_sparse_switch_directive6324 = new BitSet(new long[]{0x0000018100009800L,0x0000000000000000L,0x0800000000000000L,0x0000000000002081L});
+	public static final BitSet FOLLOW_fixed_32bit_literal_in_insn_sparse_switch_directive6331 = new BitSet(new long[]{0x0000000000000200L});
+	public static final BitSet FOLLOW_ARROW_in_insn_sparse_switch_directive6333 = new BitSet(new long[]{0x0000000000100000L});
+	public static final BitSet FOLLOW_label_ref_in_insn_sparse_switch_directive6335 = new BitSet(new long[]{0x0000018100009800L,0x0000000000000000L,0x0800000000000000L,0x0000000000002081L});
+	public static final BitSet FOLLOW_END_SPARSE_SWITCH_DIRECTIVE_in_insn_sparse_switch_directive6343 = new BitSet(new long[]{0x0000000000000002L});
 }
diff --git a/smali/src/main/java/org/jf/smali/smaliTreeWalker.java b/smali/src/main/java/org/jf/smali/smaliTreeWalker.java
index 30b93c4..0fecf03 100644
--- a/smali/src/main/java/org/jf/smali/smaliTreeWalker.java
+++ b/smali/src/main/java/org/jf/smali/smaliTreeWalker.java
@@ -1,4 +1,4 @@
-// $ANTLR 3.5.2 smaliTreeWalker.g 2017-04-20 15:20:46
+// $ANTLR 3.5.2 smaliTreeWalker.g 2019-04-05 11:21:30
 
 package org.jf.smali;
 
@@ -26,7 +26,9 @@
 import org.jf.dexlib2.iface.value.EncodedValue;
 import org.jf.dexlib2.immutable.ImmutableAnnotation;
 import org.jf.dexlib2.immutable.ImmutableAnnotationElement;
+import org.jf.dexlib2.immutable.reference.ImmutableCallSiteReference;
 import org.jf.dexlib2.immutable.reference.ImmutableFieldReference;
+import org.jf.dexlib2.immutable.reference.ImmutableMethodHandleReference;
 import org.jf.dexlib2.immutable.reference.ImmutableMethodReference;
 import org.jf.dexlib2.immutable.reference.ImmutableMethodProtoReference;
 import org.jf.dexlib2.immutable.reference.ImmutableReference;
@@ -51,7 +53,7 @@
 	public static final String[] tokenNames = new String[] {
 		"<invalid>", "<EOR>", "<DOWN>", "<UP>", "ACCESS_SPEC", "ANNOTATION_DIRECTIVE", 
 		"ANNOTATION_VISIBILITY", "ARRAY_DATA_DIRECTIVE", "ARRAY_TYPE_PREFIX", 
-		"ARROW", "BOOL_LITERAL", "BYTE_LITERAL", "CATCHALL_DIRECTIVE", "CATCH_DIRECTIVE", 
+		"ARROW", "AT", "BOOL_LITERAL", "BYTE_LITERAL", "CATCHALL_DIRECTIVE", "CATCH_DIRECTIVE", 
 		"CHAR_LITERAL", "CLASS_DESCRIPTOR", "CLASS_DIRECTIVE", "CLOSE_BRACE", 
 		"CLOSE_PAREN", "COLON", "COMMA", "DOTDOT", "DOUBLE_LITERAL", "DOUBLE_LITERAL_OR_ID", 
 		"END_ANNOTATION_DIRECTIVE", "END_ARRAY_DATA_DIRECTIVE", "END_FIELD_DIRECTIVE", 
@@ -62,49 +64,54 @@
 		"INSTRUCTION_FORMAT10t", "INSTRUCTION_FORMAT10x", "INSTRUCTION_FORMAT10x_ODEX", 
 		"INSTRUCTION_FORMAT11n", "INSTRUCTION_FORMAT11x", "INSTRUCTION_FORMAT12x", 
 		"INSTRUCTION_FORMAT12x_OR_ID", "INSTRUCTION_FORMAT20bc", "INSTRUCTION_FORMAT20t", 
-		"INSTRUCTION_FORMAT21c_FIELD", "INSTRUCTION_FORMAT21c_FIELD_ODEX", "INSTRUCTION_FORMAT21c_STRING", 
-		"INSTRUCTION_FORMAT21c_TYPE", "INSTRUCTION_FORMAT21ih", "INSTRUCTION_FORMAT21lh", 
-		"INSTRUCTION_FORMAT21s", "INSTRUCTION_FORMAT21t", "INSTRUCTION_FORMAT22b", 
-		"INSTRUCTION_FORMAT22c_FIELD", "INSTRUCTION_FORMAT22c_FIELD_ODEX", "INSTRUCTION_FORMAT22c_TYPE", 
-		"INSTRUCTION_FORMAT22cs_FIELD", "INSTRUCTION_FORMAT22s", "INSTRUCTION_FORMAT22s_OR_ID", 
-		"INSTRUCTION_FORMAT22t", "INSTRUCTION_FORMAT22x", "INSTRUCTION_FORMAT23x", 
-		"INSTRUCTION_FORMAT30t", "INSTRUCTION_FORMAT31c", "INSTRUCTION_FORMAT31i", 
-		"INSTRUCTION_FORMAT31i_OR_ID", "INSTRUCTION_FORMAT31t", "INSTRUCTION_FORMAT32x", 
-		"INSTRUCTION_FORMAT35c_METHOD", "INSTRUCTION_FORMAT35c_METHOD_ODEX", "INSTRUCTION_FORMAT35c_TYPE", 
-		"INSTRUCTION_FORMAT35mi_METHOD", "INSTRUCTION_FORMAT35ms_METHOD", "INSTRUCTION_FORMAT3rc_METHOD", 
-		"INSTRUCTION_FORMAT3rc_METHOD_ODEX", "INSTRUCTION_FORMAT3rc_TYPE", "INSTRUCTION_FORMAT3rmi_METHOD", 
-		"INSTRUCTION_FORMAT3rms_METHOD", "INSTRUCTION_FORMAT45cc_METHOD", "INSTRUCTION_FORMAT4rcc_METHOD", 
-		"INSTRUCTION_FORMAT51l", "INTEGER_LITERAL", "INVALID_TOKEN", "I_ACCESS_LIST", 
-		"I_ANNOTATION", "I_ANNOTATIONS", "I_ANNOTATION_ELEMENT", "I_ARRAY_ELEMENTS", 
-		"I_ARRAY_ELEMENT_SIZE", "I_CATCH", "I_CATCHALL", "I_CATCHES", "I_CLASS_DEF", 
+		"INSTRUCTION_FORMAT21c_FIELD", "INSTRUCTION_FORMAT21c_FIELD_ODEX", "INSTRUCTION_FORMAT21c_METHOD_HANDLE", 
+		"INSTRUCTION_FORMAT21c_METHOD_TYPE", "INSTRUCTION_FORMAT21c_STRING", "INSTRUCTION_FORMAT21c_TYPE", 
+		"INSTRUCTION_FORMAT21ih", "INSTRUCTION_FORMAT21lh", "INSTRUCTION_FORMAT21s", 
+		"INSTRUCTION_FORMAT21t", "INSTRUCTION_FORMAT22b", "INSTRUCTION_FORMAT22c_FIELD", 
+		"INSTRUCTION_FORMAT22c_FIELD_ODEX", "INSTRUCTION_FORMAT22c_TYPE", "INSTRUCTION_FORMAT22cs_FIELD", 
+		"INSTRUCTION_FORMAT22s", "INSTRUCTION_FORMAT22s_OR_ID", "INSTRUCTION_FORMAT22t", 
+		"INSTRUCTION_FORMAT22x", "INSTRUCTION_FORMAT23x", "INSTRUCTION_FORMAT30t", 
+		"INSTRUCTION_FORMAT31c", "INSTRUCTION_FORMAT31i", "INSTRUCTION_FORMAT31i_OR_ID", 
+		"INSTRUCTION_FORMAT31t", "INSTRUCTION_FORMAT32x", "INSTRUCTION_FORMAT35c_CALL_SITE", 
+		"INSTRUCTION_FORMAT35c_METHOD", "INSTRUCTION_FORMAT35c_METHOD_ODEX", "INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE", 
+		"INSTRUCTION_FORMAT35c_TYPE", "INSTRUCTION_FORMAT35mi_METHOD", "INSTRUCTION_FORMAT35ms_METHOD", 
+		"INSTRUCTION_FORMAT3rc_CALL_SITE", "INSTRUCTION_FORMAT3rc_METHOD", "INSTRUCTION_FORMAT3rc_METHOD_ODEX", 
+		"INSTRUCTION_FORMAT3rc_TYPE", "INSTRUCTION_FORMAT3rmi_METHOD", "INSTRUCTION_FORMAT3rms_METHOD", 
+		"INSTRUCTION_FORMAT45cc_METHOD", "INSTRUCTION_FORMAT4rcc_METHOD", "INSTRUCTION_FORMAT51l", 
+		"INTEGER_LITERAL", "INVALID_TOKEN", "I_ACCESS_LIST", "I_ANNOTATION", "I_ANNOTATIONS", 
+		"I_ANNOTATION_ELEMENT", "I_ARRAY_ELEMENTS", "I_ARRAY_ELEMENT_SIZE", "I_CALL_SITE_EXTRA_ARGUMENTS", 
+		"I_CALL_SITE_REFERENCE", "I_CATCH", "I_CATCHALL", "I_CATCHES", "I_CLASS_DEF", 
 		"I_ENCODED_ARRAY", "I_ENCODED_ENUM", "I_ENCODED_FIELD", "I_ENCODED_METHOD", 
-		"I_END_LOCAL", "I_EPILOGUE", "I_FIELD", "I_FIELDS", "I_FIELD_INITIAL_VALUE", 
-		"I_FIELD_TYPE", "I_IMPLEMENTS", "I_LABEL", "I_LINE", "I_LOCAL", "I_LOCALS", 
-		"I_METHOD", "I_METHODS", "I_METHOD_PROTOTYPE", "I_METHOD_RETURN_TYPE", 
-		"I_ORDERED_METHOD_ITEMS", "I_PACKED_SWITCH_ELEMENTS", "I_PACKED_SWITCH_START_KEY", 
-		"I_PARAMETER", "I_PARAMETERS", "I_PARAMETER_NOT_SPECIFIED", "I_PROLOGUE", 
-		"I_REGISTERS", "I_REGISTER_LIST", "I_REGISTER_RANGE", "I_RESTART_LOCAL", 
+		"I_ENCODED_METHOD_HANDLE", "I_END_LOCAL", "I_EPILOGUE", "I_FIELD", "I_FIELDS", 
+		"I_FIELD_INITIAL_VALUE", "I_FIELD_TYPE", "I_IMPLEMENTS", "I_LABEL", "I_LINE", 
+		"I_LOCAL", "I_LOCALS", "I_METHOD", "I_METHODS", "I_METHOD_PROTOTYPE", 
+		"I_METHOD_RETURN_TYPE", "I_ORDERED_METHOD_ITEMS", "I_PACKED_SWITCH_ELEMENTS", 
+		"I_PACKED_SWITCH_START_KEY", "I_PARAMETER", "I_PARAMETERS", "I_PARAMETER_NOT_SPECIFIED", 
+		"I_PROLOGUE", "I_REGISTERS", "I_REGISTER_LIST", "I_REGISTER_RANGE", "I_RESTART_LOCAL", 
 		"I_SOURCE", "I_SPARSE_SWITCH_ELEMENTS", "I_STATEMENT_ARRAY_DATA", "I_STATEMENT_FORMAT10t", 
 		"I_STATEMENT_FORMAT10x", "I_STATEMENT_FORMAT11n", "I_STATEMENT_FORMAT11x", 
 		"I_STATEMENT_FORMAT12x", "I_STATEMENT_FORMAT20bc", "I_STATEMENT_FORMAT20t", 
-		"I_STATEMENT_FORMAT21c_FIELD", "I_STATEMENT_FORMAT21c_STRING", "I_STATEMENT_FORMAT21c_TYPE", 
+		"I_STATEMENT_FORMAT21c_FIELD", "I_STATEMENT_FORMAT21c_METHOD_HANDLE", 
+		"I_STATEMENT_FORMAT21c_METHOD_TYPE", "I_STATEMENT_FORMAT21c_STRING", "I_STATEMENT_FORMAT21c_TYPE", 
 		"I_STATEMENT_FORMAT21ih", "I_STATEMENT_FORMAT21lh", "I_STATEMENT_FORMAT21s", 
 		"I_STATEMENT_FORMAT21t", "I_STATEMENT_FORMAT22b", "I_STATEMENT_FORMAT22c_FIELD", 
 		"I_STATEMENT_FORMAT22c_TYPE", "I_STATEMENT_FORMAT22s", "I_STATEMENT_FORMAT22t", 
 		"I_STATEMENT_FORMAT22x", "I_STATEMENT_FORMAT23x", "I_STATEMENT_FORMAT30t", 
 		"I_STATEMENT_FORMAT31c", "I_STATEMENT_FORMAT31i", "I_STATEMENT_FORMAT31t", 
-		"I_STATEMENT_FORMAT32x", "I_STATEMENT_FORMAT35c_METHOD", "I_STATEMENT_FORMAT35c_TYPE", 
-		"I_STATEMENT_FORMAT3rc_METHOD", "I_STATEMENT_FORMAT3rc_TYPE", "I_STATEMENT_FORMAT45cc_METHOD", 
-		"I_STATEMENT_FORMAT4rcc_METHOD", "I_STATEMENT_FORMAT51l", "I_STATEMENT_PACKED_SWITCH", 
-		"I_STATEMENT_SPARSE_SWITCH", "I_SUBANNOTATION", "I_SUPER", "LINE_COMMENT", 
-		"LINE_DIRECTIVE", "LOCALS_DIRECTIVE", "LOCAL_DIRECTIVE", "LONG_LITERAL", 
-		"MEMBER_NAME", "METHOD_DIRECTIVE", "NEGATIVE_INTEGER_LITERAL", "NULL_LITERAL", 
-		"OPEN_BRACE", "OPEN_PAREN", "PACKED_SWITCH_DIRECTIVE", "PARAMETER_DIRECTIVE", 
-		"PARAM_LIST_OR_ID_PRIMITIVE_TYPE", "POSITIVE_INTEGER_LITERAL", "PRIMITIVE_TYPE", 
-		"PROLOGUE_DIRECTIVE", "REGISTER", "REGISTERS_DIRECTIVE", "RESTART_LOCAL_DIRECTIVE", 
-		"SHORT_LITERAL", "SIMPLE_NAME", "SOURCE_DIRECTIVE", "SPARSE_SWITCH_DIRECTIVE", 
-		"STRING_LITERAL", "SUBANNOTATION_DIRECTIVE", "SUPER_DIRECTIVE", "VERIFICATION_ERROR_TYPE", 
-		"VOID_TYPE", "VTABLE_INDEX", "WHITE_SPACE"
+		"I_STATEMENT_FORMAT32x", "I_STATEMENT_FORMAT35c_CALL_SITE", "I_STATEMENT_FORMAT35c_METHOD", 
+		"I_STATEMENT_FORMAT35c_TYPE", "I_STATEMENT_FORMAT3rc_CALL_SITE", "I_STATEMENT_FORMAT3rc_METHOD", 
+		"I_STATEMENT_FORMAT3rc_TYPE", "I_STATEMENT_FORMAT45cc_METHOD", "I_STATEMENT_FORMAT4rcc_METHOD", 
+		"I_STATEMENT_FORMAT51l", "I_STATEMENT_PACKED_SWITCH", "I_STATEMENT_SPARSE_SWITCH", 
+		"I_SUBANNOTATION", "I_SUPER", "LINE_COMMENT", "LINE_DIRECTIVE", "LOCALS_DIRECTIVE", 
+		"LOCAL_DIRECTIVE", "LONG_LITERAL", "MEMBER_NAME", "METHOD_DIRECTIVE", 
+		"METHOD_HANDLE_TYPE_FIELD", "METHOD_HANDLE_TYPE_METHOD", "NEGATIVE_INTEGER_LITERAL", 
+		"NULL_LITERAL", "OPEN_BRACE", "OPEN_PAREN", "PACKED_SWITCH_DIRECTIVE", 
+		"PARAMETER_DIRECTIVE", "PARAM_LIST_OR_ID_PRIMITIVE_TYPE", "POSITIVE_INTEGER_LITERAL", 
+		"PRIMITIVE_TYPE", "PROLOGUE_DIRECTIVE", "REGISTER", "REGISTERS_DIRECTIVE", 
+		"RESTART_LOCAL_DIRECTIVE", "SHORT_LITERAL", "SIMPLE_NAME", "SOURCE_DIRECTIVE", 
+		"SPARSE_SWITCH_DIRECTIVE", "STRING_LITERAL", "SUBANNOTATION_DIRECTIVE", 
+		"SUPER_DIRECTIVE", "VERIFICATION_ERROR_TYPE", "VOID_TYPE", "VTABLE_INDEX", 
+		"WHITE_SPACE"
 	};
 	public static final int EOF=-1;
 	public static final int ACCESS_SPEC=4;
@@ -113,197 +120,212 @@
 	public static final int ARRAY_DATA_DIRECTIVE=7;
 	public static final int ARRAY_TYPE_PREFIX=8;
 	public static final int ARROW=9;
-	public static final int BOOL_LITERAL=10;
-	public static final int BYTE_LITERAL=11;
-	public static final int CATCHALL_DIRECTIVE=12;
-	public static final int CATCH_DIRECTIVE=13;
-	public static final int CHAR_LITERAL=14;
-	public static final int CLASS_DESCRIPTOR=15;
-	public static final int CLASS_DIRECTIVE=16;
-	public static final int CLOSE_BRACE=17;
-	public static final int CLOSE_PAREN=18;
-	public static final int COLON=19;
-	public static final int COMMA=20;
-	public static final int DOTDOT=21;
-	public static final int DOUBLE_LITERAL=22;
-	public static final int DOUBLE_LITERAL_OR_ID=23;
-	public static final int END_ANNOTATION_DIRECTIVE=24;
-	public static final int END_ARRAY_DATA_DIRECTIVE=25;
-	public static final int END_FIELD_DIRECTIVE=26;
-	public static final int END_LOCAL_DIRECTIVE=27;
-	public static final int END_METHOD_DIRECTIVE=28;
-	public static final int END_PACKED_SWITCH_DIRECTIVE=29;
-	public static final int END_PARAMETER_DIRECTIVE=30;
-	public static final int END_SPARSE_SWITCH_DIRECTIVE=31;
-	public static final int END_SUBANNOTATION_DIRECTIVE=32;
-	public static final int ENUM_DIRECTIVE=33;
-	public static final int EPILOGUE_DIRECTIVE=34;
-	public static final int EQUAL=35;
-	public static final int FIELD_DIRECTIVE=36;
-	public static final int FIELD_OFFSET=37;
-	public static final int FLOAT_LITERAL=38;
-	public static final int FLOAT_LITERAL_OR_ID=39;
-	public static final int IMPLEMENTS_DIRECTIVE=40;
-	public static final int INLINE_INDEX=41;
-	public static final int INSTRUCTION_FORMAT10t=42;
-	public static final int INSTRUCTION_FORMAT10x=43;
-	public static final int INSTRUCTION_FORMAT10x_ODEX=44;
-	public static final int INSTRUCTION_FORMAT11n=45;
-	public static final int INSTRUCTION_FORMAT11x=46;
-	public static final int INSTRUCTION_FORMAT12x=47;
-	public static final int INSTRUCTION_FORMAT12x_OR_ID=48;
-	public static final int INSTRUCTION_FORMAT20bc=49;
-	public static final int INSTRUCTION_FORMAT20t=50;
-	public static final int INSTRUCTION_FORMAT21c_FIELD=51;
-	public static final int INSTRUCTION_FORMAT21c_FIELD_ODEX=52;
-	public static final int INSTRUCTION_FORMAT21c_STRING=53;
-	public static final int INSTRUCTION_FORMAT21c_TYPE=54;
-	public static final int INSTRUCTION_FORMAT21ih=55;
-	public static final int INSTRUCTION_FORMAT21lh=56;
-	public static final int INSTRUCTION_FORMAT21s=57;
-	public static final int INSTRUCTION_FORMAT21t=58;
-	public static final int INSTRUCTION_FORMAT22b=59;
-	public static final int INSTRUCTION_FORMAT22c_FIELD=60;
-	public static final int INSTRUCTION_FORMAT22c_FIELD_ODEX=61;
-	public static final int INSTRUCTION_FORMAT22c_TYPE=62;
-	public static final int INSTRUCTION_FORMAT22cs_FIELD=63;
-	public static final int INSTRUCTION_FORMAT22s=64;
-	public static final int INSTRUCTION_FORMAT22s_OR_ID=65;
-	public static final int INSTRUCTION_FORMAT22t=66;
-	public static final int INSTRUCTION_FORMAT22x=67;
-	public static final int INSTRUCTION_FORMAT23x=68;
-	public static final int INSTRUCTION_FORMAT30t=69;
-	public static final int INSTRUCTION_FORMAT31c=70;
-	public static final int INSTRUCTION_FORMAT31i=71;
-	public static final int INSTRUCTION_FORMAT31i_OR_ID=72;
-	public static final int INSTRUCTION_FORMAT31t=73;
-	public static final int INSTRUCTION_FORMAT32x=74;
-	public static final int INSTRUCTION_FORMAT35c_METHOD=75;
-	public static final int INSTRUCTION_FORMAT35c_METHOD_ODEX=76;
-	public static final int INSTRUCTION_FORMAT35c_TYPE=77;
-	public static final int INSTRUCTION_FORMAT35mi_METHOD=78;
-	public static final int INSTRUCTION_FORMAT35ms_METHOD=79;
-	public static final int INSTRUCTION_FORMAT3rc_METHOD=80;
-	public static final int INSTRUCTION_FORMAT3rc_METHOD_ODEX=81;
-	public static final int INSTRUCTION_FORMAT3rc_TYPE=82;
-	public static final int INSTRUCTION_FORMAT3rmi_METHOD=83;
-	public static final int INSTRUCTION_FORMAT3rms_METHOD=84;
-	public static final int INSTRUCTION_FORMAT45cc_METHOD=85;
-	public static final int INSTRUCTION_FORMAT4rcc_METHOD=86;
-	public static final int INSTRUCTION_FORMAT51l=87;
-	public static final int INTEGER_LITERAL=88;
-	public static final int INVALID_TOKEN=89;
-	public static final int I_ACCESS_LIST=90;
-	public static final int I_ANNOTATION=91;
-	public static final int I_ANNOTATIONS=92;
-	public static final int I_ANNOTATION_ELEMENT=93;
-	public static final int I_ARRAY_ELEMENTS=94;
-	public static final int I_ARRAY_ELEMENT_SIZE=95;
-	public static final int I_CATCH=96;
-	public static final int I_CATCHALL=97;
-	public static final int I_CATCHES=98;
-	public static final int I_CLASS_DEF=99;
-	public static final int I_ENCODED_ARRAY=100;
-	public static final int I_ENCODED_ENUM=101;
-	public static final int I_ENCODED_FIELD=102;
-	public static final int I_ENCODED_METHOD=103;
-	public static final int I_END_LOCAL=104;
-	public static final int I_EPILOGUE=105;
-	public static final int I_FIELD=106;
-	public static final int I_FIELDS=107;
-	public static final int I_FIELD_INITIAL_VALUE=108;
-	public static final int I_FIELD_TYPE=109;
-	public static final int I_IMPLEMENTS=110;
-	public static final int I_LABEL=111;
-	public static final int I_LINE=112;
-	public static final int I_LOCAL=113;
-	public static final int I_LOCALS=114;
-	public static final int I_METHOD=115;
-	public static final int I_METHODS=116;
-	public static final int I_METHOD_PROTOTYPE=117;
-	public static final int I_METHOD_RETURN_TYPE=118;
-	public static final int I_ORDERED_METHOD_ITEMS=119;
-	public static final int I_PACKED_SWITCH_ELEMENTS=120;
-	public static final int I_PACKED_SWITCH_START_KEY=121;
-	public static final int I_PARAMETER=122;
-	public static final int I_PARAMETERS=123;
-	public static final int I_PARAMETER_NOT_SPECIFIED=124;
-	public static final int I_PROLOGUE=125;
-	public static final int I_REGISTERS=126;
-	public static final int I_REGISTER_LIST=127;
-	public static final int I_REGISTER_RANGE=128;
-	public static final int I_RESTART_LOCAL=129;
-	public static final int I_SOURCE=130;
-	public static final int I_SPARSE_SWITCH_ELEMENTS=131;
-	public static final int I_STATEMENT_ARRAY_DATA=132;
-	public static final int I_STATEMENT_FORMAT10t=133;
-	public static final int I_STATEMENT_FORMAT10x=134;
-	public static final int I_STATEMENT_FORMAT11n=135;
-	public static final int I_STATEMENT_FORMAT11x=136;
-	public static final int I_STATEMENT_FORMAT12x=137;
-	public static final int I_STATEMENT_FORMAT20bc=138;
-	public static final int I_STATEMENT_FORMAT20t=139;
-	public static final int I_STATEMENT_FORMAT21c_FIELD=140;
-	public static final int I_STATEMENT_FORMAT21c_STRING=141;
-	public static final int I_STATEMENT_FORMAT21c_TYPE=142;
-	public static final int I_STATEMENT_FORMAT21ih=143;
-	public static final int I_STATEMENT_FORMAT21lh=144;
-	public static final int I_STATEMENT_FORMAT21s=145;
-	public static final int I_STATEMENT_FORMAT21t=146;
-	public static final int I_STATEMENT_FORMAT22b=147;
-	public static final int I_STATEMENT_FORMAT22c_FIELD=148;
-	public static final int I_STATEMENT_FORMAT22c_TYPE=149;
-	public static final int I_STATEMENT_FORMAT22s=150;
-	public static final int I_STATEMENT_FORMAT22t=151;
-	public static final int I_STATEMENT_FORMAT22x=152;
-	public static final int I_STATEMENT_FORMAT23x=153;
-	public static final int I_STATEMENT_FORMAT30t=154;
-	public static final int I_STATEMENT_FORMAT31c=155;
-	public static final int I_STATEMENT_FORMAT31i=156;
-	public static final int I_STATEMENT_FORMAT31t=157;
-	public static final int I_STATEMENT_FORMAT32x=158;
-	public static final int I_STATEMENT_FORMAT35c_METHOD=159;
-	public static final int I_STATEMENT_FORMAT35c_TYPE=160;
-	public static final int I_STATEMENT_FORMAT3rc_METHOD=161;
-	public static final int I_STATEMENT_FORMAT3rc_TYPE=162;
-	public static final int I_STATEMENT_FORMAT45cc_METHOD=163;
-	public static final int I_STATEMENT_FORMAT4rcc_METHOD=164;
-	public static final int I_STATEMENT_FORMAT51l=165;
-	public static final int I_STATEMENT_PACKED_SWITCH=166;
-	public static final int I_STATEMENT_SPARSE_SWITCH=167;
-	public static final int I_SUBANNOTATION=168;
-	public static final int I_SUPER=169;
-	public static final int LINE_COMMENT=170;
-	public static final int LINE_DIRECTIVE=171;
-	public static final int LOCALS_DIRECTIVE=172;
-	public static final int LOCAL_DIRECTIVE=173;
-	public static final int LONG_LITERAL=174;
-	public static final int MEMBER_NAME=175;
-	public static final int METHOD_DIRECTIVE=176;
-	public static final int NEGATIVE_INTEGER_LITERAL=177;
-	public static final int NULL_LITERAL=178;
-	public static final int OPEN_BRACE=179;
-	public static final int OPEN_PAREN=180;
-	public static final int PACKED_SWITCH_DIRECTIVE=181;
-	public static final int PARAMETER_DIRECTIVE=182;
-	public static final int PARAM_LIST_OR_ID_PRIMITIVE_TYPE=183;
-	public static final int POSITIVE_INTEGER_LITERAL=184;
-	public static final int PRIMITIVE_TYPE=185;
-	public static final int PROLOGUE_DIRECTIVE=186;
-	public static final int REGISTER=187;
-	public static final int REGISTERS_DIRECTIVE=188;
-	public static final int RESTART_LOCAL_DIRECTIVE=189;
-	public static final int SHORT_LITERAL=190;
-	public static final int SIMPLE_NAME=191;
-	public static final int SOURCE_DIRECTIVE=192;
-	public static final int SPARSE_SWITCH_DIRECTIVE=193;
-	public static final int STRING_LITERAL=194;
-	public static final int SUBANNOTATION_DIRECTIVE=195;
-	public static final int SUPER_DIRECTIVE=196;
-	public static final int VERIFICATION_ERROR_TYPE=197;
-	public static final int VOID_TYPE=198;
-	public static final int VTABLE_INDEX=199;
-	public static final int WHITE_SPACE=200;
+	public static final int AT=10;
+	public static final int BOOL_LITERAL=11;
+	public static final int BYTE_LITERAL=12;
+	public static final int CATCHALL_DIRECTIVE=13;
+	public static final int CATCH_DIRECTIVE=14;
+	public static final int CHAR_LITERAL=15;
+	public static final int CLASS_DESCRIPTOR=16;
+	public static final int CLASS_DIRECTIVE=17;
+	public static final int CLOSE_BRACE=18;
+	public static final int CLOSE_PAREN=19;
+	public static final int COLON=20;
+	public static final int COMMA=21;
+	public static final int DOTDOT=22;
+	public static final int DOUBLE_LITERAL=23;
+	public static final int DOUBLE_LITERAL_OR_ID=24;
+	public static final int END_ANNOTATION_DIRECTIVE=25;
+	public static final int END_ARRAY_DATA_DIRECTIVE=26;
+	public static final int END_FIELD_DIRECTIVE=27;
+	public static final int END_LOCAL_DIRECTIVE=28;
+	public static final int END_METHOD_DIRECTIVE=29;
+	public static final int END_PACKED_SWITCH_DIRECTIVE=30;
+	public static final int END_PARAMETER_DIRECTIVE=31;
+	public static final int END_SPARSE_SWITCH_DIRECTIVE=32;
+	public static final int END_SUBANNOTATION_DIRECTIVE=33;
+	public static final int ENUM_DIRECTIVE=34;
+	public static final int EPILOGUE_DIRECTIVE=35;
+	public static final int EQUAL=36;
+	public static final int FIELD_DIRECTIVE=37;
+	public static final int FIELD_OFFSET=38;
+	public static final int FLOAT_LITERAL=39;
+	public static final int FLOAT_LITERAL_OR_ID=40;
+	public static final int IMPLEMENTS_DIRECTIVE=41;
+	public static final int INLINE_INDEX=42;
+	public static final int INSTRUCTION_FORMAT10t=43;
+	public static final int INSTRUCTION_FORMAT10x=44;
+	public static final int INSTRUCTION_FORMAT10x_ODEX=45;
+	public static final int INSTRUCTION_FORMAT11n=46;
+	public static final int INSTRUCTION_FORMAT11x=47;
+	public static final int INSTRUCTION_FORMAT12x=48;
+	public static final int INSTRUCTION_FORMAT12x_OR_ID=49;
+	public static final int INSTRUCTION_FORMAT20bc=50;
+	public static final int INSTRUCTION_FORMAT20t=51;
+	public static final int INSTRUCTION_FORMAT21c_FIELD=52;
+	public static final int INSTRUCTION_FORMAT21c_FIELD_ODEX=53;
+	public static final int INSTRUCTION_FORMAT21c_METHOD_HANDLE=54;
+	public static final int INSTRUCTION_FORMAT21c_METHOD_TYPE=55;
+	public static final int INSTRUCTION_FORMAT21c_STRING=56;
+	public static final int INSTRUCTION_FORMAT21c_TYPE=57;
+	public static final int INSTRUCTION_FORMAT21ih=58;
+	public static final int INSTRUCTION_FORMAT21lh=59;
+	public static final int INSTRUCTION_FORMAT21s=60;
+	public static final int INSTRUCTION_FORMAT21t=61;
+	public static final int INSTRUCTION_FORMAT22b=62;
+	public static final int INSTRUCTION_FORMAT22c_FIELD=63;
+	public static final int INSTRUCTION_FORMAT22c_FIELD_ODEX=64;
+	public static final int INSTRUCTION_FORMAT22c_TYPE=65;
+	public static final int INSTRUCTION_FORMAT22cs_FIELD=66;
+	public static final int INSTRUCTION_FORMAT22s=67;
+	public static final int INSTRUCTION_FORMAT22s_OR_ID=68;
+	public static final int INSTRUCTION_FORMAT22t=69;
+	public static final int INSTRUCTION_FORMAT22x=70;
+	public static final int INSTRUCTION_FORMAT23x=71;
+	public static final int INSTRUCTION_FORMAT30t=72;
+	public static final int INSTRUCTION_FORMAT31c=73;
+	public static final int INSTRUCTION_FORMAT31i=74;
+	public static final int INSTRUCTION_FORMAT31i_OR_ID=75;
+	public static final int INSTRUCTION_FORMAT31t=76;
+	public static final int INSTRUCTION_FORMAT32x=77;
+	public static final int INSTRUCTION_FORMAT35c_CALL_SITE=78;
+	public static final int INSTRUCTION_FORMAT35c_METHOD=79;
+	public static final int INSTRUCTION_FORMAT35c_METHOD_ODEX=80;
+	public static final int INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE=81;
+	public static final int INSTRUCTION_FORMAT35c_TYPE=82;
+	public static final int INSTRUCTION_FORMAT35mi_METHOD=83;
+	public static final int INSTRUCTION_FORMAT35ms_METHOD=84;
+	public static final int INSTRUCTION_FORMAT3rc_CALL_SITE=85;
+	public static final int INSTRUCTION_FORMAT3rc_METHOD=86;
+	public static final int INSTRUCTION_FORMAT3rc_METHOD_ODEX=87;
+	public static final int INSTRUCTION_FORMAT3rc_TYPE=88;
+	public static final int INSTRUCTION_FORMAT3rmi_METHOD=89;
+	public static final int INSTRUCTION_FORMAT3rms_METHOD=90;
+	public static final int INSTRUCTION_FORMAT45cc_METHOD=91;
+	public static final int INSTRUCTION_FORMAT4rcc_METHOD=92;
+	public static final int INSTRUCTION_FORMAT51l=93;
+	public static final int INTEGER_LITERAL=94;
+	public static final int INVALID_TOKEN=95;
+	public static final int I_ACCESS_LIST=96;
+	public static final int I_ANNOTATION=97;
+	public static final int I_ANNOTATIONS=98;
+	public static final int I_ANNOTATION_ELEMENT=99;
+	public static final int I_ARRAY_ELEMENTS=100;
+	public static final int I_ARRAY_ELEMENT_SIZE=101;
+	public static final int I_CALL_SITE_EXTRA_ARGUMENTS=102;
+	public static final int I_CALL_SITE_REFERENCE=103;
+	public static final int I_CATCH=104;
+	public static final int I_CATCHALL=105;
+	public static final int I_CATCHES=106;
+	public static final int I_CLASS_DEF=107;
+	public static final int I_ENCODED_ARRAY=108;
+	public static final int I_ENCODED_ENUM=109;
+	public static final int I_ENCODED_FIELD=110;
+	public static final int I_ENCODED_METHOD=111;
+	public static final int I_ENCODED_METHOD_HANDLE=112;
+	public static final int I_END_LOCAL=113;
+	public static final int I_EPILOGUE=114;
+	public static final int I_FIELD=115;
+	public static final int I_FIELDS=116;
+	public static final int I_FIELD_INITIAL_VALUE=117;
+	public static final int I_FIELD_TYPE=118;
+	public static final int I_IMPLEMENTS=119;
+	public static final int I_LABEL=120;
+	public static final int I_LINE=121;
+	public static final int I_LOCAL=122;
+	public static final int I_LOCALS=123;
+	public static final int I_METHOD=124;
+	public static final int I_METHODS=125;
+	public static final int I_METHOD_PROTOTYPE=126;
+	public static final int I_METHOD_RETURN_TYPE=127;
+	public static final int I_ORDERED_METHOD_ITEMS=128;
+	public static final int I_PACKED_SWITCH_ELEMENTS=129;
+	public static final int I_PACKED_SWITCH_START_KEY=130;
+	public static final int I_PARAMETER=131;
+	public static final int I_PARAMETERS=132;
+	public static final int I_PARAMETER_NOT_SPECIFIED=133;
+	public static final int I_PROLOGUE=134;
+	public static final int I_REGISTERS=135;
+	public static final int I_REGISTER_LIST=136;
+	public static final int I_REGISTER_RANGE=137;
+	public static final int I_RESTART_LOCAL=138;
+	public static final int I_SOURCE=139;
+	public static final int I_SPARSE_SWITCH_ELEMENTS=140;
+	public static final int I_STATEMENT_ARRAY_DATA=141;
+	public static final int I_STATEMENT_FORMAT10t=142;
+	public static final int I_STATEMENT_FORMAT10x=143;
+	public static final int I_STATEMENT_FORMAT11n=144;
+	public static final int I_STATEMENT_FORMAT11x=145;
+	public static final int I_STATEMENT_FORMAT12x=146;
+	public static final int I_STATEMENT_FORMAT20bc=147;
+	public static final int I_STATEMENT_FORMAT20t=148;
+	public static final int I_STATEMENT_FORMAT21c_FIELD=149;
+	public static final int I_STATEMENT_FORMAT21c_METHOD_HANDLE=150;
+	public static final int I_STATEMENT_FORMAT21c_METHOD_TYPE=151;
+	public static final int I_STATEMENT_FORMAT21c_STRING=152;
+	public static final int I_STATEMENT_FORMAT21c_TYPE=153;
+	public static final int I_STATEMENT_FORMAT21ih=154;
+	public static final int I_STATEMENT_FORMAT21lh=155;
+	public static final int I_STATEMENT_FORMAT21s=156;
+	public static final int I_STATEMENT_FORMAT21t=157;
+	public static final int I_STATEMENT_FORMAT22b=158;
+	public static final int I_STATEMENT_FORMAT22c_FIELD=159;
+	public static final int I_STATEMENT_FORMAT22c_TYPE=160;
+	public static final int I_STATEMENT_FORMAT22s=161;
+	public static final int I_STATEMENT_FORMAT22t=162;
+	public static final int I_STATEMENT_FORMAT22x=163;
+	public static final int I_STATEMENT_FORMAT23x=164;
+	public static final int I_STATEMENT_FORMAT30t=165;
+	public static final int I_STATEMENT_FORMAT31c=166;
+	public static final int I_STATEMENT_FORMAT31i=167;
+	public static final int I_STATEMENT_FORMAT31t=168;
+	public static final int I_STATEMENT_FORMAT32x=169;
+	public static final int I_STATEMENT_FORMAT35c_CALL_SITE=170;
+	public static final int I_STATEMENT_FORMAT35c_METHOD=171;
+	public static final int I_STATEMENT_FORMAT35c_TYPE=172;
+	public static final int I_STATEMENT_FORMAT3rc_CALL_SITE=173;
+	public static final int I_STATEMENT_FORMAT3rc_METHOD=174;
+	public static final int I_STATEMENT_FORMAT3rc_TYPE=175;
+	public static final int I_STATEMENT_FORMAT45cc_METHOD=176;
+	public static final int I_STATEMENT_FORMAT4rcc_METHOD=177;
+	public static final int I_STATEMENT_FORMAT51l=178;
+	public static final int I_STATEMENT_PACKED_SWITCH=179;
+	public static final int I_STATEMENT_SPARSE_SWITCH=180;
+	public static final int I_SUBANNOTATION=181;
+	public static final int I_SUPER=182;
+	public static final int LINE_COMMENT=183;
+	public static final int LINE_DIRECTIVE=184;
+	public static final int LOCALS_DIRECTIVE=185;
+	public static final int LOCAL_DIRECTIVE=186;
+	public static final int LONG_LITERAL=187;
+	public static final int MEMBER_NAME=188;
+	public static final int METHOD_DIRECTIVE=189;
+	public static final int METHOD_HANDLE_TYPE_FIELD=190;
+	public static final int METHOD_HANDLE_TYPE_METHOD=191;
+	public static final int NEGATIVE_INTEGER_LITERAL=192;
+	public static final int NULL_LITERAL=193;
+	public static final int OPEN_BRACE=194;
+	public static final int OPEN_PAREN=195;
+	public static final int PACKED_SWITCH_DIRECTIVE=196;
+	public static final int PARAMETER_DIRECTIVE=197;
+	public static final int PARAM_LIST_OR_ID_PRIMITIVE_TYPE=198;
+	public static final int POSITIVE_INTEGER_LITERAL=199;
+	public static final int PRIMITIVE_TYPE=200;
+	public static final int PROLOGUE_DIRECTIVE=201;
+	public static final int REGISTER=202;
+	public static final int REGISTERS_DIRECTIVE=203;
+	public static final int RESTART_LOCAL_DIRECTIVE=204;
+	public static final int SHORT_LITERAL=205;
+	public static final int SIMPLE_NAME=206;
+	public static final int SOURCE_DIRECTIVE=207;
+	public static final int SPARSE_SWITCH_DIRECTIVE=208;
+	public static final int STRING_LITERAL=209;
+	public static final int SUBANNOTATION_DIRECTIVE=210;
+	public static final int SUPER_DIRECTIVE=211;
+	public static final int VERIFICATION_ERROR_TYPE=212;
+	public static final int VOID_TYPE=213;
+	public static final int VTABLE_INDEX=214;
+	public static final int WHITE_SPACE=215;
 
 	// delegates
 	public TreeParser[] getDelegates() {
@@ -329,6 +351,7 @@
 	  private int apiLevel = 15;
 	  private Opcodes opcodes = Opcodes.forApi(apiLevel);
 	  private DexBuilder dexBuilder;
+	  private int callSiteNameIndex = 0;
 
 	  public void setDexBuilder(DexBuilder dexBuilder) {
 	      this.dexBuilder = dexBuilder;
@@ -408,7 +431,7 @@
 
 
 	// $ANTLR start "smali_file"
-	// smaliTreeWalker.g:160:1: smali_file returns [ClassDef classDef] : ^( I_CLASS_DEF header methods fields annotations ) ;
+	// smaliTreeWalker.g:163:1: smali_file returns [ClassDef classDef] : ^( I_CLASS_DEF header methods fields annotations ) ;
 	public final ClassDef smali_file() throws RecognitionException {
 		ClassDef classDef = null;
 
@@ -419,8 +442,8 @@
 		List<BuilderMethod> methods4 =null;
 
 		try {
-			// smaliTreeWalker.g:161:3: ( ^( I_CLASS_DEF header methods fields annotations ) )
-			// smaliTreeWalker.g:161:5: ^( I_CLASS_DEF header methods fields annotations )
+			// smaliTreeWalker.g:164:3: ( ^( I_CLASS_DEF header methods fields annotations ) )
+			// smaliTreeWalker.g:164:5: ^( I_CLASS_DEF header methods fields annotations )
 			{
 			match(input,I_CLASS_DEF,FOLLOW_I_CLASS_DEF_in_smali_file52); 
 			match(input, Token.DOWN, null); 
@@ -476,7 +499,7 @@
 
 
 	// $ANTLR start "header"
-	// smaliTreeWalker.g:174:1: header returns [String classType, int accessFlags, String superType, List<String> implementsList, String sourceSpec] : class_spec ( super_spec )? implements_list source_spec ;
+	// smaliTreeWalker.g:177:1: header returns [String classType, int accessFlags, String superType, List<String> implementsList, String sourceSpec] : class_spec ( super_spec )? implements_list source_spec ;
 	public final smaliTreeWalker.header_return header() throws RecognitionException {
 		smaliTreeWalker.header_return retval = new smaliTreeWalker.header_return();
 		retval.start = input.LT(1);
@@ -487,14 +510,14 @@
 		String source_spec8 =null;
 
 		try {
-			// smaliTreeWalker.g:175:3: ( class_spec ( super_spec )? implements_list source_spec )
-			// smaliTreeWalker.g:175:3: class_spec ( super_spec )? implements_list source_spec
+			// smaliTreeWalker.g:178:3: ( class_spec ( super_spec )? implements_list source_spec )
+			// smaliTreeWalker.g:178:3: class_spec ( super_spec )? implements_list source_spec
 			{
 			pushFollow(FOLLOW_class_spec_in_header85);
 			class_spec5=class_spec();
 			state._fsp--;
 
-			// smaliTreeWalker.g:175:14: ( super_spec )?
+			// smaliTreeWalker.g:178:14: ( super_spec )?
 			int alt1=2;
 			int LA1_0 = input.LA(1);
 			if ( (LA1_0==I_SUPER) ) {
@@ -502,7 +525,7 @@
 			}
 			switch (alt1) {
 				case 1 :
-					// smaliTreeWalker.g:175:14: super_spec
+					// smaliTreeWalker.g:178:14: super_spec
 					{
 					pushFollow(FOLLOW_super_spec_in_header87);
 					super_spec6=super_spec();
@@ -551,7 +574,7 @@
 
 
 	// $ANTLR start "class_spec"
-	// smaliTreeWalker.g:186:1: class_spec returns [String type, int accessFlags] : CLASS_DESCRIPTOR access_list ;
+	// smaliTreeWalker.g:189:1: class_spec returns [String type, int accessFlags] : CLASS_DESCRIPTOR access_list ;
 	public final smaliTreeWalker.class_spec_return class_spec() throws RecognitionException {
 		smaliTreeWalker.class_spec_return retval = new smaliTreeWalker.class_spec_return();
 		retval.start = input.LT(1);
@@ -560,8 +583,8 @@
 		int access_list10 =0;
 
 		try {
-			// smaliTreeWalker.g:187:3: ( CLASS_DESCRIPTOR access_list )
-			// smaliTreeWalker.g:187:5: CLASS_DESCRIPTOR access_list
+			// smaliTreeWalker.g:190:3: ( CLASS_DESCRIPTOR access_list )
+			// smaliTreeWalker.g:190:5: CLASS_DESCRIPTOR access_list
 			{
 			CLASS_DESCRIPTOR9=(CommonTree)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_class_spec110); 
 			pushFollow(FOLLOW_access_list_in_class_spec112);
@@ -589,7 +612,7 @@
 
 
 	// $ANTLR start "super_spec"
-	// smaliTreeWalker.g:193:1: super_spec returns [String type] : ^( I_SUPER CLASS_DESCRIPTOR ) ;
+	// smaliTreeWalker.g:196:1: super_spec returns [String type] : ^( I_SUPER CLASS_DESCRIPTOR ) ;
 	public final String super_spec() throws RecognitionException {
 		String type = null;
 
@@ -597,8 +620,8 @@
 		CommonTree CLASS_DESCRIPTOR11=null;
 
 		try {
-			// smaliTreeWalker.g:194:3: ( ^( I_SUPER CLASS_DESCRIPTOR ) )
-			// smaliTreeWalker.g:194:5: ^( I_SUPER CLASS_DESCRIPTOR )
+			// smaliTreeWalker.g:197:3: ( ^( I_SUPER CLASS_DESCRIPTOR ) )
+			// smaliTreeWalker.g:197:5: ^( I_SUPER CLASS_DESCRIPTOR )
 			{
 			match(input,I_SUPER,FOLLOW_I_SUPER_in_super_spec130); 
 			match(input, Token.DOWN, null); 
@@ -625,7 +648,7 @@
 
 
 	// $ANTLR start "implements_spec"
-	// smaliTreeWalker.g:200:1: implements_spec returns [String type] : ^( I_IMPLEMENTS CLASS_DESCRIPTOR ) ;
+	// smaliTreeWalker.g:203:1: implements_spec returns [String type] : ^( I_IMPLEMENTS CLASS_DESCRIPTOR ) ;
 	public final String implements_spec() throws RecognitionException {
 		String type = null;
 
@@ -633,8 +656,8 @@
 		CommonTree CLASS_DESCRIPTOR12=null;
 
 		try {
-			// smaliTreeWalker.g:201:3: ( ^( I_IMPLEMENTS CLASS_DESCRIPTOR ) )
-			// smaliTreeWalker.g:201:5: ^( I_IMPLEMENTS CLASS_DESCRIPTOR )
+			// smaliTreeWalker.g:204:3: ( ^( I_IMPLEMENTS CLASS_DESCRIPTOR ) )
+			// smaliTreeWalker.g:204:5: ^( I_IMPLEMENTS CLASS_DESCRIPTOR )
 			{
 			match(input,I_IMPLEMENTS,FOLLOW_I_IMPLEMENTS_in_implements_spec152); 
 			match(input, Token.DOWN, null); 
@@ -661,7 +684,7 @@
 
 
 	// $ANTLR start "implements_list"
-	// smaliTreeWalker.g:206:1: implements_list returns [List<String> implementsList] : ( implements_spec )* ;
+	// smaliTreeWalker.g:209:1: implements_list returns [List<String> implementsList] : ( implements_spec )* ;
 	public final List<String> implements_list() throws RecognitionException {
 		List<String> implementsList = null;
 
@@ -670,11 +693,11 @@
 
 		 List<String> typeList; 
 		try {
-			// smaliTreeWalker.g:208:3: ( ( implements_spec )* )
-			// smaliTreeWalker.g:208:5: ( implements_spec )*
+			// smaliTreeWalker.g:211:3: ( ( implements_spec )* )
+			// smaliTreeWalker.g:211:5: ( implements_spec )*
 			{
 			typeList = Lists.newArrayList();
-			// smaliTreeWalker.g:209:5: ( implements_spec )*
+			// smaliTreeWalker.g:212:5: ( implements_spec )*
 			loop2:
 			while (true) {
 				int alt2=2;
@@ -685,7 +708,7 @@
 
 				switch (alt2) {
 				case 1 :
-					// smaliTreeWalker.g:209:6: implements_spec
+					// smaliTreeWalker.g:212:6: implements_spec
 					{
 					pushFollow(FOLLOW_implements_spec_in_implements_list184);
 					implements_spec13=implements_spec();
@@ -724,7 +747,7 @@
 
 
 	// $ANTLR start "source_spec"
-	// smaliTreeWalker.g:218:1: source_spec returns [String source] : ( ^( I_SOURCE string_literal ) |);
+	// smaliTreeWalker.g:221:1: source_spec returns [String source] : ( ^( I_SOURCE string_literal ) |);
 	public final String source_spec() throws RecognitionException {
 		String source = null;
 
@@ -732,7 +755,7 @@
 		String string_literal14 =null;
 
 		try {
-			// smaliTreeWalker.g:219:3: ( ^( I_SOURCE string_literal ) |)
+			// smaliTreeWalker.g:222:3: ( ^( I_SOURCE string_literal ) |)
 			int alt3=2;
 			int LA3_0 = input.LA(1);
 			if ( (LA3_0==I_SOURCE) ) {
@@ -750,7 +773,7 @@
 
 			switch (alt3) {
 				case 1 :
-					// smaliTreeWalker.g:219:5: ^( I_SOURCE string_literal )
+					// smaliTreeWalker.g:222:5: ^( I_SOURCE string_literal )
 					{
 					source = null;
 					match(input,I_SOURCE,FOLLOW_I_SOURCE_in_source_spec213); 
@@ -765,7 +788,7 @@
 					}
 					break;
 				case 2 :
-					// smaliTreeWalker.g:221:16: 
+					// smaliTreeWalker.g:224:16: 
 					{
 					}
 					break;
@@ -786,7 +809,7 @@
 
 
 	// $ANTLR start "access_list"
-	// smaliTreeWalker.g:223:1: access_list returns [int value] : ^( I_ACCESS_LIST ( ACCESS_SPEC )* ) ;
+	// smaliTreeWalker.g:226:1: access_list returns [int value] : ^( I_ACCESS_LIST ( ACCESS_SPEC )* ) ;
 	public final int access_list() throws RecognitionException {
 		int value = 0;
 
@@ -797,13 +820,13 @@
 		    value = 0;
 		  
 		try {
-			// smaliTreeWalker.g:228:3: ( ^( I_ACCESS_LIST ( ACCESS_SPEC )* ) )
-			// smaliTreeWalker.g:228:5: ^( I_ACCESS_LIST ( ACCESS_SPEC )* )
+			// smaliTreeWalker.g:231:3: ( ^( I_ACCESS_LIST ( ACCESS_SPEC )* ) )
+			// smaliTreeWalker.g:231:5: ^( I_ACCESS_LIST ( ACCESS_SPEC )* )
 			{
 			match(input,I_ACCESS_LIST,FOLLOW_I_ACCESS_LIST_in_access_list248); 
 			if ( input.LA(1)==Token.DOWN ) {
 				match(input, Token.DOWN, null); 
-				// smaliTreeWalker.g:229:7: ( ACCESS_SPEC )*
+				// smaliTreeWalker.g:232:7: ( ACCESS_SPEC )*
 				loop4:
 				while (true) {
 					int alt4=2;
@@ -814,7 +837,7 @@
 
 					switch (alt4) {
 					case 1 :
-						// smaliTreeWalker.g:230:9: ACCESS_SPEC
+						// smaliTreeWalker.g:233:9: ACCESS_SPEC
 						{
 						ACCESS_SPEC15=(CommonTree)match(input,ACCESS_SPEC,FOLLOW_ACCESS_SPEC_in_access_list266); 
 
@@ -848,7 +871,7 @@
 
 
 	// $ANTLR start "fields"
-	// smaliTreeWalker.g:237:1: fields returns [List<BuilderField> fields] : ^( I_FIELDS ( field )* ) ;
+	// smaliTreeWalker.g:240:1: fields returns [List<BuilderField> fields] : ^( I_FIELDS ( field )* ) ;
 	public final List<BuilderField> fields() throws RecognitionException {
 		List<BuilderField> fields = null;
 
@@ -857,13 +880,13 @@
 
 		fields = Lists.newArrayList();
 		try {
-			// smaliTreeWalker.g:239:3: ( ^( I_FIELDS ( field )* ) )
-			// smaliTreeWalker.g:239:5: ^( I_FIELDS ( field )* )
+			// smaliTreeWalker.g:242:3: ( ^( I_FIELDS ( field )* ) )
+			// smaliTreeWalker.g:242:5: ^( I_FIELDS ( field )* )
 			{
 			match(input,I_FIELDS,FOLLOW_I_FIELDS_in_fields308); 
 			if ( input.LA(1)==Token.DOWN ) {
 				match(input, Token.DOWN, null); 
-				// smaliTreeWalker.g:240:7: ( field )*
+				// smaliTreeWalker.g:243:7: ( field )*
 				loop5:
 				while (true) {
 					int alt5=2;
@@ -874,7 +897,7 @@
 
 					switch (alt5) {
 					case 1 :
-						// smaliTreeWalker.g:240:8: field
+						// smaliTreeWalker.g:243:8: field
 						{
 						pushFollow(FOLLOW_field_in_fields317);
 						field16=field();
@@ -911,7 +934,7 @@
 
 
 	// $ANTLR start "methods"
-	// smaliTreeWalker.g:245:1: methods returns [List<BuilderMethod> methods] : ^( I_METHODS ( method )* ) ;
+	// smaliTreeWalker.g:248:1: methods returns [List<BuilderMethod> methods] : ^( I_METHODS ( method )* ) ;
 	public final List<BuilderMethod> methods() throws RecognitionException {
 		List<BuilderMethod> methods = null;
 
@@ -920,13 +943,13 @@
 
 		methods = Lists.newArrayList();
 		try {
-			// smaliTreeWalker.g:247:3: ( ^( I_METHODS ( method )* ) )
-			// smaliTreeWalker.g:247:5: ^( I_METHODS ( method )* )
+			// smaliTreeWalker.g:250:3: ( ^( I_METHODS ( method )* ) )
+			// smaliTreeWalker.g:250:5: ^( I_METHODS ( method )* )
 			{
 			match(input,I_METHODS,FOLLOW_I_METHODS_in_methods349); 
 			if ( input.LA(1)==Token.DOWN ) {
 				match(input, Token.DOWN, null); 
-				// smaliTreeWalker.g:248:7: ( method )*
+				// smaliTreeWalker.g:251:7: ( method )*
 				loop6:
 				while (true) {
 					int alt6=2;
@@ -937,7 +960,7 @@
 
 					switch (alt6) {
 					case 1 :
-						// smaliTreeWalker.g:248:8: method
+						// smaliTreeWalker.g:251:8: method
 						{
 						pushFollow(FOLLOW_method_in_methods358);
 						method17=method();
@@ -974,7 +997,7 @@
 
 
 	// $ANTLR start "field"
-	// smaliTreeWalker.g:253:1: field returns [BuilderField field] : ^( I_FIELD SIMPLE_NAME access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) field_initial_value ( annotations )? ) ;
+	// smaliTreeWalker.g:256:1: field returns [BuilderField field] : ^( I_FIELD SIMPLE_NAME access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) field_initial_value ( annotations )? ) ;
 	public final BuilderField field() throws RecognitionException {
 		BuilderField field = null;
 
@@ -986,8 +1009,8 @@
 		Set<Annotation> annotations22 =null;
 
 		try {
-			// smaliTreeWalker.g:254:3: ( ^( I_FIELD SIMPLE_NAME access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) field_initial_value ( annotations )? ) )
-			// smaliTreeWalker.g:254:4: ^( I_FIELD SIMPLE_NAME access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) field_initial_value ( annotations )? )
+			// smaliTreeWalker.g:257:3: ( ^( I_FIELD SIMPLE_NAME access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) field_initial_value ( annotations )? ) )
+			// smaliTreeWalker.g:257:4: ^( I_FIELD SIMPLE_NAME access_list ^( I_FIELD_TYPE nonvoid_type_descriptor ) field_initial_value ( annotations )? )
 			{
 			match(input,I_FIELD,FOLLOW_I_FIELD_in_field383); 
 			match(input, Token.DOWN, null); 
@@ -1008,7 +1031,7 @@
 			field_initial_value19=field_initial_value();
 			state._fsp--;
 
-			// smaliTreeWalker.g:254:98: ( annotations )?
+			// smaliTreeWalker.g:257:98: ( annotations )?
 			int alt7=2;
 			int LA7_0 = input.LA(1);
 			if ( (LA7_0==I_ANNOTATIONS) ) {
@@ -1016,7 +1039,7 @@
 			}
 			switch (alt7) {
 				case 1 :
-					// smaliTreeWalker.g:254:98: annotations
+					// smaliTreeWalker.g:257:98: annotations
 					{
 					pushFollow(FOLLOW_annotations_in_field397);
 					annotations22=annotations();
@@ -1057,15 +1080,15 @@
 
 
 	// $ANTLR start "field_initial_value"
-	// smaliTreeWalker.g:268:1: field_initial_value returns [EncodedValue encodedValue] : ( ^( I_FIELD_INITIAL_VALUE literal ) |);
+	// smaliTreeWalker.g:271:1: field_initial_value returns [EncodedValue encodedValue] : ( ^( I_FIELD_INITIAL_VALUE literal ) |);
 	public final EncodedValue field_initial_value() throws RecognitionException {
 		EncodedValue encodedValue = null;
 
 
-		EncodedValue literal23 =null;
+		ImmutableEncodedValue literal23 =null;
 
 		try {
-			// smaliTreeWalker.g:269:3: ( ^( I_FIELD_INITIAL_VALUE literal ) |)
+			// smaliTreeWalker.g:272:3: ( ^( I_FIELD_INITIAL_VALUE literal ) |)
 			int alt8=2;
 			int LA8_0 = input.LA(1);
 			if ( (LA8_0==I_FIELD_INITIAL_VALUE) ) {
@@ -1083,7 +1106,7 @@
 
 			switch (alt8) {
 				case 1 :
-					// smaliTreeWalker.g:269:5: ^( I_FIELD_INITIAL_VALUE literal )
+					// smaliTreeWalker.g:272:5: ^( I_FIELD_INITIAL_VALUE literal )
 					{
 					match(input,I_FIELD_INITIAL_VALUE,FOLLOW_I_FIELD_INITIAL_VALUE_in_field_initial_value418); 
 					match(input, Token.DOWN, null); 
@@ -1097,7 +1120,7 @@
 					}
 					break;
 				case 2 :
-					// smaliTreeWalker.g:270:16: 
+					// smaliTreeWalker.g:273:16: 
 					{
 					}
 					break;
@@ -1118,9 +1141,9 @@
 
 
 	// $ANTLR start "literal"
-	// smaliTreeWalker.g:272:1: literal returns [EncodedValue encodedValue] : ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | string_literal | bool_literal | NULL_LITERAL | type_descriptor | array_literal | subannotation | field_literal | method_literal | enum_literal );
-	public final EncodedValue literal() throws RecognitionException {
-		EncodedValue encodedValue = null;
+	// smaliTreeWalker.g:275:1: literal returns [ImmutableEncodedValue encodedValue] : ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | string_literal | bool_literal | NULL_LITERAL | type_descriptor | array_literal | subannotation | field_literal | method_literal | enum_literal | method_handle_literal | method_prototype );
+	public final ImmutableEncodedValue literal() throws RecognitionException {
+		ImmutableEncodedValue encodedValue = null;
 
 
 		int integer_literal24 =0;
@@ -1135,13 +1158,15 @@
 		String type_descriptor33 =null;
 		List<EncodedValue> array_literal34 =null;
 		TreeRuleReturnScope subannotation35 =null;
-		FieldReference field_literal36 =null;
-		MethodReference method_literal37 =null;
-		FieldReference enum_literal38 =null;
+		ImmutableFieldReference field_literal36 =null;
+		ImmutableMethodReference method_literal37 =null;
+		ImmutableFieldReference enum_literal38 =null;
+		ImmutableMethodHandleReference method_handle_literal39 =null;
+		ImmutableMethodProtoReference method_prototype40 =null;
 
 		try {
-			// smaliTreeWalker.g:273:3: ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | string_literal | bool_literal | NULL_LITERAL | type_descriptor | array_literal | subannotation | field_literal | method_literal | enum_literal )
-			int alt9=16;
+			// smaliTreeWalker.g:276:3: ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | string_literal | bool_literal | NULL_LITERAL | type_descriptor | array_literal | subannotation | field_literal | method_literal | enum_literal | method_handle_literal | method_prototype )
+			int alt9=18;
 			switch ( input.LA(1) ) {
 			case INTEGER_LITERAL:
 				{
@@ -1226,6 +1251,16 @@
 				alt9=16;
 				}
 				break;
+			case I_ENCODED_METHOD_HANDLE:
+				{
+				alt9=17;
+				}
+				break;
+			case I_METHOD_PROTOTYPE:
+				{
+				alt9=18;
+				}
+				break;
 			default:
 				NoViableAltException nvae =
 					new NoViableAltException("", 9, 0, input);
@@ -1233,7 +1268,7 @@
 			}
 			switch (alt9) {
 				case 1 :
-					// smaliTreeWalker.g:273:5: integer_literal
+					// smaliTreeWalker.g:276:5: integer_literal
 					{
 					pushFollow(FOLLOW_integer_literal_in_literal442);
 					integer_literal24=integer_literal();
@@ -1243,7 +1278,7 @@
 					}
 					break;
 				case 2 :
-					// smaliTreeWalker.g:274:5: long_literal
+					// smaliTreeWalker.g:277:5: long_literal
 					{
 					pushFollow(FOLLOW_long_literal_in_literal450);
 					long_literal25=long_literal();
@@ -1253,7 +1288,7 @@
 					}
 					break;
 				case 3 :
-					// smaliTreeWalker.g:275:5: short_literal
+					// smaliTreeWalker.g:278:5: short_literal
 					{
 					pushFollow(FOLLOW_short_literal_in_literal458);
 					short_literal26=short_literal();
@@ -1263,7 +1298,7 @@
 					}
 					break;
 				case 4 :
-					// smaliTreeWalker.g:276:5: byte_literal
+					// smaliTreeWalker.g:279:5: byte_literal
 					{
 					pushFollow(FOLLOW_byte_literal_in_literal466);
 					byte_literal27=byte_literal();
@@ -1273,7 +1308,7 @@
 					}
 					break;
 				case 5 :
-					// smaliTreeWalker.g:277:5: float_literal
+					// smaliTreeWalker.g:280:5: float_literal
 					{
 					pushFollow(FOLLOW_float_literal_in_literal474);
 					float_literal28=float_literal();
@@ -1283,7 +1318,7 @@
 					}
 					break;
 				case 6 :
-					// smaliTreeWalker.g:278:5: double_literal
+					// smaliTreeWalker.g:281:5: double_literal
 					{
 					pushFollow(FOLLOW_double_literal_in_literal482);
 					double_literal29=double_literal();
@@ -1293,7 +1328,7 @@
 					}
 					break;
 				case 7 :
-					// smaliTreeWalker.g:279:5: char_literal
+					// smaliTreeWalker.g:282:5: char_literal
 					{
 					pushFollow(FOLLOW_char_literal_in_literal490);
 					char_literal30=char_literal();
@@ -1303,7 +1338,7 @@
 					}
 					break;
 				case 8 :
-					// smaliTreeWalker.g:280:5: string_literal
+					// smaliTreeWalker.g:283:5: string_literal
 					{
 					pushFollow(FOLLOW_string_literal_in_literal498);
 					string_literal31=string_literal();
@@ -1313,7 +1348,7 @@
 					}
 					break;
 				case 9 :
-					// smaliTreeWalker.g:281:5: bool_literal
+					// smaliTreeWalker.g:284:5: bool_literal
 					{
 					pushFollow(FOLLOW_bool_literal_in_literal506);
 					bool_literal32=bool_literal();
@@ -1323,14 +1358,14 @@
 					}
 					break;
 				case 10 :
-					// smaliTreeWalker.g:282:5: NULL_LITERAL
+					// smaliTreeWalker.g:285:5: NULL_LITERAL
 					{
 					match(input,NULL_LITERAL,FOLLOW_NULL_LITERAL_in_literal514); 
 					 encodedValue = ImmutableNullEncodedValue.INSTANCE; 
 					}
 					break;
 				case 11 :
-					// smaliTreeWalker.g:283:5: type_descriptor
+					// smaliTreeWalker.g:286:5: type_descriptor
 					{
 					pushFollow(FOLLOW_type_descriptor_in_literal522);
 					type_descriptor33=type_descriptor();
@@ -1340,7 +1375,7 @@
 					}
 					break;
 				case 12 :
-					// smaliTreeWalker.g:284:5: array_literal
+					// smaliTreeWalker.g:287:5: array_literal
 					{
 					pushFollow(FOLLOW_array_literal_in_literal530);
 					array_literal34=array_literal();
@@ -1350,7 +1385,7 @@
 					}
 					break;
 				case 13 :
-					// smaliTreeWalker.g:285:5: subannotation
+					// smaliTreeWalker.g:288:5: subannotation
 					{
 					pushFollow(FOLLOW_subannotation_in_literal538);
 					subannotation35=subannotation();
@@ -1360,7 +1395,7 @@
 					}
 					break;
 				case 14 :
-					// smaliTreeWalker.g:286:5: field_literal
+					// smaliTreeWalker.g:289:5: field_literal
 					{
 					pushFollow(FOLLOW_field_literal_in_literal546);
 					field_literal36=field_literal();
@@ -1370,7 +1405,7 @@
 					}
 					break;
 				case 15 :
-					// smaliTreeWalker.g:287:5: method_literal
+					// smaliTreeWalker.g:290:5: method_literal
 					{
 					pushFollow(FOLLOW_method_literal_in_literal554);
 					method_literal37=method_literal();
@@ -1380,7 +1415,7 @@
 					}
 					break;
 				case 16 :
-					// smaliTreeWalker.g:288:5: enum_literal
+					// smaliTreeWalker.g:291:5: enum_literal
 					{
 					pushFollow(FOLLOW_enum_literal_in_literal562);
 					enum_literal38=enum_literal();
@@ -1389,6 +1424,26 @@
 					 encodedValue = new ImmutableEnumEncodedValue(enum_literal38); 
 					}
 					break;
+				case 17 :
+					// smaliTreeWalker.g:292:5: method_handle_literal
+					{
+					pushFollow(FOLLOW_method_handle_literal_in_literal570);
+					method_handle_literal39=method_handle_literal();
+					state._fsp--;
+
+					 encodedValue = new ImmutableMethodHandleEncodedValue(method_handle_literal39); 
+					}
+					break;
+				case 18 :
+					// smaliTreeWalker.g:293:5: method_prototype
+					{
+					pushFollow(FOLLOW_method_prototype_in_literal578);
+					method_prototype40=method_prototype();
+					state._fsp--;
+
+					 encodedValue = new ImmutableMethodTypeEncodedValue(method_prototype40); 
+					}
+					break;
 
 			}
 		}
@@ -1406,22 +1461,22 @@
 
 
 	// $ANTLR start "fixed_64bit_literal_number"
-	// smaliTreeWalker.g:291:1: fixed_64bit_literal_number returns [Number value] : ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | bool_literal );
+	// smaliTreeWalker.g:296:1: fixed_64bit_literal_number returns [Number value] : ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | bool_literal );
 	public final Number fixed_64bit_literal_number() throws RecognitionException {
 		Number value = null;
 
 
-		int integer_literal39 =0;
-		long long_literal40 =0;
-		short short_literal41 =0;
-		byte byte_literal42 =0;
-		float float_literal43 =0.0f;
-		double double_literal44 =0.0;
-		char char_literal45 =0;
-		boolean bool_literal46 =false;
+		int integer_literal41 =0;
+		long long_literal42 =0;
+		short short_literal43 =0;
+		byte byte_literal44 =0;
+		float float_literal45 =0.0f;
+		double double_literal46 =0.0;
+		char char_literal47 =0;
+		boolean bool_literal48 =false;
 
 		try {
-			// smaliTreeWalker.g:292:3: ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | bool_literal )
+			// smaliTreeWalker.g:297:3: ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | bool_literal )
 			int alt10=8;
 			switch ( input.LA(1) ) {
 			case INTEGER_LITERAL:
@@ -1471,83 +1526,83 @@
 			}
 			switch (alt10) {
 				case 1 :
-					// smaliTreeWalker.g:292:5: integer_literal
+					// smaliTreeWalker.g:297:5: integer_literal
 					{
-					pushFollow(FOLLOW_integer_literal_in_fixed_64bit_literal_number578);
-					integer_literal39=integer_literal();
+					pushFollow(FOLLOW_integer_literal_in_fixed_64bit_literal_number594);
+					integer_literal41=integer_literal();
 					state._fsp--;
 
-					 value = integer_literal39; 
+					 value = integer_literal41; 
 					}
 					break;
 				case 2 :
-					// smaliTreeWalker.g:293:5: long_literal
+					// smaliTreeWalker.g:298:5: long_literal
 					{
-					pushFollow(FOLLOW_long_literal_in_fixed_64bit_literal_number586);
-					long_literal40=long_literal();
+					pushFollow(FOLLOW_long_literal_in_fixed_64bit_literal_number602);
+					long_literal42=long_literal();
 					state._fsp--;
 
-					 value = long_literal40; 
+					 value = long_literal42; 
 					}
 					break;
 				case 3 :
-					// smaliTreeWalker.g:294:5: short_literal
+					// smaliTreeWalker.g:299:5: short_literal
 					{
-					pushFollow(FOLLOW_short_literal_in_fixed_64bit_literal_number594);
-					short_literal41=short_literal();
+					pushFollow(FOLLOW_short_literal_in_fixed_64bit_literal_number610);
+					short_literal43=short_literal();
 					state._fsp--;
 
-					 value = short_literal41; 
+					 value = short_literal43; 
 					}
 					break;
 				case 4 :
-					// smaliTreeWalker.g:295:5: byte_literal
+					// smaliTreeWalker.g:300:5: byte_literal
 					{
-					pushFollow(FOLLOW_byte_literal_in_fixed_64bit_literal_number602);
-					byte_literal42=byte_literal();
+					pushFollow(FOLLOW_byte_literal_in_fixed_64bit_literal_number618);
+					byte_literal44=byte_literal();
 					state._fsp--;
 
-					 value = byte_literal42; 
+					 value = byte_literal44; 
 					}
 					break;
 				case 5 :
-					// smaliTreeWalker.g:296:5: float_literal
+					// smaliTreeWalker.g:301:5: float_literal
 					{
-					pushFollow(FOLLOW_float_literal_in_fixed_64bit_literal_number610);
-					float_literal43=float_literal();
+					pushFollow(FOLLOW_float_literal_in_fixed_64bit_literal_number626);
+					float_literal45=float_literal();
 					state._fsp--;
 
-					 value = Float.floatToRawIntBits(float_literal43); 
+					 value = Float.floatToRawIntBits(float_literal45); 
 					}
 					break;
 				case 6 :
-					// smaliTreeWalker.g:297:5: double_literal
+					// smaliTreeWalker.g:302:5: double_literal
 					{
-					pushFollow(FOLLOW_double_literal_in_fixed_64bit_literal_number618);
-					double_literal44=double_literal();
+					pushFollow(FOLLOW_double_literal_in_fixed_64bit_literal_number634);
+					double_literal46=double_literal();
 					state._fsp--;
 
-					 value = Double.doubleToRawLongBits(double_literal44); 
+					 value = Double.doubleToRawLongBits(double_literal46); 
 					}
 					break;
 				case 7 :
-					// smaliTreeWalker.g:298:5: char_literal
+					// smaliTreeWalker.g:303:5: char_literal
 					{
-					pushFollow(FOLLOW_char_literal_in_fixed_64bit_literal_number626);
-					char_literal45=char_literal();
+					pushFollow(FOLLOW_char_literal_in_fixed_64bit_literal_number642);
+					char_literal47=char_literal();
 					state._fsp--;
 
-					 value = (int)char_literal45; 
+					 value = (int)char_literal47; 
 					}
 					break;
 				case 8 :
-					// smaliTreeWalker.g:299:5: bool_literal
+					// smaliTreeWalker.g:304:5: bool_literal
 					{
-					pushFollow(FOLLOW_bool_literal_in_fixed_64bit_literal_number634);
-					bool_literal46=bool_literal();
+					pushFollow(FOLLOW_bool_literal_in_fixed_64bit_literal_number650);
+					bool_literal48=bool_literal();
 					state._fsp--;
 
-					 value = bool_literal46?1:0; 
+					 value = bool_literal48?1:0; 
 					}
 					break;
 
@@ -1567,22 +1622,22 @@
 
 
 	// $ANTLR start "fixed_64bit_literal"
-	// smaliTreeWalker.g:301:1: fixed_64bit_literal returns [long value] : ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | bool_literal );
+	// smaliTreeWalker.g:306:1: fixed_64bit_literal returns [long value] : ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | bool_literal );
 	public final long fixed_64bit_literal() throws RecognitionException {
 		long value = 0;
 
 
-		int integer_literal47 =0;
-		long long_literal48 =0;
-		short short_literal49 =0;
-		byte byte_literal50 =0;
-		float float_literal51 =0.0f;
-		double double_literal52 =0.0;
-		char char_literal53 =0;
-		boolean bool_literal54 =false;
+		int integer_literal49 =0;
+		long long_literal50 =0;
+		short short_literal51 =0;
+		byte byte_literal52 =0;
+		float float_literal53 =0.0f;
+		double double_literal54 =0.0;
+		char char_literal55 =0;
+		boolean bool_literal56 =false;
 
 		try {
-			// smaliTreeWalker.g:302:3: ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | bool_literal )
+			// smaliTreeWalker.g:307:3: ( integer_literal | long_literal | short_literal | byte_literal | float_literal | double_literal | char_literal | bool_literal )
 			int alt11=8;
 			switch ( input.LA(1) ) {
 			case INTEGER_LITERAL:
@@ -1632,83 +1687,83 @@
 			}
 			switch (alt11) {
 				case 1 :
-					// smaliTreeWalker.g:302:5: integer_literal
+					// smaliTreeWalker.g:307:5: integer_literal
 					{
-					pushFollow(FOLLOW_integer_literal_in_fixed_64bit_literal649);
-					integer_literal47=integer_literal();
+					pushFollow(FOLLOW_integer_literal_in_fixed_64bit_literal665);
+					integer_literal49=integer_literal();
 					state._fsp--;
 
-					 value = integer_literal47; 
+					 value = integer_literal49; 
 					}
 					break;
 				case 2 :
-					// smaliTreeWalker.g:303:5: long_literal
+					// smaliTreeWalker.g:308:5: long_literal
 					{
-					pushFollow(FOLLOW_long_literal_in_fixed_64bit_literal657);
-					long_literal48=long_literal();
+					pushFollow(FOLLOW_long_literal_in_fixed_64bit_literal673);
+					long_literal50=long_literal();
 					state._fsp--;
 
-					 value = long_literal48; 
+					 value = long_literal50; 
 					}
 					break;
 				case 3 :
-					// smaliTreeWalker.g:304:5: short_literal
+					// smaliTreeWalker.g:309:5: short_literal
 					{
-					pushFollow(FOLLOW_short_literal_in_fixed_64bit_literal665);
-					short_literal49=short_literal();
+					pushFollow(FOLLOW_short_literal_in_fixed_64bit_literal681);
+					short_literal51=short_literal();
 					state._fsp--;
 
-					 value = short_literal49; 
+					 value = short_literal51; 
 					}
 					break;
 				case 4 :
-					// smaliTreeWalker.g:305:5: byte_literal
+					// smaliTreeWalker.g:310:5: byte_literal
 					{
-					pushFollow(FOLLOW_byte_literal_in_fixed_64bit_literal673);
-					byte_literal50=byte_literal();
+					pushFollow(FOLLOW_byte_literal_in_fixed_64bit_literal689);
+					byte_literal52=byte_literal();
 					state._fsp--;
 
-					 value = byte_literal50; 
+					 value = byte_literal52; 
 					}
 					break;
 				case 5 :
-					// smaliTreeWalker.g:306:5: float_literal
+					// smaliTreeWalker.g:311:5: float_literal
 					{
-					pushFollow(FOLLOW_float_literal_in_fixed_64bit_literal681);
-					float_literal51=float_literal();
+					pushFollow(FOLLOW_float_literal_in_fixed_64bit_literal697);
+					float_literal53=float_literal();
 					state._fsp--;
 
-					 value = Float.floatToRawIntBits(float_literal51); 
+					 value = Float.floatToRawIntBits(float_literal53); 
 					}
 					break;
 				case 6 :
-					// smaliTreeWalker.g:307:5: double_literal
+					// smaliTreeWalker.g:312:5: double_literal
 					{
-					pushFollow(FOLLOW_double_literal_in_fixed_64bit_literal689);
-					double_literal52=double_literal();
+					pushFollow(FOLLOW_double_literal_in_fixed_64bit_literal705);
+					double_literal54=double_literal();
 					state._fsp--;
 
-					 value = Double.doubleToRawLongBits(double_literal52); 
+					 value = Double.doubleToRawLongBits(double_literal54); 
 					}
 					break;
 				case 7 :
-					// smaliTreeWalker.g:308:5: char_literal
+					// smaliTreeWalker.g:313:5: char_literal
 					{
-					pushFollow(FOLLOW_char_literal_in_fixed_64bit_literal697);
-					char_literal53=char_literal();
+					pushFollow(FOLLOW_char_literal_in_fixed_64bit_literal713);
+					char_literal55=char_literal();
 					state._fsp--;
 
-					 value = char_literal53; 
+					 value = char_literal55; 
 					}
 					break;
 				case 8 :
-					// smaliTreeWalker.g:309:5: bool_literal
+					// smaliTreeWalker.g:314:5: bool_literal
 					{
-					pushFollow(FOLLOW_bool_literal_in_fixed_64bit_literal705);
-					bool_literal54=bool_literal();
+					pushFollow(FOLLOW_bool_literal_in_fixed_64bit_literal721);
+					bool_literal56=bool_literal();
 					state._fsp--;
 
-					 value = bool_literal54?1:0; 
+					 value = bool_literal56?1:0; 
 					}
 					break;
 
@@ -1728,21 +1783,21 @@
 
 
 	// $ANTLR start "fixed_32bit_literal"
-	// smaliTreeWalker.g:313:1: fixed_32bit_literal returns [int value] : ( integer_literal | long_literal | short_literal | byte_literal | float_literal | char_literal | bool_literal );
+	// smaliTreeWalker.g:318:1: fixed_32bit_literal returns [int value] : ( integer_literal | long_literal | short_literal | byte_literal | float_literal | char_literal | bool_literal );
 	public final int fixed_32bit_literal() throws RecognitionException {
 		int value = 0;
 
 
-		int integer_literal55 =0;
-		long long_literal56 =0;
-		short short_literal57 =0;
-		byte byte_literal58 =0;
-		float float_literal59 =0.0f;
-		char char_literal60 =0;
-		boolean bool_literal61 =false;
+		int integer_literal57 =0;
+		long long_literal58 =0;
+		short short_literal59 =0;
+		byte byte_literal60 =0;
+		float float_literal61 =0.0f;
+		char char_literal62 =0;
+		boolean bool_literal63 =false;
 
 		try {
-			// smaliTreeWalker.g:314:3: ( integer_literal | long_literal | short_literal | byte_literal | float_literal | char_literal | bool_literal )
+			// smaliTreeWalker.g:319:3: ( integer_literal | long_literal | short_literal | byte_literal | float_literal | char_literal | bool_literal )
 			int alt12=7;
 			switch ( input.LA(1) ) {
 			case INTEGER_LITERAL:
@@ -1787,73 +1842,73 @@
 			}
 			switch (alt12) {
 				case 1 :
-					// smaliTreeWalker.g:314:5: integer_literal
+					// smaliTreeWalker.g:319:5: integer_literal
 					{
-					pushFollow(FOLLOW_integer_literal_in_fixed_32bit_literal722);
-					integer_literal55=integer_literal();
+					pushFollow(FOLLOW_integer_literal_in_fixed_32bit_literal738);
+					integer_literal57=integer_literal();
 					state._fsp--;
 
-					 value = integer_literal55; 
+					 value = integer_literal57; 
 					}
 					break;
 				case 2 :
-					// smaliTreeWalker.g:315:5: long_literal
+					// smaliTreeWalker.g:320:5: long_literal
 					{
-					pushFollow(FOLLOW_long_literal_in_fixed_32bit_literal730);
-					long_literal56=long_literal();
+					pushFollow(FOLLOW_long_literal_in_fixed_32bit_literal746);
+					long_literal58=long_literal();
 					state._fsp--;
 
-					 LiteralTools.checkInt(long_literal56); value = (int)long_literal56; 
+					 LiteralTools.checkInt(long_literal58); value = (int)long_literal58; 
 					}
 					break;
 				case 3 :
-					// smaliTreeWalker.g:316:5: short_literal
+					// smaliTreeWalker.g:321:5: short_literal
 					{
-					pushFollow(FOLLOW_short_literal_in_fixed_32bit_literal738);
-					short_literal57=short_literal();
+					pushFollow(FOLLOW_short_literal_in_fixed_32bit_literal754);
+					short_literal59=short_literal();
 					state._fsp--;
 
-					 value = short_literal57; 
+					 value = short_literal59; 
 					}
 					break;
 				case 4 :
-					// smaliTreeWalker.g:317:5: byte_literal
+					// smaliTreeWalker.g:322:5: byte_literal
 					{
-					pushFollow(FOLLOW_byte_literal_in_fixed_32bit_literal746);
-					byte_literal58=byte_literal();
+					pushFollow(FOLLOW_byte_literal_in_fixed_32bit_literal762);
+					byte_literal60=byte_literal();
 					state._fsp--;
 
-					 value = byte_literal58; 
+					 value = byte_literal60; 
 					}
 					break;
 				case 5 :
-					// smaliTreeWalker.g:318:5: float_literal
+					// smaliTreeWalker.g:323:5: float_literal
 					{
-					pushFollow(FOLLOW_float_literal_in_fixed_32bit_literal754);
-					float_literal59=float_literal();
+					pushFollow(FOLLOW_float_literal_in_fixed_32bit_literal770);
+					float_literal61=float_literal();
 					state._fsp--;
 
-					 value = Float.floatToRawIntBits(float_literal59); 
+					 value = Float.floatToRawIntBits(float_literal61); 
 					}
 					break;
 				case 6 :
-					// smaliTreeWalker.g:319:5: char_literal
+					// smaliTreeWalker.g:324:5: char_literal
 					{
-					pushFollow(FOLLOW_char_literal_in_fixed_32bit_literal762);
-					char_literal60=char_literal();
+					pushFollow(FOLLOW_char_literal_in_fixed_32bit_literal778);
+					char_literal62=char_literal();
 					state._fsp--;
 
-					 value = char_literal60; 
+					 value = char_literal62; 
 					}
 					break;
 				case 7 :
-					// smaliTreeWalker.g:320:5: bool_literal
+					// smaliTreeWalker.g:325:5: bool_literal
 					{
-					pushFollow(FOLLOW_bool_literal_in_fixed_32bit_literal770);
-					bool_literal61=bool_literal();
+					pushFollow(FOLLOW_bool_literal_in_fixed_32bit_literal786);
+					bool_literal63=bool_literal();
 					state._fsp--;
 
-					 value = bool_literal61?1:0; 
+					 value = bool_literal63?1:0; 
 					}
 					break;
 
@@ -1873,22 +1928,22 @@
 
 
 	// $ANTLR start "array_elements"
-	// smaliTreeWalker.g:322:1: array_elements returns [List<Number> elements] : ^( I_ARRAY_ELEMENTS ( fixed_64bit_literal_number )* ) ;
+	// smaliTreeWalker.g:327:1: array_elements returns [List<Number> elements] : ^( I_ARRAY_ELEMENTS ( fixed_64bit_literal_number )* ) ;
 	public final List<Number> array_elements() throws RecognitionException {
 		List<Number> elements = null;
 
 
-		Number fixed_64bit_literal_number62 =null;
+		Number fixed_64bit_literal_number64 =null;
 
 		try {
-			// smaliTreeWalker.g:323:3: ( ^( I_ARRAY_ELEMENTS ( fixed_64bit_literal_number )* ) )
-			// smaliTreeWalker.g:323:5: ^( I_ARRAY_ELEMENTS ( fixed_64bit_literal_number )* )
+			// smaliTreeWalker.g:328:3: ( ^( I_ARRAY_ELEMENTS ( fixed_64bit_literal_number )* ) )
+			// smaliTreeWalker.g:328:5: ^( I_ARRAY_ELEMENTS ( fixed_64bit_literal_number )* )
 			{
 			elements = Lists.newArrayList();
-			match(input,I_ARRAY_ELEMENTS,FOLLOW_I_ARRAY_ELEMENTS_in_array_elements792); 
+			match(input,I_ARRAY_ELEMENTS,FOLLOW_I_ARRAY_ELEMENTS_in_array_elements808); 
 			if ( input.LA(1)==Token.DOWN ) {
 				match(input, Token.DOWN, null); 
-				// smaliTreeWalker.g:325:7: ( fixed_64bit_literal_number )*
+				// smaliTreeWalker.g:330:7: ( fixed_64bit_literal_number )*
 				loop13:
 				while (true) {
 					int alt13=2;
@@ -1899,14 +1954,14 @@
 
 					switch (alt13) {
 					case 1 :
-						// smaliTreeWalker.g:325:8: fixed_64bit_literal_number
+						// smaliTreeWalker.g:330:8: fixed_64bit_literal_number
 						{
-						pushFollow(FOLLOW_fixed_64bit_literal_number_in_array_elements801);
-						fixed_64bit_literal_number62=fixed_64bit_literal_number();
+						pushFollow(FOLLOW_fixed_64bit_literal_number_in_array_elements817);
+						fixed_64bit_literal_number64=fixed_64bit_literal_number();
 						state._fsp--;
 
 
-						        elements.add(fixed_64bit_literal_number62);
+						        elements.add(fixed_64bit_literal_number64);
 						      
 						}
 						break;
@@ -1936,22 +1991,22 @@
 
 
 	// $ANTLR start "packed_switch_elements"
-	// smaliTreeWalker.g:330:1: packed_switch_elements returns [List<Label> elements] : ^( I_PACKED_SWITCH_ELEMENTS ( label_ref )* ) ;
+	// smaliTreeWalker.g:335:1: packed_switch_elements returns [List<Label> elements] : ^( I_PACKED_SWITCH_ELEMENTS ( label_ref )* ) ;
 	public final List<Label> packed_switch_elements() throws RecognitionException {
 		List<Label> elements = null;
 
 
-		Label label_ref63 =null;
+		Label label_ref65 =null;
 
 		elements = Lists.newArrayList();
 		try {
-			// smaliTreeWalker.g:332:3: ( ^( I_PACKED_SWITCH_ELEMENTS ( label_ref )* ) )
-			// smaliTreeWalker.g:333:5: ^( I_PACKED_SWITCH_ELEMENTS ( label_ref )* )
+			// smaliTreeWalker.g:337:3: ( ^( I_PACKED_SWITCH_ELEMENTS ( label_ref )* ) )
+			// smaliTreeWalker.g:338:5: ^( I_PACKED_SWITCH_ELEMENTS ( label_ref )* )
 			{
-			match(input,I_PACKED_SWITCH_ELEMENTS,FOLLOW_I_PACKED_SWITCH_ELEMENTS_in_packed_switch_elements837); 
+			match(input,I_PACKED_SWITCH_ELEMENTS,FOLLOW_I_PACKED_SWITCH_ELEMENTS_in_packed_switch_elements853); 
 			if ( input.LA(1)==Token.DOWN ) {
 				match(input, Token.DOWN, null); 
-				// smaliTreeWalker.g:334:7: ( label_ref )*
+				// smaliTreeWalker.g:339:7: ( label_ref )*
 				loop14:
 				while (true) {
 					int alt14=2;
@@ -1962,13 +2017,13 @@
 
 					switch (alt14) {
 					case 1 :
-						// smaliTreeWalker.g:334:8: label_ref
+						// smaliTreeWalker.g:339:8: label_ref
 						{
-						pushFollow(FOLLOW_label_ref_in_packed_switch_elements846);
-						label_ref63=label_ref();
+						pushFollow(FOLLOW_label_ref_in_packed_switch_elements862);
+						label_ref65=label_ref();
 						state._fsp--;
 
-						 elements.add(label_ref63); 
+						 elements.add(label_ref65); 
 						}
 						break;
 
@@ -1997,23 +2052,23 @@
 
 
 	// $ANTLR start "sparse_switch_elements"
-	// smaliTreeWalker.g:337:1: sparse_switch_elements returns [List<SwitchLabelElement> elements] : ^( I_SPARSE_SWITCH_ELEMENTS ( fixed_32bit_literal label_ref )* ) ;
+	// smaliTreeWalker.g:342:1: sparse_switch_elements returns [List<SwitchLabelElement> elements] : ^( I_SPARSE_SWITCH_ELEMENTS ( fixed_32bit_literal label_ref )* ) ;
 	public final List<SwitchLabelElement> sparse_switch_elements() throws RecognitionException {
 		List<SwitchLabelElement> elements = null;
 
 
-		int fixed_32bit_literal64 =0;
-		Label label_ref65 =null;
+		int fixed_32bit_literal66 =0;
+		Label label_ref67 =null;
 
 		elements = Lists.newArrayList();
 		try {
-			// smaliTreeWalker.g:339:3: ( ^( I_SPARSE_SWITCH_ELEMENTS ( fixed_32bit_literal label_ref )* ) )
-			// smaliTreeWalker.g:340:5: ^( I_SPARSE_SWITCH_ELEMENTS ( fixed_32bit_literal label_ref )* )
+			// smaliTreeWalker.g:344:3: ( ^( I_SPARSE_SWITCH_ELEMENTS ( fixed_32bit_literal label_ref )* ) )
+			// smaliTreeWalker.g:345:5: ^( I_SPARSE_SWITCH_ELEMENTS ( fixed_32bit_literal label_ref )* )
 			{
-			match(input,I_SPARSE_SWITCH_ELEMENTS,FOLLOW_I_SPARSE_SWITCH_ELEMENTS_in_sparse_switch_elements881); 
+			match(input,I_SPARSE_SWITCH_ELEMENTS,FOLLOW_I_SPARSE_SWITCH_ELEMENTS_in_sparse_switch_elements897); 
 			if ( input.LA(1)==Token.DOWN ) {
 				match(input, Token.DOWN, null); 
-				// smaliTreeWalker.g:341:8: ( fixed_32bit_literal label_ref )*
+				// smaliTreeWalker.g:346:8: ( fixed_32bit_literal label_ref )*
 				loop15:
 				while (true) {
 					int alt15=2;
@@ -2024,18 +2079,18 @@
 
 					switch (alt15) {
 					case 1 :
-						// smaliTreeWalker.g:341:9: fixed_32bit_literal label_ref
+						// smaliTreeWalker.g:346:9: fixed_32bit_literal label_ref
 						{
-						pushFollow(FOLLOW_fixed_32bit_literal_in_sparse_switch_elements891);
-						fixed_32bit_literal64=fixed_32bit_literal();
+						pushFollow(FOLLOW_fixed_32bit_literal_in_sparse_switch_elements907);
+						fixed_32bit_literal66=fixed_32bit_literal();
 						state._fsp--;
 
-						pushFollow(FOLLOW_label_ref_in_sparse_switch_elements893);
-						label_ref65=label_ref();
+						pushFollow(FOLLOW_label_ref_in_sparse_switch_elements909);
+						label_ref67=label_ref();
 						state._fsp--;
 
 
-						         elements.add(new SwitchLabelElement(fixed_32bit_literal64, label_ref65));
+						         elements.add(new SwitchLabelElement(fixed_32bit_literal66, label_ref67));
 						       
 						}
 						break;
@@ -2073,18 +2128,18 @@
 
 
 	// $ANTLR start "method"
-	// smaliTreeWalker.g:347:1: method returns [BuilderMethod ret] : ^( I_METHOD method_name_and_prototype access_list ( ( registers_directive ) |) ordered_method_items catches parameters[$method_name_and_prototype.parameters] annotations ) ;
+	// smaliTreeWalker.g:352:1: method returns [BuilderMethod ret] : ^( I_METHOD method_name_and_prototype access_list ( ( registers_directive ) |) ordered_method_items catches parameters[$method_name_and_prototype.parameters] annotations ) ;
 	public final BuilderMethod method() throws RecognitionException {
 		method_stack.push(new method_scope());
 		BuilderMethod ret = null;
 
 
-		CommonTree I_METHOD70=null;
-		int access_list66 =0;
-		TreeRuleReturnScope method_name_and_prototype67 =null;
-		TreeRuleReturnScope registers_directive68 =null;
-		List<BuilderTryBlock> catches69 =null;
-		Set<Annotation> annotations71 =null;
+		CommonTree I_METHOD72=null;
+		int access_list68 =0;
+		TreeRuleReturnScope method_name_and_prototype69 =null;
+		TreeRuleReturnScope registers_directive70 =null;
+		List<BuilderTryBlock> catches71 =null;
+		Set<Annotation> annotations73 =null;
 
 
 		    method_stack.peek().totalMethodRegisters = 0;
@@ -2093,26 +2148,26 @@
 		    method_stack.peek().isStatic = false;
 		  
 		try {
-			// smaliTreeWalker.g:362:3: ( ^( I_METHOD method_name_and_prototype access_list ( ( registers_directive ) |) ordered_method_items catches parameters[$method_name_and_prototype.parameters] annotations ) )
-			// smaliTreeWalker.g:363:5: ^( I_METHOD method_name_and_prototype access_list ( ( registers_directive ) |) ordered_method_items catches parameters[$method_name_and_prototype.parameters] annotations )
+			// smaliTreeWalker.g:367:3: ( ^( I_METHOD method_name_and_prototype access_list ( ( registers_directive ) |) ordered_method_items catches parameters[$method_name_and_prototype.parameters] annotations ) )
+			// smaliTreeWalker.g:368:5: ^( I_METHOD method_name_and_prototype access_list ( ( registers_directive ) |) ordered_method_items catches parameters[$method_name_and_prototype.parameters] annotations )
 			{
-			I_METHOD70=(CommonTree)match(input,I_METHOD,FOLLOW_I_METHOD_in_method945); 
+			I_METHOD72=(CommonTree)match(input,I_METHOD,FOLLOW_I_METHOD_in_method961); 
 			match(input, Token.DOWN, null); 
-			pushFollow(FOLLOW_method_name_and_prototype_in_method953);
-			method_name_and_prototype67=method_name_and_prototype();
+			pushFollow(FOLLOW_method_name_and_prototype_in_method969);
+			method_name_and_prototype69=method_name_and_prototype();
 			state._fsp--;
 
-			pushFollow(FOLLOW_access_list_in_method961);
-			access_list66=access_list();
+			pushFollow(FOLLOW_access_list_in_method977);
+			access_list68=access_list();
 			state._fsp--;
 
 
-			        accessFlags = access_list66;
+			        accessFlags = access_list68;
 			        method_stack.peek().isStatic = AccessFlags.STATIC.isSet(accessFlags);
 			        method_stack.peek().methodParameterRegisters =
-			                MethodUtil.getParameterRegisterCount((method_name_and_prototype67!=null?((smaliTreeWalker.method_name_and_prototype_return)method_name_and_prototype67).parameters:null), method_stack.peek().isStatic);
+			                MethodUtil.getParameterRegisterCount((method_name_and_prototype69!=null?((smaliTreeWalker.method_name_and_prototype_return)method_name_and_prototype69).parameters:null), method_stack.peek().isStatic);
 			      
-			// smaliTreeWalker.g:372:7: ( ( registers_directive ) |)
+			// smaliTreeWalker.g:377:7: ( ( registers_directive ) |)
 			int alt16=2;
 			int LA16_0 = input.LA(1);
 			if ( (LA16_0==I_LOCALS||LA16_0==I_REGISTERS) ) {
@@ -2130,20 +2185,20 @@
 
 			switch (alt16) {
 				case 1 :
-					// smaliTreeWalker.g:373:9: ( registers_directive )
+					// smaliTreeWalker.g:378:9: ( registers_directive )
 					{
-					// smaliTreeWalker.g:373:9: ( registers_directive )
-					// smaliTreeWalker.g:373:10: registers_directive
+					// smaliTreeWalker.g:378:9: ( registers_directive )
+					// smaliTreeWalker.g:378:10: registers_directive
 					{
-					pushFollow(FOLLOW_registers_directive_in_method988);
-					registers_directive68=registers_directive();
+					pushFollow(FOLLOW_registers_directive_in_method1004);
+					registers_directive70=registers_directive();
 					state._fsp--;
 
 
-					          if ((registers_directive68!=null?((smaliTreeWalker.registers_directive_return)registers_directive68).isLocalsDirective:false)) {
-					            method_stack.peek().totalMethodRegisters = (registers_directive68!=null?((smaliTreeWalker.registers_directive_return)registers_directive68).registers:0) + method_stack.peek().methodParameterRegisters;
+					          if ((registers_directive70!=null?((smaliTreeWalker.registers_directive_return)registers_directive70).isLocalsDirective:false)) {
+					            method_stack.peek().totalMethodRegisters = (registers_directive70!=null?((smaliTreeWalker.registers_directive_return)registers_directive70).registers:0) + method_stack.peek().methodParameterRegisters;
 					          } else {
-					            method_stack.peek().totalMethodRegisters = (registers_directive68!=null?((smaliTreeWalker.registers_directive_return)registers_directive68).registers:0);
+					            method_stack.peek().totalMethodRegisters = (registers_directive70!=null?((smaliTreeWalker.registers_directive_return)registers_directive70).registers:0);
 					          }
 
 					          method_stack.peek().methodBuilder = new MethodImplementationBuilder(method_stack.peek().totalMethodRegisters);
@@ -2154,7 +2209,7 @@
 					}
 					break;
 				case 2 :
-					// smaliTreeWalker.g:386:9: 
+					// smaliTreeWalker.g:391:9: 
 					{
 
 					          method_stack.peek().methodBuilder = new MethodImplementationBuilder(0);
@@ -2164,27 +2219,27 @@
 
 			}
 
-			pushFollow(FOLLOW_ordered_method_items_in_method1045);
+			pushFollow(FOLLOW_ordered_method_items_in_method1061);
 			ordered_method_items();
 			state._fsp--;
 
-			pushFollow(FOLLOW_catches_in_method1053);
-			catches69=catches();
+			pushFollow(FOLLOW_catches_in_method1069);
+			catches71=catches();
 			state._fsp--;
 
-			pushFollow(FOLLOW_parameters_in_method1061);
-			parameters((method_name_and_prototype67!=null?((smaliTreeWalker.method_name_and_prototype_return)method_name_and_prototype67).parameters:null));
+			pushFollow(FOLLOW_parameters_in_method1077);
+			parameters((method_name_and_prototype69!=null?((smaliTreeWalker.method_name_and_prototype_return)method_name_and_prototype69).parameters:null));
 			state._fsp--;
 
-			pushFollow(FOLLOW_annotations_in_method1070);
-			annotations71=annotations();
+			pushFollow(FOLLOW_annotations_in_method1086);
+			annotations73=annotations();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
 			    MethodImplementation methodImplementation = null;
-			    List<BuilderTryBlock> tryBlocks = catches69;
+			    List<BuilderTryBlock> tryBlocks = catches71;
 
 			    boolean isAbstract = false;
 			    boolean isNative = false;
@@ -2199,7 +2254,7 @@
 
 			    if (Iterables.isEmpty(methodImplementation.getInstructions())) {
 			      if (!isAbstract && !isNative) {
-			        throw new SemanticException(input, I_METHOD70, "A non-abstract/non-native method must have at least 1 instruction");
+			        throw new SemanticException(input, I_METHOD72, "A non-abstract/non-native method must have at least 1 instruction");
 			      }
 
 			      String methodType;
@@ -2209,37 +2264,37 @@
 			        methodType = "a native";
 			      }
 
-			      if ((registers_directive68!=null?((CommonTree)registers_directive68.start):null) != null) {
-			        if ((registers_directive68!=null?((smaliTreeWalker.registers_directive_return)registers_directive68).isLocalsDirective:false)) {
-			          throw new SemanticException(input, (registers_directive68!=null?((CommonTree)registers_directive68.start):null), "A .locals directive is not valid in %s method", methodType);
+			      if ((registers_directive70!=null?((CommonTree)registers_directive70.start):null) != null) {
+			        if ((registers_directive70!=null?((smaliTreeWalker.registers_directive_return)registers_directive70).isLocalsDirective:false)) {
+			          throw new SemanticException(input, (registers_directive70!=null?((CommonTree)registers_directive70.start):null), "A .locals directive is not valid in %s method", methodType);
 			        } else {
-			          throw new SemanticException(input, (registers_directive68!=null?((CommonTree)registers_directive68.start):null), "A .registers directive is not valid in %s method", methodType);
+			          throw new SemanticException(input, (registers_directive70!=null?((CommonTree)registers_directive70.start):null), "A .registers directive is not valid in %s method", methodType);
 			        }
 			      }
 
 			      if (methodImplementation.getTryBlocks().size() > 0) {
-			        throw new SemanticException(input, I_METHOD70, "try/catch blocks cannot be present in %s method", methodType);
+			        throw new SemanticException(input, I_METHOD72, "try/catch blocks cannot be present in %s method", methodType);
 			      }
 
 			      if (!Iterables.isEmpty(methodImplementation.getDebugItems())) {
-			        throw new SemanticException(input, I_METHOD70, "debug directives cannot be present in %s method", methodType);
+			        throw new SemanticException(input, I_METHOD72, "debug directives cannot be present in %s method", methodType);
 			      }
 
 			      methodImplementation = null;
 			    } else {
 			      if (isAbstract) {
-			        throw new SemanticException(input, I_METHOD70, "An abstract method cannot have any instructions");
+			        throw new SemanticException(input, I_METHOD72, "An abstract method cannot have any instructions");
 			      }
 			      if (isNative) {
-			        throw new SemanticException(input, I_METHOD70, "A native method cannot have any instructions");
+			        throw new SemanticException(input, I_METHOD72, "A native method cannot have any instructions");
 			      }
 
-			      if ((registers_directive68!=null?((CommonTree)registers_directive68.start):null) == null) {
-			        throw new SemanticException(input, I_METHOD70, "A .registers or .locals directive must be present for a non-abstract/non-final method");
+			      if ((registers_directive70!=null?((CommonTree)registers_directive70.start):null) == null) {
+			        throw new SemanticException(input, I_METHOD72, "A .registers or .locals directive must be present for a non-abstract/non-final method");
 			      }
 
 			      if (method_stack.peek().totalMethodRegisters < method_stack.peek().methodParameterRegisters) {
-			        throw new SemanticException(input, (registers_directive68!=null?((CommonTree)registers_directive68.start):null), "This method requires at least " +
+			        throw new SemanticException(input, (registers_directive70!=null?((CommonTree)registers_directive70.start):null), "This method requires at least " +
 			                Integer.toString(method_stack.peek().methodParameterRegisters) +
 			                " registers, for the method parameters");
 			      }
@@ -2247,11 +2302,11 @@
 
 			    ret = dexBuilder.internMethod(
 			            classType,
-			            (method_name_and_prototype67!=null?((smaliTreeWalker.method_name_and_prototype_return)method_name_and_prototype67).name:null),
-			            (method_name_and_prototype67!=null?((smaliTreeWalker.method_name_and_prototype_return)method_name_and_prototype67).parameters:null),
-			            (method_name_and_prototype67!=null?((smaliTreeWalker.method_name_and_prototype_return)method_name_and_prototype67).returnType:null),
+			            (method_name_and_prototype69!=null?((smaliTreeWalker.method_name_and_prototype_return)method_name_and_prototype69).name:null),
+			            (method_name_and_prototype69!=null?((smaliTreeWalker.method_name_and_prototype_return)method_name_and_prototype69).parameters:null),
+			            (method_name_and_prototype69!=null?((smaliTreeWalker.method_name_and_prototype_return)method_name_and_prototype69).returnType:null),
 			            accessFlags,
-			            annotations71,
+			            annotations73,
 			            methodImplementation);
 			  
 			}
@@ -2270,44 +2325,40 @@
 	// $ANTLR end "method"
 
 
-	public static class method_prototype_return extends TreeRuleReturnScope {
-		public List<String> parameters;
-		public String returnType;
-	};
-
 
 	// $ANTLR start "method_prototype"
-	// smaliTreeWalker.g:468:1: method_prototype returns [List<String> parameters, String returnType] : ^( I_METHOD_PROTOTYPE ^( I_METHOD_RETURN_TYPE type_descriptor ) method_type_list ) ;
-	public final smaliTreeWalker.method_prototype_return method_prototype() throws RecognitionException {
-		smaliTreeWalker.method_prototype_return retval = new smaliTreeWalker.method_prototype_return();
-		retval.start = input.LT(1);
+	// smaliTreeWalker.g:473:1: method_prototype returns [ImmutableMethodProtoReference proto] : ^( I_METHOD_PROTOTYPE ^( I_METHOD_RETURN_TYPE type_descriptor ) method_type_list ) ;
+	public final ImmutableMethodProtoReference method_prototype() throws RecognitionException {
+		ImmutableMethodProtoReference proto = null;
 
-		String type_descriptor72 =null;
-		List<String> method_type_list73 =null;
+
+		String type_descriptor74 =null;
+		List<String> method_type_list75 =null;
 
 		try {
-			// smaliTreeWalker.g:469:3: ( ^( I_METHOD_PROTOTYPE ^( I_METHOD_RETURN_TYPE type_descriptor ) method_type_list ) )
-			// smaliTreeWalker.g:469:5: ^( I_METHOD_PROTOTYPE ^( I_METHOD_RETURN_TYPE type_descriptor ) method_type_list )
+			// smaliTreeWalker.g:474:3: ( ^( I_METHOD_PROTOTYPE ^( I_METHOD_RETURN_TYPE type_descriptor ) method_type_list ) )
+			// smaliTreeWalker.g:474:5: ^( I_METHOD_PROTOTYPE ^( I_METHOD_RETURN_TYPE type_descriptor ) method_type_list )
 			{
-			match(input,I_METHOD_PROTOTYPE,FOLLOW_I_METHOD_PROTOTYPE_in_method_prototype1094); 
+			match(input,I_METHOD_PROTOTYPE,FOLLOW_I_METHOD_PROTOTYPE_in_method_prototype1110); 
 			match(input, Token.DOWN, null); 
-			match(input,I_METHOD_RETURN_TYPE,FOLLOW_I_METHOD_RETURN_TYPE_in_method_prototype1097); 
+			match(input,I_METHOD_RETURN_TYPE,FOLLOW_I_METHOD_RETURN_TYPE_in_method_prototype1113); 
 			match(input, Token.DOWN, null); 
-			pushFollow(FOLLOW_type_descriptor_in_method_prototype1099);
-			type_descriptor72=type_descriptor();
+			pushFollow(FOLLOW_type_descriptor_in_method_prototype1115);
+			type_descriptor74=type_descriptor();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
-			pushFollow(FOLLOW_method_type_list_in_method_prototype1102);
-			method_type_list73=method_type_list();
+			pushFollow(FOLLOW_method_type_list_in_method_prototype1118);
+			method_type_list75=method_type_list();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			    retval.returnType = type_descriptor72;
-			    retval.parameters = method_type_list73;
+			    String returnType = type_descriptor74;
+			    List<String> parameters = method_type_list75;
+			    proto = new ImmutableMethodProtoReference(parameters, returnType);
 			  
 			}
 
@@ -2319,7 +2370,7 @@
 		finally {
 			// do for sure before leaving
 		}
-		return retval;
+		return proto;
 	}
 	// $ANTLR end "method_prototype"
 
@@ -2332,36 +2383,36 @@
 
 
 	// $ANTLR start "method_name_and_prototype"
-	// smaliTreeWalker.g:475:1: method_name_and_prototype returns [String name, List<SmaliMethodParameter> parameters, String returnType] : SIMPLE_NAME method_prototype ;
+	// smaliTreeWalker.g:481:1: method_name_and_prototype returns [String name, List<SmaliMethodParameter> parameters, String returnType] : SIMPLE_NAME method_prototype ;
 	public final smaliTreeWalker.method_name_and_prototype_return method_name_and_prototype() throws RecognitionException {
 		smaliTreeWalker.method_name_and_prototype_return retval = new smaliTreeWalker.method_name_and_prototype_return();
 		retval.start = input.LT(1);
 
-		CommonTree SIMPLE_NAME74=null;
-		TreeRuleReturnScope method_prototype75 =null;
+		CommonTree SIMPLE_NAME76=null;
+		ImmutableMethodProtoReference method_prototype77 =null;
 
 		try {
-			// smaliTreeWalker.g:476:3: ( SIMPLE_NAME method_prototype )
-			// smaliTreeWalker.g:476:5: SIMPLE_NAME method_prototype
+			// smaliTreeWalker.g:482:3: ( SIMPLE_NAME method_prototype )
+			// smaliTreeWalker.g:482:5: SIMPLE_NAME method_prototype
 			{
-			SIMPLE_NAME74=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_method_name_and_prototype1120); 
-			pushFollow(FOLLOW_method_prototype_in_method_name_and_prototype1122);
-			method_prototype75=method_prototype();
+			SIMPLE_NAME76=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_method_name_and_prototype1136); 
+			pushFollow(FOLLOW_method_prototype_in_method_name_and_prototype1138);
+			method_prototype77=method_prototype();
 			state._fsp--;
 
 
-			    retval.name = (SIMPLE_NAME74!=null?SIMPLE_NAME74.getText():null);
+			    retval.name = (SIMPLE_NAME76!=null?SIMPLE_NAME76.getText():null);
 			    retval.parameters = Lists.newArrayList();
 
 			    int paramRegister = 0;
-			    for (String type: (method_prototype75!=null?((smaliTreeWalker.method_prototype_return)method_prototype75).parameters:null)) {
-			        retval.parameters.add(new SmaliMethodParameter(paramRegister++, type));
+			    for (CharSequence type: method_prototype77.getParameterTypes()) {
+			        retval.parameters.add(new SmaliMethodParameter(paramRegister++, type.toString()));
 			        char c = type.charAt(0);
 			        if (c == 'D' || c == 'J') {
 			            paramRegister++;
 			        }
 			    }
-			    retval.returnType = (method_prototype75!=null?((smaliTreeWalker.method_prototype_return)method_prototype75).returnType:null);
+			    retval.returnType = method_prototype77.getReturnType();
 			  
 			}
 
@@ -2380,21 +2431,21 @@
 
 
 	// $ANTLR start "method_type_list"
-	// smaliTreeWalker.g:492:1: method_type_list returns [List<String> types] : ( nonvoid_type_descriptor )* ;
+	// smaliTreeWalker.g:498:1: method_type_list returns [List<String> types] : ( nonvoid_type_descriptor )* ;
 	public final List<String> method_type_list() throws RecognitionException {
 		List<String> types = null;
 
 
-		TreeRuleReturnScope nonvoid_type_descriptor76 =null;
+		TreeRuleReturnScope nonvoid_type_descriptor78 =null;
 
 
 		    types = Lists.newArrayList();
 		  
 		try {
-			// smaliTreeWalker.g:497:3: ( ( nonvoid_type_descriptor )* )
-			// smaliTreeWalker.g:497:5: ( nonvoid_type_descriptor )*
+			// smaliTreeWalker.g:503:3: ( ( nonvoid_type_descriptor )* )
+			// smaliTreeWalker.g:503:5: ( nonvoid_type_descriptor )*
 			{
-			// smaliTreeWalker.g:497:5: ( nonvoid_type_descriptor )*
+			// smaliTreeWalker.g:503:5: ( nonvoid_type_descriptor )*
 			loop17:
 			while (true) {
 				int alt17=2;
@@ -2405,14 +2456,14 @@
 
 				switch (alt17) {
 				case 1 :
-					// smaliTreeWalker.g:498:7: nonvoid_type_descriptor
+					// smaliTreeWalker.g:504:7: nonvoid_type_descriptor
 					{
-					pushFollow(FOLLOW_nonvoid_type_descriptor_in_method_type_list1156);
-					nonvoid_type_descriptor76=nonvoid_type_descriptor();
+					pushFollow(FOLLOW_nonvoid_type_descriptor_in_method_type_list1172);
+					nonvoid_type_descriptor78=nonvoid_type_descriptor();
 					state._fsp--;
 
 
-					        types.add((nonvoid_type_descriptor76!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor76).type:null));
+					        types.add((nonvoid_type_descriptor78!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor78).type:null));
 					      
 					}
 					break;
@@ -2438,32 +2489,318 @@
 
 
 
-	// $ANTLR start "method_reference"
-	// smaliTreeWalker.g:505:1: method_reference returns [ImmutableMethodReference methodReference] : ( reference_type_descriptor )? SIMPLE_NAME method_prototype ;
-	public final ImmutableMethodReference method_reference() throws RecognitionException {
-		ImmutableMethodReference methodReference = null;
+	// $ANTLR start "call_site_reference"
+	// smaliTreeWalker.g:510:1: call_site_reference returns [ImmutableCallSiteReference callSiteReference] : ^( I_CALL_SITE_REFERENCE call_site_name= SIMPLE_NAME method_name= string_literal method_prototype call_site_extra_arguments method_reference ) ;
+	public final ImmutableCallSiteReference call_site_reference() throws RecognitionException {
+		ImmutableCallSiteReference callSiteReference = null;
 
 
-		CommonTree SIMPLE_NAME78=null;
-		TreeRuleReturnScope reference_type_descriptor77 =null;
-		TreeRuleReturnScope method_prototype79 =null;
+		CommonTree call_site_name=null;
+		String method_name =null;
+		ImmutableMethodReference method_reference79 =null;
+		ImmutableMethodProtoReference method_prototype80 =null;
+		List<ImmutableEncodedValue> call_site_extra_arguments81 =null;
 
 		try {
-			// smaliTreeWalker.g:506:3: ( ( reference_type_descriptor )? SIMPLE_NAME method_prototype )
-			// smaliTreeWalker.g:506:5: ( reference_type_descriptor )? SIMPLE_NAME method_prototype
+			// smaliTreeWalker.g:511:3: ( ^( I_CALL_SITE_REFERENCE call_site_name= SIMPLE_NAME method_name= string_literal method_prototype call_site_extra_arguments method_reference ) )
+			// smaliTreeWalker.g:512:3: ^( I_CALL_SITE_REFERENCE call_site_name= SIMPLE_NAME method_name= string_literal method_prototype call_site_extra_arguments method_reference )
 			{
-			// smaliTreeWalker.g:506:5: ( reference_type_descriptor )?
+			match(input,I_CALL_SITE_REFERENCE,FOLLOW_I_CALL_SITE_REFERENCE_in_call_site_reference1203); 
+			match(input, Token.DOWN, null); 
+			call_site_name=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_call_site_reference1207); 
+			pushFollow(FOLLOW_string_literal_in_call_site_reference1211);
+			method_name=string_literal();
+			state._fsp--;
+
+			pushFollow(FOLLOW_method_prototype_in_call_site_reference1213);
+			method_prototype80=method_prototype();
+			state._fsp--;
+
+			pushFollow(FOLLOW_call_site_extra_arguments_in_call_site_reference1223);
+			call_site_extra_arguments81=call_site_extra_arguments();
+			state._fsp--;
+
+			pushFollow(FOLLOW_method_reference_in_call_site_reference1225);
+			method_reference79=method_reference();
+			state._fsp--;
+
+			match(input, Token.UP, null); 
+
+
+			        String callSiteName = (call_site_name!=null?call_site_name.getText():null);
+			        ImmutableMethodHandleReference methodHandleReference =
+			            new ImmutableMethodHandleReference(MethodHandleType.INVOKE_STATIC,
+			                method_reference79);
+			        callSiteReference = new ImmutableCallSiteReference(
+			            callSiteName, methodHandleReference, method_name, method_prototype80,
+			            call_site_extra_arguments81);
+			    
+			}
+
+		}
+		catch (RecognitionException re) {
+			reportError(re);
+			recover(input,re);
+		}
+		finally {
+			// do for sure before leaving
+		}
+		return callSiteReference;
+	}
+	// $ANTLR end "call_site_reference"
+
+
+	public static class method_handle_type_return extends TreeRuleReturnScope {
+		public int methodHandleType;
+	};
+
+
+	// $ANTLR start "method_handle_type"
+	// smaliTreeWalker.g:524:1: method_handle_type returns [int methodHandleType] : ( METHOD_HANDLE_TYPE_FIELD | METHOD_HANDLE_TYPE_METHOD | INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE ) ;
+	public final smaliTreeWalker.method_handle_type_return method_handle_type() throws RecognitionException {
+		smaliTreeWalker.method_handle_type_return retval = new smaliTreeWalker.method_handle_type_return();
+		retval.start = input.LT(1);
+
+		try {
+			// smaliTreeWalker.g:525:3: ( ( METHOD_HANDLE_TYPE_FIELD | METHOD_HANDLE_TYPE_METHOD | INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE ) )
+			// smaliTreeWalker.g:525:5: ( METHOD_HANDLE_TYPE_FIELD | METHOD_HANDLE_TYPE_METHOD | INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE )
+			{
+			if ( input.LA(1)==INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE||(input.LA(1) >= METHOD_HANDLE_TYPE_FIELD && input.LA(1) <= METHOD_HANDLE_TYPE_METHOD) ) {
+				input.consume();
+				state.errorRecovery=false;
+			}
+			else {
+				MismatchedSetException mse = new MismatchedSetException(null,input);
+				throw mse;
+			}
+
+			    retval.methodHandleType = MethodHandleType.getMethodHandleType(input.getTokenStream().toString(input.getTreeAdaptor().getTokenStartIndex(retval.start),input.getTreeAdaptor().getTokenStopIndex(retval.start)));
+			  
+			}
+
+		}
+		catch (RecognitionException re) {
+			reportError(re);
+			recover(input,re);
+		}
+		finally {
+			// do for sure before leaving
+		}
+		return retval;
+	}
+	// $ANTLR end "method_handle_type"
+
+
+
+	// $ANTLR start "method_handle_reference"
+	// smaliTreeWalker.g:529:1: method_handle_reference returns [ImmutableMethodHandleReference methodHandle] : method_handle_type ( field_reference | method_reference ) ;
+	public final ImmutableMethodHandleReference method_handle_reference() throws RecognitionException {
+		ImmutableMethodHandleReference methodHandle = null;
+
+
+		TreeRuleReturnScope field_reference82 =null;
+		ImmutableMethodReference method_reference83 =null;
+		TreeRuleReturnScope method_handle_type84 =null;
+
+		try {
+			// smaliTreeWalker.g:530:3: ( method_handle_type ( field_reference | method_reference ) )
+			// smaliTreeWalker.g:530:5: method_handle_type ( field_reference | method_reference )
+			{
+			pushFollow(FOLLOW_method_handle_type_in_method_handle_reference1270);
+			method_handle_type84=method_handle_type();
+			state._fsp--;
+
+			// smaliTreeWalker.g:530:24: ( field_reference | method_reference )
 			int alt18=2;
-			int LA18_0 = input.LA(1);
-			if ( (LA18_0==ARRAY_TYPE_PREFIX||LA18_0==CLASS_DESCRIPTOR) ) {
-				alt18=1;
+			switch ( input.LA(1) ) {
+			case CLASS_DESCRIPTOR:
+				{
+				int LA18_1 = input.LA(2);
+				if ( (LA18_1==SIMPLE_NAME) ) {
+					int LA18_3 = input.LA(3);
+					if ( (LA18_3==ARRAY_TYPE_PREFIX||LA18_3==CLASS_DESCRIPTOR||LA18_3==PRIMITIVE_TYPE) ) {
+						alt18=1;
+					}
+					else if ( (LA18_3==I_METHOD_PROTOTYPE) ) {
+						alt18=2;
+					}
+
+					else {
+						int nvaeMark = input.mark();
+						try {
+							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
+								input.consume();
+							}
+							NoViableAltException nvae =
+								new NoViableAltException("", 18, 3, input);
+							throw nvae;
+						} finally {
+							input.rewind(nvaeMark);
+						}
+					}
+
+				}
+
+				else {
+					int nvaeMark = input.mark();
+					try {
+						input.consume();
+						NoViableAltException nvae =
+							new NoViableAltException("", 18, 1, input);
+						throw nvae;
+					} finally {
+						input.rewind(nvaeMark);
+					}
+				}
+
+				}
+				break;
+			case ARRAY_TYPE_PREFIX:
+				{
+				int LA18_2 = input.LA(2);
+				if ( (LA18_2==PRIMITIVE_TYPE) ) {
+					int LA18_4 = input.LA(3);
+					if ( (LA18_4==SIMPLE_NAME) ) {
+						int LA18_3 = input.LA(4);
+						if ( (LA18_3==ARRAY_TYPE_PREFIX||LA18_3==CLASS_DESCRIPTOR||LA18_3==PRIMITIVE_TYPE) ) {
+							alt18=1;
+						}
+						else if ( (LA18_3==I_METHOD_PROTOTYPE) ) {
+							alt18=2;
+						}
+
+						else {
+							int nvaeMark = input.mark();
+							try {
+								for (int nvaeConsume = 0; nvaeConsume < 4 - 1; nvaeConsume++) {
+									input.consume();
+								}
+								NoViableAltException nvae =
+									new NoViableAltException("", 18, 3, input);
+								throw nvae;
+							} finally {
+								input.rewind(nvaeMark);
+							}
+						}
+
+					}
+
+					else {
+						int nvaeMark = input.mark();
+						try {
+							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
+								input.consume();
+							}
+							NoViableAltException nvae =
+								new NoViableAltException("", 18, 4, input);
+							throw nvae;
+						} finally {
+							input.rewind(nvaeMark);
+						}
+					}
+
+				}
+				else if ( (LA18_2==CLASS_DESCRIPTOR) ) {
+					int LA18_5 = input.LA(3);
+					if ( (LA18_5==SIMPLE_NAME) ) {
+						int LA18_3 = input.LA(4);
+						if ( (LA18_3==ARRAY_TYPE_PREFIX||LA18_3==CLASS_DESCRIPTOR||LA18_3==PRIMITIVE_TYPE) ) {
+							alt18=1;
+						}
+						else if ( (LA18_3==I_METHOD_PROTOTYPE) ) {
+							alt18=2;
+						}
+
+						else {
+							int nvaeMark = input.mark();
+							try {
+								for (int nvaeConsume = 0; nvaeConsume < 4 - 1; nvaeConsume++) {
+									input.consume();
+								}
+								NoViableAltException nvae =
+									new NoViableAltException("", 18, 3, input);
+								throw nvae;
+							} finally {
+								input.rewind(nvaeMark);
+							}
+						}
+
+					}
+
+					else {
+						int nvaeMark = input.mark();
+						try {
+							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
+								input.consume();
+							}
+							NoViableAltException nvae =
+								new NoViableAltException("", 18, 5, input);
+							throw nvae;
+						} finally {
+							input.rewind(nvaeMark);
+						}
+					}
+
+				}
+
+				else {
+					int nvaeMark = input.mark();
+					try {
+						input.consume();
+						NoViableAltException nvae =
+							new NoViableAltException("", 18, 2, input);
+						throw nvae;
+					} finally {
+						input.rewind(nvaeMark);
+					}
+				}
+
+				}
+				break;
+			case SIMPLE_NAME:
+				{
+				int LA18_3 = input.LA(2);
+				if ( (LA18_3==ARRAY_TYPE_PREFIX||LA18_3==CLASS_DESCRIPTOR||LA18_3==PRIMITIVE_TYPE) ) {
+					alt18=1;
+				}
+				else if ( (LA18_3==I_METHOD_PROTOTYPE) ) {
+					alt18=2;
+				}
+
+				else {
+					int nvaeMark = input.mark();
+					try {
+						input.consume();
+						NoViableAltException nvae =
+							new NoViableAltException("", 18, 3, input);
+						throw nvae;
+					} finally {
+						input.rewind(nvaeMark);
+					}
+				}
+
+				}
+				break;
+			default:
+				NoViableAltException nvae =
+					new NoViableAltException("", 18, 0, input);
+				throw nvae;
 			}
 			switch (alt18) {
 				case 1 :
-					// smaliTreeWalker.g:506:5: reference_type_descriptor
+					// smaliTreeWalker.g:530:25: field_reference
 					{
-					pushFollow(FOLLOW_reference_type_descriptor_in_method_reference1185);
-					reference_type_descriptor77=reference_type_descriptor();
+					pushFollow(FOLLOW_field_reference_in_method_handle_reference1273);
+					field_reference82=field_reference();
+					state._fsp--;
+
+					}
+					break;
+				case 2 :
+					// smaliTreeWalker.g:530:43: method_reference
+					{
+					pushFollow(FOLLOW_method_reference_in_method_handle_reference1277);
+					method_reference83=method_reference();
 					state._fsp--;
 
 					}
@@ -2471,20 +2808,119 @@
 
 			}
 
-			SIMPLE_NAME78=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_method_reference1188); 
-			pushFollow(FOLLOW_method_prototype_in_method_reference1190);
-			method_prototype79=method_prototype();
+
+			    ImmutableReference reference;
+			    if ((field_reference82!=null?(input.getTokenStream().toString(input.getTreeAdaptor().getTokenStartIndex(field_reference82.start),input.getTreeAdaptor().getTokenStopIndex(field_reference82.start))):null) != null) {
+			        reference = (field_reference82!=null?((smaliTreeWalker.field_reference_return)field_reference82).fieldReference:null);
+			    } else {
+			        reference = method_reference83;
+			    }
+			    methodHandle = new ImmutableMethodHandleReference((method_handle_type84!=null?((smaliTreeWalker.method_handle_type_return)method_handle_type84).methodHandleType:0), reference);
+			  
+			}
+
+		}
+		catch (RecognitionException re) {
+			reportError(re);
+			recover(input,re);
+		}
+		finally {
+			// do for sure before leaving
+		}
+		return methodHandle;
+	}
+	// $ANTLR end "method_handle_reference"
+
+
+
+	// $ANTLR start "method_handle_literal"
+	// smaliTreeWalker.g:540:1: method_handle_literal returns [ImmutableMethodHandleReference value] : ( I_ENCODED_METHOD_HANDLE method_handle_reference ) ;
+	public final ImmutableMethodHandleReference method_handle_literal() throws RecognitionException {
+		ImmutableMethodHandleReference value = null;
+
+
+		ImmutableMethodHandleReference method_handle_reference85 =null;
+
+		try {
+			// smaliTreeWalker.g:541:3: ( ( I_ENCODED_METHOD_HANDLE method_handle_reference ) )
+			// smaliTreeWalker.g:541:5: ( I_ENCODED_METHOD_HANDLE method_handle_reference )
+			{
+			// smaliTreeWalker.g:541:5: ( I_ENCODED_METHOD_HANDLE method_handle_reference )
+			// smaliTreeWalker.g:541:6: I_ENCODED_METHOD_HANDLE method_handle_reference
+			{
+			match(input,I_ENCODED_METHOD_HANDLE,FOLLOW_I_ENCODED_METHOD_HANDLE_in_method_handle_literal1294); 
+			pushFollow(FOLLOW_method_handle_reference_in_method_handle_literal1296);
+			method_handle_reference85=method_handle_reference();
+			state._fsp--;
+
+			}
+
+
+			    value = method_handle_reference85;
+			  
+			}
+
+		}
+		catch (RecognitionException re) {
+			reportError(re);
+			recover(input,re);
+		}
+		finally {
+			// do for sure before leaving
+		}
+		return value;
+	}
+	// $ANTLR end "method_handle_literal"
+
+
+
+	// $ANTLR start "method_reference"
+	// smaliTreeWalker.g:545:1: method_reference returns [ImmutableMethodReference methodReference] : ( reference_type_descriptor )? SIMPLE_NAME method_prototype ;
+	public final ImmutableMethodReference method_reference() throws RecognitionException {
+		ImmutableMethodReference methodReference = null;
+
+
+		CommonTree SIMPLE_NAME87=null;
+		TreeRuleReturnScope reference_type_descriptor86 =null;
+		ImmutableMethodProtoReference method_prototype88 =null;
+
+		try {
+			// smaliTreeWalker.g:546:3: ( ( reference_type_descriptor )? SIMPLE_NAME method_prototype )
+			// smaliTreeWalker.g:546:5: ( reference_type_descriptor )? SIMPLE_NAME method_prototype
+			{
+			// smaliTreeWalker.g:546:5: ( reference_type_descriptor )?
+			int alt19=2;
+			int LA19_0 = input.LA(1);
+			if ( (LA19_0==ARRAY_TYPE_PREFIX||LA19_0==CLASS_DESCRIPTOR) ) {
+				alt19=1;
+			}
+			switch (alt19) {
+				case 1 :
+					// smaliTreeWalker.g:546:5: reference_type_descriptor
+					{
+					pushFollow(FOLLOW_reference_type_descriptor_in_method_reference1312);
+					reference_type_descriptor86=reference_type_descriptor();
+					state._fsp--;
+
+					}
+					break;
+
+			}
+
+			SIMPLE_NAME87=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_method_reference1315); 
+			pushFollow(FOLLOW_method_prototype_in_method_reference1317);
+			method_prototype88=method_prototype();
 			state._fsp--;
 
 
 			    String type;
-			    if ((reference_type_descriptor77!=null?((smaliTreeWalker.reference_type_descriptor_return)reference_type_descriptor77).type:null) == null) {
+			    if ((reference_type_descriptor86!=null?((smaliTreeWalker.reference_type_descriptor_return)reference_type_descriptor86).type:null) == null) {
 			        type = classType;
 			    } else {
-			        type = (reference_type_descriptor77!=null?((smaliTreeWalker.reference_type_descriptor_return)reference_type_descriptor77).type:null);
+			        type = (reference_type_descriptor86!=null?((smaliTreeWalker.reference_type_descriptor_return)reference_type_descriptor86).type:null);
 			    }
-			    methodReference = new ImmutableMethodReference(type, (SIMPLE_NAME78!=null?SIMPLE_NAME78.getText():null),
-			             (method_prototype79!=null?((smaliTreeWalker.method_prototype_return)method_prototype79).parameters:null), (method_prototype79!=null?((smaliTreeWalker.method_prototype_return)method_prototype79).returnType:null));
+			    methodReference = new ImmutableMethodReference(type, (SIMPLE_NAME87!=null?SIMPLE_NAME87.getText():null),
+			             method_prototype88.getParameterTypes(), method_prototype88.getReturnType());
 			  
 			}
 
@@ -2501,33 +2937,37 @@
 	// $ANTLR end "method_reference"
 
 
+	public static class field_reference_return extends TreeRuleReturnScope {
+		public ImmutableFieldReference fieldReference;
+	};
+
 
 	// $ANTLR start "field_reference"
-	// smaliTreeWalker.g:518:1: field_reference returns [ImmutableFieldReference fieldReference] : ( reference_type_descriptor )? SIMPLE_NAME nonvoid_type_descriptor ;
-	public final ImmutableFieldReference field_reference() throws RecognitionException {
-		ImmutableFieldReference fieldReference = null;
+	// smaliTreeWalker.g:558:1: field_reference returns [ImmutableFieldReference fieldReference] : ( reference_type_descriptor )? SIMPLE_NAME nonvoid_type_descriptor ;
+	public final smaliTreeWalker.field_reference_return field_reference() throws RecognitionException {
+		smaliTreeWalker.field_reference_return retval = new smaliTreeWalker.field_reference_return();
+		retval.start = input.LT(1);
 
-
-		CommonTree SIMPLE_NAME81=null;
-		TreeRuleReturnScope reference_type_descriptor80 =null;
-		TreeRuleReturnScope nonvoid_type_descriptor82 =null;
+		CommonTree SIMPLE_NAME90=null;
+		TreeRuleReturnScope reference_type_descriptor89 =null;
+		TreeRuleReturnScope nonvoid_type_descriptor91 =null;
 
 		try {
-			// smaliTreeWalker.g:519:3: ( ( reference_type_descriptor )? SIMPLE_NAME nonvoid_type_descriptor )
-			// smaliTreeWalker.g:519:5: ( reference_type_descriptor )? SIMPLE_NAME nonvoid_type_descriptor
+			// smaliTreeWalker.g:559:3: ( ( reference_type_descriptor )? SIMPLE_NAME nonvoid_type_descriptor )
+			// smaliTreeWalker.g:559:5: ( reference_type_descriptor )? SIMPLE_NAME nonvoid_type_descriptor
 			{
-			// smaliTreeWalker.g:519:5: ( reference_type_descriptor )?
-			int alt19=2;
-			int LA19_0 = input.LA(1);
-			if ( (LA19_0==ARRAY_TYPE_PREFIX||LA19_0==CLASS_DESCRIPTOR) ) {
-				alt19=1;
+			// smaliTreeWalker.g:559:5: ( reference_type_descriptor )?
+			int alt20=2;
+			int LA20_0 = input.LA(1);
+			if ( (LA20_0==ARRAY_TYPE_PREFIX||LA20_0==CLASS_DESCRIPTOR) ) {
+				alt20=1;
 			}
-			switch (alt19) {
+			switch (alt20) {
 				case 1 :
-					// smaliTreeWalker.g:519:5: reference_type_descriptor
+					// smaliTreeWalker.g:559:5: reference_type_descriptor
 					{
-					pushFollow(FOLLOW_reference_type_descriptor_in_field_reference1207);
-					reference_type_descriptor80=reference_type_descriptor();
+					pushFollow(FOLLOW_reference_type_descriptor_in_field_reference1334);
+					reference_type_descriptor89=reference_type_descriptor();
 					state._fsp--;
 
 					}
@@ -2535,20 +2975,20 @@
 
 			}
 
-			SIMPLE_NAME81=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_field_reference1210); 
-			pushFollow(FOLLOW_nonvoid_type_descriptor_in_field_reference1212);
-			nonvoid_type_descriptor82=nonvoid_type_descriptor();
+			SIMPLE_NAME90=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_field_reference1337); 
+			pushFollow(FOLLOW_nonvoid_type_descriptor_in_field_reference1339);
+			nonvoid_type_descriptor91=nonvoid_type_descriptor();
 			state._fsp--;
 
 
 			    String type;
-			    if ((reference_type_descriptor80!=null?((smaliTreeWalker.reference_type_descriptor_return)reference_type_descriptor80).type:null) == null) {
+			    if ((reference_type_descriptor89!=null?((smaliTreeWalker.reference_type_descriptor_return)reference_type_descriptor89).type:null) == null) {
 			        type = classType;
 			    } else {
-			        type = (reference_type_descriptor80!=null?((smaliTreeWalker.reference_type_descriptor_return)reference_type_descriptor80).type:null);
+			        type = (reference_type_descriptor89!=null?((smaliTreeWalker.reference_type_descriptor_return)reference_type_descriptor89).type:null);
 			    }
-			    fieldReference = new ImmutableFieldReference(type, (SIMPLE_NAME81!=null?SIMPLE_NAME81.getText():null),
-			            (nonvoid_type_descriptor82!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor82).type:null));
+			    retval.fieldReference = new ImmutableFieldReference(type, (SIMPLE_NAME90!=null?SIMPLE_NAME90.getText():null),
+			            (nonvoid_type_descriptor91!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor91).type:null));
 			  
 			}
 
@@ -2560,7 +3000,7 @@
 		finally {
 			// do for sure before leaving
 		}
-		return fieldReference;
+		return retval;
 	}
 	// $ANTLR end "field_reference"
 
@@ -2572,46 +3012,46 @@
 
 
 	// $ANTLR start "registers_directive"
-	// smaliTreeWalker.g:531:1: registers_directive returns [boolean isLocalsDirective, int registers] : ^( ( I_REGISTERS | I_LOCALS ) short_integral_literal ) ;
+	// smaliTreeWalker.g:571:1: registers_directive returns [boolean isLocalsDirective, int registers] : ^( ( I_REGISTERS | I_LOCALS ) short_integral_literal ) ;
 	public final smaliTreeWalker.registers_directive_return registers_directive() throws RecognitionException {
 		smaliTreeWalker.registers_directive_return retval = new smaliTreeWalker.registers_directive_return();
 		retval.start = input.LT(1);
 
-		short short_integral_literal83 =0;
+		short short_integral_literal92 =0;
 
 		try {
-			// smaliTreeWalker.g:532:3: ( ^( ( I_REGISTERS | I_LOCALS ) short_integral_literal ) )
-			// smaliTreeWalker.g:532:5: ^( ( I_REGISTERS | I_LOCALS ) short_integral_literal )
+			// smaliTreeWalker.g:572:3: ( ^( ( I_REGISTERS | I_LOCALS ) short_integral_literal ) )
+			// smaliTreeWalker.g:572:5: ^( ( I_REGISTERS | I_LOCALS ) short_integral_literal )
 			{
 			retval.registers = 0;
-			// smaliTreeWalker.g:533:7: ( I_REGISTERS | I_LOCALS )
-			int alt20=2;
-			int LA20_0 = input.LA(1);
-			if ( (LA20_0==I_REGISTERS) ) {
-				alt20=1;
+			// smaliTreeWalker.g:573:7: ( I_REGISTERS | I_LOCALS )
+			int alt21=2;
+			int LA21_0 = input.LA(1);
+			if ( (LA21_0==I_REGISTERS) ) {
+				alt21=1;
 			}
-			else if ( (LA20_0==I_LOCALS) ) {
-				alt20=2;
+			else if ( (LA21_0==I_LOCALS) ) {
+				alt21=2;
 			}
 
 			else {
 				NoViableAltException nvae =
-					new NoViableAltException("", 20, 0, input);
+					new NoViableAltException("", 21, 0, input);
 				throw nvae;
 			}
 
-			switch (alt20) {
+			switch (alt21) {
 				case 1 :
-					// smaliTreeWalker.g:533:9: I_REGISTERS
+					// smaliTreeWalker.g:573:9: I_REGISTERS
 					{
-					match(input,I_REGISTERS,FOLLOW_I_REGISTERS_in_registers_directive1238); 
+					match(input,I_REGISTERS,FOLLOW_I_REGISTERS_in_registers_directive1365); 
 					retval.isLocalsDirective = false;
 					}
 					break;
 				case 2 :
-					// smaliTreeWalker.g:534:9: I_LOCALS
+					// smaliTreeWalker.g:574:9: I_LOCALS
 					{
-					match(input,I_LOCALS,FOLLOW_I_LOCALS_in_registers_directive1250); 
+					match(input,I_LOCALS,FOLLOW_I_LOCALS_in_registers_directive1377); 
 					retval.isLocalsDirective = true;
 					}
 					break;
@@ -2619,11 +3059,11 @@
 			}
 
 			match(input, Token.DOWN, null); 
-			pushFollow(FOLLOW_short_integral_literal_in_registers_directive1268);
-			short_integral_literal83=short_integral_literal();
+			pushFollow(FOLLOW_short_integral_literal_in_registers_directive1395);
+			short_integral_literal92=short_integral_literal();
 			state._fsp--;
 
-			retval.registers = short_integral_literal83 & 0xFFFF;
+			retval.registers = short_integral_literal92 & 0xFFFF;
 			match(input, Token.UP, null); 
 
 			}
@@ -2643,21 +3083,21 @@
 
 
 	// $ANTLR start "label_def"
-	// smaliTreeWalker.g:539:1: label_def : ^( I_LABEL SIMPLE_NAME ) ;
+	// smaliTreeWalker.g:579:1: label_def : ^( I_LABEL SIMPLE_NAME ) ;
 	public final void label_def() throws RecognitionException {
-		CommonTree SIMPLE_NAME84=null;
+		CommonTree SIMPLE_NAME93=null;
 
 		try {
-			// smaliTreeWalker.g:540:3: ( ^( I_LABEL SIMPLE_NAME ) )
-			// smaliTreeWalker.g:540:5: ^( I_LABEL SIMPLE_NAME )
+			// smaliTreeWalker.g:580:3: ( ^( I_LABEL SIMPLE_NAME ) )
+			// smaliTreeWalker.g:580:5: ^( I_LABEL SIMPLE_NAME )
 			{
-			match(input,I_LABEL,FOLLOW_I_LABEL_in_label_def1288); 
+			match(input,I_LABEL,FOLLOW_I_LABEL_in_label_def1415); 
 			match(input, Token.DOWN, null); 
-			SIMPLE_NAME84=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_label_def1290); 
+			SIMPLE_NAME93=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_label_def1417); 
 			match(input, Token.UP, null); 
 
 
-			    method_stack.peek().methodBuilder.addLabel((SIMPLE_NAME84!=null?SIMPLE_NAME84.getText():null));
+			    method_stack.peek().methodBuilder.addLabel((SIMPLE_NAME93!=null?SIMPLE_NAME93.getText():null));
 			  
 			}
 
@@ -2675,33 +3115,33 @@
 
 
 	// $ANTLR start "catches"
-	// smaliTreeWalker.g:545:1: catches returns [List<BuilderTryBlock> tryBlocks] : ^( I_CATCHES ( catch_directive )* ( catchall_directive )* ) ;
+	// smaliTreeWalker.g:585:1: catches returns [List<BuilderTryBlock> tryBlocks] : ^( I_CATCHES ( catch_directive )* ( catchall_directive )* ) ;
 	public final List<BuilderTryBlock> catches() throws RecognitionException {
 		List<BuilderTryBlock> tryBlocks = null;
 
 
 		tryBlocks = Lists.newArrayList();
 		try {
-			// smaliTreeWalker.g:547:3: ( ^( I_CATCHES ( catch_directive )* ( catchall_directive )* ) )
-			// smaliTreeWalker.g:547:5: ^( I_CATCHES ( catch_directive )* ( catchall_directive )* )
+			// smaliTreeWalker.g:587:3: ( ^( I_CATCHES ( catch_directive )* ( catchall_directive )* ) )
+			// smaliTreeWalker.g:587:5: ^( I_CATCHES ( catch_directive )* ( catchall_directive )* )
 			{
-			match(input,I_CATCHES,FOLLOW_I_CATCHES_in_catches1316); 
+			match(input,I_CATCHES,FOLLOW_I_CATCHES_in_catches1443); 
 			if ( input.LA(1)==Token.DOWN ) {
 				match(input, Token.DOWN, null); 
-				// smaliTreeWalker.g:547:17: ( catch_directive )*
-				loop21:
+				// smaliTreeWalker.g:587:17: ( catch_directive )*
+				loop22:
 				while (true) {
-					int alt21=2;
-					int LA21_0 = input.LA(1);
-					if ( (LA21_0==I_CATCH) ) {
-						alt21=1;
+					int alt22=2;
+					int LA22_0 = input.LA(1);
+					if ( (LA22_0==I_CATCH) ) {
+						alt22=1;
 					}
 
-					switch (alt21) {
+					switch (alt22) {
 					case 1 :
-						// smaliTreeWalker.g:547:17: catch_directive
+						// smaliTreeWalker.g:587:17: catch_directive
 						{
-						pushFollow(FOLLOW_catch_directive_in_catches1318);
+						pushFollow(FOLLOW_catch_directive_in_catches1445);
 						catch_directive();
 						state._fsp--;
 
@@ -2709,24 +3149,24 @@
 						break;
 
 					default :
-						break loop21;
+						break loop22;
 					}
 				}
 
-				// smaliTreeWalker.g:547:34: ( catchall_directive )*
-				loop22:
+				// smaliTreeWalker.g:587:34: ( catchall_directive )*
+				loop23:
 				while (true) {
-					int alt22=2;
-					int LA22_0 = input.LA(1);
-					if ( (LA22_0==I_CATCHALL) ) {
-						alt22=1;
+					int alt23=2;
+					int LA23_0 = input.LA(1);
+					if ( (LA23_0==I_CATCHALL) ) {
+						alt23=1;
 					}
 
-					switch (alt22) {
+					switch (alt23) {
 					case 1 :
-						// smaliTreeWalker.g:547:34: catchall_directive
+						// smaliTreeWalker.g:587:34: catchall_directive
 						{
-						pushFollow(FOLLOW_catchall_directive_in_catches1321);
+						pushFollow(FOLLOW_catchall_directive_in_catches1448);
 						catchall_directive();
 						state._fsp--;
 
@@ -2734,7 +3174,7 @@
 						break;
 
 					default :
-						break loop22;
+						break loop23;
 					}
 				}
 
@@ -2758,39 +3198,39 @@
 
 
 	// $ANTLR start "catch_directive"
-	// smaliTreeWalker.g:549:1: catch_directive : ^( I_CATCH nonvoid_type_descriptor from= label_ref to= label_ref using= label_ref ) ;
+	// smaliTreeWalker.g:589:1: catch_directive : ^( I_CATCH nonvoid_type_descriptor from= label_ref to= label_ref using= label_ref ) ;
 	public final void catch_directive() throws RecognitionException {
 		Label from =null;
 		Label to =null;
 		Label using =null;
-		TreeRuleReturnScope nonvoid_type_descriptor85 =null;
+		TreeRuleReturnScope nonvoid_type_descriptor94 =null;
 
 		try {
-			// smaliTreeWalker.g:550:3: ( ^( I_CATCH nonvoid_type_descriptor from= label_ref to= label_ref using= label_ref ) )
-			// smaliTreeWalker.g:550:5: ^( I_CATCH nonvoid_type_descriptor from= label_ref to= label_ref using= label_ref )
+			// smaliTreeWalker.g:590:3: ( ^( I_CATCH nonvoid_type_descriptor from= label_ref to= label_ref using= label_ref ) )
+			// smaliTreeWalker.g:590:5: ^( I_CATCH nonvoid_type_descriptor from= label_ref to= label_ref using= label_ref )
 			{
-			match(input,I_CATCH,FOLLOW_I_CATCH_in_catch_directive1334); 
+			match(input,I_CATCH,FOLLOW_I_CATCH_in_catch_directive1461); 
 			match(input, Token.DOWN, null); 
-			pushFollow(FOLLOW_nonvoid_type_descriptor_in_catch_directive1336);
-			nonvoid_type_descriptor85=nonvoid_type_descriptor();
+			pushFollow(FOLLOW_nonvoid_type_descriptor_in_catch_directive1463);
+			nonvoid_type_descriptor94=nonvoid_type_descriptor();
 			state._fsp--;
 
-			pushFollow(FOLLOW_label_ref_in_catch_directive1340);
+			pushFollow(FOLLOW_label_ref_in_catch_directive1467);
 			from=label_ref();
 			state._fsp--;
 
-			pushFollow(FOLLOW_label_ref_in_catch_directive1344);
+			pushFollow(FOLLOW_label_ref_in_catch_directive1471);
 			to=label_ref();
 			state._fsp--;
 
-			pushFollow(FOLLOW_label_ref_in_catch_directive1348);
+			pushFollow(FOLLOW_label_ref_in_catch_directive1475);
 			using=label_ref();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			    method_stack.peek().methodBuilder.addCatch(dexBuilder.internTypeReference((nonvoid_type_descriptor85!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor85).type:null)),
+			    method_stack.peek().methodBuilder.addCatch(dexBuilder.internTypeReference((nonvoid_type_descriptor94!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor94).type:null)),
 			        from, to, using);
 			  
 			}
@@ -2809,27 +3249,27 @@
 
 
 	// $ANTLR start "catchall_directive"
-	// smaliTreeWalker.g:556:1: catchall_directive : ^( I_CATCHALL from= label_ref to= label_ref using= label_ref ) ;
+	// smaliTreeWalker.g:596:1: catchall_directive : ^( I_CATCHALL from= label_ref to= label_ref using= label_ref ) ;
 	public final void catchall_directive() throws RecognitionException {
 		Label from =null;
 		Label to =null;
 		Label using =null;
 
 		try {
-			// smaliTreeWalker.g:557:3: ( ^( I_CATCHALL from= label_ref to= label_ref using= label_ref ) )
-			// smaliTreeWalker.g:557:5: ^( I_CATCHALL from= label_ref to= label_ref using= label_ref )
+			// smaliTreeWalker.g:597:3: ( ^( I_CATCHALL from= label_ref to= label_ref using= label_ref ) )
+			// smaliTreeWalker.g:597:5: ^( I_CATCHALL from= label_ref to= label_ref using= label_ref )
 			{
-			match(input,I_CATCHALL,FOLLOW_I_CATCHALL_in_catchall_directive1364); 
+			match(input,I_CATCHALL,FOLLOW_I_CATCHALL_in_catchall_directive1491); 
 			match(input, Token.DOWN, null); 
-			pushFollow(FOLLOW_label_ref_in_catchall_directive1368);
+			pushFollow(FOLLOW_label_ref_in_catchall_directive1495);
 			from=label_ref();
 			state._fsp--;
 
-			pushFollow(FOLLOW_label_ref_in_catchall_directive1372);
+			pushFollow(FOLLOW_label_ref_in_catchall_directive1499);
 			to=label_ref();
 			state._fsp--;
 
-			pushFollow(FOLLOW_label_ref_in_catchall_directive1376);
+			pushFollow(FOLLOW_label_ref_in_catchall_directive1503);
 			using=label_ref();
 			state._fsp--;
 
@@ -2854,29 +3294,29 @@
 
 
 	// $ANTLR start "parameters"
-	// smaliTreeWalker.g:562:1: parameters[List<SmaliMethodParameter> parameters] : ^( I_PARAMETERS ( parameter[parameters] )* ) ;
+	// smaliTreeWalker.g:602:1: parameters[List<SmaliMethodParameter> parameters] : ^( I_PARAMETERS ( parameter[parameters] )* ) ;
 	public final void parameters(List<SmaliMethodParameter> parameters) throws RecognitionException {
 		try {
-			// smaliTreeWalker.g:563:3: ( ^( I_PARAMETERS ( parameter[parameters] )* ) )
-			// smaliTreeWalker.g:563:5: ^( I_PARAMETERS ( parameter[parameters] )* )
+			// smaliTreeWalker.g:603:3: ( ^( I_PARAMETERS ( parameter[parameters] )* ) )
+			// smaliTreeWalker.g:603:5: ^( I_PARAMETERS ( parameter[parameters] )* )
 			{
-			match(input,I_PARAMETERS,FOLLOW_I_PARAMETERS_in_parameters1393); 
+			match(input,I_PARAMETERS,FOLLOW_I_PARAMETERS_in_parameters1520); 
 			if ( input.LA(1)==Token.DOWN ) {
 				match(input, Token.DOWN, null); 
-				// smaliTreeWalker.g:563:20: ( parameter[parameters] )*
-				loop23:
+				// smaliTreeWalker.g:603:20: ( parameter[parameters] )*
+				loop24:
 				while (true) {
-					int alt23=2;
-					int LA23_0 = input.LA(1);
-					if ( (LA23_0==I_PARAMETER) ) {
-						alt23=1;
+					int alt24=2;
+					int LA24_0 = input.LA(1);
+					if ( (LA24_0==I_PARAMETER) ) {
+						alt24=1;
 					}
 
-					switch (alt23) {
+					switch (alt24) {
 					case 1 :
-						// smaliTreeWalker.g:563:21: parameter[parameters]
+						// smaliTreeWalker.g:603:21: parameter[parameters]
 						{
-						pushFollow(FOLLOW_parameter_in_parameters1396);
+						pushFollow(FOLLOW_parameter_in_parameters1523);
 						parameter(parameters);
 						state._fsp--;
 
@@ -2884,7 +3324,7 @@
 						break;
 
 					default :
-						break loop23;
+						break loop24;
 					}
 				}
 
@@ -2907,32 +3347,32 @@
 
 
 	// $ANTLR start "parameter"
-	// smaliTreeWalker.g:565:1: parameter[List<SmaliMethodParameter> parameters] : ^( I_PARAMETER REGISTER ( string_literal )? annotations ) ;
+	// smaliTreeWalker.g:605:1: parameter[List<SmaliMethodParameter> parameters] : ^( I_PARAMETER REGISTER ( string_literal )? annotations ) ;
 	public final void parameter(List<SmaliMethodParameter> parameters) throws RecognitionException {
-		CommonTree REGISTER86=null;
-		CommonTree I_PARAMETER87=null;
-		String string_literal88 =null;
-		Set<Annotation> annotations89 =null;
+		CommonTree REGISTER95=null;
+		CommonTree I_PARAMETER96=null;
+		String string_literal97 =null;
+		Set<Annotation> annotations98 =null;
 
 		try {
-			// smaliTreeWalker.g:566:3: ( ^( I_PARAMETER REGISTER ( string_literal )? annotations ) )
-			// smaliTreeWalker.g:566:5: ^( I_PARAMETER REGISTER ( string_literal )? annotations )
+			// smaliTreeWalker.g:606:3: ( ^( I_PARAMETER REGISTER ( string_literal )? annotations ) )
+			// smaliTreeWalker.g:606:5: ^( I_PARAMETER REGISTER ( string_literal )? annotations )
 			{
-			I_PARAMETER87=(CommonTree)match(input,I_PARAMETER,FOLLOW_I_PARAMETER_in_parameter1412); 
+			I_PARAMETER96=(CommonTree)match(input,I_PARAMETER,FOLLOW_I_PARAMETER_in_parameter1539); 
 			match(input, Token.DOWN, null); 
-			REGISTER86=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_parameter1414); 
-			// smaliTreeWalker.g:566:28: ( string_literal )?
-			int alt24=2;
-			int LA24_0 = input.LA(1);
-			if ( (LA24_0==STRING_LITERAL) ) {
-				alt24=1;
+			REGISTER95=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_parameter1541); 
+			// smaliTreeWalker.g:606:28: ( string_literal )?
+			int alt25=2;
+			int LA25_0 = input.LA(1);
+			if ( (LA25_0==STRING_LITERAL) ) {
+				alt25=1;
 			}
-			switch (alt24) {
+			switch (alt25) {
 				case 1 :
-					// smaliTreeWalker.g:566:28: string_literal
+					// smaliTreeWalker.g:606:28: string_literal
 					{
-					pushFollow(FOLLOW_string_literal_in_parameter1416);
-					string_literal88=string_literal();
+					pushFollow(FOLLOW_string_literal_in_parameter1543);
+					string_literal97=string_literal();
 					state._fsp--;
 
 					}
@@ -2940,26 +3380,26 @@
 
 			}
 
-			pushFollow(FOLLOW_annotations_in_parameter1419);
-			annotations89=annotations();
+			pushFollow(FOLLOW_annotations_in_parameter1546);
+			annotations98=annotations();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			        final int registerNumber = parseRegister_short((REGISTER86!=null?REGISTER86.getText():null));
+			        final int registerNumber = parseRegister_short((REGISTER95!=null?REGISTER95.getText():null));
 			        int totalMethodRegisters = method_stack.peek().totalMethodRegisters;
 			        int methodParameterRegisters = method_stack.peek().methodParameterRegisters;
 
 			        if (registerNumber >= totalMethodRegisters) {
-			            throw new SemanticException(input, I_PARAMETER87, "Register %s is larger than the maximum register v%d " +
-			                    "for this method", (REGISTER86!=null?REGISTER86.getText():null), totalMethodRegisters-1);
+			            throw new SemanticException(input, I_PARAMETER96, "Register %s is larger than the maximum register v%d " +
+			                    "for this method", (REGISTER95!=null?REGISTER95.getText():null), totalMethodRegisters-1);
 			        }
 			        final int indexGuess = registerNumber - (totalMethodRegisters - methodParameterRegisters) - (method_stack.peek().isStatic?0:1);
 
 			        if (indexGuess < 0) {
-			            throw new SemanticException(input, I_PARAMETER87, "Register %s is not a parameter register.",
-			                    (REGISTER86!=null?REGISTER86.getText():null));
+			            throw new SemanticException(input, I_PARAMETER96, "Register %s is not a parameter register.",
+			                    (REGISTER95!=null?REGISTER95.getText():null));
 			        }
 
 			        int parameterIndex = LinearSearch.linearSearch(parameters, SmaliMethodParameter.COMPARATOR,
@@ -2967,14 +3407,14 @@
 			                indexGuess);
 
 			        if (parameterIndex < 0) {
-			            throw new SemanticException(input, I_PARAMETER87, "Register %s is the second half of a wide parameter.",
-			                                (REGISTER86!=null?REGISTER86.getText():null));
+			            throw new SemanticException(input, I_PARAMETER96, "Register %s is the second half of a wide parameter.",
+			                                (REGISTER95!=null?REGISTER95.getText():null));
 			        }
 
 			        SmaliMethodParameter methodParameter = parameters.get(parameterIndex);
-			        methodParameter.name = string_literal88;
-			        if (annotations89 != null && annotations89.size() > 0) {
-			            methodParameter.annotations = annotations89;
+			        methodParameter.name = string_literal97;
+			        if (annotations98 != null && annotations98.size() > 0) {
+			            methodParameter.annotations = annotations98;
 			        }
 			    
 			}
@@ -2993,111 +3433,111 @@
 
 
 	// $ANTLR start "debug_directive"
-	// smaliTreeWalker.g:599:1: debug_directive : ( line | local | end_local | restart_local | prologue | epilogue | source );
+	// smaliTreeWalker.g:639:1: debug_directive : ( line | local | end_local | restart_local | prologue | epilogue | source );
 	public final void debug_directive() throws RecognitionException {
 		try {
-			// smaliTreeWalker.g:600:3: ( line | local | end_local | restart_local | prologue | epilogue | source )
-			int alt25=7;
+			// smaliTreeWalker.g:640:3: ( line | local | end_local | restart_local | prologue | epilogue | source )
+			int alt26=7;
 			switch ( input.LA(1) ) {
 			case I_LINE:
 				{
-				alt25=1;
+				alt26=1;
 				}
 				break;
 			case I_LOCAL:
 				{
-				alt25=2;
+				alt26=2;
 				}
 				break;
 			case I_END_LOCAL:
 				{
-				alt25=3;
+				alt26=3;
 				}
 				break;
 			case I_RESTART_LOCAL:
 				{
-				alt25=4;
+				alt26=4;
 				}
 				break;
 			case I_PROLOGUE:
 				{
-				alt25=5;
+				alt26=5;
 				}
 				break;
 			case I_EPILOGUE:
 				{
-				alt25=6;
+				alt26=6;
 				}
 				break;
 			case I_SOURCE:
 				{
-				alt25=7;
+				alt26=7;
 				}
 				break;
 			default:
 				NoViableAltException nvae =
-					new NoViableAltException("", 25, 0, input);
+					new NoViableAltException("", 26, 0, input);
 				throw nvae;
 			}
-			switch (alt25) {
+			switch (alt26) {
 				case 1 :
-					// smaliTreeWalker.g:600:5: line
+					// smaliTreeWalker.g:640:5: line
 					{
-					pushFollow(FOLLOW_line_in_debug_directive1436);
+					pushFollow(FOLLOW_line_in_debug_directive1563);
 					line();
 					state._fsp--;
 
 					}
 					break;
 				case 2 :
-					// smaliTreeWalker.g:601:5: local
+					// smaliTreeWalker.g:641:5: local
 					{
-					pushFollow(FOLLOW_local_in_debug_directive1442);
+					pushFollow(FOLLOW_local_in_debug_directive1569);
 					local();
 					state._fsp--;
 
 					}
 					break;
 				case 3 :
-					// smaliTreeWalker.g:602:5: end_local
+					// smaliTreeWalker.g:642:5: end_local
 					{
-					pushFollow(FOLLOW_end_local_in_debug_directive1448);
+					pushFollow(FOLLOW_end_local_in_debug_directive1575);
 					end_local();
 					state._fsp--;
 
 					}
 					break;
 				case 4 :
-					// smaliTreeWalker.g:603:5: restart_local
+					// smaliTreeWalker.g:643:5: restart_local
 					{
-					pushFollow(FOLLOW_restart_local_in_debug_directive1454);
+					pushFollow(FOLLOW_restart_local_in_debug_directive1581);
 					restart_local();
 					state._fsp--;
 
 					}
 					break;
 				case 5 :
-					// smaliTreeWalker.g:604:5: prologue
+					// smaliTreeWalker.g:644:5: prologue
 					{
-					pushFollow(FOLLOW_prologue_in_debug_directive1460);
+					pushFollow(FOLLOW_prologue_in_debug_directive1587);
 					prologue();
 					state._fsp--;
 
 					}
 					break;
 				case 6 :
-					// smaliTreeWalker.g:605:5: epilogue
+					// smaliTreeWalker.g:645:5: epilogue
 					{
-					pushFollow(FOLLOW_epilogue_in_debug_directive1466);
+					pushFollow(FOLLOW_epilogue_in_debug_directive1593);
 					epilogue();
 					state._fsp--;
 
 					}
 					break;
 				case 7 :
-					// smaliTreeWalker.g:606:5: source
+					// smaliTreeWalker.g:646:5: source
 					{
-					pushFollow(FOLLOW_source_in_debug_directive1472);
+					pushFollow(FOLLOW_source_in_debug_directive1599);
 					source();
 					state._fsp--;
 
@@ -3119,24 +3559,24 @@
 
 
 	// $ANTLR start "line"
-	// smaliTreeWalker.g:608:1: line : ^( I_LINE integral_literal ) ;
+	// smaliTreeWalker.g:648:1: line : ^( I_LINE integral_literal ) ;
 	public final void line() throws RecognitionException {
-		int integral_literal90 =0;
+		int integral_literal99 =0;
 
 		try {
-			// smaliTreeWalker.g:609:3: ( ^( I_LINE integral_literal ) )
-			// smaliTreeWalker.g:609:5: ^( I_LINE integral_literal )
+			// smaliTreeWalker.g:649:3: ( ^( I_LINE integral_literal ) )
+			// smaliTreeWalker.g:649:5: ^( I_LINE integral_literal )
 			{
-			match(input,I_LINE,FOLLOW_I_LINE_in_line1483); 
+			match(input,I_LINE,FOLLOW_I_LINE_in_line1610); 
 			match(input, Token.DOWN, null); 
-			pushFollow(FOLLOW_integral_literal_in_line1485);
-			integral_literal90=integral_literal();
+			pushFollow(FOLLOW_integral_literal_in_line1612);
+			integral_literal99=integral_literal();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			        method_stack.peek().methodBuilder.addLineNumber(integral_literal90);
+			        method_stack.peek().methodBuilder.addLineNumber(integral_literal99);
 			    
 			}
 
@@ -3154,57 +3594,57 @@
 
 
 	// $ANTLR start "local"
-	// smaliTreeWalker.g:614:1: local : ^( I_LOCAL REGISTER ( ( NULL_LITERAL |name= string_literal ) ( nonvoid_type_descriptor )? (signature= string_literal )? )? ) ;
+	// smaliTreeWalker.g:654:1: local : ^( I_LOCAL REGISTER ( ( NULL_LITERAL |name= string_literal ) ( nonvoid_type_descriptor )? (signature= string_literal )? )? ) ;
 	public final void local() throws RecognitionException {
-		CommonTree REGISTER91=null;
+		CommonTree REGISTER100=null;
 		String name =null;
 		String signature =null;
-		TreeRuleReturnScope nonvoid_type_descriptor92 =null;
+		TreeRuleReturnScope nonvoid_type_descriptor101 =null;
 
 		try {
-			// smaliTreeWalker.g:615:3: ( ^( I_LOCAL REGISTER ( ( NULL_LITERAL |name= string_literal ) ( nonvoid_type_descriptor )? (signature= string_literal )? )? ) )
-			// smaliTreeWalker.g:615:5: ^( I_LOCAL REGISTER ( ( NULL_LITERAL |name= string_literal ) ( nonvoid_type_descriptor )? (signature= string_literal )? )? )
+			// smaliTreeWalker.g:655:3: ( ^( I_LOCAL REGISTER ( ( NULL_LITERAL |name= string_literal ) ( nonvoid_type_descriptor )? (signature= string_literal )? )? ) )
+			// smaliTreeWalker.g:655:5: ^( I_LOCAL REGISTER ( ( NULL_LITERAL |name= string_literal ) ( nonvoid_type_descriptor )? (signature= string_literal )? )? )
 			{
-			match(input,I_LOCAL,FOLLOW_I_LOCAL_in_local1503); 
+			match(input,I_LOCAL,FOLLOW_I_LOCAL_in_local1630); 
 			match(input, Token.DOWN, null); 
-			REGISTER91=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_local1505); 
-			// smaliTreeWalker.g:615:24: ( ( NULL_LITERAL |name= string_literal ) ( nonvoid_type_descriptor )? (signature= string_literal )? )?
-			int alt29=2;
-			int LA29_0 = input.LA(1);
-			if ( (LA29_0==NULL_LITERAL||LA29_0==STRING_LITERAL) ) {
-				alt29=1;
+			REGISTER100=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_local1632); 
+			// smaliTreeWalker.g:655:24: ( ( NULL_LITERAL |name= string_literal ) ( nonvoid_type_descriptor )? (signature= string_literal )? )?
+			int alt30=2;
+			int LA30_0 = input.LA(1);
+			if ( (LA30_0==NULL_LITERAL||LA30_0==STRING_LITERAL) ) {
+				alt30=1;
 			}
-			switch (alt29) {
+			switch (alt30) {
 				case 1 :
-					// smaliTreeWalker.g:615:25: ( NULL_LITERAL |name= string_literal ) ( nonvoid_type_descriptor )? (signature= string_literal )?
+					// smaliTreeWalker.g:655:25: ( NULL_LITERAL |name= string_literal ) ( nonvoid_type_descriptor )? (signature= string_literal )?
 					{
-					// smaliTreeWalker.g:615:25: ( NULL_LITERAL |name= string_literal )
-					int alt26=2;
-					int LA26_0 = input.LA(1);
-					if ( (LA26_0==NULL_LITERAL) ) {
-						alt26=1;
+					// smaliTreeWalker.g:655:25: ( NULL_LITERAL |name= string_literal )
+					int alt27=2;
+					int LA27_0 = input.LA(1);
+					if ( (LA27_0==NULL_LITERAL) ) {
+						alt27=1;
 					}
-					else if ( (LA26_0==STRING_LITERAL) ) {
-						alt26=2;
+					else if ( (LA27_0==STRING_LITERAL) ) {
+						alt27=2;
 					}
 
 					else {
 						NoViableAltException nvae =
-							new NoViableAltException("", 26, 0, input);
+							new NoViableAltException("", 27, 0, input);
 						throw nvae;
 					}
 
-					switch (alt26) {
+					switch (alt27) {
 						case 1 :
-							// smaliTreeWalker.g:615:26: NULL_LITERAL
+							// smaliTreeWalker.g:655:26: NULL_LITERAL
 							{
-							match(input,NULL_LITERAL,FOLLOW_NULL_LITERAL_in_local1509); 
+							match(input,NULL_LITERAL,FOLLOW_NULL_LITERAL_in_local1636); 
 							}
 							break;
 						case 2 :
-							// smaliTreeWalker.g:615:41: name= string_literal
+							// smaliTreeWalker.g:655:41: name= string_literal
 							{
-							pushFollow(FOLLOW_string_literal_in_local1515);
+							pushFollow(FOLLOW_string_literal_in_local1642);
 							name=string_literal();
 							state._fsp--;
 
@@ -3213,18 +3653,18 @@
 
 					}
 
-					// smaliTreeWalker.g:615:62: ( nonvoid_type_descriptor )?
-					int alt27=2;
-					int LA27_0 = input.LA(1);
-					if ( (LA27_0==ARRAY_TYPE_PREFIX||LA27_0==CLASS_DESCRIPTOR||LA27_0==PRIMITIVE_TYPE) ) {
-						alt27=1;
+					// smaliTreeWalker.g:655:62: ( nonvoid_type_descriptor )?
+					int alt28=2;
+					int LA28_0 = input.LA(1);
+					if ( (LA28_0==ARRAY_TYPE_PREFIX||LA28_0==CLASS_DESCRIPTOR||LA28_0==PRIMITIVE_TYPE) ) {
+						alt28=1;
 					}
-					switch (alt27) {
+					switch (alt28) {
 						case 1 :
-							// smaliTreeWalker.g:615:62: nonvoid_type_descriptor
+							// smaliTreeWalker.g:655:62: nonvoid_type_descriptor
 							{
-							pushFollow(FOLLOW_nonvoid_type_descriptor_in_local1518);
-							nonvoid_type_descriptor92=nonvoid_type_descriptor();
+							pushFollow(FOLLOW_nonvoid_type_descriptor_in_local1645);
+							nonvoid_type_descriptor101=nonvoid_type_descriptor();
 							state._fsp--;
 
 							}
@@ -3232,17 +3672,17 @@
 
 					}
 
-					// smaliTreeWalker.g:615:96: (signature= string_literal )?
-					int alt28=2;
-					int LA28_0 = input.LA(1);
-					if ( (LA28_0==STRING_LITERAL) ) {
-						alt28=1;
+					// smaliTreeWalker.g:655:96: (signature= string_literal )?
+					int alt29=2;
+					int LA29_0 = input.LA(1);
+					if ( (LA29_0==STRING_LITERAL) ) {
+						alt29=1;
 					}
-					switch (alt28) {
+					switch (alt29) {
 						case 1 :
-							// smaliTreeWalker.g:615:96: signature= string_literal
+							// smaliTreeWalker.g:655:96: signature= string_literal
 							{
-							pushFollow(FOLLOW_string_literal_in_local1523);
+							pushFollow(FOLLOW_string_literal_in_local1650);
 							signature=string_literal();
 							state._fsp--;
 
@@ -3259,10 +3699,10 @@
 			match(input, Token.UP, null); 
 
 
-			      int registerNumber = parseRegister_short((REGISTER91!=null?REGISTER91.getText():null));
+			      int registerNumber = parseRegister_short((REGISTER100!=null?REGISTER100.getText():null));
 			      method_stack.peek().methodBuilder.addStartLocal(registerNumber,
 			              dexBuilder.internNullableStringReference(name),
-			              dexBuilder.internNullableTypeReference((nonvoid_type_descriptor92!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor92).type:null)),
+			              dexBuilder.internNullableTypeReference((nonvoid_type_descriptor101!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor101).type:null)),
 			              dexBuilder.internNullableStringReference(signature));
 			    
 			}
@@ -3281,21 +3721,21 @@
 
 
 	// $ANTLR start "end_local"
-	// smaliTreeWalker.g:624:1: end_local : ^( I_END_LOCAL REGISTER ) ;
+	// smaliTreeWalker.g:664:1: end_local : ^( I_END_LOCAL REGISTER ) ;
 	public final void end_local() throws RecognitionException {
-		CommonTree REGISTER93=null;
+		CommonTree REGISTER102=null;
 
 		try {
-			// smaliTreeWalker.g:625:3: ( ^( I_END_LOCAL REGISTER ) )
-			// smaliTreeWalker.g:625:5: ^( I_END_LOCAL REGISTER )
+			// smaliTreeWalker.g:665:3: ( ^( I_END_LOCAL REGISTER ) )
+			// smaliTreeWalker.g:665:5: ^( I_END_LOCAL REGISTER )
 			{
-			match(input,I_END_LOCAL,FOLLOW_I_END_LOCAL_in_end_local1544); 
+			match(input,I_END_LOCAL,FOLLOW_I_END_LOCAL_in_end_local1671); 
 			match(input, Token.DOWN, null); 
-			REGISTER93=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_end_local1546); 
+			REGISTER102=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_end_local1673); 
 			match(input, Token.UP, null); 
 
 
-			      int registerNumber = parseRegister_short((REGISTER93!=null?REGISTER93.getText():null));
+			      int registerNumber = parseRegister_short((REGISTER102!=null?REGISTER102.getText():null));
 			      method_stack.peek().methodBuilder.addEndLocal(registerNumber);
 			    
 			}
@@ -3314,21 +3754,21 @@
 
 
 	// $ANTLR start "restart_local"
-	// smaliTreeWalker.g:631:1: restart_local : ^( I_RESTART_LOCAL REGISTER ) ;
+	// smaliTreeWalker.g:671:1: restart_local : ^( I_RESTART_LOCAL REGISTER ) ;
 	public final void restart_local() throws RecognitionException {
-		CommonTree REGISTER94=null;
+		CommonTree REGISTER103=null;
 
 		try {
-			// smaliTreeWalker.g:632:3: ( ^( I_RESTART_LOCAL REGISTER ) )
-			// smaliTreeWalker.g:632:5: ^( I_RESTART_LOCAL REGISTER )
+			// smaliTreeWalker.g:672:3: ( ^( I_RESTART_LOCAL REGISTER ) )
+			// smaliTreeWalker.g:672:5: ^( I_RESTART_LOCAL REGISTER )
 			{
-			match(input,I_RESTART_LOCAL,FOLLOW_I_RESTART_LOCAL_in_restart_local1564); 
+			match(input,I_RESTART_LOCAL,FOLLOW_I_RESTART_LOCAL_in_restart_local1691); 
 			match(input, Token.DOWN, null); 
-			REGISTER94=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_restart_local1566); 
+			REGISTER103=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_restart_local1693); 
 			match(input, Token.UP, null); 
 
 
-			      int registerNumber = parseRegister_short((REGISTER94!=null?REGISTER94.getText():null));
+			      int registerNumber = parseRegister_short((REGISTER103!=null?REGISTER103.getText():null));
 			      method_stack.peek().methodBuilder.addRestartLocal(registerNumber);
 			    
 			}
@@ -3347,13 +3787,13 @@
 
 
 	// $ANTLR start "prologue"
-	// smaliTreeWalker.g:638:1: prologue : I_PROLOGUE ;
+	// smaliTreeWalker.g:678:1: prologue : I_PROLOGUE ;
 	public final void prologue() throws RecognitionException {
 		try {
-			// smaliTreeWalker.g:639:3: ( I_PROLOGUE )
-			// smaliTreeWalker.g:639:5: I_PROLOGUE
+			// smaliTreeWalker.g:679:3: ( I_PROLOGUE )
+			// smaliTreeWalker.g:679:5: I_PROLOGUE
 			{
-			match(input,I_PROLOGUE,FOLLOW_I_PROLOGUE_in_prologue1583); 
+			match(input,I_PROLOGUE,FOLLOW_I_PROLOGUE_in_prologue1710); 
 
 			      method_stack.peek().methodBuilder.addPrologue();
 			    
@@ -3373,13 +3813,13 @@
 
 
 	// $ANTLR start "epilogue"
-	// smaliTreeWalker.g:644:1: epilogue : I_EPILOGUE ;
+	// smaliTreeWalker.g:684:1: epilogue : I_EPILOGUE ;
 	public final void epilogue() throws RecognitionException {
 		try {
-			// smaliTreeWalker.g:645:3: ( I_EPILOGUE )
-			// smaliTreeWalker.g:645:5: I_EPILOGUE
+			// smaliTreeWalker.g:685:3: ( I_EPILOGUE )
+			// smaliTreeWalker.g:685:5: I_EPILOGUE
 			{
-			match(input,I_EPILOGUE,FOLLOW_I_EPILOGUE_in_epilogue1599); 
+			match(input,I_EPILOGUE,FOLLOW_I_EPILOGUE_in_epilogue1726); 
 
 			      method_stack.peek().methodBuilder.addEpilogue();
 			    
@@ -3399,29 +3839,29 @@
 
 
 	// $ANTLR start "source"
-	// smaliTreeWalker.g:650:1: source : ^( I_SOURCE ( string_literal )? ) ;
+	// smaliTreeWalker.g:690:1: source : ^( I_SOURCE ( string_literal )? ) ;
 	public final void source() throws RecognitionException {
-		String string_literal95 =null;
+		String string_literal104 =null;
 
 		try {
-			// smaliTreeWalker.g:651:3: ( ^( I_SOURCE ( string_literal )? ) )
-			// smaliTreeWalker.g:651:5: ^( I_SOURCE ( string_literal )? )
+			// smaliTreeWalker.g:691:3: ( ^( I_SOURCE ( string_literal )? ) )
+			// smaliTreeWalker.g:691:5: ^( I_SOURCE ( string_literal )? )
 			{
-			match(input,I_SOURCE,FOLLOW_I_SOURCE_in_source1616); 
+			match(input,I_SOURCE,FOLLOW_I_SOURCE_in_source1743); 
 			if ( input.LA(1)==Token.DOWN ) {
 				match(input, Token.DOWN, null); 
-				// smaliTreeWalker.g:651:16: ( string_literal )?
-				int alt30=2;
-				int LA30_0 = input.LA(1);
-				if ( (LA30_0==STRING_LITERAL) ) {
-					alt30=1;
+				// smaliTreeWalker.g:691:16: ( string_literal )?
+				int alt31=2;
+				int LA31_0 = input.LA(1);
+				if ( (LA31_0==STRING_LITERAL) ) {
+					alt31=1;
 				}
-				switch (alt30) {
+				switch (alt31) {
 					case 1 :
-						// smaliTreeWalker.g:651:16: string_literal
+						// smaliTreeWalker.g:691:16: string_literal
 						{
-						pushFollow(FOLLOW_string_literal_in_source1618);
-						string_literal95=string_literal();
+						pushFollow(FOLLOW_string_literal_in_source1745);
+						string_literal104=string_literal();
 						state._fsp--;
 
 						}
@@ -3433,7 +3873,7 @@
 			}
 
 
-			      method_stack.peek().methodBuilder.addSetSourceFile(dexBuilder.internNullableStringReference(string_literal95));
+			      method_stack.peek().methodBuilder.addSetSourceFile(dexBuilder.internNullableStringReference(string_literal104));
 			    
 			}
 
@@ -3450,24 +3890,85 @@
 
 
 
-	// $ANTLR start "ordered_method_items"
-	// smaliTreeWalker.g:656:1: ordered_method_items : ^( I_ORDERED_METHOD_ITEMS ( label_def | instruction | debug_directive )* ) ;
-	public final void ordered_method_items() throws RecognitionException {
+	// $ANTLR start "call_site_extra_arguments"
+	// smaliTreeWalker.g:696:1: call_site_extra_arguments returns [List<ImmutableEncodedValue> extraArguments] : ^( I_CALL_SITE_EXTRA_ARGUMENTS ( literal )* ) ;
+	public final List<ImmutableEncodedValue> call_site_extra_arguments() throws RecognitionException {
+		List<ImmutableEncodedValue> extraArguments = null;
+
+
+		ImmutableEncodedValue literal105 =null;
+
 		try {
-			// smaliTreeWalker.g:657:3: ( ^( I_ORDERED_METHOD_ITEMS ( label_def | instruction | debug_directive )* ) )
-			// smaliTreeWalker.g:657:5: ^( I_ORDERED_METHOD_ITEMS ( label_def | instruction | debug_directive )* )
+			// smaliTreeWalker.g:697:3: ( ^( I_CALL_SITE_EXTRA_ARGUMENTS ( literal )* ) )
+			// smaliTreeWalker.g:697:5: ^( I_CALL_SITE_EXTRA_ARGUMENTS ( literal )* )
 			{
-			match(input,I_ORDERED_METHOD_ITEMS,FOLLOW_I_ORDERED_METHOD_ITEMS_in_ordered_method_items1637); 
+			 extraArguments = Lists.newArrayList(); 
+			match(input,I_CALL_SITE_EXTRA_ARGUMENTS,FOLLOW_I_CALL_SITE_EXTRA_ARGUMENTS_in_call_site_extra_arguments1771); 
 			if ( input.LA(1)==Token.DOWN ) {
 				match(input, Token.DOWN, null); 
-				// smaliTreeWalker.g:657:30: ( label_def | instruction | debug_directive )*
-				loop31:
+				// smaliTreeWalker.g:698:33: ( literal )*
+				loop32:
 				while (true) {
-					int alt31=4;
+					int alt32=2;
+					int LA32_0 = input.LA(1);
+					if ( (LA32_0==ARRAY_TYPE_PREFIX||(LA32_0 >= BOOL_LITERAL && LA32_0 <= BYTE_LITERAL)||(LA32_0 >= CHAR_LITERAL && LA32_0 <= CLASS_DESCRIPTOR)||LA32_0==DOUBLE_LITERAL||LA32_0==FLOAT_LITERAL||LA32_0==INTEGER_LITERAL||(LA32_0 >= I_ENCODED_ARRAY && LA32_0 <= I_ENCODED_METHOD_HANDLE)||LA32_0==I_METHOD_PROTOTYPE||LA32_0==I_SUBANNOTATION||LA32_0==LONG_LITERAL||LA32_0==NULL_LITERAL||LA32_0==PRIMITIVE_TYPE||LA32_0==SHORT_LITERAL||LA32_0==STRING_LITERAL||LA32_0==VOID_TYPE) ) {
+						alt32=1;
+					}
+
+					switch (alt32) {
+					case 1 :
+						// smaliTreeWalker.g:698:34: literal
+						{
+						pushFollow(FOLLOW_literal_in_call_site_extra_arguments1774);
+						literal105=literal();
+						state._fsp--;
+
+						 extraArguments.add(literal105); 
+						}
+						break;
+
+					default :
+						break loop32;
+					}
+				}
+
+				match(input, Token.UP, null); 
+			}
+
+			}
+
+		}
+		catch (RecognitionException re) {
+			reportError(re);
+			recover(input,re);
+		}
+		finally {
+			// do for sure before leaving
+		}
+		return extraArguments;
+	}
+	// $ANTLR end "call_site_extra_arguments"
+
+
+
+	// $ANTLR start "ordered_method_items"
+	// smaliTreeWalker.g:700:1: ordered_method_items : ^( I_ORDERED_METHOD_ITEMS ( label_def | instruction | debug_directive )* ) ;
+	public final void ordered_method_items() throws RecognitionException {
+		try {
+			// smaliTreeWalker.g:701:3: ( ^( I_ORDERED_METHOD_ITEMS ( label_def | instruction | debug_directive )* ) )
+			// smaliTreeWalker.g:701:5: ^( I_ORDERED_METHOD_ITEMS ( label_def | instruction | debug_directive )* )
+			{
+			match(input,I_ORDERED_METHOD_ITEMS,FOLLOW_I_ORDERED_METHOD_ITEMS_in_ordered_method_items1790); 
+			if ( input.LA(1)==Token.DOWN ) {
+				match(input, Token.DOWN, null); 
+				// smaliTreeWalker.g:701:30: ( label_def | instruction | debug_directive )*
+				loop33:
+				while (true) {
+					int alt33=4;
 					switch ( input.LA(1) ) {
 					case I_LABEL:
 						{
-						alt31=1;
+						alt33=1;
 						}
 						break;
 					case I_STATEMENT_ARRAY_DATA:
@@ -3479,6 +3980,8 @@
 					case I_STATEMENT_FORMAT20bc:
 					case I_STATEMENT_FORMAT20t:
 					case I_STATEMENT_FORMAT21c_FIELD:
+					case I_STATEMENT_FORMAT21c_METHOD_HANDLE:
+					case I_STATEMENT_FORMAT21c_METHOD_TYPE:
 					case I_STATEMENT_FORMAT21c_STRING:
 					case I_STATEMENT_FORMAT21c_TYPE:
 					case I_STATEMENT_FORMAT21ih:
@@ -3497,8 +4000,10 @@
 					case I_STATEMENT_FORMAT31i:
 					case I_STATEMENT_FORMAT31t:
 					case I_STATEMENT_FORMAT32x:
+					case I_STATEMENT_FORMAT35c_CALL_SITE:
 					case I_STATEMENT_FORMAT35c_METHOD:
 					case I_STATEMENT_FORMAT35c_TYPE:
+					case I_STATEMENT_FORMAT3rc_CALL_SITE:
 					case I_STATEMENT_FORMAT3rc_METHOD:
 					case I_STATEMENT_FORMAT3rc_TYPE:
 					case I_STATEMENT_FORMAT45cc_METHOD:
@@ -3507,7 +4012,7 @@
 					case I_STATEMENT_PACKED_SWITCH:
 					case I_STATEMENT_SPARSE_SWITCH:
 						{
-						alt31=2;
+						alt33=2;
 						}
 						break;
 					case I_END_LOCAL:
@@ -3518,33 +4023,33 @@
 					case I_RESTART_LOCAL:
 					case I_SOURCE:
 						{
-						alt31=3;
+						alt33=3;
 						}
 						break;
 					}
-					switch (alt31) {
+					switch (alt33) {
 					case 1 :
-						// smaliTreeWalker.g:657:31: label_def
+						// smaliTreeWalker.g:701:31: label_def
 						{
-						pushFollow(FOLLOW_label_def_in_ordered_method_items1640);
+						pushFollow(FOLLOW_label_def_in_ordered_method_items1793);
 						label_def();
 						state._fsp--;
 
 						}
 						break;
 					case 2 :
-						// smaliTreeWalker.g:657:43: instruction
+						// smaliTreeWalker.g:701:43: instruction
 						{
-						pushFollow(FOLLOW_instruction_in_ordered_method_items1644);
+						pushFollow(FOLLOW_instruction_in_ordered_method_items1797);
 						instruction();
 						state._fsp--;
 
 						}
 						break;
 					case 3 :
-						// smaliTreeWalker.g:657:57: debug_directive
+						// smaliTreeWalker.g:701:57: debug_directive
 						{
-						pushFollow(FOLLOW_debug_directive_in_ordered_method_items1648);
+						pushFollow(FOLLOW_debug_directive_in_ordered_method_items1801);
 						debug_directive();
 						state._fsp--;
 
@@ -3552,7 +4057,7 @@
 						break;
 
 					default :
-						break loop31;
+						break loop33;
 					}
 				}
 
@@ -3575,19 +4080,19 @@
 
 
 	// $ANTLR start "label_ref"
-	// smaliTreeWalker.g:659:1: label_ref returns [Label label] : SIMPLE_NAME ;
+	// smaliTreeWalker.g:703:1: label_ref returns [Label label] : SIMPLE_NAME ;
 	public final Label label_ref() throws RecognitionException {
 		Label label = null;
 
 
-		CommonTree SIMPLE_NAME96=null;
+		CommonTree SIMPLE_NAME106=null;
 
 		try {
-			// smaliTreeWalker.g:660:3: ( SIMPLE_NAME )
-			// smaliTreeWalker.g:660:5: SIMPLE_NAME
+			// smaliTreeWalker.g:704:3: ( SIMPLE_NAME )
+			// smaliTreeWalker.g:704:5: SIMPLE_NAME
 			{
-			SIMPLE_NAME96=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_label_ref1664); 
-			 label = method_stack.peek().methodBuilder.getLabel((SIMPLE_NAME96!=null?SIMPLE_NAME96.getText():null)); 
+			SIMPLE_NAME106=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_label_ref1817); 
+			 label = method_stack.peek().methodBuilder.getLabel((SIMPLE_NAME106!=null?SIMPLE_NAME106.getText():null)); 
 			}
 
 		}
@@ -3610,51 +4115,51 @@
 
 
 	// $ANTLR start "register_list"
-	// smaliTreeWalker.g:662:1: register_list returns [byte[] registers, byte registerCount] : ^( I_REGISTER_LIST ( REGISTER )* ) ;
+	// smaliTreeWalker.g:706:1: register_list returns [byte[] registers, byte registerCount] : ^( I_REGISTER_LIST ( REGISTER )* ) ;
 	public final smaliTreeWalker.register_list_return register_list() throws RecognitionException {
 		smaliTreeWalker.register_list_return retval = new smaliTreeWalker.register_list_return();
 		retval.start = input.LT(1);
 
-		CommonTree I_REGISTER_LIST97=null;
-		CommonTree REGISTER98=null;
+		CommonTree I_REGISTER_LIST107=null;
+		CommonTree REGISTER108=null;
 
 
 		    retval.registers = new byte[5];
 		    retval.registerCount = 0;
 		  
 		try {
-			// smaliTreeWalker.g:668:3: ( ^( I_REGISTER_LIST ( REGISTER )* ) )
-			// smaliTreeWalker.g:668:5: ^( I_REGISTER_LIST ( REGISTER )* )
+			// smaliTreeWalker.g:712:3: ( ^( I_REGISTER_LIST ( REGISTER )* ) )
+			// smaliTreeWalker.g:712:5: ^( I_REGISTER_LIST ( REGISTER )* )
 			{
-			I_REGISTER_LIST97=(CommonTree)match(input,I_REGISTER_LIST,FOLLOW_I_REGISTER_LIST_in_register_list1689); 
+			I_REGISTER_LIST107=(CommonTree)match(input,I_REGISTER_LIST,FOLLOW_I_REGISTER_LIST_in_register_list1842); 
 			if ( input.LA(1)==Token.DOWN ) {
 				match(input, Token.DOWN, null); 
-				// smaliTreeWalker.g:669:7: ( REGISTER )*
-				loop32:
+				// smaliTreeWalker.g:713:7: ( REGISTER )*
+				loop34:
 				while (true) {
-					int alt32=2;
-					int LA32_0 = input.LA(1);
-					if ( (LA32_0==REGISTER) ) {
-						alt32=1;
+					int alt34=2;
+					int LA34_0 = input.LA(1);
+					if ( (LA34_0==REGISTER) ) {
+						alt34=1;
 					}
 
-					switch (alt32) {
+					switch (alt34) {
 					case 1 :
-						// smaliTreeWalker.g:669:8: REGISTER
+						// smaliTreeWalker.g:713:8: REGISTER
 						{
-						REGISTER98=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_register_list1698); 
+						REGISTER108=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_register_list1851); 
 
 						        if (retval.registerCount == 5) {
-						          throw new SemanticException(input, I_REGISTER_LIST97, "A list of registers can only have a maximum of 5 " +
+						          throw new SemanticException(input, I_REGISTER_LIST107, "A list of registers can only have a maximum of 5 " +
 						                  "registers. Use the <op>/range alternate opcode instead.");
 						        }
-						        retval.registers[retval.registerCount++] = parseRegister_nibble((REGISTER98!=null?REGISTER98.getText():null));
+						        retval.registers[retval.registerCount++] = parseRegister_nibble((REGISTER108!=null?REGISTER108.getText():null));
 						      
 						}
 						break;
 
 					default :
-						break loop32;
+						break loop34;
 					}
 				}
 
@@ -3683,44 +4188,44 @@
 
 
 	// $ANTLR start "register_range"
-	// smaliTreeWalker.g:678:1: register_range returns [int startRegister, int endRegister] : ^( I_REGISTER_RANGE (startReg= REGISTER (endReg= REGISTER )? )? ) ;
+	// smaliTreeWalker.g:722:1: register_range returns [int startRegister, int endRegister] : ^( I_REGISTER_RANGE (startReg= REGISTER (endReg= REGISTER )? )? ) ;
 	public final smaliTreeWalker.register_range_return register_range() throws RecognitionException {
 		smaliTreeWalker.register_range_return retval = new smaliTreeWalker.register_range_return();
 		retval.start = input.LT(1);
 
 		CommonTree startReg=null;
 		CommonTree endReg=null;
-		CommonTree I_REGISTER_RANGE99=null;
+		CommonTree I_REGISTER_RANGE109=null;
 
 		try {
-			// smaliTreeWalker.g:679:3: ( ^( I_REGISTER_RANGE (startReg= REGISTER (endReg= REGISTER )? )? ) )
-			// smaliTreeWalker.g:679:5: ^( I_REGISTER_RANGE (startReg= REGISTER (endReg= REGISTER )? )? )
+			// smaliTreeWalker.g:723:3: ( ^( I_REGISTER_RANGE (startReg= REGISTER (endReg= REGISTER )? )? ) )
+			// smaliTreeWalker.g:723:5: ^( I_REGISTER_RANGE (startReg= REGISTER (endReg= REGISTER )? )? )
 			{
-			I_REGISTER_RANGE99=(CommonTree)match(input,I_REGISTER_RANGE,FOLLOW_I_REGISTER_RANGE_in_register_range1723); 
+			I_REGISTER_RANGE109=(CommonTree)match(input,I_REGISTER_RANGE,FOLLOW_I_REGISTER_RANGE_in_register_range1876); 
 			if ( input.LA(1)==Token.DOWN ) {
 				match(input, Token.DOWN, null); 
-				// smaliTreeWalker.g:679:24: (startReg= REGISTER (endReg= REGISTER )? )?
-				int alt34=2;
-				int LA34_0 = input.LA(1);
-				if ( (LA34_0==REGISTER) ) {
-					alt34=1;
+				// smaliTreeWalker.g:723:24: (startReg= REGISTER (endReg= REGISTER )? )?
+				int alt36=2;
+				int LA36_0 = input.LA(1);
+				if ( (LA36_0==REGISTER) ) {
+					alt36=1;
 				}
-				switch (alt34) {
+				switch (alt36) {
 					case 1 :
-						// smaliTreeWalker.g:679:25: startReg= REGISTER (endReg= REGISTER )?
+						// smaliTreeWalker.g:723:25: startReg= REGISTER (endReg= REGISTER )?
 						{
-						startReg=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_register_range1728); 
-						// smaliTreeWalker.g:679:49: (endReg= REGISTER )?
-						int alt33=2;
-						int LA33_0 = input.LA(1);
-						if ( (LA33_0==REGISTER) ) {
-							alt33=1;
+						startReg=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_register_range1881); 
+						// smaliTreeWalker.g:723:49: (endReg= REGISTER )?
+						int alt35=2;
+						int LA35_0 = input.LA(1);
+						if ( (LA35_0==REGISTER) ) {
+							alt35=1;
 						}
-						switch (alt33) {
+						switch (alt35) {
 							case 1 :
-								// smaliTreeWalker.g:679:49: endReg= REGISTER
+								// smaliTreeWalker.g:723:49: endReg= REGISTER
 								{
-								endReg=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_register_range1732); 
+								endReg=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_register_range1885); 
 								}
 								break;
 
@@ -3748,7 +4253,7 @@
 
 			                int registerCount = retval.endRegister-retval.startRegister+1;
 			                if (registerCount < 1) {
-			                    throw new SemanticException(input, I_REGISTER_RANGE99, "A register range must have the lower register listed first");
+			                    throw new SemanticException(input, I_REGISTER_RANGE109, "A register range must have the lower register listed first");
 			                }
 			            }
 			    
@@ -3769,32 +4274,32 @@
 
 
 	// $ANTLR start "verification_error_reference"
-	// smaliTreeWalker.g:699:1: verification_error_reference returns [ImmutableReference reference] : ( CLASS_DESCRIPTOR | field_reference | method_reference );
+	// smaliTreeWalker.g:743:1: verification_error_reference returns [ImmutableReference reference] : ( CLASS_DESCRIPTOR | field_reference | method_reference );
 	public final ImmutableReference verification_error_reference() throws RecognitionException {
 		ImmutableReference reference = null;
 
 
-		CommonTree CLASS_DESCRIPTOR100=null;
-		ImmutableFieldReference field_reference101 =null;
-		ImmutableMethodReference method_reference102 =null;
+		CommonTree CLASS_DESCRIPTOR110=null;
+		TreeRuleReturnScope field_reference111 =null;
+		ImmutableMethodReference method_reference112 =null;
 
 		try {
-			// smaliTreeWalker.g:700:3: ( CLASS_DESCRIPTOR | field_reference | method_reference )
-			int alt35=3;
+			// smaliTreeWalker.g:744:3: ( CLASS_DESCRIPTOR | field_reference | method_reference )
+			int alt37=3;
 			switch ( input.LA(1) ) {
 			case CLASS_DESCRIPTOR:
 				{
-				int LA35_1 = input.LA(2);
-				if ( (LA35_1==UP) ) {
-					alt35=1;
+				int LA37_1 = input.LA(2);
+				if ( (LA37_1==UP) ) {
+					alt37=1;
 				}
-				else if ( (LA35_1==SIMPLE_NAME) ) {
-					int LA35_3 = input.LA(3);
-					if ( (LA35_3==ARRAY_TYPE_PREFIX||LA35_3==CLASS_DESCRIPTOR||LA35_3==PRIMITIVE_TYPE) ) {
-						alt35=2;
+				else if ( (LA37_1==SIMPLE_NAME) ) {
+					int LA37_3 = input.LA(3);
+					if ( (LA37_3==ARRAY_TYPE_PREFIX||LA37_3==CLASS_DESCRIPTOR||LA37_3==PRIMITIVE_TYPE) ) {
+						alt37=2;
 					}
-					else if ( (LA35_3==I_METHOD_PROTOTYPE) ) {
-						alt35=3;
+					else if ( (LA37_3==I_METHOD_PROTOTYPE) ) {
+						alt37=3;
 					}
 
 					else {
@@ -3804,7 +4309,7 @@
 								input.consume();
 							}
 							NoViableAltException nvae =
-								new NoViableAltException("", 35, 3, input);
+								new NoViableAltException("", 37, 3, input);
 							throw nvae;
 						} finally {
 							input.rewind(nvaeMark);
@@ -3818,7 +4323,7 @@
 					try {
 						input.consume();
 						NoViableAltException nvae =
-							new NoViableAltException("", 35, 1, input);
+							new NoViableAltException("", 37, 1, input);
 						throw nvae;
 					} finally {
 						input.rewind(nvaeMark);
@@ -3829,16 +4334,16 @@
 				break;
 			case ARRAY_TYPE_PREFIX:
 				{
-				int LA35_2 = input.LA(2);
-				if ( (LA35_2==PRIMITIVE_TYPE) ) {
-					int LA35_5 = input.LA(3);
-					if ( (LA35_5==SIMPLE_NAME) ) {
-						int LA35_3 = input.LA(4);
-						if ( (LA35_3==ARRAY_TYPE_PREFIX||LA35_3==CLASS_DESCRIPTOR||LA35_3==PRIMITIVE_TYPE) ) {
-							alt35=2;
+				int LA37_2 = input.LA(2);
+				if ( (LA37_2==PRIMITIVE_TYPE) ) {
+					int LA37_5 = input.LA(3);
+					if ( (LA37_5==SIMPLE_NAME) ) {
+						int LA37_3 = input.LA(4);
+						if ( (LA37_3==ARRAY_TYPE_PREFIX||LA37_3==CLASS_DESCRIPTOR||LA37_3==PRIMITIVE_TYPE) ) {
+							alt37=2;
 						}
-						else if ( (LA35_3==I_METHOD_PROTOTYPE) ) {
-							alt35=3;
+						else if ( (LA37_3==I_METHOD_PROTOTYPE) ) {
+							alt37=3;
 						}
 
 						else {
@@ -3848,7 +4353,7 @@
 									input.consume();
 								}
 								NoViableAltException nvae =
-									new NoViableAltException("", 35, 3, input);
+									new NoViableAltException("", 37, 3, input);
 								throw nvae;
 							} finally {
 								input.rewind(nvaeMark);
@@ -3864,7 +4369,7 @@
 								input.consume();
 							}
 							NoViableAltException nvae =
-								new NoViableAltException("", 35, 5, input);
+								new NoViableAltException("", 37, 5, input);
 							throw nvae;
 						} finally {
 							input.rewind(nvaeMark);
@@ -3872,15 +4377,15 @@
 					}
 
 				}
-				else if ( (LA35_2==CLASS_DESCRIPTOR) ) {
-					int LA35_6 = input.LA(3);
-					if ( (LA35_6==SIMPLE_NAME) ) {
-						int LA35_3 = input.LA(4);
-						if ( (LA35_3==ARRAY_TYPE_PREFIX||LA35_3==CLASS_DESCRIPTOR||LA35_3==PRIMITIVE_TYPE) ) {
-							alt35=2;
+				else if ( (LA37_2==CLASS_DESCRIPTOR) ) {
+					int LA37_6 = input.LA(3);
+					if ( (LA37_6==SIMPLE_NAME) ) {
+						int LA37_3 = input.LA(4);
+						if ( (LA37_3==ARRAY_TYPE_PREFIX||LA37_3==CLASS_DESCRIPTOR||LA37_3==PRIMITIVE_TYPE) ) {
+							alt37=2;
 						}
-						else if ( (LA35_3==I_METHOD_PROTOTYPE) ) {
-							alt35=3;
+						else if ( (LA37_3==I_METHOD_PROTOTYPE) ) {
+							alt37=3;
 						}
 
 						else {
@@ -3890,7 +4395,7 @@
 									input.consume();
 								}
 								NoViableAltException nvae =
-									new NoViableAltException("", 35, 3, input);
+									new NoViableAltException("", 37, 3, input);
 								throw nvae;
 							} finally {
 								input.rewind(nvaeMark);
@@ -3906,7 +4411,7 @@
 								input.consume();
 							}
 							NoViableAltException nvae =
-								new NoViableAltException("", 35, 6, input);
+								new NoViableAltException("", 37, 6, input);
 							throw nvae;
 						} finally {
 							input.rewind(nvaeMark);
@@ -3920,7 +4425,7 @@
 					try {
 						input.consume();
 						NoViableAltException nvae =
-							new NoViableAltException("", 35, 2, input);
+							new NoViableAltException("", 37, 2, input);
 						throw nvae;
 					} finally {
 						input.rewind(nvaeMark);
@@ -3931,12 +4436,12 @@
 				break;
 			case SIMPLE_NAME:
 				{
-				int LA35_3 = input.LA(2);
-				if ( (LA35_3==ARRAY_TYPE_PREFIX||LA35_3==CLASS_DESCRIPTOR||LA35_3==PRIMITIVE_TYPE) ) {
-					alt35=2;
+				int LA37_3 = input.LA(2);
+				if ( (LA37_3==ARRAY_TYPE_PREFIX||LA37_3==CLASS_DESCRIPTOR||LA37_3==PRIMITIVE_TYPE) ) {
+					alt37=2;
 				}
-				else if ( (LA35_3==I_METHOD_PROTOTYPE) ) {
-					alt35=3;
+				else if ( (LA37_3==I_METHOD_PROTOTYPE) ) {
+					alt37=3;
 				}
 
 				else {
@@ -3944,7 +4449,7 @@
 					try {
 						input.consume();
 						NoViableAltException nvae =
-							new NoViableAltException("", 35, 3, input);
+							new NoViableAltException("", 37, 3, input);
 						throw nvae;
 					} finally {
 						input.rewind(nvaeMark);
@@ -3955,40 +4460,40 @@
 				break;
 			default:
 				NoViableAltException nvae =
-					new NoViableAltException("", 35, 0, input);
+					new NoViableAltException("", 37, 0, input);
 				throw nvae;
 			}
-			switch (alt35) {
+			switch (alt37) {
 				case 1 :
-					// smaliTreeWalker.g:700:5: CLASS_DESCRIPTOR
+					// smaliTreeWalker.g:744:5: CLASS_DESCRIPTOR
 					{
-					CLASS_DESCRIPTOR100=(CommonTree)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_verification_error_reference1755); 
+					CLASS_DESCRIPTOR110=(CommonTree)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_verification_error_reference1908); 
 
-					    reference = new ImmutableTypeReference((CLASS_DESCRIPTOR100!=null?CLASS_DESCRIPTOR100.getText():null));
+					    reference = new ImmutableTypeReference((CLASS_DESCRIPTOR110!=null?CLASS_DESCRIPTOR110.getText():null));
 					  
 					}
 					break;
 				case 2 :
-					// smaliTreeWalker.g:704:5: field_reference
+					// smaliTreeWalker.g:748:5: field_reference
 					{
-					pushFollow(FOLLOW_field_reference_in_verification_error_reference1765);
-					field_reference101=field_reference();
+					pushFollow(FOLLOW_field_reference_in_verification_error_reference1918);
+					field_reference111=field_reference();
 					state._fsp--;
 
 
-					    reference = field_reference101;
+					    reference = (field_reference111!=null?((smaliTreeWalker.field_reference_return)field_reference111).fieldReference:null);
 					  
 					}
 					break;
 				case 3 :
-					// smaliTreeWalker.g:708:5: method_reference
+					// smaliTreeWalker.g:752:5: method_reference
 					{
-					pushFollow(FOLLOW_method_reference_in_verification_error_reference1775);
-					method_reference102=method_reference();
+					pushFollow(FOLLOW_method_reference_in_verification_error_reference1928);
+					method_reference112=method_reference();
 					state._fsp--;
 
 
-					    reference = method_reference102;
+					    reference = method_reference112;
 					  
 					}
 					break;
@@ -4009,20 +4514,20 @@
 
 
 	// $ANTLR start "verification_error_type"
-	// smaliTreeWalker.g:713:1: verification_error_type returns [int verificationError] : VERIFICATION_ERROR_TYPE ;
+	// smaliTreeWalker.g:757:1: verification_error_type returns [int verificationError] : VERIFICATION_ERROR_TYPE ;
 	public final int verification_error_type() throws RecognitionException {
 		int verificationError = 0;
 
 
-		CommonTree VERIFICATION_ERROR_TYPE103=null;
+		CommonTree VERIFICATION_ERROR_TYPE113=null;
 
 		try {
-			// smaliTreeWalker.g:714:3: ( VERIFICATION_ERROR_TYPE )
-			// smaliTreeWalker.g:714:5: VERIFICATION_ERROR_TYPE
+			// smaliTreeWalker.g:758:3: ( VERIFICATION_ERROR_TYPE )
+			// smaliTreeWalker.g:758:5: VERIFICATION_ERROR_TYPE
 			{
-			VERIFICATION_ERROR_TYPE103=(CommonTree)match(input,VERIFICATION_ERROR_TYPE,FOLLOW_VERIFICATION_ERROR_TYPE_in_verification_error_type1792); 
+			VERIFICATION_ERROR_TYPE113=(CommonTree)match(input,VERIFICATION_ERROR_TYPE,FOLLOW_VERIFICATION_ERROR_TYPE_in_verification_error_type1945); 
 
-			    verificationError = VerificationError.getVerificationError((VERIFICATION_ERROR_TYPE103!=null?VERIFICATION_ERROR_TYPE103.getText():null));
+			    verificationError = VerificationError.getVerificationError((VERIFICATION_ERROR_TYPE113!=null?VERIFICATION_ERROR_TYPE113.getText():null));
 			  
 			}
 
@@ -4044,520 +4549,576 @@
 
 
 	// $ANTLR start "instruction"
-	// smaliTreeWalker.g:719:1: instruction : ( insn_format10t | insn_format10x | insn_format11n | insn_format11x | insn_format12x | insn_format20bc | insn_format20t | insn_format21c_field | insn_format21c_string | insn_format21c_type | insn_format21ih | insn_format21lh | insn_format21s | insn_format21t | insn_format22b | insn_format22c_field | insn_format22c_type | insn_format22s | insn_format22t | insn_format22x | insn_format23x | insn_format30t | insn_format31c | insn_format31i | insn_format31t | insn_format32x | insn_format35c_method | insn_format35c_type | insn_format3rc_method | insn_format3rc_type | insn_format45cc_method | insn_format4rcc_method | insn_format51l_type | insn_array_data_directive | insn_packed_switch_directive | insn_sparse_switch_directive );
+	// smaliTreeWalker.g:763:1: instruction : ( insn_format10t | insn_format10x | insn_format11n | insn_format11x | insn_format12x | insn_format20bc | insn_format20t | insn_format21c_field | insn_format21c_method_handle | insn_format21c_method_type | insn_format21c_string | insn_format21c_type | insn_format21ih | insn_format21lh | insn_format21s | insn_format21t | insn_format22b | insn_format22c_field | insn_format22c_type | insn_format22s | insn_format22t | insn_format22x | insn_format23x | insn_format30t | insn_format31c | insn_format31i | insn_format31t | insn_format32x | insn_format35c_call_site | insn_format35c_method | insn_format35c_type | insn_format3rc_call_site | insn_format3rc_method | insn_format3rc_type | insn_format45cc_method | insn_format4rcc_method | insn_format51l_type | insn_array_data_directive | insn_packed_switch_directive | insn_sparse_switch_directive );
 	public final smaliTreeWalker.instruction_return instruction() throws RecognitionException {
 		smaliTreeWalker.instruction_return retval = new smaliTreeWalker.instruction_return();
 		retval.start = input.LT(1);
 
 		try {
-			// smaliTreeWalker.g:720:3: ( insn_format10t | insn_format10x | insn_format11n | insn_format11x | insn_format12x | insn_format20bc | insn_format20t | insn_format21c_field | insn_format21c_string | insn_format21c_type | insn_format21ih | insn_format21lh | insn_format21s | insn_format21t | insn_format22b | insn_format22c_field | insn_format22c_type | insn_format22s | insn_format22t | insn_format22x | insn_format23x | insn_format30t | insn_format31c | insn_format31i | insn_format31t | insn_format32x | insn_format35c_method | insn_format35c_type | insn_format3rc_method | insn_format3rc_type | insn_format45cc_method | insn_format4rcc_method | insn_format51l_type | insn_array_data_directive | insn_packed_switch_directive | insn_sparse_switch_directive )
-			int alt36=36;
+			// smaliTreeWalker.g:764:3: ( insn_format10t | insn_format10x | insn_format11n | insn_format11x | insn_format12x | insn_format20bc | insn_format20t | insn_format21c_field | insn_format21c_method_handle | insn_format21c_method_type | insn_format21c_string | insn_format21c_type | insn_format21ih | insn_format21lh | insn_format21s | insn_format21t | insn_format22b | insn_format22c_field | insn_format22c_type | insn_format22s | insn_format22t | insn_format22x | insn_format23x | insn_format30t | insn_format31c | insn_format31i | insn_format31t | insn_format32x | insn_format35c_call_site | insn_format35c_method | insn_format35c_type | insn_format3rc_call_site | insn_format3rc_method | insn_format3rc_type | insn_format45cc_method | insn_format4rcc_method | insn_format51l_type | insn_array_data_directive | insn_packed_switch_directive | insn_sparse_switch_directive )
+			int alt38=40;
 			switch ( input.LA(1) ) {
 			case I_STATEMENT_FORMAT10t:
 				{
-				alt36=1;
+				alt38=1;
 				}
 				break;
 			case I_STATEMENT_FORMAT10x:
 				{
-				alt36=2;
+				alt38=2;
 				}
 				break;
 			case I_STATEMENT_FORMAT11n:
 				{
-				alt36=3;
+				alt38=3;
 				}
 				break;
 			case I_STATEMENT_FORMAT11x:
 				{
-				alt36=4;
+				alt38=4;
 				}
 				break;
 			case I_STATEMENT_FORMAT12x:
 				{
-				alt36=5;
+				alt38=5;
 				}
 				break;
 			case I_STATEMENT_FORMAT20bc:
 				{
-				alt36=6;
+				alt38=6;
 				}
 				break;
 			case I_STATEMENT_FORMAT20t:
 				{
-				alt36=7;
+				alt38=7;
 				}
 				break;
 			case I_STATEMENT_FORMAT21c_FIELD:
 				{
-				alt36=8;
+				alt38=8;
+				}
+				break;
+			case I_STATEMENT_FORMAT21c_METHOD_HANDLE:
+				{
+				alt38=9;
+				}
+				break;
+			case I_STATEMENT_FORMAT21c_METHOD_TYPE:
+				{
+				alt38=10;
 				}
 				break;
 			case I_STATEMENT_FORMAT21c_STRING:
 				{
-				alt36=9;
+				alt38=11;
 				}
 				break;
 			case I_STATEMENT_FORMAT21c_TYPE:
 				{
-				alt36=10;
+				alt38=12;
 				}
 				break;
 			case I_STATEMENT_FORMAT21ih:
 				{
-				alt36=11;
+				alt38=13;
 				}
 				break;
 			case I_STATEMENT_FORMAT21lh:
 				{
-				alt36=12;
+				alt38=14;
 				}
 				break;
 			case I_STATEMENT_FORMAT21s:
 				{
-				alt36=13;
+				alt38=15;
 				}
 				break;
 			case I_STATEMENT_FORMAT21t:
 				{
-				alt36=14;
+				alt38=16;
 				}
 				break;
 			case I_STATEMENT_FORMAT22b:
 				{
-				alt36=15;
+				alt38=17;
 				}
 				break;
 			case I_STATEMENT_FORMAT22c_FIELD:
 				{
-				alt36=16;
+				alt38=18;
 				}
 				break;
 			case I_STATEMENT_FORMAT22c_TYPE:
 				{
-				alt36=17;
+				alt38=19;
 				}
 				break;
 			case I_STATEMENT_FORMAT22s:
 				{
-				alt36=18;
+				alt38=20;
 				}
 				break;
 			case I_STATEMENT_FORMAT22t:
 				{
-				alt36=19;
+				alt38=21;
 				}
 				break;
 			case I_STATEMENT_FORMAT22x:
 				{
-				alt36=20;
+				alt38=22;
 				}
 				break;
 			case I_STATEMENT_FORMAT23x:
 				{
-				alt36=21;
+				alt38=23;
 				}
 				break;
 			case I_STATEMENT_FORMAT30t:
 				{
-				alt36=22;
+				alt38=24;
 				}
 				break;
 			case I_STATEMENT_FORMAT31c:
 				{
-				alt36=23;
+				alt38=25;
 				}
 				break;
 			case I_STATEMENT_FORMAT31i:
 				{
-				alt36=24;
+				alt38=26;
 				}
 				break;
 			case I_STATEMENT_FORMAT31t:
 				{
-				alt36=25;
+				alt38=27;
 				}
 				break;
 			case I_STATEMENT_FORMAT32x:
 				{
-				alt36=26;
+				alt38=28;
+				}
+				break;
+			case I_STATEMENT_FORMAT35c_CALL_SITE:
+				{
+				alt38=29;
 				}
 				break;
 			case I_STATEMENT_FORMAT35c_METHOD:
 				{
-				alt36=27;
+				alt38=30;
 				}
 				break;
 			case I_STATEMENT_FORMAT35c_TYPE:
 				{
-				alt36=28;
+				alt38=31;
+				}
+				break;
+			case I_STATEMENT_FORMAT3rc_CALL_SITE:
+				{
+				alt38=32;
 				}
 				break;
 			case I_STATEMENT_FORMAT3rc_METHOD:
 				{
-				alt36=29;
+				alt38=33;
 				}
 				break;
 			case I_STATEMENT_FORMAT3rc_TYPE:
 				{
-				alt36=30;
+				alt38=34;
 				}
 				break;
 			case I_STATEMENT_FORMAT45cc_METHOD:
 				{
-				alt36=31;
+				alt38=35;
 				}
 				break;
 			case I_STATEMENT_FORMAT4rcc_METHOD:
 				{
-				alt36=32;
+				alt38=36;
 				}
 				break;
 			case I_STATEMENT_FORMAT51l:
 				{
-				alt36=33;
+				alt38=37;
 				}
 				break;
 			case I_STATEMENT_ARRAY_DATA:
 				{
-				alt36=34;
+				alt38=38;
 				}
 				break;
 			case I_STATEMENT_PACKED_SWITCH:
 				{
-				alt36=35;
+				alt38=39;
 				}
 				break;
 			case I_STATEMENT_SPARSE_SWITCH:
 				{
-				alt36=36;
+				alt38=40;
 				}
 				break;
 			default:
 				NoViableAltException nvae =
-					new NoViableAltException("", 36, 0, input);
+					new NoViableAltException("", 38, 0, input);
 				throw nvae;
 			}
-			switch (alt36) {
+			switch (alt38) {
 				case 1 :
-					// smaliTreeWalker.g:720:5: insn_format10t
+					// smaliTreeWalker.g:764:5: insn_format10t
 					{
-					pushFollow(FOLLOW_insn_format10t_in_instruction1806);
+					pushFollow(FOLLOW_insn_format10t_in_instruction1959);
 					insn_format10t();
 					state._fsp--;
 
 					}
 					break;
 				case 2 :
-					// smaliTreeWalker.g:721:5: insn_format10x
+					// smaliTreeWalker.g:765:5: insn_format10x
 					{
-					pushFollow(FOLLOW_insn_format10x_in_instruction1812);
+					pushFollow(FOLLOW_insn_format10x_in_instruction1965);
 					insn_format10x();
 					state._fsp--;
 
 					}
 					break;
 				case 3 :
-					// smaliTreeWalker.g:722:5: insn_format11n
+					// smaliTreeWalker.g:766:5: insn_format11n
 					{
-					pushFollow(FOLLOW_insn_format11n_in_instruction1818);
+					pushFollow(FOLLOW_insn_format11n_in_instruction1971);
 					insn_format11n();
 					state._fsp--;
 
 					}
 					break;
 				case 4 :
-					// smaliTreeWalker.g:723:5: insn_format11x
+					// smaliTreeWalker.g:767:5: insn_format11x
 					{
-					pushFollow(FOLLOW_insn_format11x_in_instruction1824);
+					pushFollow(FOLLOW_insn_format11x_in_instruction1977);
 					insn_format11x();
 					state._fsp--;
 
 					}
 					break;
 				case 5 :
-					// smaliTreeWalker.g:724:5: insn_format12x
+					// smaliTreeWalker.g:768:5: insn_format12x
 					{
-					pushFollow(FOLLOW_insn_format12x_in_instruction1830);
+					pushFollow(FOLLOW_insn_format12x_in_instruction1983);
 					insn_format12x();
 					state._fsp--;
 
 					}
 					break;
 				case 6 :
-					// smaliTreeWalker.g:725:5: insn_format20bc
+					// smaliTreeWalker.g:769:5: insn_format20bc
 					{
-					pushFollow(FOLLOW_insn_format20bc_in_instruction1836);
+					pushFollow(FOLLOW_insn_format20bc_in_instruction1989);
 					insn_format20bc();
 					state._fsp--;
 
 					}
 					break;
 				case 7 :
-					// smaliTreeWalker.g:726:5: insn_format20t
+					// smaliTreeWalker.g:770:5: insn_format20t
 					{
-					pushFollow(FOLLOW_insn_format20t_in_instruction1842);
+					pushFollow(FOLLOW_insn_format20t_in_instruction1995);
 					insn_format20t();
 					state._fsp--;
 
 					}
 					break;
 				case 8 :
-					// smaliTreeWalker.g:727:5: insn_format21c_field
+					// smaliTreeWalker.g:771:5: insn_format21c_field
 					{
-					pushFollow(FOLLOW_insn_format21c_field_in_instruction1848);
+					pushFollow(FOLLOW_insn_format21c_field_in_instruction2001);
 					insn_format21c_field();
 					state._fsp--;
 
 					}
 					break;
 				case 9 :
-					// smaliTreeWalker.g:728:5: insn_format21c_string
+					// smaliTreeWalker.g:772:5: insn_format21c_method_handle
 					{
-					pushFollow(FOLLOW_insn_format21c_string_in_instruction1854);
-					insn_format21c_string();
+					pushFollow(FOLLOW_insn_format21c_method_handle_in_instruction2007);
+					insn_format21c_method_handle();
 					state._fsp--;
 
 					}
 					break;
 				case 10 :
-					// smaliTreeWalker.g:729:5: insn_format21c_type
+					// smaliTreeWalker.g:773:5: insn_format21c_method_type
 					{
-					pushFollow(FOLLOW_insn_format21c_type_in_instruction1860);
-					insn_format21c_type();
+					pushFollow(FOLLOW_insn_format21c_method_type_in_instruction2013);
+					insn_format21c_method_type();
 					state._fsp--;
 
 					}
 					break;
 				case 11 :
-					// smaliTreeWalker.g:730:5: insn_format21ih
+					// smaliTreeWalker.g:774:5: insn_format21c_string
 					{
-					pushFollow(FOLLOW_insn_format21ih_in_instruction1866);
-					insn_format21ih();
+					pushFollow(FOLLOW_insn_format21c_string_in_instruction2019);
+					insn_format21c_string();
 					state._fsp--;
 
 					}
 					break;
 				case 12 :
-					// smaliTreeWalker.g:731:5: insn_format21lh
+					// smaliTreeWalker.g:775:5: insn_format21c_type
 					{
-					pushFollow(FOLLOW_insn_format21lh_in_instruction1872);
-					insn_format21lh();
+					pushFollow(FOLLOW_insn_format21c_type_in_instruction2025);
+					insn_format21c_type();
 					state._fsp--;
 
 					}
 					break;
 				case 13 :
-					// smaliTreeWalker.g:732:5: insn_format21s
+					// smaliTreeWalker.g:776:5: insn_format21ih
 					{
-					pushFollow(FOLLOW_insn_format21s_in_instruction1878);
-					insn_format21s();
+					pushFollow(FOLLOW_insn_format21ih_in_instruction2031);
+					insn_format21ih();
 					state._fsp--;
 
 					}
 					break;
 				case 14 :
-					// smaliTreeWalker.g:733:5: insn_format21t
+					// smaliTreeWalker.g:777:5: insn_format21lh
 					{
-					pushFollow(FOLLOW_insn_format21t_in_instruction1884);
-					insn_format21t();
+					pushFollow(FOLLOW_insn_format21lh_in_instruction2037);
+					insn_format21lh();
 					state._fsp--;
 
 					}
 					break;
 				case 15 :
-					// smaliTreeWalker.g:734:5: insn_format22b
+					// smaliTreeWalker.g:778:5: insn_format21s
 					{
-					pushFollow(FOLLOW_insn_format22b_in_instruction1890);
-					insn_format22b();
+					pushFollow(FOLLOW_insn_format21s_in_instruction2043);
+					insn_format21s();
 					state._fsp--;
 
 					}
 					break;
 				case 16 :
-					// smaliTreeWalker.g:735:5: insn_format22c_field
+					// smaliTreeWalker.g:779:5: insn_format21t
 					{
-					pushFollow(FOLLOW_insn_format22c_field_in_instruction1896);
-					insn_format22c_field();
+					pushFollow(FOLLOW_insn_format21t_in_instruction2049);
+					insn_format21t();
 					state._fsp--;
 
 					}
 					break;
 				case 17 :
-					// smaliTreeWalker.g:736:5: insn_format22c_type
+					// smaliTreeWalker.g:780:5: insn_format22b
 					{
-					pushFollow(FOLLOW_insn_format22c_type_in_instruction1902);
-					insn_format22c_type();
+					pushFollow(FOLLOW_insn_format22b_in_instruction2055);
+					insn_format22b();
 					state._fsp--;
 
 					}
 					break;
 				case 18 :
-					// smaliTreeWalker.g:737:5: insn_format22s
+					// smaliTreeWalker.g:781:5: insn_format22c_field
 					{
-					pushFollow(FOLLOW_insn_format22s_in_instruction1908);
-					insn_format22s();
+					pushFollow(FOLLOW_insn_format22c_field_in_instruction2061);
+					insn_format22c_field();
 					state._fsp--;
 
 					}
 					break;
 				case 19 :
-					// smaliTreeWalker.g:738:5: insn_format22t
+					// smaliTreeWalker.g:782:5: insn_format22c_type
 					{
-					pushFollow(FOLLOW_insn_format22t_in_instruction1914);
-					insn_format22t();
+					pushFollow(FOLLOW_insn_format22c_type_in_instruction2067);
+					insn_format22c_type();
 					state._fsp--;
 
 					}
 					break;
 				case 20 :
-					// smaliTreeWalker.g:739:5: insn_format22x
+					// smaliTreeWalker.g:783:5: insn_format22s
 					{
-					pushFollow(FOLLOW_insn_format22x_in_instruction1920);
-					insn_format22x();
+					pushFollow(FOLLOW_insn_format22s_in_instruction2073);
+					insn_format22s();
 					state._fsp--;
 
 					}
 					break;
 				case 21 :
-					// smaliTreeWalker.g:740:5: insn_format23x
+					// smaliTreeWalker.g:784:5: insn_format22t
 					{
-					pushFollow(FOLLOW_insn_format23x_in_instruction1926);
-					insn_format23x();
+					pushFollow(FOLLOW_insn_format22t_in_instruction2079);
+					insn_format22t();
 					state._fsp--;
 
 					}
 					break;
 				case 22 :
-					// smaliTreeWalker.g:741:5: insn_format30t
+					// smaliTreeWalker.g:785:5: insn_format22x
 					{
-					pushFollow(FOLLOW_insn_format30t_in_instruction1932);
-					insn_format30t();
+					pushFollow(FOLLOW_insn_format22x_in_instruction2085);
+					insn_format22x();
 					state._fsp--;
 
 					}
 					break;
 				case 23 :
-					// smaliTreeWalker.g:742:5: insn_format31c
+					// smaliTreeWalker.g:786:5: insn_format23x
 					{
-					pushFollow(FOLLOW_insn_format31c_in_instruction1938);
-					insn_format31c();
+					pushFollow(FOLLOW_insn_format23x_in_instruction2091);
+					insn_format23x();
 					state._fsp--;
 
 					}
 					break;
 				case 24 :
-					// smaliTreeWalker.g:743:5: insn_format31i
+					// smaliTreeWalker.g:787:5: insn_format30t
 					{
-					pushFollow(FOLLOW_insn_format31i_in_instruction1944);
-					insn_format31i();
+					pushFollow(FOLLOW_insn_format30t_in_instruction2097);
+					insn_format30t();
 					state._fsp--;
 
 					}
 					break;
 				case 25 :
-					// smaliTreeWalker.g:744:5: insn_format31t
+					// smaliTreeWalker.g:788:5: insn_format31c
 					{
-					pushFollow(FOLLOW_insn_format31t_in_instruction1950);
-					insn_format31t();
+					pushFollow(FOLLOW_insn_format31c_in_instruction2103);
+					insn_format31c();
 					state._fsp--;
 
 					}
 					break;
 				case 26 :
-					// smaliTreeWalker.g:745:5: insn_format32x
+					// smaliTreeWalker.g:789:5: insn_format31i
 					{
-					pushFollow(FOLLOW_insn_format32x_in_instruction1956);
-					insn_format32x();
+					pushFollow(FOLLOW_insn_format31i_in_instruction2109);
+					insn_format31i();
 					state._fsp--;
 
 					}
 					break;
 				case 27 :
-					// smaliTreeWalker.g:746:5: insn_format35c_method
+					// smaliTreeWalker.g:790:5: insn_format31t
 					{
-					pushFollow(FOLLOW_insn_format35c_method_in_instruction1962);
-					insn_format35c_method();
+					pushFollow(FOLLOW_insn_format31t_in_instruction2115);
+					insn_format31t();
 					state._fsp--;
 
 					}
 					break;
 				case 28 :
-					// smaliTreeWalker.g:747:5: insn_format35c_type
+					// smaliTreeWalker.g:791:5: insn_format32x
 					{
-					pushFollow(FOLLOW_insn_format35c_type_in_instruction1968);
-					insn_format35c_type();
+					pushFollow(FOLLOW_insn_format32x_in_instruction2121);
+					insn_format32x();
 					state._fsp--;
 
 					}
 					break;
 				case 29 :
-					// smaliTreeWalker.g:748:5: insn_format3rc_method
+					// smaliTreeWalker.g:792:5: insn_format35c_call_site
 					{
-					pushFollow(FOLLOW_insn_format3rc_method_in_instruction1974);
-					insn_format3rc_method();
+					pushFollow(FOLLOW_insn_format35c_call_site_in_instruction2127);
+					insn_format35c_call_site();
 					state._fsp--;
 
 					}
 					break;
 				case 30 :
-					// smaliTreeWalker.g:749:5: insn_format3rc_type
+					// smaliTreeWalker.g:793:5: insn_format35c_method
 					{
-					pushFollow(FOLLOW_insn_format3rc_type_in_instruction1980);
-					insn_format3rc_type();
+					pushFollow(FOLLOW_insn_format35c_method_in_instruction2133);
+					insn_format35c_method();
 					state._fsp--;
 
 					}
 					break;
 				case 31 :
-					// smaliTreeWalker.g:750:5: insn_format45cc_method
+					// smaliTreeWalker.g:794:5: insn_format35c_type
 					{
-					pushFollow(FOLLOW_insn_format45cc_method_in_instruction1986);
-					insn_format45cc_method();
+					pushFollow(FOLLOW_insn_format35c_type_in_instruction2139);
+					insn_format35c_type();
 					state._fsp--;
 
 					}
 					break;
 				case 32 :
-					// smaliTreeWalker.g:751:5: insn_format4rcc_method
+					// smaliTreeWalker.g:795:5: insn_format3rc_call_site
 					{
-					pushFollow(FOLLOW_insn_format4rcc_method_in_instruction1992);
-					insn_format4rcc_method();
+					pushFollow(FOLLOW_insn_format3rc_call_site_in_instruction2145);
+					insn_format3rc_call_site();
 					state._fsp--;
 
 					}
 					break;
 				case 33 :
-					// smaliTreeWalker.g:752:5: insn_format51l_type
+					// smaliTreeWalker.g:796:5: insn_format3rc_method
 					{
-					pushFollow(FOLLOW_insn_format51l_type_in_instruction1998);
-					insn_format51l_type();
+					pushFollow(FOLLOW_insn_format3rc_method_in_instruction2151);
+					insn_format3rc_method();
 					state._fsp--;
 
 					}
 					break;
 				case 34 :
-					// smaliTreeWalker.g:753:5: insn_array_data_directive
+					// smaliTreeWalker.g:797:5: insn_format3rc_type
 					{
-					pushFollow(FOLLOW_insn_array_data_directive_in_instruction2004);
-					insn_array_data_directive();
+					pushFollow(FOLLOW_insn_format3rc_type_in_instruction2157);
+					insn_format3rc_type();
 					state._fsp--;
 
 					}
 					break;
 				case 35 :
-					// smaliTreeWalker.g:754:5: insn_packed_switch_directive
+					// smaliTreeWalker.g:798:5: insn_format45cc_method
 					{
-					pushFollow(FOLLOW_insn_packed_switch_directive_in_instruction2010);
-					insn_packed_switch_directive();
+					pushFollow(FOLLOW_insn_format45cc_method_in_instruction2163);
+					insn_format45cc_method();
 					state._fsp--;
 
 					}
 					break;
 				case 36 :
-					// smaliTreeWalker.g:755:5: insn_sparse_switch_directive
+					// smaliTreeWalker.g:799:5: insn_format4rcc_method
 					{
-					pushFollow(FOLLOW_insn_sparse_switch_directive_in_instruction2016);
+					pushFollow(FOLLOW_insn_format4rcc_method_in_instruction2169);
+					insn_format4rcc_method();
+					state._fsp--;
+
+					}
+					break;
+				case 37 :
+					// smaliTreeWalker.g:800:5: insn_format51l_type
+					{
+					pushFollow(FOLLOW_insn_format51l_type_in_instruction2175);
+					insn_format51l_type();
+					state._fsp--;
+
+					}
+					break;
+				case 38 :
+					// smaliTreeWalker.g:801:5: insn_array_data_directive
+					{
+					pushFollow(FOLLOW_insn_array_data_directive_in_instruction2181);
+					insn_array_data_directive();
+					state._fsp--;
+
+					}
+					break;
+				case 39 :
+					// smaliTreeWalker.g:802:5: insn_packed_switch_directive
+					{
+					pushFollow(FOLLOW_insn_packed_switch_directive_in_instruction2187);
+					insn_packed_switch_directive();
+					state._fsp--;
+
+					}
+					break;
+				case 40 :
+					// smaliTreeWalker.g:803:5: insn_sparse_switch_directive
+					{
+					pushFollow(FOLLOW_insn_sparse_switch_directive_in_instruction2193);
 					insn_sparse_switch_directive();
 					state._fsp--;
 
@@ -4583,27 +5144,27 @@
 
 
 	// $ANTLR start "insn_format10t"
-	// smaliTreeWalker.g:761:1: insn_format10t : ^( I_STATEMENT_FORMAT10t INSTRUCTION_FORMAT10t label_ref ) ;
+	// smaliTreeWalker.g:809:1: insn_format10t : ^( I_STATEMENT_FORMAT10t INSTRUCTION_FORMAT10t label_ref ) ;
 	public final void insn_format10t() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT10t104=null;
-		Label label_ref105 =null;
+		CommonTree INSTRUCTION_FORMAT10t114=null;
+		Label label_ref115 =null;
 
 		try {
-			// smaliTreeWalker.g:762:3: ( ^( I_STATEMENT_FORMAT10t INSTRUCTION_FORMAT10t label_ref ) )
-			// smaliTreeWalker.g:763:5: ^( I_STATEMENT_FORMAT10t INSTRUCTION_FORMAT10t label_ref )
+			// smaliTreeWalker.g:810:3: ( ^( I_STATEMENT_FORMAT10t INSTRUCTION_FORMAT10t label_ref ) )
+			// smaliTreeWalker.g:811:5: ^( I_STATEMENT_FORMAT10t INSTRUCTION_FORMAT10t label_ref )
 			{
-			match(input,I_STATEMENT_FORMAT10t,FOLLOW_I_STATEMENT_FORMAT10t_in_insn_format10t2040); 
+			match(input,I_STATEMENT_FORMAT10t,FOLLOW_I_STATEMENT_FORMAT10t_in_insn_format10t2217); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT10t104=(CommonTree)match(input,INSTRUCTION_FORMAT10t,FOLLOW_INSTRUCTION_FORMAT10t_in_insn_format10t2042); 
-			pushFollow(FOLLOW_label_ref_in_insn_format10t2044);
-			label_ref105=label_ref();
+			INSTRUCTION_FORMAT10t114=(CommonTree)match(input,INSTRUCTION_FORMAT10t,FOLLOW_INSTRUCTION_FORMAT10t_in_insn_format10t2219); 
+			pushFollow(FOLLOW_label_ref_in_insn_format10t2221);
+			label_ref115=label_ref();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT10t104!=null?INSTRUCTION_FORMAT10t104.getText():null));
-			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction10t(opcode, label_ref105));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT10t114!=null?INSTRUCTION_FORMAT10t114.getText():null));
+			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction10t(opcode, label_ref115));
 			    
 			}
 
@@ -4621,21 +5182,21 @@
 
 
 	// $ANTLR start "insn_format10x"
-	// smaliTreeWalker.g:769:1: insn_format10x : ^( I_STATEMENT_FORMAT10x INSTRUCTION_FORMAT10x ) ;
+	// smaliTreeWalker.g:817:1: insn_format10x : ^( I_STATEMENT_FORMAT10x INSTRUCTION_FORMAT10x ) ;
 	public final void insn_format10x() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT10x106=null;
+		CommonTree INSTRUCTION_FORMAT10x116=null;
 
 		try {
-			// smaliTreeWalker.g:770:3: ( ^( I_STATEMENT_FORMAT10x INSTRUCTION_FORMAT10x ) )
-			// smaliTreeWalker.g:771:5: ^( I_STATEMENT_FORMAT10x INSTRUCTION_FORMAT10x )
+			// smaliTreeWalker.g:818:3: ( ^( I_STATEMENT_FORMAT10x INSTRUCTION_FORMAT10x ) )
+			// smaliTreeWalker.g:819:5: ^( I_STATEMENT_FORMAT10x INSTRUCTION_FORMAT10x )
 			{
-			match(input,I_STATEMENT_FORMAT10x,FOLLOW_I_STATEMENT_FORMAT10x_in_insn_format10x2067); 
+			match(input,I_STATEMENT_FORMAT10x,FOLLOW_I_STATEMENT_FORMAT10x_in_insn_format10x2244); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT10x106=(CommonTree)match(input,INSTRUCTION_FORMAT10x,FOLLOW_INSTRUCTION_FORMAT10x_in_insn_format10x2069); 
+			INSTRUCTION_FORMAT10x116=(CommonTree)match(input,INSTRUCTION_FORMAT10x,FOLLOW_INSTRUCTION_FORMAT10x_in_insn_format10x2246); 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT10x106!=null?INSTRUCTION_FORMAT10x106.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT10x116!=null?INSTRUCTION_FORMAT10x116.getText():null));
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction10x(opcode));
 			    
 			}
@@ -4654,31 +5215,31 @@
 
 
 	// $ANTLR start "insn_format11n"
-	// smaliTreeWalker.g:777:1: insn_format11n : ^( I_STATEMENT_FORMAT11n INSTRUCTION_FORMAT11n REGISTER short_integral_literal ) ;
+	// smaliTreeWalker.g:825:1: insn_format11n : ^( I_STATEMENT_FORMAT11n INSTRUCTION_FORMAT11n REGISTER short_integral_literal ) ;
 	public final void insn_format11n() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT11n107=null;
-		CommonTree REGISTER108=null;
-		short short_integral_literal109 =0;
+		CommonTree INSTRUCTION_FORMAT11n117=null;
+		CommonTree REGISTER118=null;
+		short short_integral_literal119 =0;
 
 		try {
-			// smaliTreeWalker.g:778:3: ( ^( I_STATEMENT_FORMAT11n INSTRUCTION_FORMAT11n REGISTER short_integral_literal ) )
-			// smaliTreeWalker.g:779:5: ^( I_STATEMENT_FORMAT11n INSTRUCTION_FORMAT11n REGISTER short_integral_literal )
+			// smaliTreeWalker.g:826:3: ( ^( I_STATEMENT_FORMAT11n INSTRUCTION_FORMAT11n REGISTER short_integral_literal ) )
+			// smaliTreeWalker.g:827:5: ^( I_STATEMENT_FORMAT11n INSTRUCTION_FORMAT11n REGISTER short_integral_literal )
 			{
-			match(input,I_STATEMENT_FORMAT11n,FOLLOW_I_STATEMENT_FORMAT11n_in_insn_format11n2092); 
+			match(input,I_STATEMENT_FORMAT11n,FOLLOW_I_STATEMENT_FORMAT11n_in_insn_format11n2269); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT11n107=(CommonTree)match(input,INSTRUCTION_FORMAT11n,FOLLOW_INSTRUCTION_FORMAT11n_in_insn_format11n2094); 
-			REGISTER108=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format11n2096); 
-			pushFollow(FOLLOW_short_integral_literal_in_insn_format11n2098);
-			short_integral_literal109=short_integral_literal();
+			INSTRUCTION_FORMAT11n117=(CommonTree)match(input,INSTRUCTION_FORMAT11n,FOLLOW_INSTRUCTION_FORMAT11n_in_insn_format11n2271); 
+			REGISTER118=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format11n2273); 
+			pushFollow(FOLLOW_short_integral_literal_in_insn_format11n2275);
+			short_integral_literal119=short_integral_literal();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT11n107!=null?INSTRUCTION_FORMAT11n107.getText():null));
-			      byte regA = parseRegister_nibble((REGISTER108!=null?REGISTER108.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT11n117!=null?INSTRUCTION_FORMAT11n117.getText():null));
+			      byte regA = parseRegister_nibble((REGISTER118!=null?REGISTER118.getText():null));
 
-			      short litB = short_integral_literal109;
+			      short litB = short_integral_literal119;
 			      LiteralTools.checkNibble(litB);
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction11n(opcode, regA, litB));
@@ -4699,24 +5260,24 @@
 
 
 	// $ANTLR start "insn_format11x"
-	// smaliTreeWalker.g:790:1: insn_format11x : ^( I_STATEMENT_FORMAT11x INSTRUCTION_FORMAT11x REGISTER ) ;
+	// smaliTreeWalker.g:838:1: insn_format11x : ^( I_STATEMENT_FORMAT11x INSTRUCTION_FORMAT11x REGISTER ) ;
 	public final void insn_format11x() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT11x110=null;
-		CommonTree REGISTER111=null;
+		CommonTree INSTRUCTION_FORMAT11x120=null;
+		CommonTree REGISTER121=null;
 
 		try {
-			// smaliTreeWalker.g:791:3: ( ^( I_STATEMENT_FORMAT11x INSTRUCTION_FORMAT11x REGISTER ) )
-			// smaliTreeWalker.g:792:5: ^( I_STATEMENT_FORMAT11x INSTRUCTION_FORMAT11x REGISTER )
+			// smaliTreeWalker.g:839:3: ( ^( I_STATEMENT_FORMAT11x INSTRUCTION_FORMAT11x REGISTER ) )
+			// smaliTreeWalker.g:840:5: ^( I_STATEMENT_FORMAT11x INSTRUCTION_FORMAT11x REGISTER )
 			{
-			match(input,I_STATEMENT_FORMAT11x,FOLLOW_I_STATEMENT_FORMAT11x_in_insn_format11x2121); 
+			match(input,I_STATEMENT_FORMAT11x,FOLLOW_I_STATEMENT_FORMAT11x_in_insn_format11x2298); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT11x110=(CommonTree)match(input,INSTRUCTION_FORMAT11x,FOLLOW_INSTRUCTION_FORMAT11x_in_insn_format11x2123); 
-			REGISTER111=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format11x2125); 
+			INSTRUCTION_FORMAT11x120=(CommonTree)match(input,INSTRUCTION_FORMAT11x,FOLLOW_INSTRUCTION_FORMAT11x_in_insn_format11x2300); 
+			REGISTER121=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format11x2302); 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT11x110!=null?INSTRUCTION_FORMAT11x110.getText():null));
-			      short regA = parseRegister_byte((REGISTER111!=null?REGISTER111.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT11x120!=null?INSTRUCTION_FORMAT11x120.getText():null));
+			      short regA = parseRegister_byte((REGISTER121!=null?REGISTER121.getText():null));
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction11x(opcode, regA));
 			    
@@ -4736,25 +5297,25 @@
 
 
 	// $ANTLR start "insn_format12x"
-	// smaliTreeWalker.g:800:1: insn_format12x : ^( I_STATEMENT_FORMAT12x INSTRUCTION_FORMAT12x registerA= REGISTER registerB= REGISTER ) ;
+	// smaliTreeWalker.g:848:1: insn_format12x : ^( I_STATEMENT_FORMAT12x INSTRUCTION_FORMAT12x registerA= REGISTER registerB= REGISTER ) ;
 	public final void insn_format12x() throws RecognitionException {
 		CommonTree registerA=null;
 		CommonTree registerB=null;
-		CommonTree INSTRUCTION_FORMAT12x112=null;
+		CommonTree INSTRUCTION_FORMAT12x122=null;
 
 		try {
-			// smaliTreeWalker.g:801:3: ( ^( I_STATEMENT_FORMAT12x INSTRUCTION_FORMAT12x registerA= REGISTER registerB= REGISTER ) )
-			// smaliTreeWalker.g:802:5: ^( I_STATEMENT_FORMAT12x INSTRUCTION_FORMAT12x registerA= REGISTER registerB= REGISTER )
+			// smaliTreeWalker.g:849:3: ( ^( I_STATEMENT_FORMAT12x INSTRUCTION_FORMAT12x registerA= REGISTER registerB= REGISTER ) )
+			// smaliTreeWalker.g:850:5: ^( I_STATEMENT_FORMAT12x INSTRUCTION_FORMAT12x registerA= REGISTER registerB= REGISTER )
 			{
-			match(input,I_STATEMENT_FORMAT12x,FOLLOW_I_STATEMENT_FORMAT12x_in_insn_format12x2148); 
+			match(input,I_STATEMENT_FORMAT12x,FOLLOW_I_STATEMENT_FORMAT12x_in_insn_format12x2325); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT12x112=(CommonTree)match(input,INSTRUCTION_FORMAT12x,FOLLOW_INSTRUCTION_FORMAT12x_in_insn_format12x2150); 
-			registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format12x2154); 
-			registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format12x2158); 
+			INSTRUCTION_FORMAT12x122=(CommonTree)match(input,INSTRUCTION_FORMAT12x,FOLLOW_INSTRUCTION_FORMAT12x_in_insn_format12x2327); 
+			registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format12x2331); 
+			registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format12x2335); 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT12x112!=null?INSTRUCTION_FORMAT12x112.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT12x122!=null?INSTRUCTION_FORMAT12x122.getText():null));
 			      byte regA = parseRegister_nibble((registerA!=null?registerA.getText():null));
 			      byte regB = parseRegister_nibble((registerB!=null?registerB.getText():null));
 
@@ -4776,34 +5337,34 @@
 
 
 	// $ANTLR start "insn_format20bc"
-	// smaliTreeWalker.g:811:1: insn_format20bc : ^( I_STATEMENT_FORMAT20bc INSTRUCTION_FORMAT20bc verification_error_type verification_error_reference ) ;
+	// smaliTreeWalker.g:859:1: insn_format20bc : ^( I_STATEMENT_FORMAT20bc INSTRUCTION_FORMAT20bc verification_error_type verification_error_reference ) ;
 	public final void insn_format20bc() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT20bc113=null;
-		int verification_error_type114 =0;
-		ImmutableReference verification_error_reference115 =null;
+		CommonTree INSTRUCTION_FORMAT20bc123=null;
+		int verification_error_type124 =0;
+		ImmutableReference verification_error_reference125 =null;
 
 		try {
-			// smaliTreeWalker.g:812:3: ( ^( I_STATEMENT_FORMAT20bc INSTRUCTION_FORMAT20bc verification_error_type verification_error_reference ) )
-			// smaliTreeWalker.g:813:5: ^( I_STATEMENT_FORMAT20bc INSTRUCTION_FORMAT20bc verification_error_type verification_error_reference )
+			// smaliTreeWalker.g:860:3: ( ^( I_STATEMENT_FORMAT20bc INSTRUCTION_FORMAT20bc verification_error_type verification_error_reference ) )
+			// smaliTreeWalker.g:861:5: ^( I_STATEMENT_FORMAT20bc INSTRUCTION_FORMAT20bc verification_error_type verification_error_reference )
 			{
-			match(input,I_STATEMENT_FORMAT20bc,FOLLOW_I_STATEMENT_FORMAT20bc_in_insn_format20bc2181); 
+			match(input,I_STATEMENT_FORMAT20bc,FOLLOW_I_STATEMENT_FORMAT20bc_in_insn_format20bc2358); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT20bc113=(CommonTree)match(input,INSTRUCTION_FORMAT20bc,FOLLOW_INSTRUCTION_FORMAT20bc_in_insn_format20bc2183); 
-			pushFollow(FOLLOW_verification_error_type_in_insn_format20bc2185);
-			verification_error_type114=verification_error_type();
+			INSTRUCTION_FORMAT20bc123=(CommonTree)match(input,INSTRUCTION_FORMAT20bc,FOLLOW_INSTRUCTION_FORMAT20bc_in_insn_format20bc2360); 
+			pushFollow(FOLLOW_verification_error_type_in_insn_format20bc2362);
+			verification_error_type124=verification_error_type();
 			state._fsp--;
 
-			pushFollow(FOLLOW_verification_error_reference_in_insn_format20bc2187);
-			verification_error_reference115=verification_error_reference();
+			pushFollow(FOLLOW_verification_error_reference_in_insn_format20bc2364);
+			verification_error_reference125=verification_error_reference();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT20bc113!=null?INSTRUCTION_FORMAT20bc113.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT20bc123!=null?INSTRUCTION_FORMAT20bc123.getText():null));
 
-			      int verificationError = verification_error_type114;
-			      ImmutableReference referencedItem = verification_error_reference115;
+			      int verificationError = verification_error_type124;
+			      ImmutableReference referencedItem = verification_error_reference125;
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction20bc(opcode, verificationError,
 			              dexBuilder.internReference(referencedItem)));
@@ -4824,27 +5385,27 @@
 
 
 	// $ANTLR start "insn_format20t"
-	// smaliTreeWalker.g:824:1: insn_format20t : ^( I_STATEMENT_FORMAT20t INSTRUCTION_FORMAT20t label_ref ) ;
+	// smaliTreeWalker.g:872:1: insn_format20t : ^( I_STATEMENT_FORMAT20t INSTRUCTION_FORMAT20t label_ref ) ;
 	public final void insn_format20t() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT20t116=null;
-		Label label_ref117 =null;
+		CommonTree INSTRUCTION_FORMAT20t126=null;
+		Label label_ref127 =null;
 
 		try {
-			// smaliTreeWalker.g:825:3: ( ^( I_STATEMENT_FORMAT20t INSTRUCTION_FORMAT20t label_ref ) )
-			// smaliTreeWalker.g:826:5: ^( I_STATEMENT_FORMAT20t INSTRUCTION_FORMAT20t label_ref )
+			// smaliTreeWalker.g:873:3: ( ^( I_STATEMENT_FORMAT20t INSTRUCTION_FORMAT20t label_ref ) )
+			// smaliTreeWalker.g:874:5: ^( I_STATEMENT_FORMAT20t INSTRUCTION_FORMAT20t label_ref )
 			{
-			match(input,I_STATEMENT_FORMAT20t,FOLLOW_I_STATEMENT_FORMAT20t_in_insn_format20t2210); 
+			match(input,I_STATEMENT_FORMAT20t,FOLLOW_I_STATEMENT_FORMAT20t_in_insn_format20t2387); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT20t116=(CommonTree)match(input,INSTRUCTION_FORMAT20t,FOLLOW_INSTRUCTION_FORMAT20t_in_insn_format20t2212); 
-			pushFollow(FOLLOW_label_ref_in_insn_format20t2214);
-			label_ref117=label_ref();
+			INSTRUCTION_FORMAT20t126=(CommonTree)match(input,INSTRUCTION_FORMAT20t,FOLLOW_INSTRUCTION_FORMAT20t_in_insn_format20t2389); 
+			pushFollow(FOLLOW_label_ref_in_insn_format20t2391);
+			label_ref127=label_ref();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT20t116!=null?INSTRUCTION_FORMAT20t116.getText():null));
-			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction20t(opcode, label_ref117));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT20t126!=null?INSTRUCTION_FORMAT20t126.getText():null));
+			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction20t(opcode, label_ref127));
 			    
 			}
 
@@ -4862,17 +5423,17 @@
 
 
 	// $ANTLR start "insn_format21c_field"
-	// smaliTreeWalker.g:832:1: insn_format21c_field : ^( I_STATEMENT_FORMAT21c_FIELD inst= ( INSTRUCTION_FORMAT21c_FIELD | INSTRUCTION_FORMAT21c_FIELD_ODEX ) REGISTER field_reference ) ;
+	// smaliTreeWalker.g:880:1: insn_format21c_field : ^( I_STATEMENT_FORMAT21c_FIELD inst= ( INSTRUCTION_FORMAT21c_FIELD | INSTRUCTION_FORMAT21c_FIELD_ODEX ) REGISTER field_reference ) ;
 	public final void insn_format21c_field() throws RecognitionException {
 		CommonTree inst=null;
-		CommonTree REGISTER118=null;
-		ImmutableFieldReference field_reference119 =null;
+		CommonTree REGISTER128=null;
+		TreeRuleReturnScope field_reference129 =null;
 
 		try {
-			// smaliTreeWalker.g:833:3: ( ^( I_STATEMENT_FORMAT21c_FIELD inst= ( INSTRUCTION_FORMAT21c_FIELD | INSTRUCTION_FORMAT21c_FIELD_ODEX ) REGISTER field_reference ) )
-			// smaliTreeWalker.g:834:5: ^( I_STATEMENT_FORMAT21c_FIELD inst= ( INSTRUCTION_FORMAT21c_FIELD | INSTRUCTION_FORMAT21c_FIELD_ODEX ) REGISTER field_reference )
+			// smaliTreeWalker.g:881:3: ( ^( I_STATEMENT_FORMAT21c_FIELD inst= ( INSTRUCTION_FORMAT21c_FIELD | INSTRUCTION_FORMAT21c_FIELD_ODEX ) REGISTER field_reference ) )
+			// smaliTreeWalker.g:882:5: ^( I_STATEMENT_FORMAT21c_FIELD inst= ( INSTRUCTION_FORMAT21c_FIELD | INSTRUCTION_FORMAT21c_FIELD_ODEX ) REGISTER field_reference )
 			{
-			match(input,I_STATEMENT_FORMAT21c_FIELD,FOLLOW_I_STATEMENT_FORMAT21c_FIELD_in_insn_format21c_field2237); 
+			match(input,I_STATEMENT_FORMAT21c_FIELD,FOLLOW_I_STATEMENT_FORMAT21c_FIELD_in_insn_format21c_field2414); 
 			match(input, Token.DOWN, null); 
 			inst=(CommonTree)input.LT(1);
 			if ( (input.LA(1) >= INSTRUCTION_FORMAT21c_FIELD && input.LA(1) <= INSTRUCTION_FORMAT21c_FIELD_ODEX) ) {
@@ -4883,18 +5444,18 @@
 				MismatchedSetException mse = new MismatchedSetException(null,input);
 				throw mse;
 			}
-			REGISTER118=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21c_field2249); 
-			pushFollow(FOLLOW_field_reference_in_insn_format21c_field2251);
-			field_reference119=field_reference();
+			REGISTER128=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21c_field2426); 
+			pushFollow(FOLLOW_field_reference_in_insn_format21c_field2428);
+			field_reference129=field_reference();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
 			      Opcode opcode = opcodes.getOpcodeByName((inst!=null?inst.getText():null));
-			      short regA = parseRegister_byte((REGISTER118!=null?REGISTER118.getText():null));
+			      short regA = parseRegister_byte((REGISTER128!=null?REGISTER128.getText():null));
 
-			      ImmutableFieldReference fieldReference = field_reference119;
+			      ImmutableFieldReference fieldReference = (field_reference129!=null?((smaliTreeWalker.field_reference_return)field_reference129).fieldReference:null);
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction21c(opcode, regA,
 			              dexBuilder.internFieldReference(fieldReference)));
@@ -4914,33 +5475,133 @@
 
 
 
-	// $ANTLR start "insn_format21c_string"
-	// smaliTreeWalker.g:845:1: insn_format21c_string : ^( I_STATEMENT_FORMAT21c_STRING INSTRUCTION_FORMAT21c_STRING REGISTER string_literal ) ;
-	public final void insn_format21c_string() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT21c_STRING120=null;
-		CommonTree REGISTER121=null;
-		String string_literal122 =null;
+	// $ANTLR start "insn_format21c_method_handle"
+	// smaliTreeWalker.g:893:1: insn_format21c_method_handle : ^( I_STATEMENT_FORMAT21c_METHOD_HANDLE inst= ( INSTRUCTION_FORMAT21c_METHOD_HANDLE ) REGISTER method_handle_reference ) ;
+	public final void insn_format21c_method_handle() throws RecognitionException {
+		CommonTree inst=null;
+		CommonTree REGISTER130=null;
+		ImmutableMethodHandleReference method_handle_reference131 =null;
 
 		try {
-			// smaliTreeWalker.g:846:3: ( ^( I_STATEMENT_FORMAT21c_STRING INSTRUCTION_FORMAT21c_STRING REGISTER string_literal ) )
-			// smaliTreeWalker.g:847:5: ^( I_STATEMENT_FORMAT21c_STRING INSTRUCTION_FORMAT21c_STRING REGISTER string_literal )
+			// smaliTreeWalker.g:894:3: ( ^( I_STATEMENT_FORMAT21c_METHOD_HANDLE inst= ( INSTRUCTION_FORMAT21c_METHOD_HANDLE ) REGISTER method_handle_reference ) )
+			// smaliTreeWalker.g:895:5: ^( I_STATEMENT_FORMAT21c_METHOD_HANDLE inst= ( INSTRUCTION_FORMAT21c_METHOD_HANDLE ) REGISTER method_handle_reference )
 			{
-			match(input,I_STATEMENT_FORMAT21c_STRING,FOLLOW_I_STATEMENT_FORMAT21c_STRING_in_insn_format21c_string2274); 
+			match(input,I_STATEMENT_FORMAT21c_METHOD_HANDLE,FOLLOW_I_STATEMENT_FORMAT21c_METHOD_HANDLE_in_insn_format21c_method_handle2451); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT21c_STRING120=(CommonTree)match(input,INSTRUCTION_FORMAT21c_STRING,FOLLOW_INSTRUCTION_FORMAT21c_STRING_in_insn_format21c_string2276); 
-			REGISTER121=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21c_string2278); 
-			pushFollow(FOLLOW_string_literal_in_insn_format21c_string2280);
-			string_literal122=string_literal();
+			// smaliTreeWalker.g:895:48: ( INSTRUCTION_FORMAT21c_METHOD_HANDLE )
+			// smaliTreeWalker.g:895:49: INSTRUCTION_FORMAT21c_METHOD_HANDLE
+			{
+			inst=(CommonTree)match(input,INSTRUCTION_FORMAT21c_METHOD_HANDLE,FOLLOW_INSTRUCTION_FORMAT21c_METHOD_HANDLE_in_insn_format21c_method_handle2456); 
+			}
+
+			REGISTER130=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21c_method_handle2459); 
+			pushFollow(FOLLOW_method_handle_reference_in_insn_format21c_method_handle2461);
+			method_handle_reference131=method_handle_reference();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT21c_STRING120!=null?INSTRUCTION_FORMAT21c_STRING120.getText():null));
-			      short regA = parseRegister_byte((REGISTER121!=null?REGISTER121.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((inst!=null?inst.getText():null));
+			      short regA = parseRegister_byte((REGISTER130!=null?REGISTER130.getText():null));
+
+			      ImmutableMethodHandleReference methodHandleReference = method_handle_reference131;
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction21c(opcode, regA,
-			              dexBuilder.internStringReference(string_literal122)));
+			              dexBuilder.internMethodHandle(methodHandleReference)));
+			    
+			}
+
+		}
+		catch (RecognitionException re) {
+			reportError(re);
+			recover(input,re);
+		}
+		finally {
+			// do for sure before leaving
+		}
+	}
+	// $ANTLR end "insn_format21c_method_handle"
+
+
+
+	// $ANTLR start "insn_format21c_method_type"
+	// smaliTreeWalker.g:906:1: insn_format21c_method_type : ^( I_STATEMENT_FORMAT21c_METHOD_TYPE inst= ( INSTRUCTION_FORMAT21c_METHOD_TYPE ) REGISTER method_prototype ) ;
+	public final void insn_format21c_method_type() throws RecognitionException {
+		CommonTree inst=null;
+		CommonTree REGISTER132=null;
+		ImmutableMethodProtoReference method_prototype133 =null;
+
+		try {
+			// smaliTreeWalker.g:907:3: ( ^( I_STATEMENT_FORMAT21c_METHOD_TYPE inst= ( INSTRUCTION_FORMAT21c_METHOD_TYPE ) REGISTER method_prototype ) )
+			// smaliTreeWalker.g:908:5: ^( I_STATEMENT_FORMAT21c_METHOD_TYPE inst= ( INSTRUCTION_FORMAT21c_METHOD_TYPE ) REGISTER method_prototype )
+			{
+			match(input,I_STATEMENT_FORMAT21c_METHOD_TYPE,FOLLOW_I_STATEMENT_FORMAT21c_METHOD_TYPE_in_insn_format21c_method_type2484); 
+			match(input, Token.DOWN, null); 
+			// smaliTreeWalker.g:908:46: ( INSTRUCTION_FORMAT21c_METHOD_TYPE )
+			// smaliTreeWalker.g:908:47: INSTRUCTION_FORMAT21c_METHOD_TYPE
+			{
+			inst=(CommonTree)match(input,INSTRUCTION_FORMAT21c_METHOD_TYPE,FOLLOW_INSTRUCTION_FORMAT21c_METHOD_TYPE_in_insn_format21c_method_type2489); 
+			}
+
+			REGISTER132=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21c_method_type2492); 
+			pushFollow(FOLLOW_method_prototype_in_insn_format21c_method_type2494);
+			method_prototype133=method_prototype();
+			state._fsp--;
+
+			match(input, Token.UP, null); 
+
+
+			        Opcode opcode = opcodes.getOpcodeByName((inst!=null?inst.getText():null));
+			        short regA = parseRegister_byte((REGISTER132!=null?REGISTER132.getText():null));
+
+			        ImmutableMethodProtoReference methodProtoReference = method_prototype133;
+
+			        method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction21c(opcode, regA,
+			                dexBuilder.internMethodProtoReference(methodProtoReference)));
+			    
+			}
+
+		}
+		catch (RecognitionException re) {
+			reportError(re);
+			recover(input,re);
+		}
+		finally {
+			// do for sure before leaving
+		}
+	}
+	// $ANTLR end "insn_format21c_method_type"
+
+
+
+	// $ANTLR start "insn_format21c_string"
+	// smaliTreeWalker.g:919:1: insn_format21c_string : ^( I_STATEMENT_FORMAT21c_STRING INSTRUCTION_FORMAT21c_STRING REGISTER string_literal ) ;
+	public final void insn_format21c_string() throws RecognitionException {
+		CommonTree INSTRUCTION_FORMAT21c_STRING134=null;
+		CommonTree REGISTER135=null;
+		String string_literal136 =null;
+
+		try {
+			// smaliTreeWalker.g:920:3: ( ^( I_STATEMENT_FORMAT21c_STRING INSTRUCTION_FORMAT21c_STRING REGISTER string_literal ) )
+			// smaliTreeWalker.g:921:5: ^( I_STATEMENT_FORMAT21c_STRING INSTRUCTION_FORMAT21c_STRING REGISTER string_literal )
+			{
+			match(input,I_STATEMENT_FORMAT21c_STRING,FOLLOW_I_STATEMENT_FORMAT21c_STRING_in_insn_format21c_string2517); 
+			match(input, Token.DOWN, null); 
+			INSTRUCTION_FORMAT21c_STRING134=(CommonTree)match(input,INSTRUCTION_FORMAT21c_STRING,FOLLOW_INSTRUCTION_FORMAT21c_STRING_in_insn_format21c_string2519); 
+			REGISTER135=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21c_string2521); 
+			pushFollow(FOLLOW_string_literal_in_insn_format21c_string2523);
+			string_literal136=string_literal();
+			state._fsp--;
+
+			match(input, Token.UP, null); 
+
+
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT21c_STRING134!=null?INSTRUCTION_FORMAT21c_STRING134.getText():null));
+			      short regA = parseRegister_byte((REGISTER135!=null?REGISTER135.getText():null));
+
+			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction21c(opcode, regA,
+			              dexBuilder.internStringReference(string_literal136)));
 			    
 			}
 
@@ -4958,32 +5619,32 @@
 
 
 	// $ANTLR start "insn_format21c_type"
-	// smaliTreeWalker.g:856:1: insn_format21c_type : ^( I_STATEMENT_FORMAT21c_TYPE INSTRUCTION_FORMAT21c_TYPE REGISTER nonvoid_type_descriptor ) ;
+	// smaliTreeWalker.g:930:1: insn_format21c_type : ^( I_STATEMENT_FORMAT21c_TYPE INSTRUCTION_FORMAT21c_TYPE REGISTER nonvoid_type_descriptor ) ;
 	public final void insn_format21c_type() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT21c_TYPE123=null;
-		CommonTree REGISTER124=null;
-		TreeRuleReturnScope nonvoid_type_descriptor125 =null;
+		CommonTree INSTRUCTION_FORMAT21c_TYPE137=null;
+		CommonTree REGISTER138=null;
+		TreeRuleReturnScope nonvoid_type_descriptor139 =null;
 
 		try {
-			// smaliTreeWalker.g:857:3: ( ^( I_STATEMENT_FORMAT21c_TYPE INSTRUCTION_FORMAT21c_TYPE REGISTER nonvoid_type_descriptor ) )
-			// smaliTreeWalker.g:858:5: ^( I_STATEMENT_FORMAT21c_TYPE INSTRUCTION_FORMAT21c_TYPE REGISTER nonvoid_type_descriptor )
+			// smaliTreeWalker.g:931:3: ( ^( I_STATEMENT_FORMAT21c_TYPE INSTRUCTION_FORMAT21c_TYPE REGISTER nonvoid_type_descriptor ) )
+			// smaliTreeWalker.g:932:5: ^( I_STATEMENT_FORMAT21c_TYPE INSTRUCTION_FORMAT21c_TYPE REGISTER nonvoid_type_descriptor )
 			{
-			match(input,I_STATEMENT_FORMAT21c_TYPE,FOLLOW_I_STATEMENT_FORMAT21c_TYPE_in_insn_format21c_type2303); 
+			match(input,I_STATEMENT_FORMAT21c_TYPE,FOLLOW_I_STATEMENT_FORMAT21c_TYPE_in_insn_format21c_type2546); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT21c_TYPE123=(CommonTree)match(input,INSTRUCTION_FORMAT21c_TYPE,FOLLOW_INSTRUCTION_FORMAT21c_TYPE_in_insn_format21c_type2305); 
-			REGISTER124=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21c_type2307); 
-			pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format21c_type2309);
-			nonvoid_type_descriptor125=nonvoid_type_descriptor();
+			INSTRUCTION_FORMAT21c_TYPE137=(CommonTree)match(input,INSTRUCTION_FORMAT21c_TYPE,FOLLOW_INSTRUCTION_FORMAT21c_TYPE_in_insn_format21c_type2548); 
+			REGISTER138=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21c_type2550); 
+			pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format21c_type2552);
+			nonvoid_type_descriptor139=nonvoid_type_descriptor();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT21c_TYPE123!=null?INSTRUCTION_FORMAT21c_TYPE123.getText():null));
-			      short regA = parseRegister_byte((REGISTER124!=null?REGISTER124.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT21c_TYPE137!=null?INSTRUCTION_FORMAT21c_TYPE137.getText():null));
+			      short regA = parseRegister_byte((REGISTER138!=null?REGISTER138.getText():null));
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction21c(opcode, regA,
-			              dexBuilder.internTypeReference((nonvoid_type_descriptor125!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor125).type:null))));
+			              dexBuilder.internTypeReference((nonvoid_type_descriptor139!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor139).type:null))));
 			    
 			}
 
@@ -5001,31 +5662,31 @@
 
 
 	// $ANTLR start "insn_format21ih"
-	// smaliTreeWalker.g:867:1: insn_format21ih : ^( I_STATEMENT_FORMAT21ih INSTRUCTION_FORMAT21ih REGISTER fixed_32bit_literal ) ;
+	// smaliTreeWalker.g:941:1: insn_format21ih : ^( I_STATEMENT_FORMAT21ih INSTRUCTION_FORMAT21ih REGISTER fixed_32bit_literal ) ;
 	public final void insn_format21ih() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT21ih126=null;
-		CommonTree REGISTER127=null;
-		int fixed_32bit_literal128 =0;
+		CommonTree INSTRUCTION_FORMAT21ih140=null;
+		CommonTree REGISTER141=null;
+		int fixed_32bit_literal142 =0;
 
 		try {
-			// smaliTreeWalker.g:868:3: ( ^( I_STATEMENT_FORMAT21ih INSTRUCTION_FORMAT21ih REGISTER fixed_32bit_literal ) )
-			// smaliTreeWalker.g:869:5: ^( I_STATEMENT_FORMAT21ih INSTRUCTION_FORMAT21ih REGISTER fixed_32bit_literal )
+			// smaliTreeWalker.g:942:3: ( ^( I_STATEMENT_FORMAT21ih INSTRUCTION_FORMAT21ih REGISTER fixed_32bit_literal ) )
+			// smaliTreeWalker.g:943:5: ^( I_STATEMENT_FORMAT21ih INSTRUCTION_FORMAT21ih REGISTER fixed_32bit_literal )
 			{
-			match(input,I_STATEMENT_FORMAT21ih,FOLLOW_I_STATEMENT_FORMAT21ih_in_insn_format21ih2332); 
+			match(input,I_STATEMENT_FORMAT21ih,FOLLOW_I_STATEMENT_FORMAT21ih_in_insn_format21ih2575); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT21ih126=(CommonTree)match(input,INSTRUCTION_FORMAT21ih,FOLLOW_INSTRUCTION_FORMAT21ih_in_insn_format21ih2334); 
-			REGISTER127=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21ih2336); 
-			pushFollow(FOLLOW_fixed_32bit_literal_in_insn_format21ih2338);
-			fixed_32bit_literal128=fixed_32bit_literal();
+			INSTRUCTION_FORMAT21ih140=(CommonTree)match(input,INSTRUCTION_FORMAT21ih,FOLLOW_INSTRUCTION_FORMAT21ih_in_insn_format21ih2577); 
+			REGISTER141=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21ih2579); 
+			pushFollow(FOLLOW_fixed_32bit_literal_in_insn_format21ih2581);
+			fixed_32bit_literal142=fixed_32bit_literal();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT21ih126!=null?INSTRUCTION_FORMAT21ih126.getText():null));
-			      short regA = parseRegister_byte((REGISTER127!=null?REGISTER127.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT21ih140!=null?INSTRUCTION_FORMAT21ih140.getText():null));
+			      short regA = parseRegister_byte((REGISTER141!=null?REGISTER141.getText():null));
 
-			      int litB = fixed_32bit_literal128;
+			      int litB = fixed_32bit_literal142;
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction21ih(opcode, regA, litB));
 			    
@@ -5045,31 +5706,31 @@
 
 
 	// $ANTLR start "insn_format21lh"
-	// smaliTreeWalker.g:879:1: insn_format21lh : ^( I_STATEMENT_FORMAT21lh INSTRUCTION_FORMAT21lh REGISTER fixed_64bit_literal ) ;
+	// smaliTreeWalker.g:953:1: insn_format21lh : ^( I_STATEMENT_FORMAT21lh INSTRUCTION_FORMAT21lh REGISTER fixed_64bit_literal ) ;
 	public final void insn_format21lh() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT21lh129=null;
-		CommonTree REGISTER130=null;
-		long fixed_64bit_literal131 =0;
+		CommonTree INSTRUCTION_FORMAT21lh143=null;
+		CommonTree REGISTER144=null;
+		long fixed_64bit_literal145 =0;
 
 		try {
-			// smaliTreeWalker.g:880:3: ( ^( I_STATEMENT_FORMAT21lh INSTRUCTION_FORMAT21lh REGISTER fixed_64bit_literal ) )
-			// smaliTreeWalker.g:881:5: ^( I_STATEMENT_FORMAT21lh INSTRUCTION_FORMAT21lh REGISTER fixed_64bit_literal )
+			// smaliTreeWalker.g:954:3: ( ^( I_STATEMENT_FORMAT21lh INSTRUCTION_FORMAT21lh REGISTER fixed_64bit_literal ) )
+			// smaliTreeWalker.g:955:5: ^( I_STATEMENT_FORMAT21lh INSTRUCTION_FORMAT21lh REGISTER fixed_64bit_literal )
 			{
-			match(input,I_STATEMENT_FORMAT21lh,FOLLOW_I_STATEMENT_FORMAT21lh_in_insn_format21lh2361); 
+			match(input,I_STATEMENT_FORMAT21lh,FOLLOW_I_STATEMENT_FORMAT21lh_in_insn_format21lh2604); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT21lh129=(CommonTree)match(input,INSTRUCTION_FORMAT21lh,FOLLOW_INSTRUCTION_FORMAT21lh_in_insn_format21lh2363); 
-			REGISTER130=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21lh2365); 
-			pushFollow(FOLLOW_fixed_64bit_literal_in_insn_format21lh2367);
-			fixed_64bit_literal131=fixed_64bit_literal();
+			INSTRUCTION_FORMAT21lh143=(CommonTree)match(input,INSTRUCTION_FORMAT21lh,FOLLOW_INSTRUCTION_FORMAT21lh_in_insn_format21lh2606); 
+			REGISTER144=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21lh2608); 
+			pushFollow(FOLLOW_fixed_64bit_literal_in_insn_format21lh2610);
+			fixed_64bit_literal145=fixed_64bit_literal();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT21lh129!=null?INSTRUCTION_FORMAT21lh129.getText():null));
-			      short regA = parseRegister_byte((REGISTER130!=null?REGISTER130.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT21lh143!=null?INSTRUCTION_FORMAT21lh143.getText():null));
+			      short regA = parseRegister_byte((REGISTER144!=null?REGISTER144.getText():null));
 
-			      long litB = fixed_64bit_literal131;
+			      long litB = fixed_64bit_literal145;
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction21lh(opcode, regA, litB));
 			    
@@ -5089,31 +5750,31 @@
 
 
 	// $ANTLR start "insn_format21s"
-	// smaliTreeWalker.g:891:1: insn_format21s : ^( I_STATEMENT_FORMAT21s INSTRUCTION_FORMAT21s REGISTER short_integral_literal ) ;
+	// smaliTreeWalker.g:965:1: insn_format21s : ^( I_STATEMENT_FORMAT21s INSTRUCTION_FORMAT21s REGISTER short_integral_literal ) ;
 	public final void insn_format21s() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT21s132=null;
-		CommonTree REGISTER133=null;
-		short short_integral_literal134 =0;
+		CommonTree INSTRUCTION_FORMAT21s146=null;
+		CommonTree REGISTER147=null;
+		short short_integral_literal148 =0;
 
 		try {
-			// smaliTreeWalker.g:892:3: ( ^( I_STATEMENT_FORMAT21s INSTRUCTION_FORMAT21s REGISTER short_integral_literal ) )
-			// smaliTreeWalker.g:893:5: ^( I_STATEMENT_FORMAT21s INSTRUCTION_FORMAT21s REGISTER short_integral_literal )
+			// smaliTreeWalker.g:966:3: ( ^( I_STATEMENT_FORMAT21s INSTRUCTION_FORMAT21s REGISTER short_integral_literal ) )
+			// smaliTreeWalker.g:967:5: ^( I_STATEMENT_FORMAT21s INSTRUCTION_FORMAT21s REGISTER short_integral_literal )
 			{
-			match(input,I_STATEMENT_FORMAT21s,FOLLOW_I_STATEMENT_FORMAT21s_in_insn_format21s2390); 
+			match(input,I_STATEMENT_FORMAT21s,FOLLOW_I_STATEMENT_FORMAT21s_in_insn_format21s2633); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT21s132=(CommonTree)match(input,INSTRUCTION_FORMAT21s,FOLLOW_INSTRUCTION_FORMAT21s_in_insn_format21s2392); 
-			REGISTER133=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21s2394); 
-			pushFollow(FOLLOW_short_integral_literal_in_insn_format21s2396);
-			short_integral_literal134=short_integral_literal();
+			INSTRUCTION_FORMAT21s146=(CommonTree)match(input,INSTRUCTION_FORMAT21s,FOLLOW_INSTRUCTION_FORMAT21s_in_insn_format21s2635); 
+			REGISTER147=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21s2637); 
+			pushFollow(FOLLOW_short_integral_literal_in_insn_format21s2639);
+			short_integral_literal148=short_integral_literal();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT21s132!=null?INSTRUCTION_FORMAT21s132.getText():null));
-			      short regA = parseRegister_byte((REGISTER133!=null?REGISTER133.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT21s146!=null?INSTRUCTION_FORMAT21s146.getText():null));
+			      short regA = parseRegister_byte((REGISTER147!=null?REGISTER147.getText():null));
 
-			      short litB = short_integral_literal134;
+			      short litB = short_integral_literal148;
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction21s(opcode, regA, litB));
 			    
@@ -5133,31 +5794,31 @@
 
 
 	// $ANTLR start "insn_format21t"
-	// smaliTreeWalker.g:903:1: insn_format21t : ^( I_STATEMENT_FORMAT21t INSTRUCTION_FORMAT21t REGISTER label_ref ) ;
+	// smaliTreeWalker.g:977:1: insn_format21t : ^( I_STATEMENT_FORMAT21t INSTRUCTION_FORMAT21t REGISTER label_ref ) ;
 	public final void insn_format21t() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT21t135=null;
-		CommonTree REGISTER136=null;
-		Label label_ref137 =null;
+		CommonTree INSTRUCTION_FORMAT21t149=null;
+		CommonTree REGISTER150=null;
+		Label label_ref151 =null;
 
 		try {
-			// smaliTreeWalker.g:904:3: ( ^( I_STATEMENT_FORMAT21t INSTRUCTION_FORMAT21t REGISTER label_ref ) )
-			// smaliTreeWalker.g:905:5: ^( I_STATEMENT_FORMAT21t INSTRUCTION_FORMAT21t REGISTER label_ref )
+			// smaliTreeWalker.g:978:3: ( ^( I_STATEMENT_FORMAT21t INSTRUCTION_FORMAT21t REGISTER label_ref ) )
+			// smaliTreeWalker.g:979:5: ^( I_STATEMENT_FORMAT21t INSTRUCTION_FORMAT21t REGISTER label_ref )
 			{
-			match(input,I_STATEMENT_FORMAT21t,FOLLOW_I_STATEMENT_FORMAT21t_in_insn_format21t2419); 
+			match(input,I_STATEMENT_FORMAT21t,FOLLOW_I_STATEMENT_FORMAT21t_in_insn_format21t2662); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT21t135=(CommonTree)match(input,INSTRUCTION_FORMAT21t,FOLLOW_INSTRUCTION_FORMAT21t_in_insn_format21t2421); 
-			REGISTER136=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21t2423); 
-			pushFollow(FOLLOW_label_ref_in_insn_format21t2425);
-			label_ref137=label_ref();
+			INSTRUCTION_FORMAT21t149=(CommonTree)match(input,INSTRUCTION_FORMAT21t,FOLLOW_INSTRUCTION_FORMAT21t_in_insn_format21t2664); 
+			REGISTER150=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format21t2666); 
+			pushFollow(FOLLOW_label_ref_in_insn_format21t2668);
+			label_ref151=label_ref();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT21t135!=null?INSTRUCTION_FORMAT21t135.getText():null));
-			      short regA = parseRegister_byte((REGISTER136!=null?REGISTER136.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT21t149!=null?INSTRUCTION_FORMAT21t149.getText():null));
+			      short regA = parseRegister_byte((REGISTER150!=null?REGISTER150.getText():null));
 
-			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction21t(opcode, regA, label_ref137));
+			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction21t(opcode, regA, label_ref151));
 			    
 			}
 
@@ -5175,34 +5836,34 @@
 
 
 	// $ANTLR start "insn_format22b"
-	// smaliTreeWalker.g:913:1: insn_format22b : ^( I_STATEMENT_FORMAT22b INSTRUCTION_FORMAT22b registerA= REGISTER registerB= REGISTER short_integral_literal ) ;
+	// smaliTreeWalker.g:987:1: insn_format22b : ^( I_STATEMENT_FORMAT22b INSTRUCTION_FORMAT22b registerA= REGISTER registerB= REGISTER short_integral_literal ) ;
 	public final void insn_format22b() throws RecognitionException {
 		CommonTree registerA=null;
 		CommonTree registerB=null;
-		CommonTree INSTRUCTION_FORMAT22b138=null;
-		short short_integral_literal139 =0;
+		CommonTree INSTRUCTION_FORMAT22b152=null;
+		short short_integral_literal153 =0;
 
 		try {
-			// smaliTreeWalker.g:914:3: ( ^( I_STATEMENT_FORMAT22b INSTRUCTION_FORMAT22b registerA= REGISTER registerB= REGISTER short_integral_literal ) )
-			// smaliTreeWalker.g:915:5: ^( I_STATEMENT_FORMAT22b INSTRUCTION_FORMAT22b registerA= REGISTER registerB= REGISTER short_integral_literal )
+			// smaliTreeWalker.g:988:3: ( ^( I_STATEMENT_FORMAT22b INSTRUCTION_FORMAT22b registerA= REGISTER registerB= REGISTER short_integral_literal ) )
+			// smaliTreeWalker.g:989:5: ^( I_STATEMENT_FORMAT22b INSTRUCTION_FORMAT22b registerA= REGISTER registerB= REGISTER short_integral_literal )
 			{
-			match(input,I_STATEMENT_FORMAT22b,FOLLOW_I_STATEMENT_FORMAT22b_in_insn_format22b2448); 
+			match(input,I_STATEMENT_FORMAT22b,FOLLOW_I_STATEMENT_FORMAT22b_in_insn_format22b2691); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT22b138=(CommonTree)match(input,INSTRUCTION_FORMAT22b,FOLLOW_INSTRUCTION_FORMAT22b_in_insn_format22b2450); 
-			registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22b2454); 
-			registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22b2458); 
-			pushFollow(FOLLOW_short_integral_literal_in_insn_format22b2460);
-			short_integral_literal139=short_integral_literal();
+			INSTRUCTION_FORMAT22b152=(CommonTree)match(input,INSTRUCTION_FORMAT22b,FOLLOW_INSTRUCTION_FORMAT22b_in_insn_format22b2693); 
+			registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22b2697); 
+			registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22b2701); 
+			pushFollow(FOLLOW_short_integral_literal_in_insn_format22b2703);
+			short_integral_literal153=short_integral_literal();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT22b138!=null?INSTRUCTION_FORMAT22b138.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT22b152!=null?INSTRUCTION_FORMAT22b152.getText():null));
 			      short regA = parseRegister_byte((registerA!=null?registerA.getText():null));
 			      short regB = parseRegister_byte((registerB!=null?registerB.getText():null));
 
-			      short litC = short_integral_literal139;
+			      short litC = short_integral_literal153;
 			      LiteralTools.checkByte(litC);
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction22b(opcode, regA, regB, litC));
@@ -5223,18 +5884,18 @@
 
 
 	// $ANTLR start "insn_format22c_field"
-	// smaliTreeWalker.g:927:1: insn_format22c_field : ^( I_STATEMENT_FORMAT22c_FIELD inst= ( INSTRUCTION_FORMAT22c_FIELD | INSTRUCTION_FORMAT22c_FIELD_ODEX ) registerA= REGISTER registerB= REGISTER field_reference ) ;
+	// smaliTreeWalker.g:1001:1: insn_format22c_field : ^( I_STATEMENT_FORMAT22c_FIELD inst= ( INSTRUCTION_FORMAT22c_FIELD | INSTRUCTION_FORMAT22c_FIELD_ODEX ) registerA= REGISTER registerB= REGISTER field_reference ) ;
 	public final void insn_format22c_field() throws RecognitionException {
 		CommonTree inst=null;
 		CommonTree registerA=null;
 		CommonTree registerB=null;
-		ImmutableFieldReference field_reference140 =null;
+		TreeRuleReturnScope field_reference154 =null;
 
 		try {
-			// smaliTreeWalker.g:928:3: ( ^( I_STATEMENT_FORMAT22c_FIELD inst= ( INSTRUCTION_FORMAT22c_FIELD | INSTRUCTION_FORMAT22c_FIELD_ODEX ) registerA= REGISTER registerB= REGISTER field_reference ) )
-			// smaliTreeWalker.g:929:5: ^( I_STATEMENT_FORMAT22c_FIELD inst= ( INSTRUCTION_FORMAT22c_FIELD | INSTRUCTION_FORMAT22c_FIELD_ODEX ) registerA= REGISTER registerB= REGISTER field_reference )
+			// smaliTreeWalker.g:1002:3: ( ^( I_STATEMENT_FORMAT22c_FIELD inst= ( INSTRUCTION_FORMAT22c_FIELD | INSTRUCTION_FORMAT22c_FIELD_ODEX ) registerA= REGISTER registerB= REGISTER field_reference ) )
+			// smaliTreeWalker.g:1003:5: ^( I_STATEMENT_FORMAT22c_FIELD inst= ( INSTRUCTION_FORMAT22c_FIELD | INSTRUCTION_FORMAT22c_FIELD_ODEX ) registerA= REGISTER registerB= REGISTER field_reference )
 			{
-			match(input,I_STATEMENT_FORMAT22c_FIELD,FOLLOW_I_STATEMENT_FORMAT22c_FIELD_in_insn_format22c_field2483); 
+			match(input,I_STATEMENT_FORMAT22c_FIELD,FOLLOW_I_STATEMENT_FORMAT22c_FIELD_in_insn_format22c_field2726); 
 			match(input, Token.DOWN, null); 
 			inst=(CommonTree)input.LT(1);
 			if ( (input.LA(1) >= INSTRUCTION_FORMAT22c_FIELD && input.LA(1) <= INSTRUCTION_FORMAT22c_FIELD_ODEX) ) {
@@ -5245,10 +5906,10 @@
 				MismatchedSetException mse = new MismatchedSetException(null,input);
 				throw mse;
 			}
-			registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_field2497); 
-			registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_field2501); 
-			pushFollow(FOLLOW_field_reference_in_insn_format22c_field2503);
-			field_reference140=field_reference();
+			registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_field2740); 
+			registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_field2744); 
+			pushFollow(FOLLOW_field_reference_in_insn_format22c_field2746);
+			field_reference154=field_reference();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
@@ -5258,7 +5919,7 @@
 			      byte regA = parseRegister_nibble((registerA!=null?registerA.getText():null));
 			      byte regB = parseRegister_nibble((registerB!=null?registerB.getText():null));
 
-			      ImmutableFieldReference fieldReference = field_reference140;
+			      ImmutableFieldReference fieldReference = (field_reference154!=null?((smaliTreeWalker.field_reference_return)field_reference154).fieldReference:null);
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction22c(opcode, regA, regB,
 			              dexBuilder.internFieldReference(fieldReference)));
@@ -5279,35 +5940,35 @@
 
 
 	// $ANTLR start "insn_format22c_type"
-	// smaliTreeWalker.g:941:1: insn_format22c_type : ^( I_STATEMENT_FORMAT22c_TYPE INSTRUCTION_FORMAT22c_TYPE registerA= REGISTER registerB= REGISTER nonvoid_type_descriptor ) ;
+	// smaliTreeWalker.g:1015:1: insn_format22c_type : ^( I_STATEMENT_FORMAT22c_TYPE INSTRUCTION_FORMAT22c_TYPE registerA= REGISTER registerB= REGISTER nonvoid_type_descriptor ) ;
 	public final void insn_format22c_type() throws RecognitionException {
 		CommonTree registerA=null;
 		CommonTree registerB=null;
-		CommonTree INSTRUCTION_FORMAT22c_TYPE141=null;
-		TreeRuleReturnScope nonvoid_type_descriptor142 =null;
+		CommonTree INSTRUCTION_FORMAT22c_TYPE155=null;
+		TreeRuleReturnScope nonvoid_type_descriptor156 =null;
 
 		try {
-			// smaliTreeWalker.g:942:3: ( ^( I_STATEMENT_FORMAT22c_TYPE INSTRUCTION_FORMAT22c_TYPE registerA= REGISTER registerB= REGISTER nonvoid_type_descriptor ) )
-			// smaliTreeWalker.g:943:5: ^( I_STATEMENT_FORMAT22c_TYPE INSTRUCTION_FORMAT22c_TYPE registerA= REGISTER registerB= REGISTER nonvoid_type_descriptor )
+			// smaliTreeWalker.g:1016:3: ( ^( I_STATEMENT_FORMAT22c_TYPE INSTRUCTION_FORMAT22c_TYPE registerA= REGISTER registerB= REGISTER nonvoid_type_descriptor ) )
+			// smaliTreeWalker.g:1017:5: ^( I_STATEMENT_FORMAT22c_TYPE INSTRUCTION_FORMAT22c_TYPE registerA= REGISTER registerB= REGISTER nonvoid_type_descriptor )
 			{
-			match(input,I_STATEMENT_FORMAT22c_TYPE,FOLLOW_I_STATEMENT_FORMAT22c_TYPE_in_insn_format22c_type2526); 
+			match(input,I_STATEMENT_FORMAT22c_TYPE,FOLLOW_I_STATEMENT_FORMAT22c_TYPE_in_insn_format22c_type2769); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT22c_TYPE141=(CommonTree)match(input,INSTRUCTION_FORMAT22c_TYPE,FOLLOW_INSTRUCTION_FORMAT22c_TYPE_in_insn_format22c_type2528); 
-			registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_type2532); 
-			registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_type2536); 
-			pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format22c_type2538);
-			nonvoid_type_descriptor142=nonvoid_type_descriptor();
+			INSTRUCTION_FORMAT22c_TYPE155=(CommonTree)match(input,INSTRUCTION_FORMAT22c_TYPE,FOLLOW_INSTRUCTION_FORMAT22c_TYPE_in_insn_format22c_type2771); 
+			registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_type2775); 
+			registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22c_type2779); 
+			pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format22c_type2781);
+			nonvoid_type_descriptor156=nonvoid_type_descriptor();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT22c_TYPE141!=null?INSTRUCTION_FORMAT22c_TYPE141.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT22c_TYPE155!=null?INSTRUCTION_FORMAT22c_TYPE155.getText():null));
 			      byte regA = parseRegister_nibble((registerA!=null?registerA.getText():null));
 			      byte regB = parseRegister_nibble((registerB!=null?registerB.getText():null));
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction22c(opcode, regA, regB,
-			              dexBuilder.internTypeReference((nonvoid_type_descriptor142!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor142).type:null))));
+			              dexBuilder.internTypeReference((nonvoid_type_descriptor156!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor156).type:null))));
 			    
 			}
 
@@ -5325,34 +5986,34 @@
 
 
 	// $ANTLR start "insn_format22s"
-	// smaliTreeWalker.g:953:1: insn_format22s : ^( I_STATEMENT_FORMAT22s INSTRUCTION_FORMAT22s registerA= REGISTER registerB= REGISTER short_integral_literal ) ;
+	// smaliTreeWalker.g:1027:1: insn_format22s : ^( I_STATEMENT_FORMAT22s INSTRUCTION_FORMAT22s registerA= REGISTER registerB= REGISTER short_integral_literal ) ;
 	public final void insn_format22s() throws RecognitionException {
 		CommonTree registerA=null;
 		CommonTree registerB=null;
-		CommonTree INSTRUCTION_FORMAT22s143=null;
-		short short_integral_literal144 =0;
+		CommonTree INSTRUCTION_FORMAT22s157=null;
+		short short_integral_literal158 =0;
 
 		try {
-			// smaliTreeWalker.g:954:3: ( ^( I_STATEMENT_FORMAT22s INSTRUCTION_FORMAT22s registerA= REGISTER registerB= REGISTER short_integral_literal ) )
-			// smaliTreeWalker.g:955:5: ^( I_STATEMENT_FORMAT22s INSTRUCTION_FORMAT22s registerA= REGISTER registerB= REGISTER short_integral_literal )
+			// smaliTreeWalker.g:1028:3: ( ^( I_STATEMENT_FORMAT22s INSTRUCTION_FORMAT22s registerA= REGISTER registerB= REGISTER short_integral_literal ) )
+			// smaliTreeWalker.g:1029:5: ^( I_STATEMENT_FORMAT22s INSTRUCTION_FORMAT22s registerA= REGISTER registerB= REGISTER short_integral_literal )
 			{
-			match(input,I_STATEMENT_FORMAT22s,FOLLOW_I_STATEMENT_FORMAT22s_in_insn_format22s2561); 
+			match(input,I_STATEMENT_FORMAT22s,FOLLOW_I_STATEMENT_FORMAT22s_in_insn_format22s2804); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT22s143=(CommonTree)match(input,INSTRUCTION_FORMAT22s,FOLLOW_INSTRUCTION_FORMAT22s_in_insn_format22s2563); 
-			registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22s2567); 
-			registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22s2571); 
-			pushFollow(FOLLOW_short_integral_literal_in_insn_format22s2573);
-			short_integral_literal144=short_integral_literal();
+			INSTRUCTION_FORMAT22s157=(CommonTree)match(input,INSTRUCTION_FORMAT22s,FOLLOW_INSTRUCTION_FORMAT22s_in_insn_format22s2806); 
+			registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22s2810); 
+			registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22s2814); 
+			pushFollow(FOLLOW_short_integral_literal_in_insn_format22s2816);
+			short_integral_literal158=short_integral_literal();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT22s143!=null?INSTRUCTION_FORMAT22s143.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT22s157!=null?INSTRUCTION_FORMAT22s157.getText():null));
 			      byte regA = parseRegister_nibble((registerA!=null?registerA.getText():null));
 			      byte regB = parseRegister_nibble((registerB!=null?registerB.getText():null));
 
-			      short litC = short_integral_literal144;
+			      short litC = short_integral_literal158;
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction22s(opcode, regA, regB, litC));
 			    
@@ -5372,34 +6033,34 @@
 
 
 	// $ANTLR start "insn_format22t"
-	// smaliTreeWalker.g:966:1: insn_format22t : ^( I_STATEMENT_FORMAT22t INSTRUCTION_FORMAT22t registerA= REGISTER registerB= REGISTER label_ref ) ;
+	// smaliTreeWalker.g:1040:1: insn_format22t : ^( I_STATEMENT_FORMAT22t INSTRUCTION_FORMAT22t registerA= REGISTER registerB= REGISTER label_ref ) ;
 	public final void insn_format22t() throws RecognitionException {
 		CommonTree registerA=null;
 		CommonTree registerB=null;
-		CommonTree INSTRUCTION_FORMAT22t145=null;
-		Label label_ref146 =null;
+		CommonTree INSTRUCTION_FORMAT22t159=null;
+		Label label_ref160 =null;
 
 		try {
-			// smaliTreeWalker.g:967:3: ( ^( I_STATEMENT_FORMAT22t INSTRUCTION_FORMAT22t registerA= REGISTER registerB= REGISTER label_ref ) )
-			// smaliTreeWalker.g:968:5: ^( I_STATEMENT_FORMAT22t INSTRUCTION_FORMAT22t registerA= REGISTER registerB= REGISTER label_ref )
+			// smaliTreeWalker.g:1041:3: ( ^( I_STATEMENT_FORMAT22t INSTRUCTION_FORMAT22t registerA= REGISTER registerB= REGISTER label_ref ) )
+			// smaliTreeWalker.g:1042:5: ^( I_STATEMENT_FORMAT22t INSTRUCTION_FORMAT22t registerA= REGISTER registerB= REGISTER label_ref )
 			{
-			match(input,I_STATEMENT_FORMAT22t,FOLLOW_I_STATEMENT_FORMAT22t_in_insn_format22t2596); 
+			match(input,I_STATEMENT_FORMAT22t,FOLLOW_I_STATEMENT_FORMAT22t_in_insn_format22t2839); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT22t145=(CommonTree)match(input,INSTRUCTION_FORMAT22t,FOLLOW_INSTRUCTION_FORMAT22t_in_insn_format22t2598); 
-			registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22t2602); 
-			registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22t2606); 
-			pushFollow(FOLLOW_label_ref_in_insn_format22t2608);
-			label_ref146=label_ref();
+			INSTRUCTION_FORMAT22t159=(CommonTree)match(input,INSTRUCTION_FORMAT22t,FOLLOW_INSTRUCTION_FORMAT22t_in_insn_format22t2841); 
+			registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22t2845); 
+			registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22t2849); 
+			pushFollow(FOLLOW_label_ref_in_insn_format22t2851);
+			label_ref160=label_ref();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT22t145!=null?INSTRUCTION_FORMAT22t145.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT22t159!=null?INSTRUCTION_FORMAT22t159.getText():null));
 			      byte regA = parseRegister_nibble((registerA!=null?registerA.getText():null));
 			      byte regB = parseRegister_nibble((registerB!=null?registerB.getText():null));
 
-			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction22t(opcode, regA, regB, label_ref146));
+			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction22t(opcode, regA, regB, label_ref160));
 			    
 			}
 
@@ -5417,25 +6078,25 @@
 
 
 	// $ANTLR start "insn_format22x"
-	// smaliTreeWalker.g:977:1: insn_format22x : ^( I_STATEMENT_FORMAT22x INSTRUCTION_FORMAT22x registerA= REGISTER registerB= REGISTER ) ;
+	// smaliTreeWalker.g:1051:1: insn_format22x : ^( I_STATEMENT_FORMAT22x INSTRUCTION_FORMAT22x registerA= REGISTER registerB= REGISTER ) ;
 	public final void insn_format22x() throws RecognitionException {
 		CommonTree registerA=null;
 		CommonTree registerB=null;
-		CommonTree INSTRUCTION_FORMAT22x147=null;
+		CommonTree INSTRUCTION_FORMAT22x161=null;
 
 		try {
-			// smaliTreeWalker.g:978:3: ( ^( I_STATEMENT_FORMAT22x INSTRUCTION_FORMAT22x registerA= REGISTER registerB= REGISTER ) )
-			// smaliTreeWalker.g:979:5: ^( I_STATEMENT_FORMAT22x INSTRUCTION_FORMAT22x registerA= REGISTER registerB= REGISTER )
+			// smaliTreeWalker.g:1052:3: ( ^( I_STATEMENT_FORMAT22x INSTRUCTION_FORMAT22x registerA= REGISTER registerB= REGISTER ) )
+			// smaliTreeWalker.g:1053:5: ^( I_STATEMENT_FORMAT22x INSTRUCTION_FORMAT22x registerA= REGISTER registerB= REGISTER )
 			{
-			match(input,I_STATEMENT_FORMAT22x,FOLLOW_I_STATEMENT_FORMAT22x_in_insn_format22x2631); 
+			match(input,I_STATEMENT_FORMAT22x,FOLLOW_I_STATEMENT_FORMAT22x_in_insn_format22x2874); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT22x147=(CommonTree)match(input,INSTRUCTION_FORMAT22x,FOLLOW_INSTRUCTION_FORMAT22x_in_insn_format22x2633); 
-			registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22x2637); 
-			registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22x2641); 
+			INSTRUCTION_FORMAT22x161=(CommonTree)match(input,INSTRUCTION_FORMAT22x,FOLLOW_INSTRUCTION_FORMAT22x_in_insn_format22x2876); 
+			registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22x2880); 
+			registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format22x2884); 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT22x147!=null?INSTRUCTION_FORMAT22x147.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT22x161!=null?INSTRUCTION_FORMAT22x161.getText():null));
 			      short regA = parseRegister_byte((registerA!=null?registerA.getText():null));
 			      int regB = parseRegister_short((registerB!=null?registerB.getText():null));
 
@@ -5457,27 +6118,27 @@
 
 
 	// $ANTLR start "insn_format23x"
-	// smaliTreeWalker.g:988:1: insn_format23x : ^( I_STATEMENT_FORMAT23x INSTRUCTION_FORMAT23x registerA= REGISTER registerB= REGISTER registerC= REGISTER ) ;
+	// smaliTreeWalker.g:1062:1: insn_format23x : ^( I_STATEMENT_FORMAT23x INSTRUCTION_FORMAT23x registerA= REGISTER registerB= REGISTER registerC= REGISTER ) ;
 	public final void insn_format23x() throws RecognitionException {
 		CommonTree registerA=null;
 		CommonTree registerB=null;
 		CommonTree registerC=null;
-		CommonTree INSTRUCTION_FORMAT23x148=null;
+		CommonTree INSTRUCTION_FORMAT23x162=null;
 
 		try {
-			// smaliTreeWalker.g:989:3: ( ^( I_STATEMENT_FORMAT23x INSTRUCTION_FORMAT23x registerA= REGISTER registerB= REGISTER registerC= REGISTER ) )
-			// smaliTreeWalker.g:990:5: ^( I_STATEMENT_FORMAT23x INSTRUCTION_FORMAT23x registerA= REGISTER registerB= REGISTER registerC= REGISTER )
+			// smaliTreeWalker.g:1063:3: ( ^( I_STATEMENT_FORMAT23x INSTRUCTION_FORMAT23x registerA= REGISTER registerB= REGISTER registerC= REGISTER ) )
+			// smaliTreeWalker.g:1064:5: ^( I_STATEMENT_FORMAT23x INSTRUCTION_FORMAT23x registerA= REGISTER registerB= REGISTER registerC= REGISTER )
 			{
-			match(input,I_STATEMENT_FORMAT23x,FOLLOW_I_STATEMENT_FORMAT23x_in_insn_format23x2664); 
+			match(input,I_STATEMENT_FORMAT23x,FOLLOW_I_STATEMENT_FORMAT23x_in_insn_format23x2907); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT23x148=(CommonTree)match(input,INSTRUCTION_FORMAT23x,FOLLOW_INSTRUCTION_FORMAT23x_in_insn_format23x2666); 
-			registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format23x2670); 
-			registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format23x2674); 
-			registerC=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format23x2678); 
+			INSTRUCTION_FORMAT23x162=(CommonTree)match(input,INSTRUCTION_FORMAT23x,FOLLOW_INSTRUCTION_FORMAT23x_in_insn_format23x2909); 
+			registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format23x2913); 
+			registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format23x2917); 
+			registerC=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format23x2921); 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT23x148!=null?INSTRUCTION_FORMAT23x148.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT23x162!=null?INSTRUCTION_FORMAT23x162.getText():null));
 			      short regA = parseRegister_byte((registerA!=null?registerA.getText():null));
 			      short regB = parseRegister_byte((registerB!=null?registerB.getText():null));
 			      short regC = parseRegister_byte((registerC!=null?registerC.getText():null));
@@ -5500,28 +6161,28 @@
 
 
 	// $ANTLR start "insn_format30t"
-	// smaliTreeWalker.g:1000:1: insn_format30t : ^( I_STATEMENT_FORMAT30t INSTRUCTION_FORMAT30t label_ref ) ;
+	// smaliTreeWalker.g:1074:1: insn_format30t : ^( I_STATEMENT_FORMAT30t INSTRUCTION_FORMAT30t label_ref ) ;
 	public final void insn_format30t() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT30t149=null;
-		Label label_ref150 =null;
+		CommonTree INSTRUCTION_FORMAT30t163=null;
+		Label label_ref164 =null;
 
 		try {
-			// smaliTreeWalker.g:1001:3: ( ^( I_STATEMENT_FORMAT30t INSTRUCTION_FORMAT30t label_ref ) )
-			// smaliTreeWalker.g:1002:5: ^( I_STATEMENT_FORMAT30t INSTRUCTION_FORMAT30t label_ref )
+			// smaliTreeWalker.g:1075:3: ( ^( I_STATEMENT_FORMAT30t INSTRUCTION_FORMAT30t label_ref ) )
+			// smaliTreeWalker.g:1076:5: ^( I_STATEMENT_FORMAT30t INSTRUCTION_FORMAT30t label_ref )
 			{
-			match(input,I_STATEMENT_FORMAT30t,FOLLOW_I_STATEMENT_FORMAT30t_in_insn_format30t2701); 
+			match(input,I_STATEMENT_FORMAT30t,FOLLOW_I_STATEMENT_FORMAT30t_in_insn_format30t2944); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT30t149=(CommonTree)match(input,INSTRUCTION_FORMAT30t,FOLLOW_INSTRUCTION_FORMAT30t_in_insn_format30t2703); 
-			pushFollow(FOLLOW_label_ref_in_insn_format30t2705);
-			label_ref150=label_ref();
+			INSTRUCTION_FORMAT30t163=(CommonTree)match(input,INSTRUCTION_FORMAT30t,FOLLOW_INSTRUCTION_FORMAT30t_in_insn_format30t2946); 
+			pushFollow(FOLLOW_label_ref_in_insn_format30t2948);
+			label_ref164=label_ref();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT30t149!=null?INSTRUCTION_FORMAT30t149.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT30t163!=null?INSTRUCTION_FORMAT30t163.getText():null));
 
-			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction30t(opcode, label_ref150));
+			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction30t(opcode, label_ref164));
 			    
 			}
 
@@ -5539,32 +6200,32 @@
 
 
 	// $ANTLR start "insn_format31c"
-	// smaliTreeWalker.g:1009:1: insn_format31c : ^( I_STATEMENT_FORMAT31c INSTRUCTION_FORMAT31c REGISTER string_literal ) ;
+	// smaliTreeWalker.g:1083:1: insn_format31c : ^( I_STATEMENT_FORMAT31c INSTRUCTION_FORMAT31c REGISTER string_literal ) ;
 	public final void insn_format31c() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT31c151=null;
-		CommonTree REGISTER152=null;
-		String string_literal153 =null;
+		CommonTree INSTRUCTION_FORMAT31c165=null;
+		CommonTree REGISTER166=null;
+		String string_literal167 =null;
 
 		try {
-			// smaliTreeWalker.g:1010:3: ( ^( I_STATEMENT_FORMAT31c INSTRUCTION_FORMAT31c REGISTER string_literal ) )
-			// smaliTreeWalker.g:1011:5: ^( I_STATEMENT_FORMAT31c INSTRUCTION_FORMAT31c REGISTER string_literal )
+			// smaliTreeWalker.g:1084:3: ( ^( I_STATEMENT_FORMAT31c INSTRUCTION_FORMAT31c REGISTER string_literal ) )
+			// smaliTreeWalker.g:1085:5: ^( I_STATEMENT_FORMAT31c INSTRUCTION_FORMAT31c REGISTER string_literal )
 			{
-			match(input,I_STATEMENT_FORMAT31c,FOLLOW_I_STATEMENT_FORMAT31c_in_insn_format31c2728); 
+			match(input,I_STATEMENT_FORMAT31c,FOLLOW_I_STATEMENT_FORMAT31c_in_insn_format31c2971); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT31c151=(CommonTree)match(input,INSTRUCTION_FORMAT31c,FOLLOW_INSTRUCTION_FORMAT31c_in_insn_format31c2730); 
-			REGISTER152=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format31c2732); 
-			pushFollow(FOLLOW_string_literal_in_insn_format31c2734);
-			string_literal153=string_literal();
+			INSTRUCTION_FORMAT31c165=(CommonTree)match(input,INSTRUCTION_FORMAT31c,FOLLOW_INSTRUCTION_FORMAT31c_in_insn_format31c2973); 
+			REGISTER166=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format31c2975); 
+			pushFollow(FOLLOW_string_literal_in_insn_format31c2977);
+			string_literal167=string_literal();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT31c151!=null?INSTRUCTION_FORMAT31c151.getText():null));
-			      short regA = parseRegister_byte((REGISTER152!=null?REGISTER152.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT31c165!=null?INSTRUCTION_FORMAT31c165.getText():null));
+			      short regA = parseRegister_byte((REGISTER166!=null?REGISTER166.getText():null));
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction31c(opcode, regA,
-			              dexBuilder.internStringReference(string_literal153)));
+			              dexBuilder.internStringReference(string_literal167)));
 			    
 			}
 
@@ -5582,31 +6243,31 @@
 
 
 	// $ANTLR start "insn_format31i"
-	// smaliTreeWalker.g:1020:1: insn_format31i : ^( I_STATEMENT_FORMAT31i INSTRUCTION_FORMAT31i REGISTER fixed_32bit_literal ) ;
+	// smaliTreeWalker.g:1094:1: insn_format31i : ^( I_STATEMENT_FORMAT31i INSTRUCTION_FORMAT31i REGISTER fixed_32bit_literal ) ;
 	public final void insn_format31i() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT31i154=null;
-		CommonTree REGISTER155=null;
-		int fixed_32bit_literal156 =0;
+		CommonTree INSTRUCTION_FORMAT31i168=null;
+		CommonTree REGISTER169=null;
+		int fixed_32bit_literal170 =0;
 
 		try {
-			// smaliTreeWalker.g:1021:3: ( ^( I_STATEMENT_FORMAT31i INSTRUCTION_FORMAT31i REGISTER fixed_32bit_literal ) )
-			// smaliTreeWalker.g:1022:5: ^( I_STATEMENT_FORMAT31i INSTRUCTION_FORMAT31i REGISTER fixed_32bit_literal )
+			// smaliTreeWalker.g:1095:3: ( ^( I_STATEMENT_FORMAT31i INSTRUCTION_FORMAT31i REGISTER fixed_32bit_literal ) )
+			// smaliTreeWalker.g:1096:5: ^( I_STATEMENT_FORMAT31i INSTRUCTION_FORMAT31i REGISTER fixed_32bit_literal )
 			{
-			match(input,I_STATEMENT_FORMAT31i,FOLLOW_I_STATEMENT_FORMAT31i_in_insn_format31i2757); 
+			match(input,I_STATEMENT_FORMAT31i,FOLLOW_I_STATEMENT_FORMAT31i_in_insn_format31i3000); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT31i154=(CommonTree)match(input,INSTRUCTION_FORMAT31i,FOLLOW_INSTRUCTION_FORMAT31i_in_insn_format31i2759); 
-			REGISTER155=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format31i2761); 
-			pushFollow(FOLLOW_fixed_32bit_literal_in_insn_format31i2763);
-			fixed_32bit_literal156=fixed_32bit_literal();
+			INSTRUCTION_FORMAT31i168=(CommonTree)match(input,INSTRUCTION_FORMAT31i,FOLLOW_INSTRUCTION_FORMAT31i_in_insn_format31i3002); 
+			REGISTER169=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format31i3004); 
+			pushFollow(FOLLOW_fixed_32bit_literal_in_insn_format31i3006);
+			fixed_32bit_literal170=fixed_32bit_literal();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT31i154!=null?INSTRUCTION_FORMAT31i154.getText():null));
-			      short regA = parseRegister_byte((REGISTER155!=null?REGISTER155.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT31i168!=null?INSTRUCTION_FORMAT31i168.getText():null));
+			      short regA = parseRegister_byte((REGISTER169!=null?REGISTER169.getText():null));
 
-			      int litB = fixed_32bit_literal156;
+			      int litB = fixed_32bit_literal170;
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction31i(opcode, regA, litB));
 			    
@@ -5626,32 +6287,32 @@
 
 
 	// $ANTLR start "insn_format31t"
-	// smaliTreeWalker.g:1032:1: insn_format31t : ^( I_STATEMENT_FORMAT31t INSTRUCTION_FORMAT31t REGISTER label_ref ) ;
+	// smaliTreeWalker.g:1106:1: insn_format31t : ^( I_STATEMENT_FORMAT31t INSTRUCTION_FORMAT31t REGISTER label_ref ) ;
 	public final void insn_format31t() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT31t157=null;
-		CommonTree REGISTER158=null;
-		Label label_ref159 =null;
+		CommonTree INSTRUCTION_FORMAT31t171=null;
+		CommonTree REGISTER172=null;
+		Label label_ref173 =null;
 
 		try {
-			// smaliTreeWalker.g:1033:3: ( ^( I_STATEMENT_FORMAT31t INSTRUCTION_FORMAT31t REGISTER label_ref ) )
-			// smaliTreeWalker.g:1034:5: ^( I_STATEMENT_FORMAT31t INSTRUCTION_FORMAT31t REGISTER label_ref )
+			// smaliTreeWalker.g:1107:3: ( ^( I_STATEMENT_FORMAT31t INSTRUCTION_FORMAT31t REGISTER label_ref ) )
+			// smaliTreeWalker.g:1108:5: ^( I_STATEMENT_FORMAT31t INSTRUCTION_FORMAT31t REGISTER label_ref )
 			{
-			match(input,I_STATEMENT_FORMAT31t,FOLLOW_I_STATEMENT_FORMAT31t_in_insn_format31t2786); 
+			match(input,I_STATEMENT_FORMAT31t,FOLLOW_I_STATEMENT_FORMAT31t_in_insn_format31t3029); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT31t157=(CommonTree)match(input,INSTRUCTION_FORMAT31t,FOLLOW_INSTRUCTION_FORMAT31t_in_insn_format31t2788); 
-			REGISTER158=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format31t2790); 
-			pushFollow(FOLLOW_label_ref_in_insn_format31t2792);
-			label_ref159=label_ref();
+			INSTRUCTION_FORMAT31t171=(CommonTree)match(input,INSTRUCTION_FORMAT31t,FOLLOW_INSTRUCTION_FORMAT31t_in_insn_format31t3031); 
+			REGISTER172=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format31t3033); 
+			pushFollow(FOLLOW_label_ref_in_insn_format31t3035);
+			label_ref173=label_ref();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT31t157!=null?INSTRUCTION_FORMAT31t157.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT31t171!=null?INSTRUCTION_FORMAT31t171.getText():null));
 
-			      short regA = parseRegister_byte((REGISTER158!=null?REGISTER158.getText():null));
+			      short regA = parseRegister_byte((REGISTER172!=null?REGISTER172.getText():null));
 
-			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction31t(opcode, regA, label_ref159));
+			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction31t(opcode, regA, label_ref173));
 			    
 			}
 
@@ -5669,25 +6330,25 @@
 
 
 	// $ANTLR start "insn_format32x"
-	// smaliTreeWalker.g:1043:1: insn_format32x : ^( I_STATEMENT_FORMAT32x INSTRUCTION_FORMAT32x registerA= REGISTER registerB= REGISTER ) ;
+	// smaliTreeWalker.g:1117:1: insn_format32x : ^( I_STATEMENT_FORMAT32x INSTRUCTION_FORMAT32x registerA= REGISTER registerB= REGISTER ) ;
 	public final void insn_format32x() throws RecognitionException {
 		CommonTree registerA=null;
 		CommonTree registerB=null;
-		CommonTree INSTRUCTION_FORMAT32x160=null;
+		CommonTree INSTRUCTION_FORMAT32x174=null;
 
 		try {
-			// smaliTreeWalker.g:1044:3: ( ^( I_STATEMENT_FORMAT32x INSTRUCTION_FORMAT32x registerA= REGISTER registerB= REGISTER ) )
-			// smaliTreeWalker.g:1045:5: ^( I_STATEMENT_FORMAT32x INSTRUCTION_FORMAT32x registerA= REGISTER registerB= REGISTER )
+			// smaliTreeWalker.g:1118:3: ( ^( I_STATEMENT_FORMAT32x INSTRUCTION_FORMAT32x registerA= REGISTER registerB= REGISTER ) )
+			// smaliTreeWalker.g:1119:5: ^( I_STATEMENT_FORMAT32x INSTRUCTION_FORMAT32x registerA= REGISTER registerB= REGISTER )
 			{
-			match(input,I_STATEMENT_FORMAT32x,FOLLOW_I_STATEMENT_FORMAT32x_in_insn_format32x2815); 
+			match(input,I_STATEMENT_FORMAT32x,FOLLOW_I_STATEMENT_FORMAT32x_in_insn_format32x3058); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT32x160=(CommonTree)match(input,INSTRUCTION_FORMAT32x,FOLLOW_INSTRUCTION_FORMAT32x_in_insn_format32x2817); 
-			registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format32x2821); 
-			registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format32x2825); 
+			INSTRUCTION_FORMAT32x174=(CommonTree)match(input,INSTRUCTION_FORMAT32x,FOLLOW_INSTRUCTION_FORMAT32x_in_insn_format32x3060); 
+			registerA=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format32x3064); 
+			registerB=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format32x3068); 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT32x160!=null?INSTRUCTION_FORMAT32x160.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT32x174!=null?INSTRUCTION_FORMAT32x174.getText():null));
 			      int regA = parseRegister_short((registerA!=null?registerA.getText():null));
 			      int regB = parseRegister_short((registerB!=null?registerB.getText():null));
 
@@ -5708,38 +6369,89 @@
 
 
 
-	// $ANTLR start "insn_format35c_method"
-	// smaliTreeWalker.g:1054:1: insn_format35c_method : ^( I_STATEMENT_FORMAT35c_METHOD INSTRUCTION_FORMAT35c_METHOD register_list method_reference ) ;
-	public final void insn_format35c_method() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT35c_METHOD161=null;
-		TreeRuleReturnScope register_list162 =null;
-		ImmutableMethodReference method_reference163 =null;
+	// $ANTLR start "insn_format35c_call_site"
+	// smaliTreeWalker.g:1128:1: insn_format35c_call_site : ^( I_STATEMENT_FORMAT35c_CALL_SITE INSTRUCTION_FORMAT35c_CALL_SITE register_list call_site_reference ) ;
+	public final void insn_format35c_call_site() throws RecognitionException {
+		CommonTree INSTRUCTION_FORMAT35c_CALL_SITE175=null;
+		TreeRuleReturnScope register_list176 =null;
+		ImmutableCallSiteReference call_site_reference177 =null;
 
 		try {
-			// smaliTreeWalker.g:1055:3: ( ^( I_STATEMENT_FORMAT35c_METHOD INSTRUCTION_FORMAT35c_METHOD register_list method_reference ) )
-			// smaliTreeWalker.g:1056:5: ^( I_STATEMENT_FORMAT35c_METHOD INSTRUCTION_FORMAT35c_METHOD register_list method_reference )
+			// smaliTreeWalker.g:1129:3: ( ^( I_STATEMENT_FORMAT35c_CALL_SITE INSTRUCTION_FORMAT35c_CALL_SITE register_list call_site_reference ) )
+			// smaliTreeWalker.g:1131:5: ^( I_STATEMENT_FORMAT35c_CALL_SITE INSTRUCTION_FORMAT35c_CALL_SITE register_list call_site_reference )
 			{
-			match(input,I_STATEMENT_FORMAT35c_METHOD,FOLLOW_I_STATEMENT_FORMAT35c_METHOD_in_insn_format35c_method2848); 
+			match(input,I_STATEMENT_FORMAT35c_CALL_SITE,FOLLOW_I_STATEMENT_FORMAT35c_CALL_SITE_in_insn_format35c_call_site3096); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT35c_METHOD161=(CommonTree)match(input,INSTRUCTION_FORMAT35c_METHOD,FOLLOW_INSTRUCTION_FORMAT35c_METHOD_in_insn_format35c_method2850); 
-			pushFollow(FOLLOW_register_list_in_insn_format35c_method2852);
-			register_list162=register_list();
+			INSTRUCTION_FORMAT35c_CALL_SITE175=(CommonTree)match(input,INSTRUCTION_FORMAT35c_CALL_SITE,FOLLOW_INSTRUCTION_FORMAT35c_CALL_SITE_in_insn_format35c_call_site3098); 
+			pushFollow(FOLLOW_register_list_in_insn_format35c_call_site3100);
+			register_list176=register_list();
 			state._fsp--;
 
-			pushFollow(FOLLOW_method_reference_in_insn_format35c_method2854);
-			method_reference163=method_reference();
+			pushFollow(FOLLOW_call_site_reference_in_insn_format35c_call_site3102);
+			call_site_reference177=call_site_reference();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT35c_METHOD161!=null?INSTRUCTION_FORMAT35c_METHOD161.getText():null));
+			        Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT35c_CALL_SITE175!=null?INSTRUCTION_FORMAT35c_CALL_SITE175.getText():null));
+
+			        //this depends on the fact that register_list returns a byte[5]
+			        byte[] registers = (register_list176!=null?((smaliTreeWalker.register_list_return)register_list176).registers:null);
+			        byte registerCount = (register_list176!=null?((smaliTreeWalker.register_list_return)register_list176).registerCount:0);
+
+			        ImmutableCallSiteReference callSiteReference = call_site_reference177;
+
+			        method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction35c(opcode, registerCount, registers[0],
+			                registers[1], registers[2], registers[3], registers[4], dexBuilder.internCallSite(callSiteReference)));
+			    
+			}
+
+		}
+		catch (RecognitionException re) {
+			reportError(re);
+			recover(input,re);
+		}
+		finally {
+			// do for sure before leaving
+		}
+	}
+	// $ANTLR end "insn_format35c_call_site"
+
+
+
+	// $ANTLR start "insn_format35c_method"
+	// smaliTreeWalker.g:1145:1: insn_format35c_method : ^( I_STATEMENT_FORMAT35c_METHOD INSTRUCTION_FORMAT35c_METHOD register_list method_reference ) ;
+	public final void insn_format35c_method() throws RecognitionException {
+		CommonTree INSTRUCTION_FORMAT35c_METHOD178=null;
+		TreeRuleReturnScope register_list179 =null;
+		ImmutableMethodReference method_reference180 =null;
+
+		try {
+			// smaliTreeWalker.g:1146:3: ( ^( I_STATEMENT_FORMAT35c_METHOD INSTRUCTION_FORMAT35c_METHOD register_list method_reference ) )
+			// smaliTreeWalker.g:1147:5: ^( I_STATEMENT_FORMAT35c_METHOD INSTRUCTION_FORMAT35c_METHOD register_list method_reference )
+			{
+			match(input,I_STATEMENT_FORMAT35c_METHOD,FOLLOW_I_STATEMENT_FORMAT35c_METHOD_in_insn_format35c_method3125); 
+			match(input, Token.DOWN, null); 
+			INSTRUCTION_FORMAT35c_METHOD178=(CommonTree)match(input,INSTRUCTION_FORMAT35c_METHOD,FOLLOW_INSTRUCTION_FORMAT35c_METHOD_in_insn_format35c_method3127); 
+			pushFollow(FOLLOW_register_list_in_insn_format35c_method3129);
+			register_list179=register_list();
+			state._fsp--;
+
+			pushFollow(FOLLOW_method_reference_in_insn_format35c_method3131);
+			method_reference180=method_reference();
+			state._fsp--;
+
+			match(input, Token.UP, null); 
+
+
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT35c_METHOD178!=null?INSTRUCTION_FORMAT35c_METHOD178.getText():null));
 
 			      //this depends on the fact that register_list returns a byte[5]
-			      byte[] registers = (register_list162!=null?((smaliTreeWalker.register_list_return)register_list162).registers:null);
-			      byte registerCount = (register_list162!=null?((smaliTreeWalker.register_list_return)register_list162).registerCount:0);
+			      byte[] registers = (register_list179!=null?((smaliTreeWalker.register_list_return)register_list179).registers:null);
+			      byte registerCount = (register_list179!=null?((smaliTreeWalker.register_list_return)register_list179).registerCount:0);
 
-			      ImmutableMethodReference methodReference = method_reference163;
+			      ImmutableMethodReference methodReference = method_reference180;
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction35c(opcode, registerCount, registers[0], registers[1],
 			              registers[2], registers[3], registers[4], dexBuilder.internMethodReference(methodReference)));
@@ -5760,38 +6472,38 @@
 
 
 	// $ANTLR start "insn_format35c_type"
-	// smaliTreeWalker.g:1070:1: insn_format35c_type : ^( I_STATEMENT_FORMAT35c_TYPE INSTRUCTION_FORMAT35c_TYPE register_list nonvoid_type_descriptor ) ;
+	// smaliTreeWalker.g:1161:1: insn_format35c_type : ^( I_STATEMENT_FORMAT35c_TYPE INSTRUCTION_FORMAT35c_TYPE register_list nonvoid_type_descriptor ) ;
 	public final void insn_format35c_type() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT35c_TYPE164=null;
-		TreeRuleReturnScope register_list165 =null;
-		TreeRuleReturnScope nonvoid_type_descriptor166 =null;
+		CommonTree INSTRUCTION_FORMAT35c_TYPE181=null;
+		TreeRuleReturnScope register_list182 =null;
+		TreeRuleReturnScope nonvoid_type_descriptor183 =null;
 
 		try {
-			// smaliTreeWalker.g:1071:3: ( ^( I_STATEMENT_FORMAT35c_TYPE INSTRUCTION_FORMAT35c_TYPE register_list nonvoid_type_descriptor ) )
-			// smaliTreeWalker.g:1072:5: ^( I_STATEMENT_FORMAT35c_TYPE INSTRUCTION_FORMAT35c_TYPE register_list nonvoid_type_descriptor )
+			// smaliTreeWalker.g:1162:3: ( ^( I_STATEMENT_FORMAT35c_TYPE INSTRUCTION_FORMAT35c_TYPE register_list nonvoid_type_descriptor ) )
+			// smaliTreeWalker.g:1163:5: ^( I_STATEMENT_FORMAT35c_TYPE INSTRUCTION_FORMAT35c_TYPE register_list nonvoid_type_descriptor )
 			{
-			match(input,I_STATEMENT_FORMAT35c_TYPE,FOLLOW_I_STATEMENT_FORMAT35c_TYPE_in_insn_format35c_type2877); 
+			match(input,I_STATEMENT_FORMAT35c_TYPE,FOLLOW_I_STATEMENT_FORMAT35c_TYPE_in_insn_format35c_type3154); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT35c_TYPE164=(CommonTree)match(input,INSTRUCTION_FORMAT35c_TYPE,FOLLOW_INSTRUCTION_FORMAT35c_TYPE_in_insn_format35c_type2879); 
-			pushFollow(FOLLOW_register_list_in_insn_format35c_type2881);
-			register_list165=register_list();
+			INSTRUCTION_FORMAT35c_TYPE181=(CommonTree)match(input,INSTRUCTION_FORMAT35c_TYPE,FOLLOW_INSTRUCTION_FORMAT35c_TYPE_in_insn_format35c_type3156); 
+			pushFollow(FOLLOW_register_list_in_insn_format35c_type3158);
+			register_list182=register_list();
 			state._fsp--;
 
-			pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format35c_type2883);
-			nonvoid_type_descriptor166=nonvoid_type_descriptor();
+			pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format35c_type3160);
+			nonvoid_type_descriptor183=nonvoid_type_descriptor();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT35c_TYPE164!=null?INSTRUCTION_FORMAT35c_TYPE164.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT35c_TYPE181!=null?INSTRUCTION_FORMAT35c_TYPE181.getText():null));
 
 			      //this depends on the fact that register_list returns a byte[5]
-			      byte[] registers = (register_list165!=null?((smaliTreeWalker.register_list_return)register_list165).registers:null);
-			      byte registerCount = (register_list165!=null?((smaliTreeWalker.register_list_return)register_list165).registerCount:0);
+			      byte[] registers = (register_list182!=null?((smaliTreeWalker.register_list_return)register_list182).registers:null);
+			      byte registerCount = (register_list182!=null?((smaliTreeWalker.register_list_return)register_list182).registerCount:0);
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction35c(opcode, registerCount, registers[0], registers[1],
-			              registers[2], registers[3], registers[4], dexBuilder.internTypeReference((nonvoid_type_descriptor166!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor166).type:null))));
+			              registers[2], registers[3], registers[4], dexBuilder.internTypeReference((nonvoid_type_descriptor183!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor183).type:null))));
 			    
 			}
 
@@ -5808,38 +6520,89 @@
 
 
 
-	// $ANTLR start "insn_format3rc_method"
-	// smaliTreeWalker.g:1084:1: insn_format3rc_method : ^( I_STATEMENT_FORMAT3rc_METHOD INSTRUCTION_FORMAT3rc_METHOD register_range method_reference ) ;
-	public final void insn_format3rc_method() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT3rc_METHOD167=null;
-		TreeRuleReturnScope register_range168 =null;
-		ImmutableMethodReference method_reference169 =null;
+	// $ANTLR start "insn_format3rc_call_site"
+	// smaliTreeWalker.g:1175:1: insn_format3rc_call_site : ^( I_STATEMENT_FORMAT3rc_CALL_SITE INSTRUCTION_FORMAT3rc_CALL_SITE register_range call_site_reference ) ;
+	public final void insn_format3rc_call_site() throws RecognitionException {
+		CommonTree INSTRUCTION_FORMAT3rc_CALL_SITE184=null;
+		TreeRuleReturnScope register_range185 =null;
+		ImmutableCallSiteReference call_site_reference186 =null;
 
 		try {
-			// smaliTreeWalker.g:1085:3: ( ^( I_STATEMENT_FORMAT3rc_METHOD INSTRUCTION_FORMAT3rc_METHOD register_range method_reference ) )
-			// smaliTreeWalker.g:1086:5: ^( I_STATEMENT_FORMAT3rc_METHOD INSTRUCTION_FORMAT3rc_METHOD register_range method_reference )
+			// smaliTreeWalker.g:1176:3: ( ^( I_STATEMENT_FORMAT3rc_CALL_SITE INSTRUCTION_FORMAT3rc_CALL_SITE register_range call_site_reference ) )
+			// smaliTreeWalker.g:1178:5: ^( I_STATEMENT_FORMAT3rc_CALL_SITE INSTRUCTION_FORMAT3rc_CALL_SITE register_range call_site_reference )
 			{
-			match(input,I_STATEMENT_FORMAT3rc_METHOD,FOLLOW_I_STATEMENT_FORMAT3rc_METHOD_in_insn_format3rc_method2906); 
+			match(input,I_STATEMENT_FORMAT3rc_CALL_SITE,FOLLOW_I_STATEMENT_FORMAT3rc_CALL_SITE_in_insn_format3rc_call_site3188); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT3rc_METHOD167=(CommonTree)match(input,INSTRUCTION_FORMAT3rc_METHOD,FOLLOW_INSTRUCTION_FORMAT3rc_METHOD_in_insn_format3rc_method2908); 
-			pushFollow(FOLLOW_register_range_in_insn_format3rc_method2910);
-			register_range168=register_range();
+			INSTRUCTION_FORMAT3rc_CALL_SITE184=(CommonTree)match(input,INSTRUCTION_FORMAT3rc_CALL_SITE,FOLLOW_INSTRUCTION_FORMAT3rc_CALL_SITE_in_insn_format3rc_call_site3190); 
+			pushFollow(FOLLOW_register_range_in_insn_format3rc_call_site3192);
+			register_range185=register_range();
 			state._fsp--;
 
-			pushFollow(FOLLOW_method_reference_in_insn_format3rc_method2912);
-			method_reference169=method_reference();
+			pushFollow(FOLLOW_call_site_reference_in_insn_format3rc_call_site3194);
+			call_site_reference186=call_site_reference();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT3rc_METHOD167!=null?INSTRUCTION_FORMAT3rc_METHOD167.getText():null));
-			      int startRegister = (register_range168!=null?((smaliTreeWalker.register_range_return)register_range168).startRegister:0);
-			      int endRegister = (register_range168!=null?((smaliTreeWalker.register_range_return)register_range168).endRegister:0);
+			        Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT3rc_CALL_SITE184!=null?INSTRUCTION_FORMAT3rc_CALL_SITE184.getText():null));
+			        int startRegister = (register_range185!=null?((smaliTreeWalker.register_range_return)register_range185).startRegister:0);
+			        int endRegister = (register_range185!=null?((smaliTreeWalker.register_range_return)register_range185).endRegister:0);
+
+			        int registerCount = endRegister - startRegister + 1;
+
+			        ImmutableCallSiteReference callSiteReference = call_site_reference186;
+
+			        method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction3rc(opcode, startRegister, registerCount,
+			                dexBuilder.internCallSite(callSiteReference)));
+			    
+			}
+
+		}
+		catch (RecognitionException re) {
+			reportError(re);
+			recover(input,re);
+		}
+		finally {
+			// do for sure before leaving
+		}
+	}
+	// $ANTLR end "insn_format3rc_call_site"
+
+
+
+	// $ANTLR start "insn_format3rc_method"
+	// smaliTreeWalker.g:1192:1: insn_format3rc_method : ^( I_STATEMENT_FORMAT3rc_METHOD INSTRUCTION_FORMAT3rc_METHOD register_range method_reference ) ;
+	public final void insn_format3rc_method() throws RecognitionException {
+		CommonTree INSTRUCTION_FORMAT3rc_METHOD187=null;
+		TreeRuleReturnScope register_range188 =null;
+		ImmutableMethodReference method_reference189 =null;
+
+		try {
+			// smaliTreeWalker.g:1193:3: ( ^( I_STATEMENT_FORMAT3rc_METHOD INSTRUCTION_FORMAT3rc_METHOD register_range method_reference ) )
+			// smaliTreeWalker.g:1194:5: ^( I_STATEMENT_FORMAT3rc_METHOD INSTRUCTION_FORMAT3rc_METHOD register_range method_reference )
+			{
+			match(input,I_STATEMENT_FORMAT3rc_METHOD,FOLLOW_I_STATEMENT_FORMAT3rc_METHOD_in_insn_format3rc_method3217); 
+			match(input, Token.DOWN, null); 
+			INSTRUCTION_FORMAT3rc_METHOD187=(CommonTree)match(input,INSTRUCTION_FORMAT3rc_METHOD,FOLLOW_INSTRUCTION_FORMAT3rc_METHOD_in_insn_format3rc_method3219); 
+			pushFollow(FOLLOW_register_range_in_insn_format3rc_method3221);
+			register_range188=register_range();
+			state._fsp--;
+
+			pushFollow(FOLLOW_method_reference_in_insn_format3rc_method3223);
+			method_reference189=method_reference();
+			state._fsp--;
+
+			match(input, Token.UP, null); 
+
+
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT3rc_METHOD187!=null?INSTRUCTION_FORMAT3rc_METHOD187.getText():null));
+			      int startRegister = (register_range188!=null?((smaliTreeWalker.register_range_return)register_range188).startRegister:0);
+			      int endRegister = (register_range188!=null?((smaliTreeWalker.register_range_return)register_range188).endRegister:0);
 
 			      int registerCount = endRegister-startRegister+1;
 
-			      ImmutableMethodReference methodReference = method_reference169;
+			      ImmutableMethodReference methodReference = method_reference189;
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction3rc(opcode, startRegister, registerCount,
 			              dexBuilder.internMethodReference(methodReference)));
@@ -5860,38 +6623,38 @@
 
 
 	// $ANTLR start "insn_format3rc_type"
-	// smaliTreeWalker.g:1100:1: insn_format3rc_type : ^( I_STATEMENT_FORMAT3rc_TYPE INSTRUCTION_FORMAT3rc_TYPE register_range nonvoid_type_descriptor ) ;
+	// smaliTreeWalker.g:1208:1: insn_format3rc_type : ^( I_STATEMENT_FORMAT3rc_TYPE INSTRUCTION_FORMAT3rc_TYPE register_range nonvoid_type_descriptor ) ;
 	public final void insn_format3rc_type() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT3rc_TYPE170=null;
-		TreeRuleReturnScope register_range171 =null;
-		TreeRuleReturnScope nonvoid_type_descriptor172 =null;
+		CommonTree INSTRUCTION_FORMAT3rc_TYPE190=null;
+		TreeRuleReturnScope register_range191 =null;
+		TreeRuleReturnScope nonvoid_type_descriptor192 =null;
 
 		try {
-			// smaliTreeWalker.g:1101:3: ( ^( I_STATEMENT_FORMAT3rc_TYPE INSTRUCTION_FORMAT3rc_TYPE register_range nonvoid_type_descriptor ) )
-			// smaliTreeWalker.g:1102:5: ^( I_STATEMENT_FORMAT3rc_TYPE INSTRUCTION_FORMAT3rc_TYPE register_range nonvoid_type_descriptor )
+			// smaliTreeWalker.g:1209:3: ( ^( I_STATEMENT_FORMAT3rc_TYPE INSTRUCTION_FORMAT3rc_TYPE register_range nonvoid_type_descriptor ) )
+			// smaliTreeWalker.g:1210:5: ^( I_STATEMENT_FORMAT3rc_TYPE INSTRUCTION_FORMAT3rc_TYPE register_range nonvoid_type_descriptor )
 			{
-			match(input,I_STATEMENT_FORMAT3rc_TYPE,FOLLOW_I_STATEMENT_FORMAT3rc_TYPE_in_insn_format3rc_type2935); 
+			match(input,I_STATEMENT_FORMAT3rc_TYPE,FOLLOW_I_STATEMENT_FORMAT3rc_TYPE_in_insn_format3rc_type3246); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT3rc_TYPE170=(CommonTree)match(input,INSTRUCTION_FORMAT3rc_TYPE,FOLLOW_INSTRUCTION_FORMAT3rc_TYPE_in_insn_format3rc_type2937); 
-			pushFollow(FOLLOW_register_range_in_insn_format3rc_type2939);
-			register_range171=register_range();
+			INSTRUCTION_FORMAT3rc_TYPE190=(CommonTree)match(input,INSTRUCTION_FORMAT3rc_TYPE,FOLLOW_INSTRUCTION_FORMAT3rc_TYPE_in_insn_format3rc_type3248); 
+			pushFollow(FOLLOW_register_range_in_insn_format3rc_type3250);
+			register_range191=register_range();
 			state._fsp--;
 
-			pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format3rc_type2941);
-			nonvoid_type_descriptor172=nonvoid_type_descriptor();
+			pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format3rc_type3252);
+			nonvoid_type_descriptor192=nonvoid_type_descriptor();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT3rc_TYPE170!=null?INSTRUCTION_FORMAT3rc_TYPE170.getText():null));
-			      int startRegister = (register_range171!=null?((smaliTreeWalker.register_range_return)register_range171).startRegister:0);
-			      int endRegister = (register_range171!=null?((smaliTreeWalker.register_range_return)register_range171).endRegister:0);
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT3rc_TYPE190!=null?INSTRUCTION_FORMAT3rc_TYPE190.getText():null));
+			      int startRegister = (register_range191!=null?((smaliTreeWalker.register_range_return)register_range191).startRegister:0);
+			      int endRegister = (register_range191!=null?((smaliTreeWalker.register_range_return)register_range191).endRegister:0);
 
 			      int registerCount = endRegister-startRegister+1;
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction3rc(opcode, startRegister, registerCount,
-			              dexBuilder.internTypeReference((nonvoid_type_descriptor172!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor172).type:null))));
+			              dexBuilder.internTypeReference((nonvoid_type_descriptor192!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor192).type:null))));
 			    
 			}
 
@@ -5909,50 +6672,47 @@
 
 
 	// $ANTLR start "insn_format45cc_method"
-	// smaliTreeWalker.g:1114:1: insn_format45cc_method : ^( I_STATEMENT_FORMAT45cc_METHOD INSTRUCTION_FORMAT45cc_METHOD register_list method_reference method_prototype ) ;
+	// smaliTreeWalker.g:1222:1: insn_format45cc_method : ^( I_STATEMENT_FORMAT45cc_METHOD INSTRUCTION_FORMAT45cc_METHOD register_list method_reference method_prototype ) ;
 	public final void insn_format45cc_method() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT45cc_METHOD173=null;
-		TreeRuleReturnScope register_list174 =null;
-		ImmutableMethodReference method_reference175 =null;
-		TreeRuleReturnScope method_prototype176 =null;
+		CommonTree INSTRUCTION_FORMAT45cc_METHOD193=null;
+		TreeRuleReturnScope register_list194 =null;
+		ImmutableMethodReference method_reference195 =null;
+		ImmutableMethodProtoReference method_prototype196 =null;
 
 		try {
-			// smaliTreeWalker.g:1115:3: ( ^( I_STATEMENT_FORMAT45cc_METHOD INSTRUCTION_FORMAT45cc_METHOD register_list method_reference method_prototype ) )
-			// smaliTreeWalker.g:1116:5: ^( I_STATEMENT_FORMAT45cc_METHOD INSTRUCTION_FORMAT45cc_METHOD register_list method_reference method_prototype )
+			// smaliTreeWalker.g:1223:3: ( ^( I_STATEMENT_FORMAT45cc_METHOD INSTRUCTION_FORMAT45cc_METHOD register_list method_reference method_prototype ) )
+			// smaliTreeWalker.g:1224:5: ^( I_STATEMENT_FORMAT45cc_METHOD INSTRUCTION_FORMAT45cc_METHOD register_list method_reference method_prototype )
 			{
-			match(input,I_STATEMENT_FORMAT45cc_METHOD,FOLLOW_I_STATEMENT_FORMAT45cc_METHOD_in_insn_format45cc_method2964); 
+			match(input,I_STATEMENT_FORMAT45cc_METHOD,FOLLOW_I_STATEMENT_FORMAT45cc_METHOD_in_insn_format45cc_method3275); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT45cc_METHOD173=(CommonTree)match(input,INSTRUCTION_FORMAT45cc_METHOD,FOLLOW_INSTRUCTION_FORMAT45cc_METHOD_in_insn_format45cc_method2966); 
-			pushFollow(FOLLOW_register_list_in_insn_format45cc_method2968);
-			register_list174=register_list();
+			INSTRUCTION_FORMAT45cc_METHOD193=(CommonTree)match(input,INSTRUCTION_FORMAT45cc_METHOD,FOLLOW_INSTRUCTION_FORMAT45cc_METHOD_in_insn_format45cc_method3277); 
+			pushFollow(FOLLOW_register_list_in_insn_format45cc_method3279);
+			register_list194=register_list();
 			state._fsp--;
 
-			pushFollow(FOLLOW_method_reference_in_insn_format45cc_method2970);
-			method_reference175=method_reference();
+			pushFollow(FOLLOW_method_reference_in_insn_format45cc_method3281);
+			method_reference195=method_reference();
 			state._fsp--;
 
-			pushFollow(FOLLOW_method_prototype_in_insn_format45cc_method2972);
-			method_prototype176=method_prototype();
+			pushFollow(FOLLOW_method_prototype_in_insn_format45cc_method3283);
+			method_prototype196=method_prototype();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT45cc_METHOD173!=null?INSTRUCTION_FORMAT45cc_METHOD173.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT45cc_METHOD193!=null?INSTRUCTION_FORMAT45cc_METHOD193.getText():null));
 
 			      //this depends on the fact that register_list returns a byte[5]
-			      byte[] registers = (register_list174!=null?((smaliTreeWalker.register_list_return)register_list174).registers:null);
-			      byte registerCount = (register_list174!=null?((smaliTreeWalker.register_list_return)register_list174).registerCount:0);
+			      byte[] registers = (register_list194!=null?((smaliTreeWalker.register_list_return)register_list194).registers:null);
+			      byte registerCount = (register_list194!=null?((smaliTreeWalker.register_list_return)register_list194).registerCount:0);
 
-			      ImmutableMethodReference methodReference = method_reference175;
-			      ImmutableMethodProtoReference methodProtoReference = new ImmutableMethodProtoReference(
-			              (method_prototype176!=null?((smaliTreeWalker.method_prototype_return)method_prototype176).parameters:null),
-			              (method_prototype176!=null?((smaliTreeWalker.method_prototype_return)method_prototype176).returnType:null));
+			      ImmutableMethodReference methodReference = method_reference195;
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction45cc(opcode, registerCount, registers[0], registers[1],
 			              registers[2], registers[3], registers[4],
 			              dexBuilder.internMethodReference(methodReference),
-			              dexBuilder.internMethodProtoReference(methodProtoReference)));
+			              dexBuilder.internMethodProtoReference(method_prototype196)));
 			    
 			}
 
@@ -5970,49 +6730,46 @@
 
 
 	// $ANTLR start "insn_format4rcc_method"
-	// smaliTreeWalker.g:1135:1: insn_format4rcc_method : ^( I_STATEMENT_FORMAT4rcc_METHOD INSTRUCTION_FORMAT4rcc_METHOD register_range method_reference method_prototype ) ;
+	// smaliTreeWalker.g:1240:1: insn_format4rcc_method : ^( I_STATEMENT_FORMAT4rcc_METHOD INSTRUCTION_FORMAT4rcc_METHOD register_range method_reference method_prototype ) ;
 	public final void insn_format4rcc_method() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT4rcc_METHOD177=null;
-		TreeRuleReturnScope register_range178 =null;
-		ImmutableMethodReference method_reference179 =null;
-		TreeRuleReturnScope method_prototype180 =null;
+		CommonTree INSTRUCTION_FORMAT4rcc_METHOD197=null;
+		TreeRuleReturnScope register_range198 =null;
+		ImmutableMethodReference method_reference199 =null;
+		ImmutableMethodProtoReference method_prototype200 =null;
 
 		try {
-			// smaliTreeWalker.g:1136:3: ( ^( I_STATEMENT_FORMAT4rcc_METHOD INSTRUCTION_FORMAT4rcc_METHOD register_range method_reference method_prototype ) )
-			// smaliTreeWalker.g:1137:5: ^( I_STATEMENT_FORMAT4rcc_METHOD INSTRUCTION_FORMAT4rcc_METHOD register_range method_reference method_prototype )
+			// smaliTreeWalker.g:1241:3: ( ^( I_STATEMENT_FORMAT4rcc_METHOD INSTRUCTION_FORMAT4rcc_METHOD register_range method_reference method_prototype ) )
+			// smaliTreeWalker.g:1242:5: ^( I_STATEMENT_FORMAT4rcc_METHOD INSTRUCTION_FORMAT4rcc_METHOD register_range method_reference method_prototype )
 			{
-			match(input,I_STATEMENT_FORMAT4rcc_METHOD,FOLLOW_I_STATEMENT_FORMAT4rcc_METHOD_in_insn_format4rcc_method2995); 
+			match(input,I_STATEMENT_FORMAT4rcc_METHOD,FOLLOW_I_STATEMENT_FORMAT4rcc_METHOD_in_insn_format4rcc_method3306); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT4rcc_METHOD177=(CommonTree)match(input,INSTRUCTION_FORMAT4rcc_METHOD,FOLLOW_INSTRUCTION_FORMAT4rcc_METHOD_in_insn_format4rcc_method2997); 
-			pushFollow(FOLLOW_register_range_in_insn_format4rcc_method2999);
-			register_range178=register_range();
+			INSTRUCTION_FORMAT4rcc_METHOD197=(CommonTree)match(input,INSTRUCTION_FORMAT4rcc_METHOD,FOLLOW_INSTRUCTION_FORMAT4rcc_METHOD_in_insn_format4rcc_method3308); 
+			pushFollow(FOLLOW_register_range_in_insn_format4rcc_method3310);
+			register_range198=register_range();
 			state._fsp--;
 
-			pushFollow(FOLLOW_method_reference_in_insn_format4rcc_method3001);
-			method_reference179=method_reference();
+			pushFollow(FOLLOW_method_reference_in_insn_format4rcc_method3312);
+			method_reference199=method_reference();
 			state._fsp--;
 
-			pushFollow(FOLLOW_method_prototype_in_insn_format4rcc_method3003);
-			method_prototype180=method_prototype();
+			pushFollow(FOLLOW_method_prototype_in_insn_format4rcc_method3314);
+			method_prototype200=method_prototype();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT4rcc_METHOD177!=null?INSTRUCTION_FORMAT4rcc_METHOD177.getText():null));
-			      int startRegister = (register_range178!=null?((smaliTreeWalker.register_range_return)register_range178).startRegister:0);
-			      int endRegister = (register_range178!=null?((smaliTreeWalker.register_range_return)register_range178).endRegister:0);
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT4rcc_METHOD197!=null?INSTRUCTION_FORMAT4rcc_METHOD197.getText():null));
+			      int startRegister = (register_range198!=null?((smaliTreeWalker.register_range_return)register_range198).startRegister:0);
+			      int endRegister = (register_range198!=null?((smaliTreeWalker.register_range_return)register_range198).endRegister:0);
 
 			      int registerCount = endRegister-startRegister+1;
 
-			      ImmutableMethodReference methodReference = method_reference179;
-			      ImmutableMethodProtoReference methodProtoReference = new ImmutableMethodProtoReference(
-			              (method_prototype180!=null?((smaliTreeWalker.method_prototype_return)method_prototype180).parameters:null),
-			              (method_prototype180!=null?((smaliTreeWalker.method_prototype_return)method_prototype180).returnType:null));
+			      ImmutableMethodReference methodReference = method_reference199;
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction4rcc(opcode, startRegister, registerCount,
 			              dexBuilder.internMethodReference(methodReference),
-			              dexBuilder.internMethodProtoReference(methodProtoReference)));
+			              dexBuilder.internMethodProtoReference(method_prototype200)));
 			    
 			}
 
@@ -6030,31 +6787,31 @@
 
 
 	// $ANTLR start "insn_format51l_type"
-	// smaliTreeWalker.g:1155:1: insn_format51l_type : ^( I_STATEMENT_FORMAT51l INSTRUCTION_FORMAT51l REGISTER fixed_64bit_literal ) ;
+	// smaliTreeWalker.g:1257:1: insn_format51l_type : ^( I_STATEMENT_FORMAT51l INSTRUCTION_FORMAT51l REGISTER fixed_64bit_literal ) ;
 	public final void insn_format51l_type() throws RecognitionException {
-		CommonTree INSTRUCTION_FORMAT51l181=null;
-		CommonTree REGISTER182=null;
-		long fixed_64bit_literal183 =0;
+		CommonTree INSTRUCTION_FORMAT51l201=null;
+		CommonTree REGISTER202=null;
+		long fixed_64bit_literal203 =0;
 
 		try {
-			// smaliTreeWalker.g:1156:3: ( ^( I_STATEMENT_FORMAT51l INSTRUCTION_FORMAT51l REGISTER fixed_64bit_literal ) )
-			// smaliTreeWalker.g:1157:5: ^( I_STATEMENT_FORMAT51l INSTRUCTION_FORMAT51l REGISTER fixed_64bit_literal )
+			// smaliTreeWalker.g:1258:3: ( ^( I_STATEMENT_FORMAT51l INSTRUCTION_FORMAT51l REGISTER fixed_64bit_literal ) )
+			// smaliTreeWalker.g:1259:5: ^( I_STATEMENT_FORMAT51l INSTRUCTION_FORMAT51l REGISTER fixed_64bit_literal )
 			{
-			match(input,I_STATEMENT_FORMAT51l,FOLLOW_I_STATEMENT_FORMAT51l_in_insn_format51l_type3026); 
+			match(input,I_STATEMENT_FORMAT51l,FOLLOW_I_STATEMENT_FORMAT51l_in_insn_format51l_type3337); 
 			match(input, Token.DOWN, null); 
-			INSTRUCTION_FORMAT51l181=(CommonTree)match(input,INSTRUCTION_FORMAT51l,FOLLOW_INSTRUCTION_FORMAT51l_in_insn_format51l_type3028); 
-			REGISTER182=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format51l_type3030); 
-			pushFollow(FOLLOW_fixed_64bit_literal_in_insn_format51l_type3032);
-			fixed_64bit_literal183=fixed_64bit_literal();
+			INSTRUCTION_FORMAT51l201=(CommonTree)match(input,INSTRUCTION_FORMAT51l,FOLLOW_INSTRUCTION_FORMAT51l_in_insn_format51l_type3339); 
+			REGISTER202=(CommonTree)match(input,REGISTER,FOLLOW_REGISTER_in_insn_format51l_type3341); 
+			pushFollow(FOLLOW_fixed_64bit_literal_in_insn_format51l_type3343);
+			fixed_64bit_literal203=fixed_64bit_literal();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT51l181!=null?INSTRUCTION_FORMAT51l181.getText():null));
-			      short regA = parseRegister_byte((REGISTER182!=null?REGISTER182.getText():null));
+			      Opcode opcode = opcodes.getOpcodeByName((INSTRUCTION_FORMAT51l201!=null?INSTRUCTION_FORMAT51l201.getText():null));
+			      short regA = parseRegister_byte((REGISTER202!=null?REGISTER202.getText():null));
 
-			      long litB = fixed_64bit_literal183;
+			      long litB = fixed_64bit_literal203;
 
 			      method_stack.peek().methodBuilder.addInstruction(new BuilderInstruction51l(opcode, regA, litB));
 			    
@@ -6074,36 +6831,36 @@
 
 
 	// $ANTLR start "insn_array_data_directive"
-	// smaliTreeWalker.g:1167:1: insn_array_data_directive : ^( I_STATEMENT_ARRAY_DATA ^( I_ARRAY_ELEMENT_SIZE short_integral_literal ) array_elements ) ;
+	// smaliTreeWalker.g:1269:1: insn_array_data_directive : ^( I_STATEMENT_ARRAY_DATA ^( I_ARRAY_ELEMENT_SIZE short_integral_literal ) array_elements ) ;
 	public final void insn_array_data_directive() throws RecognitionException {
-		short short_integral_literal184 =0;
-		List<Number> array_elements185 =null;
+		short short_integral_literal204 =0;
+		List<Number> array_elements205 =null;
 
 		try {
-			// smaliTreeWalker.g:1168:3: ( ^( I_STATEMENT_ARRAY_DATA ^( I_ARRAY_ELEMENT_SIZE short_integral_literal ) array_elements ) )
-			// smaliTreeWalker.g:1169:5: ^( I_STATEMENT_ARRAY_DATA ^( I_ARRAY_ELEMENT_SIZE short_integral_literal ) array_elements )
+			// smaliTreeWalker.g:1270:3: ( ^( I_STATEMENT_ARRAY_DATA ^( I_ARRAY_ELEMENT_SIZE short_integral_literal ) array_elements ) )
+			// smaliTreeWalker.g:1271:5: ^( I_STATEMENT_ARRAY_DATA ^( I_ARRAY_ELEMENT_SIZE short_integral_literal ) array_elements )
 			{
-			match(input,I_STATEMENT_ARRAY_DATA,FOLLOW_I_STATEMENT_ARRAY_DATA_in_insn_array_data_directive3055); 
+			match(input,I_STATEMENT_ARRAY_DATA,FOLLOW_I_STATEMENT_ARRAY_DATA_in_insn_array_data_directive3366); 
 			match(input, Token.DOWN, null); 
-			match(input,I_ARRAY_ELEMENT_SIZE,FOLLOW_I_ARRAY_ELEMENT_SIZE_in_insn_array_data_directive3058); 
+			match(input,I_ARRAY_ELEMENT_SIZE,FOLLOW_I_ARRAY_ELEMENT_SIZE_in_insn_array_data_directive3369); 
 			match(input, Token.DOWN, null); 
-			pushFollow(FOLLOW_short_integral_literal_in_insn_array_data_directive3060);
-			short_integral_literal184=short_integral_literal();
+			pushFollow(FOLLOW_short_integral_literal_in_insn_array_data_directive3371);
+			short_integral_literal204=short_integral_literal();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
-			pushFollow(FOLLOW_array_elements_in_insn_array_data_directive3063);
-			array_elements185=array_elements();
+			pushFollow(FOLLOW_array_elements_in_insn_array_data_directive3374);
+			array_elements205=array_elements();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      int elementWidth = short_integral_literal184;
-			      List<Number> elements = array_elements185;
+			      int elementWidth = short_integral_literal204;
+			      List<Number> elements = array_elements205;
 
-			      method_stack.peek().methodBuilder.addInstruction(new BuilderArrayPayload(elementWidth, array_elements185));
+			      method_stack.peek().methodBuilder.addInstruction(new BuilderArrayPayload(elementWidth, array_elements205));
 			    
 			}
 
@@ -6121,35 +6878,35 @@
 
 
 	// $ANTLR start "insn_packed_switch_directive"
-	// smaliTreeWalker.g:1177:1: insn_packed_switch_directive : ^( I_STATEMENT_PACKED_SWITCH ^( I_PACKED_SWITCH_START_KEY fixed_32bit_literal ) packed_switch_elements ) ;
+	// smaliTreeWalker.g:1279:1: insn_packed_switch_directive : ^( I_STATEMENT_PACKED_SWITCH ^( I_PACKED_SWITCH_START_KEY fixed_32bit_literal ) packed_switch_elements ) ;
 	public final void insn_packed_switch_directive() throws RecognitionException {
-		int fixed_32bit_literal186 =0;
-		List<Label> packed_switch_elements187 =null;
+		int fixed_32bit_literal206 =0;
+		List<Label> packed_switch_elements207 =null;
 
 		try {
-			// smaliTreeWalker.g:1178:3: ( ^( I_STATEMENT_PACKED_SWITCH ^( I_PACKED_SWITCH_START_KEY fixed_32bit_literal ) packed_switch_elements ) )
-			// smaliTreeWalker.g:1179:5: ^( I_STATEMENT_PACKED_SWITCH ^( I_PACKED_SWITCH_START_KEY fixed_32bit_literal ) packed_switch_elements )
+			// smaliTreeWalker.g:1280:3: ( ^( I_STATEMENT_PACKED_SWITCH ^( I_PACKED_SWITCH_START_KEY fixed_32bit_literal ) packed_switch_elements ) )
+			// smaliTreeWalker.g:1281:5: ^( I_STATEMENT_PACKED_SWITCH ^( I_PACKED_SWITCH_START_KEY fixed_32bit_literal ) packed_switch_elements )
 			{
-			match(input,I_STATEMENT_PACKED_SWITCH,FOLLOW_I_STATEMENT_PACKED_SWITCH_in_insn_packed_switch_directive3085); 
+			match(input,I_STATEMENT_PACKED_SWITCH,FOLLOW_I_STATEMENT_PACKED_SWITCH_in_insn_packed_switch_directive3396); 
 			match(input, Token.DOWN, null); 
-			match(input,I_PACKED_SWITCH_START_KEY,FOLLOW_I_PACKED_SWITCH_START_KEY_in_insn_packed_switch_directive3088); 
+			match(input,I_PACKED_SWITCH_START_KEY,FOLLOW_I_PACKED_SWITCH_START_KEY_in_insn_packed_switch_directive3399); 
 			match(input, Token.DOWN, null); 
-			pushFollow(FOLLOW_fixed_32bit_literal_in_insn_packed_switch_directive3090);
-			fixed_32bit_literal186=fixed_32bit_literal();
+			pushFollow(FOLLOW_fixed_32bit_literal_in_insn_packed_switch_directive3401);
+			fixed_32bit_literal206=fixed_32bit_literal();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
-			pushFollow(FOLLOW_packed_switch_elements_in_insn_packed_switch_directive3093);
-			packed_switch_elements187=packed_switch_elements();
+			pushFollow(FOLLOW_packed_switch_elements_in_insn_packed_switch_directive3404);
+			packed_switch_elements207=packed_switch_elements();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			        int startKey = fixed_32bit_literal186;
+			        int startKey = fixed_32bit_literal206;
 			        method_stack.peek().methodBuilder.addInstruction(new BuilderPackedSwitchPayload(startKey,
-			            packed_switch_elements187));
+			            packed_switch_elements207));
 			      
 			}
 
@@ -6167,24 +6924,24 @@
 
 
 	// $ANTLR start "insn_sparse_switch_directive"
-	// smaliTreeWalker.g:1186:1: insn_sparse_switch_directive : ^( I_STATEMENT_SPARSE_SWITCH sparse_switch_elements ) ;
+	// smaliTreeWalker.g:1288:1: insn_sparse_switch_directive : ^( I_STATEMENT_SPARSE_SWITCH sparse_switch_elements ) ;
 	public final void insn_sparse_switch_directive() throws RecognitionException {
-		List<SwitchLabelElement> sparse_switch_elements188 =null;
+		List<SwitchLabelElement> sparse_switch_elements208 =null;
 
 		try {
-			// smaliTreeWalker.g:1187:3: ( ^( I_STATEMENT_SPARSE_SWITCH sparse_switch_elements ) )
-			// smaliTreeWalker.g:1188:5: ^( I_STATEMENT_SPARSE_SWITCH sparse_switch_elements )
+			// smaliTreeWalker.g:1289:3: ( ^( I_STATEMENT_SPARSE_SWITCH sparse_switch_elements ) )
+			// smaliTreeWalker.g:1290:5: ^( I_STATEMENT_SPARSE_SWITCH sparse_switch_elements )
 			{
-			match(input,I_STATEMENT_SPARSE_SWITCH,FOLLOW_I_STATEMENT_SPARSE_SWITCH_in_insn_sparse_switch_directive3117); 
+			match(input,I_STATEMENT_SPARSE_SWITCH,FOLLOW_I_STATEMENT_SPARSE_SWITCH_in_insn_sparse_switch_directive3428); 
 			match(input, Token.DOWN, null); 
-			pushFollow(FOLLOW_sparse_switch_elements_in_insn_sparse_switch_directive3119);
-			sparse_switch_elements188=sparse_switch_elements();
+			pushFollow(FOLLOW_sparse_switch_elements_in_insn_sparse_switch_directive3430);
+			sparse_switch_elements208=sparse_switch_elements();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      method_stack.peek().methodBuilder.addInstruction(new BuilderSparseSwitchPayload(sparse_switch_elements188));
+			      method_stack.peek().methodBuilder.addInstruction(new BuilderSparseSwitchPayload(sparse_switch_elements208));
 			    
 			}
 
@@ -6202,49 +6959,49 @@
 
 
 	// $ANTLR start "array_descriptor"
-	// smaliTreeWalker.g:1193:1: array_descriptor returns [String type] : ARRAY_TYPE_PREFIX ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR ) ;
+	// smaliTreeWalker.g:1295:1: array_descriptor returns [String type] : ARRAY_TYPE_PREFIX ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR ) ;
 	public final String array_descriptor() throws RecognitionException {
 		String type = null;
 
 
-		CommonTree ARRAY_TYPE_PREFIX189=null;
-		CommonTree PRIMITIVE_TYPE190=null;
-		CommonTree CLASS_DESCRIPTOR191=null;
+		CommonTree ARRAY_TYPE_PREFIX209=null;
+		CommonTree PRIMITIVE_TYPE210=null;
+		CommonTree CLASS_DESCRIPTOR211=null;
 
 		try {
-			// smaliTreeWalker.g:1194:3: ( ARRAY_TYPE_PREFIX ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR ) )
-			// smaliTreeWalker.g:1194:5: ARRAY_TYPE_PREFIX ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR )
+			// smaliTreeWalker.g:1296:3: ( ARRAY_TYPE_PREFIX ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR ) )
+			// smaliTreeWalker.g:1296:5: ARRAY_TYPE_PREFIX ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR )
 			{
-			ARRAY_TYPE_PREFIX189=(CommonTree)match(input,ARRAY_TYPE_PREFIX,FOLLOW_ARRAY_TYPE_PREFIX_in_array_descriptor3140); 
-			// smaliTreeWalker.g:1194:23: ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR )
-			int alt37=2;
-			int LA37_0 = input.LA(1);
-			if ( (LA37_0==PRIMITIVE_TYPE) ) {
-				alt37=1;
+			ARRAY_TYPE_PREFIX209=(CommonTree)match(input,ARRAY_TYPE_PREFIX,FOLLOW_ARRAY_TYPE_PREFIX_in_array_descriptor3451); 
+			// smaliTreeWalker.g:1296:23: ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR )
+			int alt39=2;
+			int LA39_0 = input.LA(1);
+			if ( (LA39_0==PRIMITIVE_TYPE) ) {
+				alt39=1;
 			}
-			else if ( (LA37_0==CLASS_DESCRIPTOR) ) {
-				alt37=2;
+			else if ( (LA39_0==CLASS_DESCRIPTOR) ) {
+				alt39=2;
 			}
 
 			else {
 				NoViableAltException nvae =
-					new NoViableAltException("", 37, 0, input);
+					new NoViableAltException("", 39, 0, input);
 				throw nvae;
 			}
 
-			switch (alt37) {
+			switch (alt39) {
 				case 1 :
-					// smaliTreeWalker.g:1194:25: PRIMITIVE_TYPE
+					// smaliTreeWalker.g:1296:25: PRIMITIVE_TYPE
 					{
-					PRIMITIVE_TYPE190=(CommonTree)match(input,PRIMITIVE_TYPE,FOLLOW_PRIMITIVE_TYPE_in_array_descriptor3144); 
-					 type = (ARRAY_TYPE_PREFIX189!=null?ARRAY_TYPE_PREFIX189.getText():null) + (PRIMITIVE_TYPE190!=null?PRIMITIVE_TYPE190.getText():null); 
+					PRIMITIVE_TYPE210=(CommonTree)match(input,PRIMITIVE_TYPE,FOLLOW_PRIMITIVE_TYPE_in_array_descriptor3455); 
+					 type = (ARRAY_TYPE_PREFIX209!=null?ARRAY_TYPE_PREFIX209.getText():null) + (PRIMITIVE_TYPE210!=null?PRIMITIVE_TYPE210.getText():null); 
 					}
 					break;
 				case 2 :
-					// smaliTreeWalker.g:1195:25: CLASS_DESCRIPTOR
+					// smaliTreeWalker.g:1297:25: CLASS_DESCRIPTOR
 					{
-					CLASS_DESCRIPTOR191=(CommonTree)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_array_descriptor3172); 
-					 type = (ARRAY_TYPE_PREFIX189!=null?ARRAY_TYPE_PREFIX189.getText():null) + (CLASS_DESCRIPTOR191!=null?CLASS_DESCRIPTOR191.getText():null); 
+					CLASS_DESCRIPTOR211=(CommonTree)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_array_descriptor3483); 
+					 type = (ARRAY_TYPE_PREFIX209!=null?ARRAY_TYPE_PREFIX209.getText():null) + (CLASS_DESCRIPTOR211!=null?CLASS_DESCRIPTOR211.getText():null); 
 					}
 					break;
 
@@ -6271,63 +7028,63 @@
 
 
 	// $ANTLR start "nonvoid_type_descriptor"
-	// smaliTreeWalker.g:1197:1: nonvoid_type_descriptor returns [String type] : ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR | array_descriptor ) ;
+	// smaliTreeWalker.g:1299:1: nonvoid_type_descriptor returns [String type] : ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR | array_descriptor ) ;
 	public final smaliTreeWalker.nonvoid_type_descriptor_return nonvoid_type_descriptor() throws RecognitionException {
 		smaliTreeWalker.nonvoid_type_descriptor_return retval = new smaliTreeWalker.nonvoid_type_descriptor_return();
 		retval.start = input.LT(1);
 
-		String array_descriptor192 =null;
+		String array_descriptor212 =null;
 
 		try {
-			// smaliTreeWalker.g:1198:3: ( ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR | array_descriptor ) )
-			// smaliTreeWalker.g:1198:5: ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR | array_descriptor )
+			// smaliTreeWalker.g:1300:3: ( ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR | array_descriptor ) )
+			// smaliTreeWalker.g:1300:5: ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR | array_descriptor )
 			{
-			// smaliTreeWalker.g:1198:5: ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR | array_descriptor )
-			int alt38=3;
+			// smaliTreeWalker.g:1300:5: ( PRIMITIVE_TYPE | CLASS_DESCRIPTOR | array_descriptor )
+			int alt40=3;
 			switch ( input.LA(1) ) {
 			case PRIMITIVE_TYPE:
 				{
-				alt38=1;
+				alt40=1;
 				}
 				break;
 			case CLASS_DESCRIPTOR:
 				{
-				alt38=2;
+				alt40=2;
 				}
 				break;
 			case ARRAY_TYPE_PREFIX:
 				{
-				alt38=3;
+				alt40=3;
 				}
 				break;
 			default:
 				NoViableAltException nvae =
-					new NoViableAltException("", 38, 0, input);
+					new NoViableAltException("", 40, 0, input);
 				throw nvae;
 			}
-			switch (alt38) {
+			switch (alt40) {
 				case 1 :
-					// smaliTreeWalker.g:1198:6: PRIMITIVE_TYPE
+					// smaliTreeWalker.g:1300:6: PRIMITIVE_TYPE
 					{
-					match(input,PRIMITIVE_TYPE,FOLLOW_PRIMITIVE_TYPE_in_nonvoid_type_descriptor3190); 
+					match(input,PRIMITIVE_TYPE,FOLLOW_PRIMITIVE_TYPE_in_nonvoid_type_descriptor3501); 
 					 retval.type = input.getTokenStream().toString(input.getTreeAdaptor().getTokenStartIndex(retval.start),input.getTreeAdaptor().getTokenStopIndex(retval.start)); 
 					}
 					break;
 				case 2 :
-					// smaliTreeWalker.g:1199:5: CLASS_DESCRIPTOR
+					// smaliTreeWalker.g:1301:5: CLASS_DESCRIPTOR
 					{
-					match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_nonvoid_type_descriptor3198); 
+					match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_nonvoid_type_descriptor3509); 
 					 retval.type = input.getTokenStream().toString(input.getTreeAdaptor().getTokenStartIndex(retval.start),input.getTreeAdaptor().getTokenStopIndex(retval.start)); 
 					}
 					break;
 				case 3 :
-					// smaliTreeWalker.g:1200:5: array_descriptor
+					// smaliTreeWalker.g:1302:5: array_descriptor
 					{
-					pushFollow(FOLLOW_array_descriptor_in_nonvoid_type_descriptor3206);
-					array_descriptor192=array_descriptor();
+					pushFollow(FOLLOW_array_descriptor_in_nonvoid_type_descriptor3517);
+					array_descriptor212=array_descriptor();
 					state._fsp--;
 
-					 retval.type = array_descriptor192; 
+					 retval.type = array_descriptor212; 
 					}
 					break;
 
@@ -6354,49 +7111,49 @@
 
 
 	// $ANTLR start "reference_type_descriptor"
-	// smaliTreeWalker.g:1203:1: reference_type_descriptor returns [String type] : ( CLASS_DESCRIPTOR | array_descriptor ) ;
+	// smaliTreeWalker.g:1305:1: reference_type_descriptor returns [String type] : ( CLASS_DESCRIPTOR | array_descriptor ) ;
 	public final smaliTreeWalker.reference_type_descriptor_return reference_type_descriptor() throws RecognitionException {
 		smaliTreeWalker.reference_type_descriptor_return retval = new smaliTreeWalker.reference_type_descriptor_return();
 		retval.start = input.LT(1);
 
-		String array_descriptor193 =null;
+		String array_descriptor213 =null;
 
 		try {
-			// smaliTreeWalker.g:1204:3: ( ( CLASS_DESCRIPTOR | array_descriptor ) )
-			// smaliTreeWalker.g:1204:5: ( CLASS_DESCRIPTOR | array_descriptor )
+			// smaliTreeWalker.g:1306:3: ( ( CLASS_DESCRIPTOR | array_descriptor ) )
+			// smaliTreeWalker.g:1306:5: ( CLASS_DESCRIPTOR | array_descriptor )
 			{
-			// smaliTreeWalker.g:1204:5: ( CLASS_DESCRIPTOR | array_descriptor )
-			int alt39=2;
-			int LA39_0 = input.LA(1);
-			if ( (LA39_0==CLASS_DESCRIPTOR) ) {
-				alt39=1;
+			// smaliTreeWalker.g:1306:5: ( CLASS_DESCRIPTOR | array_descriptor )
+			int alt41=2;
+			int LA41_0 = input.LA(1);
+			if ( (LA41_0==CLASS_DESCRIPTOR) ) {
+				alt41=1;
 			}
-			else if ( (LA39_0==ARRAY_TYPE_PREFIX) ) {
-				alt39=2;
+			else if ( (LA41_0==ARRAY_TYPE_PREFIX) ) {
+				alt41=2;
 			}
 
 			else {
 				NoViableAltException nvae =
-					new NoViableAltException("", 39, 0, input);
+					new NoViableAltException("", 41, 0, input);
 				throw nvae;
 			}
 
-			switch (alt39) {
+			switch (alt41) {
 				case 1 :
-					// smaliTreeWalker.g:1204:6: CLASS_DESCRIPTOR
+					// smaliTreeWalker.g:1306:6: CLASS_DESCRIPTOR
 					{
-					match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_reference_type_descriptor3227); 
+					match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_reference_type_descriptor3538); 
 					 retval.type = input.getTokenStream().toString(input.getTreeAdaptor().getTokenStartIndex(retval.start),input.getTreeAdaptor().getTokenStopIndex(retval.start)); 
 					}
 					break;
 				case 2 :
-					// smaliTreeWalker.g:1205:5: array_descriptor
+					// smaliTreeWalker.g:1307:5: array_descriptor
 					{
-					pushFollow(FOLLOW_array_descriptor_in_reference_type_descriptor3235);
-					array_descriptor193=array_descriptor();
+					pushFollow(FOLLOW_array_descriptor_in_reference_type_descriptor3546);
+					array_descriptor213=array_descriptor();
 					state._fsp--;
 
-					 retval.type = array_descriptor193; 
+					 retval.type = array_descriptor213; 
 					}
 					break;
 
@@ -6419,46 +7176,46 @@
 
 
 	// $ANTLR start "type_descriptor"
-	// smaliTreeWalker.g:1208:1: type_descriptor returns [String type] : ( VOID_TYPE | nonvoid_type_descriptor );
+	// smaliTreeWalker.g:1310:1: type_descriptor returns [String type] : ( VOID_TYPE | nonvoid_type_descriptor );
 	public final String type_descriptor() throws RecognitionException {
 		String type = null;
 
 
-		TreeRuleReturnScope nonvoid_type_descriptor194 =null;
+		TreeRuleReturnScope nonvoid_type_descriptor214 =null;
 
 		try {
-			// smaliTreeWalker.g:1209:3: ( VOID_TYPE | nonvoid_type_descriptor )
-			int alt40=2;
-			int LA40_0 = input.LA(1);
-			if ( (LA40_0==VOID_TYPE) ) {
-				alt40=1;
+			// smaliTreeWalker.g:1311:3: ( VOID_TYPE | nonvoid_type_descriptor )
+			int alt42=2;
+			int LA42_0 = input.LA(1);
+			if ( (LA42_0==VOID_TYPE) ) {
+				alt42=1;
 			}
-			else if ( (LA40_0==ARRAY_TYPE_PREFIX||LA40_0==CLASS_DESCRIPTOR||LA40_0==PRIMITIVE_TYPE) ) {
-				alt40=2;
+			else if ( (LA42_0==ARRAY_TYPE_PREFIX||LA42_0==CLASS_DESCRIPTOR||LA42_0==PRIMITIVE_TYPE) ) {
+				alt42=2;
 			}
 
 			else {
 				NoViableAltException nvae =
-					new NoViableAltException("", 40, 0, input);
+					new NoViableAltException("", 42, 0, input);
 				throw nvae;
 			}
 
-			switch (alt40) {
+			switch (alt42) {
 				case 1 :
-					// smaliTreeWalker.g:1209:5: VOID_TYPE
+					// smaliTreeWalker.g:1311:5: VOID_TYPE
 					{
-					match(input,VOID_TYPE,FOLLOW_VOID_TYPE_in_type_descriptor3255); 
+					match(input,VOID_TYPE,FOLLOW_VOID_TYPE_in_type_descriptor3566); 
 					type = "V";
 					}
 					break;
 				case 2 :
-					// smaliTreeWalker.g:1210:5: nonvoid_type_descriptor
+					// smaliTreeWalker.g:1312:5: nonvoid_type_descriptor
 					{
-					pushFollow(FOLLOW_nonvoid_type_descriptor_in_type_descriptor3263);
-					nonvoid_type_descriptor194=nonvoid_type_descriptor();
+					pushFollow(FOLLOW_nonvoid_type_descriptor_in_type_descriptor3574);
+					nonvoid_type_descriptor214=nonvoid_type_descriptor();
 					state._fsp--;
 
-					type = (nonvoid_type_descriptor194!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor194).type:null);
+					type = (nonvoid_type_descriptor214!=null?((smaliTreeWalker.nonvoid_type_descriptor_return)nonvoid_type_descriptor214).type:null);
 					}
 					break;
 
@@ -6478,106 +7235,106 @@
 
 
 	// $ANTLR start "short_integral_literal"
-	// smaliTreeWalker.g:1213:1: short_integral_literal returns [short value] : ( long_literal | integer_literal | short_literal | char_literal | byte_literal );
+	// smaliTreeWalker.g:1315:1: short_integral_literal returns [short value] : ( long_literal | integer_literal | short_literal | char_literal | byte_literal );
 	public final short short_integral_literal() throws RecognitionException {
 		short value = 0;
 
 
-		long long_literal195 =0;
-		int integer_literal196 =0;
-		short short_literal197 =0;
-		char char_literal198 =0;
-		byte byte_literal199 =0;
+		long long_literal215 =0;
+		int integer_literal216 =0;
+		short short_literal217 =0;
+		char char_literal218 =0;
+		byte byte_literal219 =0;
 
 		try {
-			// smaliTreeWalker.g:1214:3: ( long_literal | integer_literal | short_literal | char_literal | byte_literal )
-			int alt41=5;
+			// smaliTreeWalker.g:1316:3: ( long_literal | integer_literal | short_literal | char_literal | byte_literal )
+			int alt43=5;
 			switch ( input.LA(1) ) {
 			case LONG_LITERAL:
 				{
-				alt41=1;
+				alt43=1;
 				}
 				break;
 			case INTEGER_LITERAL:
 				{
-				alt41=2;
+				alt43=2;
 				}
 				break;
 			case SHORT_LITERAL:
 				{
-				alt41=3;
+				alt43=3;
 				}
 				break;
 			case CHAR_LITERAL:
 				{
-				alt41=4;
+				alt43=4;
 				}
 				break;
 			case BYTE_LITERAL:
 				{
-				alt41=5;
+				alt43=5;
 				}
 				break;
 			default:
 				NoViableAltException nvae =
-					new NoViableAltException("", 41, 0, input);
+					new NoViableAltException("", 43, 0, input);
 				throw nvae;
 			}
-			switch (alt41) {
+			switch (alt43) {
 				case 1 :
-					// smaliTreeWalker.g:1214:5: long_literal
+					// smaliTreeWalker.g:1316:5: long_literal
 					{
-					pushFollow(FOLLOW_long_literal_in_short_integral_literal3281);
-					long_literal195=long_literal();
+					pushFollow(FOLLOW_long_literal_in_short_integral_literal3592);
+					long_literal215=long_literal();
 					state._fsp--;
 
 
-					      LiteralTools.checkShort(long_literal195);
-					      value = (short)long_literal195;
+					      LiteralTools.checkShort(long_literal215);
+					      value = (short)long_literal215;
 					    
 					}
 					break;
 				case 2 :
-					// smaliTreeWalker.g:1219:5: integer_literal
+					// smaliTreeWalker.g:1321:5: integer_literal
 					{
-					pushFollow(FOLLOW_integer_literal_in_short_integral_literal3293);
-					integer_literal196=integer_literal();
+					pushFollow(FOLLOW_integer_literal_in_short_integral_literal3604);
+					integer_literal216=integer_literal();
 					state._fsp--;
 
 
-					      LiteralTools.checkShort(integer_literal196);
-					      value = (short)integer_literal196;
+					      LiteralTools.checkShort(integer_literal216);
+					      value = (short)integer_literal216;
 					    
 					}
 					break;
 				case 3 :
-					// smaliTreeWalker.g:1224:5: short_literal
+					// smaliTreeWalker.g:1326:5: short_literal
 					{
-					pushFollow(FOLLOW_short_literal_in_short_integral_literal3305);
-					short_literal197=short_literal();
+					pushFollow(FOLLOW_short_literal_in_short_integral_literal3616);
+					short_literal217=short_literal();
 					state._fsp--;
 
-					value = short_literal197;
+					value = short_literal217;
 					}
 					break;
 				case 4 :
-					// smaliTreeWalker.g:1225:5: char_literal
+					// smaliTreeWalker.g:1327:5: char_literal
 					{
-					pushFollow(FOLLOW_char_literal_in_short_integral_literal3313);
-					char_literal198=char_literal();
+					pushFollow(FOLLOW_char_literal_in_short_integral_literal3624);
+					char_literal218=char_literal();
 					state._fsp--;
 
-					value = (short)char_literal198;
+					value = (short)char_literal218;
 					}
 					break;
 				case 5 :
-					// smaliTreeWalker.g:1226:5: byte_literal
+					// smaliTreeWalker.g:1328:5: byte_literal
 					{
-					pushFollow(FOLLOW_byte_literal_in_short_integral_literal3321);
-					byte_literal199=byte_literal();
+					pushFollow(FOLLOW_byte_literal_in_short_integral_literal3632);
+					byte_literal219=byte_literal();
 					state._fsp--;
 
-					value = byte_literal199;
+					value = byte_literal219;
 					}
 					break;
 
@@ -6597,87 +7354,87 @@
 
 
 	// $ANTLR start "integral_literal"
-	// smaliTreeWalker.g:1228:1: integral_literal returns [int value] : ( long_literal | integer_literal | short_literal | byte_literal );
+	// smaliTreeWalker.g:1330:1: integral_literal returns [int value] : ( long_literal | integer_literal | short_literal | byte_literal );
 	public final int integral_literal() throws RecognitionException {
 		int value = 0;
 
 
-		long long_literal200 =0;
-		int integer_literal201 =0;
-		short short_literal202 =0;
-		byte byte_literal203 =0;
+		long long_literal220 =0;
+		int integer_literal221 =0;
+		short short_literal222 =0;
+		byte byte_literal223 =0;
 
 		try {
-			// smaliTreeWalker.g:1229:3: ( long_literal | integer_literal | short_literal | byte_literal )
-			int alt42=4;
+			// smaliTreeWalker.g:1331:3: ( long_literal | integer_literal | short_literal | byte_literal )
+			int alt44=4;
 			switch ( input.LA(1) ) {
 			case LONG_LITERAL:
 				{
-				alt42=1;
+				alt44=1;
 				}
 				break;
 			case INTEGER_LITERAL:
 				{
-				alt42=2;
+				alt44=2;
 				}
 				break;
 			case SHORT_LITERAL:
 				{
-				alt42=3;
+				alt44=3;
 				}
 				break;
 			case BYTE_LITERAL:
 				{
-				alt42=4;
+				alt44=4;
 				}
 				break;
 			default:
 				NoViableAltException nvae =
-					new NoViableAltException("", 42, 0, input);
+					new NoViableAltException("", 44, 0, input);
 				throw nvae;
 			}
-			switch (alt42) {
+			switch (alt44) {
 				case 1 :
-					// smaliTreeWalker.g:1229:5: long_literal
+					// smaliTreeWalker.g:1331:5: long_literal
 					{
-					pushFollow(FOLLOW_long_literal_in_integral_literal3336);
-					long_literal200=long_literal();
+					pushFollow(FOLLOW_long_literal_in_integral_literal3647);
+					long_literal220=long_literal();
 					state._fsp--;
 
 
-					      LiteralTools.checkInt(long_literal200);
-					      value = (int)long_literal200;
+					      LiteralTools.checkInt(long_literal220);
+					      value = (int)long_literal220;
 					    
 					}
 					break;
 				case 2 :
-					// smaliTreeWalker.g:1234:5: integer_literal
+					// smaliTreeWalker.g:1336:5: integer_literal
 					{
-					pushFollow(FOLLOW_integer_literal_in_integral_literal3348);
-					integer_literal201=integer_literal();
+					pushFollow(FOLLOW_integer_literal_in_integral_literal3659);
+					integer_literal221=integer_literal();
 					state._fsp--;
 
-					value = integer_literal201;
+					value = integer_literal221;
 					}
 					break;
 				case 3 :
-					// smaliTreeWalker.g:1235:5: short_literal
+					// smaliTreeWalker.g:1337:5: short_literal
 					{
-					pushFollow(FOLLOW_short_literal_in_integral_literal3356);
-					short_literal202=short_literal();
+					pushFollow(FOLLOW_short_literal_in_integral_literal3667);
+					short_literal222=short_literal();
 					state._fsp--;
 
-					value = short_literal202;
+					value = short_literal222;
 					}
 					break;
 				case 4 :
-					// smaliTreeWalker.g:1236:5: byte_literal
+					// smaliTreeWalker.g:1338:5: byte_literal
 					{
-					pushFollow(FOLLOW_byte_literal_in_integral_literal3364);
-					byte_literal203=byte_literal();
+					pushFollow(FOLLOW_byte_literal_in_integral_literal3675);
+					byte_literal223=byte_literal();
 					state._fsp--;
 
-					value = byte_literal203;
+					value = byte_literal223;
 					}
 					break;
 
@@ -6697,19 +7454,19 @@
 
 
 	// $ANTLR start "integer_literal"
-	// smaliTreeWalker.g:1239:1: integer_literal returns [int value] : INTEGER_LITERAL ;
+	// smaliTreeWalker.g:1341:1: integer_literal returns [int value] : INTEGER_LITERAL ;
 	public final int integer_literal() throws RecognitionException {
 		int value = 0;
 
 
-		CommonTree INTEGER_LITERAL204=null;
+		CommonTree INTEGER_LITERAL224=null;
 
 		try {
-			// smaliTreeWalker.g:1240:3: ( INTEGER_LITERAL )
-			// smaliTreeWalker.g:1240:5: INTEGER_LITERAL
+			// smaliTreeWalker.g:1342:3: ( INTEGER_LITERAL )
+			// smaliTreeWalker.g:1342:5: INTEGER_LITERAL
 			{
-			INTEGER_LITERAL204=(CommonTree)match(input,INTEGER_LITERAL,FOLLOW_INTEGER_LITERAL_in_integer_literal3380); 
-			 value = LiteralTools.parseInt((INTEGER_LITERAL204!=null?INTEGER_LITERAL204.getText():null)); 
+			INTEGER_LITERAL224=(CommonTree)match(input,INTEGER_LITERAL,FOLLOW_INTEGER_LITERAL_in_integer_literal3691); 
+			 value = LiteralTools.parseInt((INTEGER_LITERAL224!=null?INTEGER_LITERAL224.getText():null)); 
 			}
 
 		}
@@ -6727,19 +7484,19 @@
 
 
 	// $ANTLR start "long_literal"
-	// smaliTreeWalker.g:1242:1: long_literal returns [long value] : LONG_LITERAL ;
+	// smaliTreeWalker.g:1344:1: long_literal returns [long value] : LONG_LITERAL ;
 	public final long long_literal() throws RecognitionException {
 		long value = 0;
 
 
-		CommonTree LONG_LITERAL205=null;
+		CommonTree LONG_LITERAL225=null;
 
 		try {
-			// smaliTreeWalker.g:1243:3: ( LONG_LITERAL )
-			// smaliTreeWalker.g:1243:5: LONG_LITERAL
+			// smaliTreeWalker.g:1345:3: ( LONG_LITERAL )
+			// smaliTreeWalker.g:1345:5: LONG_LITERAL
 			{
-			LONG_LITERAL205=(CommonTree)match(input,LONG_LITERAL,FOLLOW_LONG_LITERAL_in_long_literal3395); 
-			 value = LiteralTools.parseLong((LONG_LITERAL205!=null?LONG_LITERAL205.getText():null)); 
+			LONG_LITERAL225=(CommonTree)match(input,LONG_LITERAL,FOLLOW_LONG_LITERAL_in_long_literal3706); 
+			 value = LiteralTools.parseLong((LONG_LITERAL225!=null?LONG_LITERAL225.getText():null)); 
 			}
 
 		}
@@ -6757,19 +7514,19 @@
 
 
 	// $ANTLR start "short_literal"
-	// smaliTreeWalker.g:1245:1: short_literal returns [short value] : SHORT_LITERAL ;
+	// smaliTreeWalker.g:1347:1: short_literal returns [short value] : SHORT_LITERAL ;
 	public final short short_literal() throws RecognitionException {
 		short value = 0;
 
 
-		CommonTree SHORT_LITERAL206=null;
+		CommonTree SHORT_LITERAL226=null;
 
 		try {
-			// smaliTreeWalker.g:1246:3: ( SHORT_LITERAL )
-			// smaliTreeWalker.g:1246:5: SHORT_LITERAL
+			// smaliTreeWalker.g:1348:3: ( SHORT_LITERAL )
+			// smaliTreeWalker.g:1348:5: SHORT_LITERAL
 			{
-			SHORT_LITERAL206=(CommonTree)match(input,SHORT_LITERAL,FOLLOW_SHORT_LITERAL_in_short_literal3410); 
-			 value = LiteralTools.parseShort((SHORT_LITERAL206!=null?SHORT_LITERAL206.getText():null)); 
+			SHORT_LITERAL226=(CommonTree)match(input,SHORT_LITERAL,FOLLOW_SHORT_LITERAL_in_short_literal3721); 
+			 value = LiteralTools.parseShort((SHORT_LITERAL226!=null?SHORT_LITERAL226.getText():null)); 
 			}
 
 		}
@@ -6787,19 +7544,19 @@
 
 
 	// $ANTLR start "byte_literal"
-	// smaliTreeWalker.g:1248:1: byte_literal returns [byte value] : BYTE_LITERAL ;
+	// smaliTreeWalker.g:1350:1: byte_literal returns [byte value] : BYTE_LITERAL ;
 	public final byte byte_literal() throws RecognitionException {
 		byte value = 0;
 
 
-		CommonTree BYTE_LITERAL207=null;
+		CommonTree BYTE_LITERAL227=null;
 
 		try {
-			// smaliTreeWalker.g:1249:3: ( BYTE_LITERAL )
-			// smaliTreeWalker.g:1249:5: BYTE_LITERAL
+			// smaliTreeWalker.g:1351:3: ( BYTE_LITERAL )
+			// smaliTreeWalker.g:1351:5: BYTE_LITERAL
 			{
-			BYTE_LITERAL207=(CommonTree)match(input,BYTE_LITERAL,FOLLOW_BYTE_LITERAL_in_byte_literal3425); 
-			 value = LiteralTools.parseByte((BYTE_LITERAL207!=null?BYTE_LITERAL207.getText():null)); 
+			BYTE_LITERAL227=(CommonTree)match(input,BYTE_LITERAL,FOLLOW_BYTE_LITERAL_in_byte_literal3736); 
+			 value = LiteralTools.parseByte((BYTE_LITERAL227!=null?BYTE_LITERAL227.getText():null)); 
 			}
 
 		}
@@ -6817,19 +7574,19 @@
 
 
 	// $ANTLR start "float_literal"
-	// smaliTreeWalker.g:1251:1: float_literal returns [float value] : FLOAT_LITERAL ;
+	// smaliTreeWalker.g:1353:1: float_literal returns [float value] : FLOAT_LITERAL ;
 	public final float float_literal() throws RecognitionException {
 		float value = 0.0f;
 
 
-		CommonTree FLOAT_LITERAL208=null;
+		CommonTree FLOAT_LITERAL228=null;
 
 		try {
-			// smaliTreeWalker.g:1252:3: ( FLOAT_LITERAL )
-			// smaliTreeWalker.g:1252:5: FLOAT_LITERAL
+			// smaliTreeWalker.g:1354:3: ( FLOAT_LITERAL )
+			// smaliTreeWalker.g:1354:5: FLOAT_LITERAL
 			{
-			FLOAT_LITERAL208=(CommonTree)match(input,FLOAT_LITERAL,FOLLOW_FLOAT_LITERAL_in_float_literal3440); 
-			 value = LiteralTools.parseFloat((FLOAT_LITERAL208!=null?FLOAT_LITERAL208.getText():null)); 
+			FLOAT_LITERAL228=(CommonTree)match(input,FLOAT_LITERAL,FOLLOW_FLOAT_LITERAL_in_float_literal3751); 
+			 value = LiteralTools.parseFloat((FLOAT_LITERAL228!=null?FLOAT_LITERAL228.getText():null)); 
 			}
 
 		}
@@ -6847,19 +7604,19 @@
 
 
 	// $ANTLR start "double_literal"
-	// smaliTreeWalker.g:1254:1: double_literal returns [double value] : DOUBLE_LITERAL ;
+	// smaliTreeWalker.g:1356:1: double_literal returns [double value] : DOUBLE_LITERAL ;
 	public final double double_literal() throws RecognitionException {
 		double value = 0.0;
 
 
-		CommonTree DOUBLE_LITERAL209=null;
+		CommonTree DOUBLE_LITERAL229=null;
 
 		try {
-			// smaliTreeWalker.g:1255:3: ( DOUBLE_LITERAL )
-			// smaliTreeWalker.g:1255:5: DOUBLE_LITERAL
+			// smaliTreeWalker.g:1357:3: ( DOUBLE_LITERAL )
+			// smaliTreeWalker.g:1357:5: DOUBLE_LITERAL
 			{
-			DOUBLE_LITERAL209=(CommonTree)match(input,DOUBLE_LITERAL,FOLLOW_DOUBLE_LITERAL_in_double_literal3455); 
-			 value = LiteralTools.parseDouble((DOUBLE_LITERAL209!=null?DOUBLE_LITERAL209.getText():null)); 
+			DOUBLE_LITERAL229=(CommonTree)match(input,DOUBLE_LITERAL,FOLLOW_DOUBLE_LITERAL_in_double_literal3766); 
+			 value = LiteralTools.parseDouble((DOUBLE_LITERAL229!=null?DOUBLE_LITERAL229.getText():null)); 
 			}
 
 		}
@@ -6877,19 +7634,19 @@
 
 
 	// $ANTLR start "char_literal"
-	// smaliTreeWalker.g:1257:1: char_literal returns [char value] : CHAR_LITERAL ;
+	// smaliTreeWalker.g:1359:1: char_literal returns [char value] : CHAR_LITERAL ;
 	public final char char_literal() throws RecognitionException {
 		char value = 0;
 
 
-		CommonTree CHAR_LITERAL210=null;
+		CommonTree CHAR_LITERAL230=null;
 
 		try {
-			// smaliTreeWalker.g:1258:3: ( CHAR_LITERAL )
-			// smaliTreeWalker.g:1258:5: CHAR_LITERAL
+			// smaliTreeWalker.g:1360:3: ( CHAR_LITERAL )
+			// smaliTreeWalker.g:1360:5: CHAR_LITERAL
 			{
-			CHAR_LITERAL210=(CommonTree)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_char_literal3470); 
-			 value = (CHAR_LITERAL210!=null?CHAR_LITERAL210.getText():null).charAt(1); 
+			CHAR_LITERAL230=(CommonTree)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_char_literal3781); 
+			 value = (CHAR_LITERAL230!=null?CHAR_LITERAL230.getText():null).charAt(1); 
 			}
 
 		}
@@ -6907,20 +7664,20 @@
 
 
 	// $ANTLR start "string_literal"
-	// smaliTreeWalker.g:1260:1: string_literal returns [String value] : STRING_LITERAL ;
+	// smaliTreeWalker.g:1362:1: string_literal returns [String value] : STRING_LITERAL ;
 	public final String string_literal() throws RecognitionException {
 		String value = null;
 
 
-		CommonTree STRING_LITERAL211=null;
+		CommonTree STRING_LITERAL231=null;
 
 		try {
-			// smaliTreeWalker.g:1261:3: ( STRING_LITERAL )
-			// smaliTreeWalker.g:1261:5: STRING_LITERAL
+			// smaliTreeWalker.g:1363:3: ( STRING_LITERAL )
+			// smaliTreeWalker.g:1363:5: STRING_LITERAL
 			{
-			STRING_LITERAL211=(CommonTree)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_string_literal3485); 
+			STRING_LITERAL231=(CommonTree)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_string_literal3796); 
 
-			      value = (STRING_LITERAL211!=null?STRING_LITERAL211.getText():null);
+			      value = (STRING_LITERAL231!=null?STRING_LITERAL231.getText():null);
 			      value = value.substring(1,value.length()-1);
 			    
 			}
@@ -6940,19 +7697,19 @@
 
 
 	// $ANTLR start "bool_literal"
-	// smaliTreeWalker.g:1267:1: bool_literal returns [boolean value] : BOOL_LITERAL ;
+	// smaliTreeWalker.g:1369:1: bool_literal returns [boolean value] : BOOL_LITERAL ;
 	public final boolean bool_literal() throws RecognitionException {
 		boolean value = false;
 
 
-		CommonTree BOOL_LITERAL212=null;
+		CommonTree BOOL_LITERAL232=null;
 
 		try {
-			// smaliTreeWalker.g:1268:3: ( BOOL_LITERAL )
-			// smaliTreeWalker.g:1268:5: BOOL_LITERAL
+			// smaliTreeWalker.g:1370:3: ( BOOL_LITERAL )
+			// smaliTreeWalker.g:1370:5: BOOL_LITERAL
 			{
-			BOOL_LITERAL212=(CommonTree)match(input,BOOL_LITERAL,FOLLOW_BOOL_LITERAL_in_bool_literal3504); 
-			 value = Boolean.parseBoolean((BOOL_LITERAL212!=null?BOOL_LITERAL212.getText():null)); 
+			BOOL_LITERAL232=(CommonTree)match(input,BOOL_LITERAL,FOLLOW_BOOL_LITERAL_in_bool_literal3815); 
+			 value = Boolean.parseBoolean((BOOL_LITERAL232!=null?BOOL_LITERAL232.getText():null)); 
 			}
 
 		}
@@ -6970,44 +7727,44 @@
 
 
 	// $ANTLR start "array_literal"
-	// smaliTreeWalker.g:1270:1: array_literal returns [List<EncodedValue> elements] : ^( I_ENCODED_ARRAY ( literal )* ) ;
+	// smaliTreeWalker.g:1372:1: array_literal returns [List<EncodedValue> elements] : ^( I_ENCODED_ARRAY ( literal )* ) ;
 	public final List<EncodedValue> array_literal() throws RecognitionException {
 		List<EncodedValue> elements = null;
 
 
-		EncodedValue literal213 =null;
+		ImmutableEncodedValue literal233 =null;
 
 		try {
-			// smaliTreeWalker.g:1271:3: ( ^( I_ENCODED_ARRAY ( literal )* ) )
-			// smaliTreeWalker.g:1271:5: ^( I_ENCODED_ARRAY ( literal )* )
+			// smaliTreeWalker.g:1373:3: ( ^( I_ENCODED_ARRAY ( literal )* ) )
+			// smaliTreeWalker.g:1373:5: ^( I_ENCODED_ARRAY ( literal )* )
 			{
 			elements = Lists.newArrayList();
-			match(input,I_ENCODED_ARRAY,FOLLOW_I_ENCODED_ARRAY_in_array_literal3526); 
+			match(input,I_ENCODED_ARRAY,FOLLOW_I_ENCODED_ARRAY_in_array_literal3837); 
 			if ( input.LA(1)==Token.DOWN ) {
 				match(input, Token.DOWN, null); 
-				// smaliTreeWalker.g:1272:23: ( literal )*
-				loop43:
+				// smaliTreeWalker.g:1374:23: ( literal )*
+				loop45:
 				while (true) {
-					int alt43=2;
-					int LA43_0 = input.LA(1);
-					if ( (LA43_0==ARRAY_TYPE_PREFIX||(LA43_0 >= BOOL_LITERAL && LA43_0 <= BYTE_LITERAL)||(LA43_0 >= CHAR_LITERAL && LA43_0 <= CLASS_DESCRIPTOR)||LA43_0==DOUBLE_LITERAL||LA43_0==FLOAT_LITERAL||LA43_0==INTEGER_LITERAL||(LA43_0 >= I_ENCODED_ARRAY && LA43_0 <= I_ENCODED_METHOD)||LA43_0==I_SUBANNOTATION||LA43_0==LONG_LITERAL||LA43_0==NULL_LITERAL||LA43_0==PRIMITIVE_TYPE||LA43_0==SHORT_LITERAL||LA43_0==STRING_LITERAL||LA43_0==VOID_TYPE) ) {
-						alt43=1;
+					int alt45=2;
+					int LA45_0 = input.LA(1);
+					if ( (LA45_0==ARRAY_TYPE_PREFIX||(LA45_0 >= BOOL_LITERAL && LA45_0 <= BYTE_LITERAL)||(LA45_0 >= CHAR_LITERAL && LA45_0 <= CLASS_DESCRIPTOR)||LA45_0==DOUBLE_LITERAL||LA45_0==FLOAT_LITERAL||LA45_0==INTEGER_LITERAL||(LA45_0 >= I_ENCODED_ARRAY && LA45_0 <= I_ENCODED_METHOD_HANDLE)||LA45_0==I_METHOD_PROTOTYPE||LA45_0==I_SUBANNOTATION||LA45_0==LONG_LITERAL||LA45_0==NULL_LITERAL||LA45_0==PRIMITIVE_TYPE||LA45_0==SHORT_LITERAL||LA45_0==STRING_LITERAL||LA45_0==VOID_TYPE) ) {
+						alt45=1;
 					}
 
-					switch (alt43) {
+					switch (alt45) {
 					case 1 :
-						// smaliTreeWalker.g:1272:24: literal
+						// smaliTreeWalker.g:1374:24: literal
 						{
-						pushFollow(FOLLOW_literal_in_array_literal3529);
-						literal213=literal();
+						pushFollow(FOLLOW_literal_in_array_literal3840);
+						literal233=literal();
 						state._fsp--;
 
-						elements.add(literal213);
+						elements.add(literal233);
 						}
 						break;
 
 					default :
-						break loop43;
+						break loop45;
 					}
 				}
 
@@ -7031,40 +7788,40 @@
 
 
 	// $ANTLR start "annotations"
-	// smaliTreeWalker.g:1274:1: annotations returns [Set<Annotation> annotations] : ^( I_ANNOTATIONS ( annotation )* ) ;
+	// smaliTreeWalker.g:1376:1: annotations returns [Set<Annotation> annotations] : ^( I_ANNOTATIONS ( annotation )* ) ;
 	public final Set<Annotation> annotations() throws RecognitionException {
 		Set<Annotation> annotations = null;
 
 
-		Annotation annotation214 =null;
+		Annotation annotation234 =null;
 
 		try {
-			// smaliTreeWalker.g:1275:3: ( ^( I_ANNOTATIONS ( annotation )* ) )
-			// smaliTreeWalker.g:1275:5: ^( I_ANNOTATIONS ( annotation )* )
+			// smaliTreeWalker.g:1377:3: ( ^( I_ANNOTATIONS ( annotation )* ) )
+			// smaliTreeWalker.g:1377:5: ^( I_ANNOTATIONS ( annotation )* )
 			{
 			HashMap<String, Annotation> annotationMap = Maps.newHashMap();
-			match(input,I_ANNOTATIONS,FOLLOW_I_ANNOTATIONS_in_annotations3554); 
+			match(input,I_ANNOTATIONS,FOLLOW_I_ANNOTATIONS_in_annotations3865); 
 			if ( input.LA(1)==Token.DOWN ) {
 				match(input, Token.DOWN, null); 
-				// smaliTreeWalker.g:1276:21: ( annotation )*
-				loop44:
+				// smaliTreeWalker.g:1378:21: ( annotation )*
+				loop46:
 				while (true) {
-					int alt44=2;
-					int LA44_0 = input.LA(1);
-					if ( (LA44_0==I_ANNOTATION) ) {
-						alt44=1;
+					int alt46=2;
+					int LA46_0 = input.LA(1);
+					if ( (LA46_0==I_ANNOTATION) ) {
+						alt46=1;
 					}
 
-					switch (alt44) {
+					switch (alt46) {
 					case 1 :
-						// smaliTreeWalker.g:1276:22: annotation
+						// smaliTreeWalker.g:1378:22: annotation
 						{
-						pushFollow(FOLLOW_annotation_in_annotations3557);
-						annotation214=annotation();
+						pushFollow(FOLLOW_annotation_in_annotations3868);
+						annotation234=annotation();
 						state._fsp--;
 
 
-						        Annotation anno = annotation214;
+						        Annotation anno = annotation234;
 						        Annotation old = annotationMap.put(anno.getType(), anno);
 						        if (old != null) {
 						            throw new SemanticException(input, "Multiple annotations of type %s", anno.getType());
@@ -7074,7 +7831,7 @@
 						break;
 
 					default :
-						break loop44;
+						break loop46;
 					}
 				}
 
@@ -7082,9 +7839,7 @@
 			}
 
 
-			      if (annotationMap.size() > 0) {
 			        annotations = ImmutableSet.copyOf(annotationMap.values());
-			      }
 			    
 			}
 
@@ -7103,30 +7858,30 @@
 
 
 	// $ANTLR start "annotation"
-	// smaliTreeWalker.g:1290:1: annotation returns [Annotation annotation] : ^( I_ANNOTATION ANNOTATION_VISIBILITY subannotation ) ;
+	// smaliTreeWalker.g:1390:1: annotation returns [Annotation annotation] : ^( I_ANNOTATION ANNOTATION_VISIBILITY subannotation ) ;
 	public final Annotation annotation() throws RecognitionException {
 		Annotation annotation = null;
 
 
-		CommonTree ANNOTATION_VISIBILITY215=null;
-		TreeRuleReturnScope subannotation216 =null;
+		CommonTree ANNOTATION_VISIBILITY235=null;
+		TreeRuleReturnScope subannotation236 =null;
 
 		try {
-			// smaliTreeWalker.g:1291:3: ( ^( I_ANNOTATION ANNOTATION_VISIBILITY subannotation ) )
-			// smaliTreeWalker.g:1291:5: ^( I_ANNOTATION ANNOTATION_VISIBILITY subannotation )
+			// smaliTreeWalker.g:1391:3: ( ^( I_ANNOTATION ANNOTATION_VISIBILITY subannotation ) )
+			// smaliTreeWalker.g:1391:5: ^( I_ANNOTATION ANNOTATION_VISIBILITY subannotation )
 			{
-			match(input,I_ANNOTATION,FOLLOW_I_ANNOTATION_in_annotation3586); 
+			match(input,I_ANNOTATION,FOLLOW_I_ANNOTATION_in_annotation3897); 
 			match(input, Token.DOWN, null); 
-			ANNOTATION_VISIBILITY215=(CommonTree)match(input,ANNOTATION_VISIBILITY,FOLLOW_ANNOTATION_VISIBILITY_in_annotation3588); 
-			pushFollow(FOLLOW_subannotation_in_annotation3590);
-			subannotation216=subannotation();
+			ANNOTATION_VISIBILITY235=(CommonTree)match(input,ANNOTATION_VISIBILITY,FOLLOW_ANNOTATION_VISIBILITY_in_annotation3899); 
+			pushFollow(FOLLOW_subannotation_in_annotation3901);
+			subannotation236=subannotation();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      int visibility = AnnotationVisibility.getVisibility((ANNOTATION_VISIBILITY215!=null?ANNOTATION_VISIBILITY215.getText():null));
-			      annotation = new ImmutableAnnotation(visibility, (subannotation216!=null?((smaliTreeWalker.subannotation_return)subannotation216).annotationType:null), (subannotation216!=null?((smaliTreeWalker.subannotation_return)subannotation216).elements:null));
+			      int visibility = AnnotationVisibility.getVisibility((ANNOTATION_VISIBILITY235!=null?ANNOTATION_VISIBILITY235.getText():null));
+			      annotation = new ImmutableAnnotation(visibility, (subannotation236!=null?((smaliTreeWalker.subannotation_return)subannotation236).annotationType:null), (subannotation236!=null?((smaliTreeWalker.subannotation_return)subannotation236).elements:null));
 			    
 			}
 
@@ -7145,29 +7900,29 @@
 
 
 	// $ANTLR start "annotation_element"
-	// smaliTreeWalker.g:1297:1: annotation_element returns [AnnotationElement element] : ^( I_ANNOTATION_ELEMENT SIMPLE_NAME literal ) ;
+	// smaliTreeWalker.g:1397:1: annotation_element returns [AnnotationElement element] : ^( I_ANNOTATION_ELEMENT SIMPLE_NAME literal ) ;
 	public final AnnotationElement annotation_element() throws RecognitionException {
 		AnnotationElement element = null;
 
 
-		CommonTree SIMPLE_NAME217=null;
-		EncodedValue literal218 =null;
+		CommonTree SIMPLE_NAME237=null;
+		ImmutableEncodedValue literal238 =null;
 
 		try {
-			// smaliTreeWalker.g:1298:3: ( ^( I_ANNOTATION_ELEMENT SIMPLE_NAME literal ) )
-			// smaliTreeWalker.g:1298:5: ^( I_ANNOTATION_ELEMENT SIMPLE_NAME literal )
+			// smaliTreeWalker.g:1398:3: ( ^( I_ANNOTATION_ELEMENT SIMPLE_NAME literal ) )
+			// smaliTreeWalker.g:1398:5: ^( I_ANNOTATION_ELEMENT SIMPLE_NAME literal )
 			{
-			match(input,I_ANNOTATION_ELEMENT,FOLLOW_I_ANNOTATION_ELEMENT_in_annotation_element3611); 
+			match(input,I_ANNOTATION_ELEMENT,FOLLOW_I_ANNOTATION_ELEMENT_in_annotation_element3922); 
 			match(input, Token.DOWN, null); 
-			SIMPLE_NAME217=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_annotation_element3613); 
-			pushFollow(FOLLOW_literal_in_annotation_element3615);
-			literal218=literal();
+			SIMPLE_NAME237=(CommonTree)match(input,SIMPLE_NAME,FOLLOW_SIMPLE_NAME_in_annotation_element3924); 
+			pushFollow(FOLLOW_literal_in_annotation_element3926);
+			literal238=literal();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      element = new ImmutableAnnotationElement((SIMPLE_NAME217!=null?SIMPLE_NAME217.getText():null), literal218);
+			      element = new ImmutableAnnotationElement((SIMPLE_NAME237!=null?SIMPLE_NAME237.getText():null), literal238);
 			    
 			}
 
@@ -7191,54 +7946,54 @@
 
 
 	// $ANTLR start "subannotation"
-	// smaliTreeWalker.g:1303:1: subannotation returns [String annotationType, List<AnnotationElement> elements] : ^( I_SUBANNOTATION CLASS_DESCRIPTOR ( annotation_element )* ) ;
+	// smaliTreeWalker.g:1403:1: subannotation returns [String annotationType, List<AnnotationElement> elements] : ^( I_SUBANNOTATION CLASS_DESCRIPTOR ( annotation_element )* ) ;
 	public final smaliTreeWalker.subannotation_return subannotation() throws RecognitionException {
 		smaliTreeWalker.subannotation_return retval = new smaliTreeWalker.subannotation_return();
 		retval.start = input.LT(1);
 
-		CommonTree CLASS_DESCRIPTOR220=null;
-		AnnotationElement annotation_element219 =null;
+		CommonTree CLASS_DESCRIPTOR240=null;
+		AnnotationElement annotation_element239 =null;
 
 		try {
-			// smaliTreeWalker.g:1304:3: ( ^( I_SUBANNOTATION CLASS_DESCRIPTOR ( annotation_element )* ) )
-			// smaliTreeWalker.g:1304:5: ^( I_SUBANNOTATION CLASS_DESCRIPTOR ( annotation_element )* )
+			// smaliTreeWalker.g:1404:3: ( ^( I_SUBANNOTATION CLASS_DESCRIPTOR ( annotation_element )* ) )
+			// smaliTreeWalker.g:1404:5: ^( I_SUBANNOTATION CLASS_DESCRIPTOR ( annotation_element )* )
 			{
 			ArrayList<AnnotationElement> elements = Lists.newArrayList();
-			match(input,I_SUBANNOTATION,FOLLOW_I_SUBANNOTATION_in_subannotation3642); 
+			match(input,I_SUBANNOTATION,FOLLOW_I_SUBANNOTATION_in_subannotation3953); 
 			match(input, Token.DOWN, null); 
-			CLASS_DESCRIPTOR220=(CommonTree)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_subannotation3652); 
-			// smaliTreeWalker.g:1307:9: ( annotation_element )*
-			loop45:
+			CLASS_DESCRIPTOR240=(CommonTree)match(input,CLASS_DESCRIPTOR,FOLLOW_CLASS_DESCRIPTOR_in_subannotation3963); 
+			// smaliTreeWalker.g:1407:9: ( annotation_element )*
+			loop47:
 			while (true) {
-				int alt45=2;
-				int LA45_0 = input.LA(1);
-				if ( (LA45_0==I_ANNOTATION_ELEMENT) ) {
-					alt45=1;
+				int alt47=2;
+				int LA47_0 = input.LA(1);
+				if ( (LA47_0==I_ANNOTATION_ELEMENT) ) {
+					alt47=1;
 				}
 
-				switch (alt45) {
+				switch (alt47) {
 				case 1 :
-					// smaliTreeWalker.g:1307:10: annotation_element
+					// smaliTreeWalker.g:1407:10: annotation_element
 					{
-					pushFollow(FOLLOW_annotation_element_in_subannotation3663);
-					annotation_element219=annotation_element();
+					pushFollow(FOLLOW_annotation_element_in_subannotation3974);
+					annotation_element239=annotation_element();
 					state._fsp--;
 
 
-					           elements.add(annotation_element219);
+					           elements.add(annotation_element239);
 					        
 					}
 					break;
 
 				default :
-					break loop45;
+					break loop47;
 				}
 			}
 
 			match(input, Token.UP, null); 
 
 
-			      retval.annotationType = (CLASS_DESCRIPTOR220!=null?CLASS_DESCRIPTOR220.getText():null);
+			      retval.annotationType = (CLASS_DESCRIPTOR240!=null?CLASS_DESCRIPTOR240.getText():null);
 			      retval.elements = elements;
 			    
 			}
@@ -7258,27 +8013,27 @@
 
 
 	// $ANTLR start "field_literal"
-	// smaliTreeWalker.g:1317:1: field_literal returns [FieldReference value] : ^( I_ENCODED_FIELD field_reference ) ;
-	public final FieldReference field_literal() throws RecognitionException {
-		FieldReference value = null;
+	// smaliTreeWalker.g:1417:1: field_literal returns [ImmutableFieldReference value] : ^( I_ENCODED_FIELD field_reference ) ;
+	public final ImmutableFieldReference field_literal() throws RecognitionException {
+		ImmutableFieldReference value = null;
 
 
-		ImmutableFieldReference field_reference221 =null;
+		TreeRuleReturnScope field_reference241 =null;
 
 		try {
-			// smaliTreeWalker.g:1318:3: ( ^( I_ENCODED_FIELD field_reference ) )
-			// smaliTreeWalker.g:1318:5: ^( I_ENCODED_FIELD field_reference )
+			// smaliTreeWalker.g:1418:3: ( ^( I_ENCODED_FIELD field_reference ) )
+			// smaliTreeWalker.g:1418:5: ^( I_ENCODED_FIELD field_reference )
 			{
-			match(input,I_ENCODED_FIELD,FOLLOW_I_ENCODED_FIELD_in_field_literal3702); 
+			match(input,I_ENCODED_FIELD,FOLLOW_I_ENCODED_FIELD_in_field_literal4013); 
 			match(input, Token.DOWN, null); 
-			pushFollow(FOLLOW_field_reference_in_field_literal3704);
-			field_reference221=field_reference();
+			pushFollow(FOLLOW_field_reference_in_field_literal4015);
+			field_reference241=field_reference();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      value = field_reference221;
+			      value = (field_reference241!=null?((smaliTreeWalker.field_reference_return)field_reference241).fieldReference:null);
 			    
 			}
 
@@ -7297,27 +8052,27 @@
 
 
 	// $ANTLR start "method_literal"
-	// smaliTreeWalker.g:1323:1: method_literal returns [MethodReference value] : ^( I_ENCODED_METHOD method_reference ) ;
-	public final MethodReference method_literal() throws RecognitionException {
-		MethodReference value = null;
+	// smaliTreeWalker.g:1423:1: method_literal returns [ImmutableMethodReference value] : ^( I_ENCODED_METHOD method_reference ) ;
+	public final ImmutableMethodReference method_literal() throws RecognitionException {
+		ImmutableMethodReference value = null;
 
 
-		ImmutableMethodReference method_reference222 =null;
+		ImmutableMethodReference method_reference242 =null;
 
 		try {
-			// smaliTreeWalker.g:1324:3: ( ^( I_ENCODED_METHOD method_reference ) )
-			// smaliTreeWalker.g:1324:5: ^( I_ENCODED_METHOD method_reference )
+			// smaliTreeWalker.g:1424:3: ( ^( I_ENCODED_METHOD method_reference ) )
+			// smaliTreeWalker.g:1424:5: ^( I_ENCODED_METHOD method_reference )
 			{
-			match(input,I_ENCODED_METHOD,FOLLOW_I_ENCODED_METHOD_in_method_literal3725); 
+			match(input,I_ENCODED_METHOD,FOLLOW_I_ENCODED_METHOD_in_method_literal4036); 
 			match(input, Token.DOWN, null); 
-			pushFollow(FOLLOW_method_reference_in_method_literal3727);
-			method_reference222=method_reference();
+			pushFollow(FOLLOW_method_reference_in_method_literal4038);
+			method_reference242=method_reference();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      value = method_reference222;
+			      value = method_reference242;
 			    
 			}
 
@@ -7336,27 +8091,27 @@
 
 
 	// $ANTLR start "enum_literal"
-	// smaliTreeWalker.g:1329:1: enum_literal returns [FieldReference value] : ^( I_ENCODED_ENUM field_reference ) ;
-	public final FieldReference enum_literal() throws RecognitionException {
-		FieldReference value = null;
+	// smaliTreeWalker.g:1429:1: enum_literal returns [ImmutableFieldReference value] : ^( I_ENCODED_ENUM field_reference ) ;
+	public final ImmutableFieldReference enum_literal() throws RecognitionException {
+		ImmutableFieldReference value = null;
 
 
-		ImmutableFieldReference field_reference223 =null;
+		TreeRuleReturnScope field_reference243 =null;
 
 		try {
-			// smaliTreeWalker.g:1330:3: ( ^( I_ENCODED_ENUM field_reference ) )
-			// smaliTreeWalker.g:1330:5: ^( I_ENCODED_ENUM field_reference )
+			// smaliTreeWalker.g:1430:3: ( ^( I_ENCODED_ENUM field_reference ) )
+			// smaliTreeWalker.g:1430:5: ^( I_ENCODED_ENUM field_reference )
 			{
-			match(input,I_ENCODED_ENUM,FOLLOW_I_ENCODED_ENUM_in_enum_literal3748); 
+			match(input,I_ENCODED_ENUM,FOLLOW_I_ENCODED_ENUM_in_enum_literal4059); 
 			match(input, Token.DOWN, null); 
-			pushFollow(FOLLOW_field_reference_in_enum_literal3750);
-			field_reference223=field_reference();
+			pushFollow(FOLLOW_field_reference_in_enum_literal4061);
+			field_reference243=field_reference();
 			state._fsp--;
 
 			match(input, Token.UP, null); 
 
 
-			      value = field_reference223;
+			      value = (field_reference243!=null?((smaliTreeWalker.field_reference_return)field_reference243).fieldReference:null);
 			    
 			}
 
@@ -7377,35 +8132,35 @@
 
 
 	public static final BitSet FOLLOW_I_CLASS_DEF_in_smali_file52 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_header_in_smali_file54 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
-	public static final BitSet FOLLOW_methods_in_smali_file56 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
-	public static final BitSet FOLLOW_fields_in_smali_file58 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+	public static final BitSet FOLLOW_header_in_smali_file54 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
+	public static final BitSet FOLLOW_methods_in_smali_file56 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+	public static final BitSet FOLLOW_fields_in_smali_file58 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
 	public static final BitSet FOLLOW_annotations_in_smali_file60 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_class_spec_in_header85 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L,0x0000020000000004L});
-	public static final BitSet FOLLOW_super_spec_in_header87 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L,0x0000000000000004L});
-	public static final BitSet FOLLOW_implements_list_in_header90 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
+	public static final BitSet FOLLOW_class_spec_in_header85 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L,0x0040000000000800L});
+	public static final BitSet FOLLOW_super_spec_in_header87 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L,0x0000000000000800L});
+	public static final BitSet FOLLOW_implements_list_in_header90 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
 	public static final BitSet FOLLOW_source_spec_in_header92 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_class_spec110 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_class_spec110 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
 	public static final BitSet FOLLOW_access_list_in_class_spec112 = new BitSet(new long[]{0x0000000000000002L});
 	public static final BitSet FOLLOW_I_SUPER_in_super_spec130 = new BitSet(new long[]{0x0000000000000004L});
 	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_super_spec132 = new BitSet(new long[]{0x0000000000000008L});
 	public static final BitSet FOLLOW_I_IMPLEMENTS_in_implements_spec152 = new BitSet(new long[]{0x0000000000000004L});
 	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_implements_spec154 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_implements_spec_in_implements_list184 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
+	public static final BitSet FOLLOW_implements_spec_in_implements_list184 = new BitSet(new long[]{0x0000000000000002L,0x0080000000000000L});
 	public static final BitSet FOLLOW_I_SOURCE_in_source_spec213 = new BitSet(new long[]{0x0000000000000004L});
 	public static final BitSet FOLLOW_string_literal_in_source_spec215 = new BitSet(new long[]{0x0000000000000008L});
 	public static final BitSet FOLLOW_I_ACCESS_LIST_in_access_list248 = new BitSet(new long[]{0x0000000000000004L});
 	public static final BitSet FOLLOW_ACCESS_SPEC_in_access_list266 = new BitSet(new long[]{0x0000000000000018L});
 	public static final BitSet FOLLOW_I_FIELDS_in_fields308 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_field_in_fields317 = new BitSet(new long[]{0x0000000000000008L,0x0000040000000000L});
+	public static final BitSet FOLLOW_field_in_fields317 = new BitSet(new long[]{0x0000000000000008L,0x0008000000000000L});
 	public static final BitSet FOLLOW_I_METHODS_in_methods349 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_method_in_methods358 = new BitSet(new long[]{0x0000000000000008L,0x0008000000000000L});
+	public static final BitSet FOLLOW_method_in_methods358 = new BitSet(new long[]{0x0000000000000008L,0x1000000000000000L});
 	public static final BitSet FOLLOW_I_FIELD_in_field383 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_SIMPLE_NAME_in_field385 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-	public static final BitSet FOLLOW_access_list_in_field387 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+	public static final BitSet FOLLOW_SIMPLE_NAME_in_field385 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
+	public static final BitSet FOLLOW_access_list_in_field387 = new BitSet(new long[]{0x0000000000000000L,0x0040000000000000L});
 	public static final BitSet FOLLOW_I_FIELD_TYPE_in_field390 = new BitSet(new long[]{0x0000000000000004L});
 	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_field392 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_field_initial_value_in_field395 = new BitSet(new long[]{0x0000000000000008L,0x0000000010000000L});
+	public static final BitSet FOLLOW_field_initial_value_in_field395 = new BitSet(new long[]{0x0000000000000008L,0x0000000400000000L});
 	public static final BitSet FOLLOW_annotations_in_field397 = new BitSet(new long[]{0x0000000000000008L});
 	public static final BitSet FOLLOW_I_FIELD_INITIAL_VALUE_in_field_initial_value418 = new BitSet(new long[]{0x0000000000000004L});
 	public static final BitSet FOLLOW_literal_in_field_initial_value420 = new BitSet(new long[]{0x0000000000000008L});
@@ -7425,342 +8180,378 @@
 	public static final BitSet FOLLOW_field_literal_in_literal546 = new BitSet(new long[]{0x0000000000000002L});
 	public static final BitSet FOLLOW_method_literal_in_literal554 = new BitSet(new long[]{0x0000000000000002L});
 	public static final BitSet FOLLOW_enum_literal_in_literal562 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_integer_literal_in_fixed_64bit_literal_number578 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_long_literal_in_fixed_64bit_literal_number586 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_short_literal_in_fixed_64bit_literal_number594 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_byte_literal_in_fixed_64bit_literal_number602 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_float_literal_in_fixed_64bit_literal_number610 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_double_literal_in_fixed_64bit_literal_number618 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_char_literal_in_fixed_64bit_literal_number626 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_bool_literal_in_fixed_64bit_literal_number634 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_integer_literal_in_fixed_64bit_literal649 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_long_literal_in_fixed_64bit_literal657 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_short_literal_in_fixed_64bit_literal665 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_byte_literal_in_fixed_64bit_literal673 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_float_literal_in_fixed_64bit_literal681 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_double_literal_in_fixed_64bit_literal689 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_char_literal_in_fixed_64bit_literal697 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_bool_literal_in_fixed_64bit_literal705 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_integer_literal_in_fixed_32bit_literal722 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_long_literal_in_fixed_32bit_literal730 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_short_literal_in_fixed_32bit_literal738 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_byte_literal_in_fixed_32bit_literal746 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_float_literal_in_fixed_32bit_literal754 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_char_literal_in_fixed_32bit_literal762 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_bool_literal_in_fixed_32bit_literal770 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_I_ARRAY_ELEMENTS_in_array_elements792 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_fixed_64bit_literal_number_in_array_elements801 = new BitSet(new long[]{0x0000004000404C08L,0x0000000001000000L,0x4000400000000000L});
-	public static final BitSet FOLLOW_I_PACKED_SWITCH_ELEMENTS_in_packed_switch_elements837 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_label_ref_in_packed_switch_elements846 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_I_SPARSE_SWITCH_ELEMENTS_in_sparse_switch_elements881 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_fixed_32bit_literal_in_sparse_switch_elements891 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_label_ref_in_sparse_switch_elements893 = new BitSet(new long[]{0x0000004000004C08L,0x0000000001000000L,0x4000400000000000L});
-	public static final BitSet FOLLOW_I_METHOD_in_method945 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_method_name_and_prototype_in_method953 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-	public static final BitSet FOLLOW_access_list_in_method961 = new BitSet(new long[]{0x0000000000000000L,0x4084000000000000L});
-	public static final BitSet FOLLOW_registers_directive_in_method988 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
-	public static final BitSet FOLLOW_ordered_method_items_in_method1045 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
-	public static final BitSet FOLLOW_catches_in_method1053 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_parameters_in_method1061 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
-	public static final BitSet FOLLOW_annotations_in_method1070 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_METHOD_PROTOTYPE_in_method_prototype1094 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_I_METHOD_RETURN_TYPE_in_method_prototype1097 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_type_descriptor_in_method_prototype1099 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_method_type_list_in_method_prototype1102 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_SIMPLE_NAME_in_method_name_and_prototype1120 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
-	public static final BitSet FOLLOW_method_prototype_in_method_name_and_prototype1122 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_method_type_list1156 = new BitSet(new long[]{0x0000000000008102L,0x0000000000000000L,0x0200000000000000L});
-	public static final BitSet FOLLOW_reference_type_descriptor_in_method_reference1185 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_SIMPLE_NAME_in_method_reference1188 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
-	public static final BitSet FOLLOW_method_prototype_in_method_reference1190 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_reference_type_descriptor_in_field_reference1207 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_SIMPLE_NAME_in_field_reference1210 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x0200000000000000L});
-	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_field_reference1212 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_I_REGISTERS_in_registers_directive1238 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_I_LOCALS_in_registers_directive1250 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_short_integral_literal_in_registers_directive1268 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_LABEL_in_label_def1288 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_SIMPLE_NAME_in_label_def1290 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_CATCHES_in_catches1316 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_catch_directive_in_catches1318 = new BitSet(new long[]{0x0000000000000008L,0x0000000300000000L});
-	public static final BitSet FOLLOW_catchall_directive_in_catches1321 = new BitSet(new long[]{0x0000000000000008L,0x0000000200000000L});
-	public static final BitSet FOLLOW_I_CATCH_in_catch_directive1334 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_catch_directive1336 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_label_ref_in_catch_directive1340 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_label_ref_in_catch_directive1344 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_label_ref_in_catch_directive1348 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_CATCHALL_in_catchall_directive1364 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_label_ref_in_catchall_directive1368 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_label_ref_in_catchall_directive1372 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_label_ref_in_catchall_directive1376 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_PARAMETERS_in_parameters1393 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_parameter_in_parameters1396 = new BitSet(new long[]{0x0000000000000008L,0x0400000000000000L});
-	public static final BitSet FOLLOW_I_PARAMETER_in_parameter1412 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_REGISTER_in_parameter1414 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L,0x0000000000000000L,0x0000000000000004L});
-	public static final BitSet FOLLOW_string_literal_in_parameter1416 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
-	public static final BitSet FOLLOW_annotations_in_parameter1419 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_line_in_debug_directive1436 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_local_in_debug_directive1442 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_end_local_in_debug_directive1448 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_restart_local_in_debug_directive1454 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_prologue_in_debug_directive1460 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_epilogue_in_debug_directive1466 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_source_in_debug_directive1472 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_I_LINE_in_line1483 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_integral_literal_in_line1485 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_LOCAL_in_local1503 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_REGISTER_in_local1505 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0004000000000000L,0x0000000000000004L});
-	public static final BitSet FOLLOW_NULL_LITERAL_in_local1509 = new BitSet(new long[]{0x0000000000008108L,0x0000000000000000L,0x0200000000000000L,0x0000000000000004L});
-	public static final BitSet FOLLOW_string_literal_in_local1515 = new BitSet(new long[]{0x0000000000008108L,0x0000000000000000L,0x0200000000000000L,0x0000000000000004L});
-	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_local1518 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
-	public static final BitSet FOLLOW_string_literal_in_local1523 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_END_LOCAL_in_end_local1544 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_REGISTER_in_end_local1546 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_RESTART_LOCAL_in_restart_local1564 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_REGISTER_in_restart_local1566 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_PROLOGUE_in_prologue1583 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_I_EPILOGUE_in_epilogue1599 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_I_SOURCE_in_source1616 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_string_literal_in_source1618 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_ORDERED_METHOD_ITEMS_in_ordered_method_items1637 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_label_def_in_ordered_method_items1640 = new BitSet(new long[]{0x0000000000000008L,0x2003830000000000L,0x000000FFFFFFFFF6L});
-	public static final BitSet FOLLOW_instruction_in_ordered_method_items1644 = new BitSet(new long[]{0x0000000000000008L,0x2003830000000000L,0x000000FFFFFFFFF6L});
-	public static final BitSet FOLLOW_debug_directive_in_ordered_method_items1648 = new BitSet(new long[]{0x0000000000000008L,0x2003830000000000L,0x000000FFFFFFFFF6L});
-	public static final BitSet FOLLOW_SIMPLE_NAME_in_label_ref1664 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_I_REGISTER_LIST_in_register_list1689 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_REGISTER_in_register_list1698 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_I_REGISTER_RANGE_in_register_range1723 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_REGISTER_in_register_range1728 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_register_range1732 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_verification_error_reference1755 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_field_reference_in_verification_error_reference1765 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_method_reference_in_verification_error_reference1775 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_VERIFICATION_ERROR_TYPE_in_verification_error_type1792 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format10t_in_instruction1806 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format10x_in_instruction1812 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format11n_in_instruction1818 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format11x_in_instruction1824 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format12x_in_instruction1830 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format20bc_in_instruction1836 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format20t_in_instruction1842 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format21c_field_in_instruction1848 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format21c_string_in_instruction1854 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format21c_type_in_instruction1860 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format21ih_in_instruction1866 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format21lh_in_instruction1872 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format21s_in_instruction1878 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format21t_in_instruction1884 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format22b_in_instruction1890 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format22c_field_in_instruction1896 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format22c_type_in_instruction1902 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format22s_in_instruction1908 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format22t_in_instruction1914 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format22x_in_instruction1920 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format23x_in_instruction1926 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format30t_in_instruction1932 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format31c_in_instruction1938 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format31i_in_instruction1944 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format31t_in_instruction1950 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format32x_in_instruction1956 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format35c_method_in_instruction1962 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format35c_type_in_instruction1968 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format3rc_method_in_instruction1974 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format3rc_type_in_instruction1980 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format45cc_method_in_instruction1986 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format4rcc_method_in_instruction1992 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_format51l_type_in_instruction1998 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_array_data_directive_in_instruction2004 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_packed_switch_directive_in_instruction2010 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_insn_sparse_switch_directive_in_instruction2016 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT10t_in_insn_format10t2040 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT10t_in_insn_format10t2042 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_label_ref_in_insn_format10t2044 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT10x_in_insn_format10x2067 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT10x_in_insn_format10x2069 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT11n_in_insn_format11n2092 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT11n_in_insn_format11n2094 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format11n2096 = new BitSet(new long[]{0x0000000000004800L,0x0000000001000000L,0x4000400000000000L});
-	public static final BitSet FOLLOW_short_integral_literal_in_insn_format11n2098 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT11x_in_insn_format11x2121 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT11x_in_insn_format11x2123 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format11x2125 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT12x_in_insn_format12x2148 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT12x_in_insn_format12x2150 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format12x2154 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format12x2158 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT20bc_in_insn_format20bc2181 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT20bc_in_insn_format20bc2183 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
-	public static final BitSet FOLLOW_verification_error_type_in_insn_format20bc2185 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_verification_error_reference_in_insn_format20bc2187 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT20t_in_insn_format20t2210 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT20t_in_insn_format20t2212 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_label_ref_in_insn_format20t2214 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT21c_FIELD_in_insn_format21c_field2237 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_set_in_insn_format21c_field2241 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format21c_field2249 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_field_reference_in_insn_format21c_field2251 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT21c_STRING_in_insn_format21c_string2274 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_STRING_in_insn_format21c_string2276 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format21c_string2278 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
-	public static final BitSet FOLLOW_string_literal_in_insn_format21c_string2280 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT21c_TYPE_in_insn_format21c_type2303 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_TYPE_in_insn_format21c_type2305 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format21c_type2307 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x0200000000000000L});
-	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format21c_type2309 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT21ih_in_insn_format21ih2332 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21ih_in_insn_format21ih2334 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format21ih2336 = new BitSet(new long[]{0x0000004000004C00L,0x0000000001000000L,0x4000400000000000L});
-	public static final BitSet FOLLOW_fixed_32bit_literal_in_insn_format21ih2338 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT21lh_in_insn_format21lh2361 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21lh_in_insn_format21lh2363 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format21lh2365 = new BitSet(new long[]{0x0000004000404C00L,0x0000000001000000L,0x4000400000000000L});
-	public static final BitSet FOLLOW_fixed_64bit_literal_in_insn_format21lh2367 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT21s_in_insn_format21s2390 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21s_in_insn_format21s2392 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format21s2394 = new BitSet(new long[]{0x0000000000004800L,0x0000000001000000L,0x4000400000000000L});
-	public static final BitSet FOLLOW_short_integral_literal_in_insn_format21s2396 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT21t_in_insn_format21t2419 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21t_in_insn_format21t2421 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format21t2423 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_label_ref_in_insn_format21t2425 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT22b_in_insn_format22b2448 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22b_in_insn_format22b2450 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22b2454 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22b2458 = new BitSet(new long[]{0x0000000000004800L,0x0000000001000000L,0x4000400000000000L});
-	public static final BitSet FOLLOW_short_integral_literal_in_insn_format22b2460 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT22c_FIELD_in_insn_format22c_field2483 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_set_in_insn_format22c_field2487 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_field2497 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_field2501 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_field_reference_in_insn_format22c_field2503 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT22c_TYPE_in_insn_format22c_type2526 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22c_TYPE_in_insn_format22c_type2528 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_type2532 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_type2536 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x0200000000000000L});
-	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format22c_type2538 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT22s_in_insn_format22s2561 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22s_in_insn_format22s2563 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22s2567 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22s2571 = new BitSet(new long[]{0x0000000000004800L,0x0000000001000000L,0x4000400000000000L});
-	public static final BitSet FOLLOW_short_integral_literal_in_insn_format22s2573 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT22t_in_insn_format22t2596 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22t_in_insn_format22t2598 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22t2602 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22t2606 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_label_ref_in_insn_format22t2608 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT22x_in_insn_format22x2631 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22x_in_insn_format22x2633 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22x2637 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format22x2641 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT23x_in_insn_format23x2664 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT23x_in_insn_format23x2666 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format23x2670 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format23x2674 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format23x2678 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT30t_in_insn_format30t2701 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT30t_in_insn_format30t2703 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_label_ref_in_insn_format30t2705 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT31c_in_insn_format31c2728 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT31c_in_insn_format31c2730 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format31c2732 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
-	public static final BitSet FOLLOW_string_literal_in_insn_format31c2734 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT31i_in_insn_format31i2757 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT31i_in_insn_format31i2759 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format31i2761 = new BitSet(new long[]{0x0000004000004C00L,0x0000000001000000L,0x4000400000000000L});
-	public static final BitSet FOLLOW_fixed_32bit_literal_in_insn_format31i2763 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT31t_in_insn_format31t2786 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT31t_in_insn_format31t2788 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format31t2790 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_label_ref_in_insn_format31t2792 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT32x_in_insn_format32x2815 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT32x_in_insn_format32x2817 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format32x2821 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format32x2825 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT35c_METHOD_in_insn_format35c_method2848 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_METHOD_in_insn_format35c_method2850 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_register_list_in_insn_format35c_method2852 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_method_reference_in_insn_format35c_method2854 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT35c_TYPE_in_insn_format35c_type2877 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_TYPE_in_insn_format35c_type2879 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_register_list_in_insn_format35c_type2881 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x0200000000000000L});
-	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format35c_type2883 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT3rc_METHOD_in_insn_format3rc_method2906 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rc_METHOD_in_insn_format3rc_method2908 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
-	public static final BitSet FOLLOW_register_range_in_insn_format3rc_method2910 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_method_reference_in_insn_format3rc_method2912 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT3rc_TYPE_in_insn_format3rc_type2935 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rc_TYPE_in_insn_format3rc_type2937 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
-	public static final BitSet FOLLOW_register_range_in_insn_format3rc_type2939 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x0200000000000000L});
-	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format3rc_type2941 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT45cc_METHOD_in_insn_format45cc_method2964 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT45cc_METHOD_in_insn_format45cc_method2966 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_register_list_in_insn_format45cc_method2968 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_method_reference_in_insn_format45cc_method2970 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
-	public static final BitSet FOLLOW_method_prototype_in_insn_format45cc_method2972 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT4rcc_METHOD_in_insn_format4rcc_method2995 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT4rcc_METHOD_in_insn_format4rcc_method2997 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
-	public static final BitSet FOLLOW_register_range_in_insn_format4rcc_method2999 = new BitSet(new long[]{0x0000000000008100L,0x0000000000000000L,0x8000000000000000L});
-	public static final BitSet FOLLOW_method_reference_in_insn_format4rcc_method3001 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
-	public static final BitSet FOLLOW_method_prototype_in_insn_format4rcc_method3003 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_FORMAT51l_in_insn_format51l_type3026 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_INSTRUCTION_FORMAT51l_in_insn_format51l_type3028 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0800000000000000L});
-	public static final BitSet FOLLOW_REGISTER_in_insn_format51l_type3030 = new BitSet(new long[]{0x0000004000404C00L,0x0000000001000000L,0x4000400000000000L});
-	public static final BitSet FOLLOW_fixed_64bit_literal_in_insn_format51l_type3032 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_ARRAY_DATA_in_insn_array_data_directive3055 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_I_ARRAY_ELEMENT_SIZE_in_insn_array_data_directive3058 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_short_integral_literal_in_insn_array_data_directive3060 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_array_elements_in_insn_array_data_directive3063 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_PACKED_SWITCH_in_insn_packed_switch_directive3085 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_I_PACKED_SWITCH_START_KEY_in_insn_packed_switch_directive3088 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_fixed_32bit_literal_in_insn_packed_switch_directive3090 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_packed_switch_elements_in_insn_packed_switch_directive3093 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_STATEMENT_SPARSE_SWITCH_in_insn_sparse_switch_directive3117 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_sparse_switch_elements_in_insn_sparse_switch_directive3119 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_ARRAY_TYPE_PREFIX_in_array_descriptor3140 = new BitSet(new long[]{0x0000000000008000L,0x0000000000000000L,0x0200000000000000L});
-	public static final BitSet FOLLOW_PRIMITIVE_TYPE_in_array_descriptor3144 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_array_descriptor3172 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_PRIMITIVE_TYPE_in_nonvoid_type_descriptor3190 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_nonvoid_type_descriptor3198 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_array_descriptor_in_nonvoid_type_descriptor3206 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_reference_type_descriptor3227 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_array_descriptor_in_reference_type_descriptor3235 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_VOID_TYPE_in_type_descriptor3255 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_type_descriptor3263 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_long_literal_in_short_integral_literal3281 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_integer_literal_in_short_integral_literal3293 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_short_literal_in_short_integral_literal3305 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_char_literal_in_short_integral_literal3313 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_byte_literal_in_short_integral_literal3321 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_long_literal_in_integral_literal3336 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_integer_literal_in_integral_literal3348 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_short_literal_in_integral_literal3356 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_byte_literal_in_integral_literal3364 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_INTEGER_LITERAL_in_integer_literal3380 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_LONG_LITERAL_in_long_literal3395 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_SHORT_LITERAL_in_short_literal3410 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_BYTE_LITERAL_in_byte_literal3425 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_FLOAT_LITERAL_in_float_literal3440 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_DOUBLE_LITERAL_in_double_literal3455 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_CHAR_LITERAL_in_char_literal3470 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_STRING_LITERAL_in_string_literal3485 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_BOOL_LITERAL_in_bool_literal3504 = new BitSet(new long[]{0x0000000000000002L});
-	public static final BitSet FOLLOW_I_ENCODED_ARRAY_in_array_literal3526 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_literal_in_array_literal3529 = new BitSet(new long[]{0x000000400040CD08L,0x000000F001000000L,0x4204410000000000L,0x0000000000000044L});
-	public static final BitSet FOLLOW_I_ANNOTATIONS_in_annotations3554 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_annotation_in_annotations3557 = new BitSet(new long[]{0x0000000000000008L,0x0000000008000000L});
-	public static final BitSet FOLLOW_I_ANNOTATION_in_annotation3586 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_ANNOTATION_VISIBILITY_in_annotation3588 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000010000000000L});
-	public static final BitSet FOLLOW_subannotation_in_annotation3590 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_ANNOTATION_ELEMENT_in_annotation_element3611 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_SIMPLE_NAME_in_annotation_element3613 = new BitSet(new long[]{0x000000400040CD00L,0x000000F001000000L,0x4204410000000000L,0x0000000000000044L});
-	public static final BitSet FOLLOW_literal_in_annotation_element3615 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_SUBANNOTATION_in_subannotation3642 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_subannotation3652 = new BitSet(new long[]{0x0000000000000008L,0x0000000020000000L});
-	public static final BitSet FOLLOW_annotation_element_in_subannotation3663 = new BitSet(new long[]{0x0000000000000008L,0x0000000020000000L});
-	public static final BitSet FOLLOW_I_ENCODED_FIELD_in_field_literal3702 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_field_reference_in_field_literal3704 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_ENCODED_METHOD_in_method_literal3725 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_method_reference_in_method_literal3727 = new BitSet(new long[]{0x0000000000000008L});
-	public static final BitSet FOLLOW_I_ENCODED_ENUM_in_enum_literal3748 = new BitSet(new long[]{0x0000000000000004L});
-	public static final BitSet FOLLOW_field_reference_in_enum_literal3750 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_method_handle_literal_in_literal570 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_method_prototype_in_literal578 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_integer_literal_in_fixed_64bit_literal_number594 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_long_literal_in_fixed_64bit_literal_number602 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_short_literal_in_fixed_64bit_literal_number610 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_byte_literal_in_fixed_64bit_literal_number618 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_float_literal_in_fixed_64bit_literal_number626 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_double_literal_in_fixed_64bit_literal_number634 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_char_literal_in_fixed_64bit_literal_number642 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_bool_literal_in_fixed_64bit_literal_number650 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_integer_literal_in_fixed_64bit_literal665 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_long_literal_in_fixed_64bit_literal673 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_short_literal_in_fixed_64bit_literal681 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_byte_literal_in_fixed_64bit_literal689 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_float_literal_in_fixed_64bit_literal697 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_double_literal_in_fixed_64bit_literal705 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_char_literal_in_fixed_64bit_literal713 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_bool_literal_in_fixed_64bit_literal721 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_integer_literal_in_fixed_32bit_literal738 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_long_literal_in_fixed_32bit_literal746 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_short_literal_in_fixed_32bit_literal754 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_byte_literal_in_fixed_32bit_literal762 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_float_literal_in_fixed_32bit_literal770 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_char_literal_in_fixed_32bit_literal778 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_bool_literal_in_fixed_32bit_literal786 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_I_ARRAY_ELEMENTS_in_array_elements808 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_fixed_64bit_literal_number_in_array_elements817 = new BitSet(new long[]{0x0000008000809808L,0x0000000040000000L,0x0800000000000000L,0x0000000000002000L});
+	public static final BitSet FOLLOW_I_PACKED_SWITCH_ELEMENTS_in_packed_switch_elements853 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_label_ref_in_packed_switch_elements862 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_I_SPARSE_SWITCH_ELEMENTS_in_sparse_switch_elements897 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_fixed_32bit_literal_in_sparse_switch_elements907 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_label_ref_in_sparse_switch_elements909 = new BitSet(new long[]{0x0000008000009808L,0x0000000040000000L,0x0800000000000000L,0x0000000000002000L});
+	public static final BitSet FOLLOW_I_METHOD_in_method961 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_method_name_and_prototype_in_method969 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
+	public static final BitSet FOLLOW_access_list_in_method977 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L,0x0000000000000081L});
+	public static final BitSet FOLLOW_registers_directive_in_method1004 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
+	public static final BitSet FOLLOW_ordered_method_items_in_method1061 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
+	public static final BitSet FOLLOW_catches_in_method1069 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
+	public static final BitSet FOLLOW_parameters_in_method1077 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
+	public static final BitSet FOLLOW_annotations_in_method1086 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_METHOD_PROTOTYPE_in_method_prototype1110 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_I_METHOD_RETURN_TYPE_in_method_prototype1113 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_type_descriptor_in_method_prototype1115 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_method_type_list_in_method_prototype1118 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_SIMPLE_NAME_in_method_name_and_prototype1136 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
+	public static final BitSet FOLLOW_method_prototype_in_method_name_and_prototype1138 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_method_type_list1172 = new BitSet(new long[]{0x0000000000010102L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_I_CALL_SITE_REFERENCE_in_call_site_reference1203 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_SIMPLE_NAME_in_call_site_reference1207 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000020000L});
+	public static final BitSet FOLLOW_string_literal_in_call_site_reference1211 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
+	public static final BitSet FOLLOW_method_prototype_in_call_site_reference1213 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
+	public static final BitSet FOLLOW_call_site_extra_arguments_in_call_site_reference1223 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_method_reference_in_call_site_reference1225 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_set_in_method_handle_type1245 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_method_handle_type_in_method_handle_reference1270 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_field_reference_in_method_handle_reference1273 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_method_reference_in_method_handle_reference1277 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_I_ENCODED_METHOD_HANDLE_in_method_handle_literal1294 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L,0xC000000000000000L});
+	public static final BitSet FOLLOW_method_handle_reference_in_method_handle_literal1296 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_reference_type_descriptor_in_method_reference1312 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_SIMPLE_NAME_in_method_reference1315 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
+	public static final BitSet FOLLOW_method_prototype_in_method_reference1317 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_reference_type_descriptor_in_field_reference1334 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_SIMPLE_NAME_in_field_reference1337 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_field_reference1339 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_I_REGISTERS_in_registers_directive1365 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_I_LOCALS_in_registers_directive1377 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_short_integral_literal_in_registers_directive1395 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_LABEL_in_label_def1415 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_SIMPLE_NAME_in_label_def1417 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_CATCHES_in_catches1443 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_catch_directive_in_catches1445 = new BitSet(new long[]{0x0000000000000008L,0x0000030000000000L});
+	public static final BitSet FOLLOW_catchall_directive_in_catches1448 = new BitSet(new long[]{0x0000000000000008L,0x0000020000000000L});
+	public static final BitSet FOLLOW_I_CATCH_in_catch_directive1461 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_catch_directive1463 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_label_ref_in_catch_directive1467 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_label_ref_in_catch_directive1471 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_label_ref_in_catch_directive1475 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_CATCHALL_in_catchall_directive1491 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_label_ref_in_catchall_directive1495 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_label_ref_in_catchall_directive1499 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_label_ref_in_catchall_directive1503 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_PARAMETERS_in_parameters1520 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_parameter_in_parameters1523 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000008L});
+	public static final BitSet FOLLOW_I_PARAMETER_in_parameter1539 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_REGISTER_in_parameter1541 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L,0x0000000000000000L,0x0000000000020000L});
+	public static final BitSet FOLLOW_string_literal_in_parameter1543 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
+	public static final BitSet FOLLOW_annotations_in_parameter1546 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_line_in_debug_directive1563 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_local_in_debug_directive1569 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_end_local_in_debug_directive1575 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_restart_local_in_debug_directive1581 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_prologue_in_debug_directive1587 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_epilogue_in_debug_directive1593 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_source_in_debug_directive1599 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_I_LINE_in_line1610 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_integral_literal_in_line1612 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_LOCAL_in_local1630 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_REGISTER_in_local1632 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000000L,0x0000000000020002L});
+	public static final BitSet FOLLOW_NULL_LITERAL_in_local1636 = new BitSet(new long[]{0x0000000000010108L,0x0000000000000000L,0x0000000000000000L,0x0000000000020100L});
+	public static final BitSet FOLLOW_string_literal_in_local1642 = new BitSet(new long[]{0x0000000000010108L,0x0000000000000000L,0x0000000000000000L,0x0000000000020100L});
+	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_local1645 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000000L,0x0000000000020000L});
+	public static final BitSet FOLLOW_string_literal_in_local1650 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_END_LOCAL_in_end_local1671 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_REGISTER_in_end_local1673 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_RESTART_LOCAL_in_restart_local1691 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_REGISTER_in_restart_local1693 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_PROLOGUE_in_prologue1710 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_I_EPILOGUE_in_epilogue1726 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_I_SOURCE_in_source1743 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_string_literal_in_source1745 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_CALL_SITE_EXTRA_ARGUMENTS_in_call_site_extra_arguments1771 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_literal_in_call_site_extra_arguments1774 = new BitSet(new long[]{0x0000008000819908L,0x4001F00040000000L,0x0820000000000000L,0x0000000000222102L});
+	public static final BitSet FOLLOW_I_ORDERED_METHOD_ITEMS_in_ordered_method_items1790 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_label_def_in_ordered_method_items1793 = new BitSet(new long[]{0x0000000000000008L,0x0706000000000000L,0x001FFFFFFFFFEC40L});
+	public static final BitSet FOLLOW_instruction_in_ordered_method_items1797 = new BitSet(new long[]{0x0000000000000008L,0x0706000000000000L,0x001FFFFFFFFFEC40L});
+	public static final BitSet FOLLOW_debug_directive_in_ordered_method_items1801 = new BitSet(new long[]{0x0000000000000008L,0x0706000000000000L,0x001FFFFFFFFFEC40L});
+	public static final BitSet FOLLOW_SIMPLE_NAME_in_label_ref1817 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_I_REGISTER_LIST_in_register_list1842 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_REGISTER_in_register_list1851 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_I_REGISTER_RANGE_in_register_range1876 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_REGISTER_in_register_range1881 = new BitSet(new long[]{0x0000000000000008L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_register_range1885 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_verification_error_reference1908 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_field_reference_in_verification_error_reference1918 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_method_reference_in_verification_error_reference1928 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_VERIFICATION_ERROR_TYPE_in_verification_error_type1945 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format10t_in_instruction1959 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format10x_in_instruction1965 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format11n_in_instruction1971 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format11x_in_instruction1977 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format12x_in_instruction1983 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format20bc_in_instruction1989 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format20t_in_instruction1995 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format21c_field_in_instruction2001 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format21c_method_handle_in_instruction2007 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format21c_method_type_in_instruction2013 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format21c_string_in_instruction2019 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format21c_type_in_instruction2025 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format21ih_in_instruction2031 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format21lh_in_instruction2037 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format21s_in_instruction2043 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format21t_in_instruction2049 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format22b_in_instruction2055 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format22c_field_in_instruction2061 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format22c_type_in_instruction2067 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format22s_in_instruction2073 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format22t_in_instruction2079 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format22x_in_instruction2085 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format23x_in_instruction2091 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format30t_in_instruction2097 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format31c_in_instruction2103 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format31i_in_instruction2109 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format31t_in_instruction2115 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format32x_in_instruction2121 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format35c_call_site_in_instruction2127 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format35c_method_in_instruction2133 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format35c_type_in_instruction2139 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format3rc_call_site_in_instruction2145 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format3rc_method_in_instruction2151 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format3rc_type_in_instruction2157 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format45cc_method_in_instruction2163 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format4rcc_method_in_instruction2169 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_format51l_type_in_instruction2175 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_array_data_directive_in_instruction2181 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_packed_switch_directive_in_instruction2187 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_insn_sparse_switch_directive_in_instruction2193 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT10t_in_insn_format10t2217 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT10t_in_insn_format10t2219 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_label_ref_in_insn_format10t2221 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT10x_in_insn_format10x2244 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT10x_in_insn_format10x2246 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT11n_in_insn_format11n2269 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT11n_in_insn_format11n2271 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format11n2273 = new BitSet(new long[]{0x0000000000009000L,0x0000000040000000L,0x0800000000000000L,0x0000000000002000L});
+	public static final BitSet FOLLOW_short_integral_literal_in_insn_format11n2275 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT11x_in_insn_format11x2298 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT11x_in_insn_format11x2300 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format11x2302 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT12x_in_insn_format12x2325 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT12x_in_insn_format12x2327 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format12x2331 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format12x2335 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT20bc_in_insn_format20bc2358 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT20bc_in_insn_format20bc2360 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000100000L});
+	public static final BitSet FOLLOW_verification_error_type_in_insn_format20bc2362 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_verification_error_reference_in_insn_format20bc2364 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT20t_in_insn_format20t2387 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT20t_in_insn_format20t2389 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_label_ref_in_insn_format20t2391 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT21c_FIELD_in_insn_format21c_field2414 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_set_in_insn_format21c_field2418 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format21c_field2426 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_field_reference_in_insn_format21c_field2428 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT21c_METHOD_HANDLE_in_insn_format21c_method_handle2451 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_METHOD_HANDLE_in_insn_format21c_method_handle2456 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format21c_method_handle2459 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L,0xC000000000000000L});
+	public static final BitSet FOLLOW_method_handle_reference_in_insn_format21c_method_handle2461 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT21c_METHOD_TYPE_in_insn_format21c_method_type2484 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_METHOD_TYPE_in_insn_format21c_method_type2489 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format21c_method_type2492 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
+	public static final BitSet FOLLOW_method_prototype_in_insn_format21c_method_type2494 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT21c_STRING_in_insn_format21c_string2517 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_STRING_in_insn_format21c_string2519 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format21c_string2521 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000020000L});
+	public static final BitSet FOLLOW_string_literal_in_insn_format21c_string2523 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT21c_TYPE_in_insn_format21c_type2546 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_TYPE_in_insn_format21c_type2548 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format21c_type2550 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format21c_type2552 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT21ih_in_insn_format21ih2575 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21ih_in_insn_format21ih2577 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format21ih2579 = new BitSet(new long[]{0x0000008000009800L,0x0000000040000000L,0x0800000000000000L,0x0000000000002000L});
+	public static final BitSet FOLLOW_fixed_32bit_literal_in_insn_format21ih2581 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT21lh_in_insn_format21lh2604 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21lh_in_insn_format21lh2606 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format21lh2608 = new BitSet(new long[]{0x0000008000809800L,0x0000000040000000L,0x0800000000000000L,0x0000000000002000L});
+	public static final BitSet FOLLOW_fixed_64bit_literal_in_insn_format21lh2610 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT21s_in_insn_format21s2633 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21s_in_insn_format21s2635 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format21s2637 = new BitSet(new long[]{0x0000000000009000L,0x0000000040000000L,0x0800000000000000L,0x0000000000002000L});
+	public static final BitSet FOLLOW_short_integral_literal_in_insn_format21s2639 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT21t_in_insn_format21t2662 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT21t_in_insn_format21t2664 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format21t2666 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_label_ref_in_insn_format21t2668 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT22b_in_insn_format22b2691 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22b_in_insn_format22b2693 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22b2697 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22b2701 = new BitSet(new long[]{0x0000000000009000L,0x0000000040000000L,0x0800000000000000L,0x0000000000002000L});
+	public static final BitSet FOLLOW_short_integral_literal_in_insn_format22b2703 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT22c_FIELD_in_insn_format22c_field2726 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_set_in_insn_format22c_field2730 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_field2740 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_field2744 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_field_reference_in_insn_format22c_field2746 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT22c_TYPE_in_insn_format22c_type2769 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22c_TYPE_in_insn_format22c_type2771 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_type2775 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22c_type2779 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format22c_type2781 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT22s_in_insn_format22s2804 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22s_in_insn_format22s2806 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22s2810 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22s2814 = new BitSet(new long[]{0x0000000000009000L,0x0000000040000000L,0x0800000000000000L,0x0000000000002000L});
+	public static final BitSet FOLLOW_short_integral_literal_in_insn_format22s2816 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT22t_in_insn_format22t2839 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22t_in_insn_format22t2841 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22t2845 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22t2849 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_label_ref_in_insn_format22t2851 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT22x_in_insn_format22x2874 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT22x_in_insn_format22x2876 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22x2880 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format22x2884 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT23x_in_insn_format23x2907 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT23x_in_insn_format23x2909 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format23x2913 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format23x2917 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format23x2921 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT30t_in_insn_format30t2944 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT30t_in_insn_format30t2946 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_label_ref_in_insn_format30t2948 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT31c_in_insn_format31c2971 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT31c_in_insn_format31c2973 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format31c2975 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000020000L});
+	public static final BitSet FOLLOW_string_literal_in_insn_format31c2977 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT31i_in_insn_format31i3000 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT31i_in_insn_format31i3002 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format31i3004 = new BitSet(new long[]{0x0000008000009800L,0x0000000040000000L,0x0800000000000000L,0x0000000000002000L});
+	public static final BitSet FOLLOW_fixed_32bit_literal_in_insn_format31i3006 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT31t_in_insn_format31t3029 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT31t_in_insn_format31t3031 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format31t3033 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_label_ref_in_insn_format31t3035 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT32x_in_insn_format32x3058 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT32x_in_insn_format32x3060 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format32x3064 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format32x3068 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT35c_CALL_SITE_in_insn_format35c_call_site3096 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_CALL_SITE_in_insn_format35c_call_site3098 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_register_list_in_insn_format35c_call_site3100 = new BitSet(new long[]{0x0000000000000000L,0x0000008000000000L});
+	public static final BitSet FOLLOW_call_site_reference_in_insn_format35c_call_site3102 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT35c_METHOD_in_insn_format35c_method3125 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_METHOD_in_insn_format35c_method3127 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_register_list_in_insn_format35c_method3129 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_method_reference_in_insn_format35c_method3131 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT35c_TYPE_in_insn_format35c_type3154 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_TYPE_in_insn_format35c_type3156 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_register_list_in_insn_format35c_type3158 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format35c_type3160 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT3rc_CALL_SITE_in_insn_format3rc_call_site3188 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rc_CALL_SITE_in_insn_format3rc_call_site3190 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000200L});
+	public static final BitSet FOLLOW_register_range_in_insn_format3rc_call_site3192 = new BitSet(new long[]{0x0000000000000000L,0x0000008000000000L});
+	public static final BitSet FOLLOW_call_site_reference_in_insn_format3rc_call_site3194 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT3rc_METHOD_in_insn_format3rc_method3217 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rc_METHOD_in_insn_format3rc_method3219 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000200L});
+	public static final BitSet FOLLOW_register_range_in_insn_format3rc_method3221 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_method_reference_in_insn_format3rc_method3223 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT3rc_TYPE_in_insn_format3rc_type3246 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rc_TYPE_in_insn_format3rc_type3248 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000200L});
+	public static final BitSet FOLLOW_register_range_in_insn_format3rc_type3250 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format3rc_type3252 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT45cc_METHOD_in_insn_format45cc_method3275 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT45cc_METHOD_in_insn_format45cc_method3277 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_register_list_in_insn_format45cc_method3279 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_method_reference_in_insn_format45cc_method3281 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
+	public static final BitSet FOLLOW_method_prototype_in_insn_format45cc_method3283 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT4rcc_METHOD_in_insn_format4rcc_method3306 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT4rcc_METHOD_in_insn_format4rcc_method3308 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000200L});
+	public static final BitSet FOLLOW_register_range_in_insn_format4rcc_method3310 = new BitSet(new long[]{0x0000000000010100L,0x0000000000000000L,0x0000000000000000L,0x0000000000004000L});
+	public static final BitSet FOLLOW_method_reference_in_insn_format4rcc_method3312 = new BitSet(new long[]{0x0000000000000000L,0x4000000000000000L});
+	public static final BitSet FOLLOW_method_prototype_in_insn_format4rcc_method3314 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_FORMAT51l_in_insn_format51l_type3337 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_INSTRUCTION_FORMAT51l_in_insn_format51l_type3339 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
+	public static final BitSet FOLLOW_REGISTER_in_insn_format51l_type3341 = new BitSet(new long[]{0x0000008000809800L,0x0000000040000000L,0x0800000000000000L,0x0000000000002000L});
+	public static final BitSet FOLLOW_fixed_64bit_literal_in_insn_format51l_type3343 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_ARRAY_DATA_in_insn_array_data_directive3366 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_I_ARRAY_ELEMENT_SIZE_in_insn_array_data_directive3369 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_short_integral_literal_in_insn_array_data_directive3371 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_array_elements_in_insn_array_data_directive3374 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_PACKED_SWITCH_in_insn_packed_switch_directive3396 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_I_PACKED_SWITCH_START_KEY_in_insn_packed_switch_directive3399 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_fixed_32bit_literal_in_insn_packed_switch_directive3401 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_packed_switch_elements_in_insn_packed_switch_directive3404 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_STATEMENT_SPARSE_SWITCH_in_insn_sparse_switch_directive3428 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_sparse_switch_elements_in_insn_sparse_switch_directive3430 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_ARRAY_TYPE_PREFIX_in_array_descriptor3451 = new BitSet(new long[]{0x0000000000010000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+	public static final BitSet FOLLOW_PRIMITIVE_TYPE_in_array_descriptor3455 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_array_descriptor3483 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_PRIMITIVE_TYPE_in_nonvoid_type_descriptor3501 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_nonvoid_type_descriptor3509 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_array_descriptor_in_nonvoid_type_descriptor3517 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_reference_type_descriptor3538 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_array_descriptor_in_reference_type_descriptor3546 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_VOID_TYPE_in_type_descriptor3566 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_nonvoid_type_descriptor_in_type_descriptor3574 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_long_literal_in_short_integral_literal3592 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_integer_literal_in_short_integral_literal3604 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_short_literal_in_short_integral_literal3616 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_char_literal_in_short_integral_literal3624 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_byte_literal_in_short_integral_literal3632 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_long_literal_in_integral_literal3647 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_integer_literal_in_integral_literal3659 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_short_literal_in_integral_literal3667 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_byte_literal_in_integral_literal3675 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_INTEGER_LITERAL_in_integer_literal3691 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_LONG_LITERAL_in_long_literal3706 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_SHORT_LITERAL_in_short_literal3721 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_BYTE_LITERAL_in_byte_literal3736 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_FLOAT_LITERAL_in_float_literal3751 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_DOUBLE_LITERAL_in_double_literal3766 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_CHAR_LITERAL_in_char_literal3781 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_STRING_LITERAL_in_string_literal3796 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_BOOL_LITERAL_in_bool_literal3815 = new BitSet(new long[]{0x0000000000000002L});
+	public static final BitSet FOLLOW_I_ENCODED_ARRAY_in_array_literal3837 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_literal_in_array_literal3840 = new BitSet(new long[]{0x0000008000819908L,0x4001F00040000000L,0x0820000000000000L,0x0000000000222102L});
+	public static final BitSet FOLLOW_I_ANNOTATIONS_in_annotations3865 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_annotation_in_annotations3868 = new BitSet(new long[]{0x0000000000000008L,0x0000000200000000L});
+	public static final BitSet FOLLOW_I_ANNOTATION_in_annotation3897 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_ANNOTATION_VISIBILITY_in_annotation3899 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
+	public static final BitSet FOLLOW_subannotation_in_annotation3901 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_ANNOTATION_ELEMENT_in_annotation_element3922 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_SIMPLE_NAME_in_annotation_element3924 = new BitSet(new long[]{0x0000008000819900L,0x4001F00040000000L,0x0820000000000000L,0x0000000000222102L});
+	public static final BitSet FOLLOW_literal_in_annotation_element3926 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_SUBANNOTATION_in_subannotation3953 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_subannotation3963 = new BitSet(new long[]{0x0000000000000008L,0x0000000800000000L});
+	public static final BitSet FOLLOW_annotation_element_in_subannotation3974 = new BitSet(new long[]{0x0000000000000008L,0x0000000800000000L});
+	public static final BitSet FOLLOW_I_ENCODED_FIELD_in_field_literal4013 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_field_reference_in_field_literal4015 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_ENCODED_METHOD_in_method_literal4036 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_method_reference_in_method_literal4038 = new BitSet(new long[]{0x0000000000000008L});
+	public static final BitSet FOLLOW_I_ENCODED_ENUM_in_enum_literal4059 = new BitSet(new long[]{0x0000000000000004L});
+	public static final BitSet FOLLOW_field_reference_in_enum_literal4061 = new BitSet(new long[]{0x0000000000000008L});
 }
diff --git a/util/src/main/java/org/jf/util/BlankReader.java b/smali/src/main/java/org/jf/smali/util/BlankReader.java
similarity index 86%
rename from util/src/main/java/org/jf/util/BlankReader.java
rename to smali/src/main/java/org/jf/smali/util/BlankReader.java
index ca55dd0..2d3e9c9 100644
--- a/util/src/main/java/org/jf/util/BlankReader.java
+++ b/smali/src/main/java/org/jf/smali/util/BlankReader.java
@@ -1,18 +1,18 @@
 /*
- * Copyright 2014, Google Inc.
+ * Copyright 2018, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
  * met:
  *
- *     * Redistributions of source code must retain the above copyright
+ * Redistributions of source code must retain the above copyright
  * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
+ * Redistributions in binary form must reproduce the above
  * copyright notice, this list of conditions and the following disclaimer
  * in the documentation and/or other materials provided with the
  * distribution.
- *     * Neither the name of Google Inc. nor the names of its
+ * Neither the name of Google Inc. nor the names of its
  * contributors may be used to endorse or promote products derived from
  * this software without specific prior written permission.
  *
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package org.jf.util;
+package org.jf.smali.util;
 
 import javax.annotation.Nonnull;
 import java.io.IOException;
diff --git a/smali/src/main/jflex/smaliLexer.jflex b/smali/src/main/jflex/smaliLexer.jflex
index 2cf3c86..1bae56e 100644
--- a/smali/src/main/jflex/smaliLexer.jflex
+++ b/smali/src/main/jflex/smaliLexer.jflex
@@ -2,6 +2,7 @@
 
 import java.io.*;
 import org.antlr.runtime.*;
+import org.jf.smali.util.*;
 import org.jf.util.*;
 import static org.jf.smali.smaliParser.*;
 
@@ -408,6 +409,14 @@
     "vtable@0x" {HexDigit}+ { return newToken(VTABLE_INDEX); }
     "field@0x" {HexDigit}+ { return newToken(FIELD_OFFSET); }
 
+    "static-put" | "static-get" | "instance-put" | "instance-get" {
+        return newToken(METHOD_HANDLE_TYPE_FIELD);
+    }
+
+    "invoke-instance" | "invoke-constructor" {
+        return newToken(METHOD_HANDLE_TYPE_METHOD);
+    }
+
     # [^\r\n]* { return newToken(LINE_COMMENT, true); }
 }
 
@@ -476,6 +485,14 @@
         return newToken(INSTRUCTION_FORMAT21c_TYPE);
     }
 
+    "const-method-handle" {
+        return newToken(INSTRUCTION_FORMAT21c_METHOD_HANDLE);
+    }
+
+    "const-method-type" {
+        return newToken(INSTRUCTION_FORMAT21c_METHOD_TYPE);
+    }
+
     "const/high16" {
         return newToken(INSTRUCTION_FORMAT21ih);
     }
@@ -567,9 +584,17 @@
         return newToken(INSTRUCTION_FORMAT32x);
     }
 
-    "invoke-virtual" | "invoke-super" | "invoke-direct" | "invoke-static" | "invoke-interface" {
+    "invoke-custom" {
+        return newToken(INSTRUCTION_FORMAT35c_CALL_SITE);
+    }
+
+    "invoke-virtual" | "invoke-super" {
         return newToken(INSTRUCTION_FORMAT35c_METHOD);
     }
+    
+    "invoke-direct" | "invoke-static" | "invoke-interface" {
+        return newToken(INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE);
+    }
 
     "invoke-direct-empty" {
         return newToken(INSTRUCTION_FORMAT35c_METHOD_ODEX);
@@ -587,6 +612,10 @@
         return newToken(INSTRUCTION_FORMAT35ms_METHOD);
     }
 
+    "invoke-custom/range" {
+        return newToken(INSTRUCTION_FORMAT3rc_CALL_SITE);
+    }
+
     "invoke-virtual/range" | "invoke-super/range" | "invoke-direct/range" | "invoke-static/range" |
     "invoke-interface/range" {
         return newToken(INSTRUCTION_FORMAT3rc_METHOD);
@@ -668,6 +697,7 @@
     "}" { return newToken(CLOSE_BRACE); }
     "(" { return newToken(OPEN_PAREN); }
     ")" { return newToken(CLOSE_PAREN); }
+    "@" { return newToken(AT); }
     [\r\n\t ]+ { return newToken(WHITE_SPACE, true); }
     <<EOF>> { return newToken(EOF); }
 }
diff --git a/smali/src/test/java/org/jf/smali/ImplicitReferenceTest.java b/smali/src/test/java/org/jf/smali/ImplicitReferenceTest.java
index 8304653..becb01c 100644
--- a/smali/src/test/java/org/jf/smali/ImplicitReferenceTest.java
+++ b/smali/src/test/java/org/jf/smali/ImplicitReferenceTest.java
@@ -29,7 +29,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-package org.jf.smali;import com.google.common.collect.Lists;
+package org.jf.smali;
+
+import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import junit.framework.Assert;
 import org.antlr.runtime.RecognitionException;
@@ -47,7 +49,6 @@
 import org.jf.dexlib2.iface.value.FieldEncodedValue;
 import org.jf.dexlib2.iface.value.MethodEncodedValue;
 import org.jf.dexlib2.iface.value.TypeEncodedValue;
-import org.jf.smali.SmaliTestUtils;
 import org.junit.Test;
 
 import java.io.IOException;
diff --git a/smali/src/test/resources/LexerTest/DirectiveTest.tokens b/smali/src/test/resources/LexerTest/DirectiveTest.tokens
index 06f4da7..9b82220 100644
--- a/smali/src/test/resources/LexerTest/DirectiveTest.tokens
+++ b/smali/src/test/resources/LexerTest/DirectiveTest.tokens
@@ -53,7 +53,7 @@
 INVALID_TOKEN(".local1234")
 INVALID_TOKEN(".super1234")
 SUPER_DIRECTIVE(".super")
-INVALID_TOKEN("@")
+AT("@")
 SUPER_DIRECTIVE(".super")
 SUPER_DIRECTIVE(".super")
 INVALID_TOKEN(".supeer")
diff --git a/smali/src/test/resources/LexerTest/InstructionTest.smali b/smali/src/test/resources/LexerTest/InstructionTest.smali
index 62e5100..a682926 100644
--- a/smali/src/test/resources/LexerTest/InstructionTest.smali
+++ b/smali/src/test/resources/LexerTest/InstructionTest.smali
@@ -85,6 +85,8 @@
 check-cast
 new-instance
 const-class
+const-method-handle
+const-method-type
 const/high16
 const-wide/high16
 const/16
@@ -209,6 +211,7 @@
 move/16
 move-wide/16
 move-object/16
+invoke-custom
 invoke-virtual
 invoke-super
 invoke-direct
@@ -221,6 +224,7 @@
 execute-inline
 invoke-virtual-quick
 invoke-super-quick
+invoke-custom/range
 invoke-virtual/range
 invoke-super/range
 invoke-direct/range
diff --git a/smali/src/test/resources/LexerTest/InstructionTest.tokens b/smali/src/test/resources/LexerTest/InstructionTest.tokens
index dfbd584..c616639 100644
--- a/smali/src/test/resources/LexerTest/InstructionTest.tokens
+++ b/smali/src/test/resources/LexerTest/InstructionTest.tokens
@@ -85,6 +85,8 @@
 INSTRUCTION_FORMAT21c_TYPE("check-cast")
 INSTRUCTION_FORMAT21c_TYPE("new-instance")
 INSTRUCTION_FORMAT21c_TYPE("const-class")
+INSTRUCTION_FORMAT21c_METHOD_HANDLE("const-method-handle")
+INSTRUCTION_FORMAT21c_METHOD_TYPE("const-method-type")
 INSTRUCTION_FORMAT21ih("const/high16")
 INSTRUCTION_FORMAT21lh("const-wide/high16")
 INSTRUCTION_FORMAT21s("const/16")
@@ -209,11 +211,12 @@
 INSTRUCTION_FORMAT32x("move/16")
 INSTRUCTION_FORMAT32x("move-wide/16")
 INSTRUCTION_FORMAT32x("move-object/16")
+INSTRUCTION_FORMAT35c_CALL_SITE("invoke-custom")
 INSTRUCTION_FORMAT35c_METHOD("invoke-virtual")
 INSTRUCTION_FORMAT35c_METHOD("invoke-super")
-INSTRUCTION_FORMAT35c_METHOD("invoke-direct")
-INSTRUCTION_FORMAT35c_METHOD("invoke-static")
-INSTRUCTION_FORMAT35c_METHOD("invoke-interface")
+INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE("invoke-direct")
+INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE("invoke-static")
+INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE("invoke-interface")
 INSTRUCTION_FORMAT35c_TYPE("filled-new-array")
 INSTRUCTION_FORMAT35c_METHOD_ODEX("invoke-direct-empty")
 INSTRUCTION_FORMAT3rc_METHOD_ODEX("invoke-object-init/range")
@@ -221,6 +224,7 @@
 INSTRUCTION_FORMAT35mi_METHOD("execute-inline")
 INSTRUCTION_FORMAT35ms_METHOD("invoke-virtual-quick")
 INSTRUCTION_FORMAT35ms_METHOD("invoke-super-quick")
+INSTRUCTION_FORMAT3rc_CALL_SITE("invoke-custom/range")
 INSTRUCTION_FORMAT3rc_METHOD("invoke-virtual/range")
 INSTRUCTION_FORMAT3rc_METHOD("invoke-super/range")
 INSTRUCTION_FORMAT3rc_METHOD("invoke-direct/range")
diff --git a/smali/src/test/resources/LexerTest/MiscTest.smali b/smali/src/test/resources/LexerTest/MiscTest.smali
index 32bbd27..0255d6a 100644
--- a/smali/src/test/resources/LexerTest/MiscTest.smali
+++ b/smali/src/test/resources/LexerTest/MiscTest.smali
@@ -45,6 +45,16 @@
 class-change-error
 instantiation-error
 
+invoke-static
+invoke-instance
+invoke-constructor
+invoke-direct
+invoke-interface
+static-put
+static-get
+instance-put
+instance-get
+
 inline@0xABCD
 inline@0x0123
 inline@0x0123ABCD
diff --git a/smali/src/test/resources/LexerTest/MiscTest.tokens b/smali/src/test/resources/LexerTest/MiscTest.tokens
index ed5142d..6f59df5 100644
--- a/smali/src/test/resources/LexerTest/MiscTest.tokens
+++ b/smali/src/test/resources/LexerTest/MiscTest.tokens
@@ -45,6 +45,16 @@
 VERIFICATION_ERROR_TYPE("class-change-error")
 VERIFICATION_ERROR_TYPE("instantiation-error")
 
+INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE("invoke-static")
+METHOD_HANDLE_TYPE_METHOD("invoke-instance")
+METHOD_HANDLE_TYPE_METHOD("invoke-constructor")
+INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE("invoke-direct")
+INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE("invoke-interface")
+METHOD_HANDLE_TYPE_FIELD("static-put")
+METHOD_HANDLE_TYPE_FIELD("static-get")
+METHOD_HANDLE_TYPE_FIELD("instance-put")
+METHOD_HANDLE_TYPE_FIELD("instance-get")
+
 INLINE_INDEX("inline@0xABCD")
 INLINE_INDEX("inline@0x0123")
 INLINE_INDEX("inline@0x0123ABCD")
@@ -57,15 +67,15 @@
 FIELD_OFFSET("field@0x0123")
 FIELD_OFFSET("field@0x0123ABCD")
 
-SIMPLE_NAME("inline") INVALID_TOKEN("@")
-SIMPLE_NAME("inline") INVALID_TOKEN("@") SIMPLE_NAME("zzz")
-SIMPLE_NAME("inline") INVALID_TOKEN("@") SIMPLE_NAME("abcd")
-SIMPLE_NAME("vtable") INVALID_TOKEN("@")
-SIMPLE_NAME("vtable") INVALID_TOKEN("@") SIMPLE_NAME("zzz")
-SIMPLE_NAME("vtable") INVALID_TOKEN("@") SIMPLE_NAME("abcd")
-SIMPLE_NAME("field") INVALID_TOKEN("@")
-SIMPLE_NAME("field") INVALID_TOKEN("@") SIMPLE_NAME("zzz")
-SIMPLE_NAME("field") INVALID_TOKEN("@") SIMPLE_NAME("abcd")
+SIMPLE_NAME("inline") AT("@")
+SIMPLE_NAME("inline") AT("@") SIMPLE_NAME("zzz")
+SIMPLE_NAME("inline") AT("@") SIMPLE_NAME("abcd")
+SIMPLE_NAME("vtable") AT("@")
+SIMPLE_NAME("vtable") AT("@") SIMPLE_NAME("zzz")
+SIMPLE_NAME("vtable") AT("@") SIMPLE_NAME("abcd")
+SIMPLE_NAME("field") AT("@")
+SIMPLE_NAME("field") AT("@") SIMPLE_NAME("zzz")
+SIMPLE_NAME("field") AT("@") SIMPLE_NAME("abcd")
 
 INVALID_TOKEN("+") POSITIVE_INTEGER_LITERAL("0")
 INVALID_TOKEN("+") POSITIVE_INTEGER_LITERAL("10")
diff --git a/smali/src/test/resources/LexerTest/RealSmaliFileTest.tokens b/smali/src/test/resources/LexerTest/RealSmaliFileTest.tokens
index f9b096f..d7e438a 100644
--- a/smali/src/test/resources/LexerTest/RealSmaliFileTest.tokens
+++ b/smali/src/test/resources/LexerTest/RealSmaliFileTest.tokens
@@ -206,7 +206,7 @@
 REGISTER("v0")
 COMMA(",")
 CLASS_DESCRIPTOR("Lcom/android/internal/os/BatteryStatsImpl$1;")
-INSTRUCTION_FORMAT35c_METHOD("invoke-direct")
+INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE("invoke-direct")
 OPEN_BRACE("{")
 REGISTER("v0")
 CLOSE_BRACE("}")
@@ -275,7 +275,7 @@
 PROLOGUE_DIRECTIVE(".prologue")
 LINE_DIRECTIVE(".line")
 POSITIVE_INTEGER_LITERAL("42")
-INSTRUCTION_FORMAT35c_METHOD("invoke-direct")
+INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE("invoke-direct")
 OPEN_BRACE("{")
 REGISTER("p0")
 COMMA(",")
@@ -397,7 +397,7 @@
 REGISTER("v2")
 COMMA(",")
 CLASS_DESCRIPTOR("Ljava/lang/StringBuilder;")
-INSTRUCTION_FORMAT35c_METHOD("invoke-direct")
+INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE("invoke-direct")
 OPEN_BRACE("{")
 REGISTER("v2")
 CLOSE_BRACE("}")
@@ -457,7 +457,7 @@
 CLASS_DESCRIPTOR("Ljava/lang/String;")
 INSTRUCTION_FORMAT11x("move-result-object")
 REGISTER("v2")
-INSTRUCTION_FORMAT35c_METHOD("invoke-direct")
+INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE("invoke-direct")
 OPEN_BRACE("{")
 REGISTER("v1")
 COMMA(",")
@@ -594,7 +594,7 @@
 POSITIVE_INTEGER_LITERAL("0x0")
 LINE_DIRECTIVE(".line")
 POSITIVE_INTEGER_LITERAL("981")
-INSTRUCTION_FORMAT35c_METHOD("invoke-direct")
+INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE("invoke-direct")
 OPEN_BRACE("{")
 REGISTER("p0")
 COMMA(",")
@@ -615,7 +615,7 @@
 COMMA(",")
 COLON(":")
 SIMPLE_NAME("cond_28")
-INSTRUCTION_FORMAT35c_METHOD("invoke-direct")
+INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE("invoke-direct")
 OPEN_BRACE("{")
 REGISTER("p0")
 COMMA(",")
diff --git a/smali/src/test/resources/LexerTest/SymbolTest.smali b/smali/src/test/resources/LexerTest/SymbolTest.smali
index 6b11061..d443a65 100644
--- a/smali/src/test/resources/LexerTest/SymbolTest.smali
+++ b/smali/src/test/resources/LexerTest/SymbolTest.smali
Binary files differ
diff --git a/smali/src/test/resources/LexerTest/SymbolTest.tokens b/smali/src/test/resources/LexerTest/SymbolTest.tokens
index 009c932..9d967f7 100644
--- a/smali/src/test/resources/LexerTest/SymbolTest.tokens
+++ b/smali/src/test/resources/LexerTest/SymbolTest.tokens
@@ -8,5 +8,6 @@
 OPEN_BRACE("{") WHITE_SPACE("\n")
 CLOSE_BRACE("}") WHITE_SPACE("\n")
 OPEN_PAREN("(") WHITE_SPACE("\n")
-CLOSE_PAREN(")")
+CLOSE_PAREN(")") WHITE_SPACE("\n")
+AT("@")
 WHITE_SPACE("\n \n\t\n\t \n\t  \n\t \t\n \t\n  \t\n\r\r")
\ No newline at end of file
diff --git a/smalidea/src/main/antlr/smalideaParser.g b/smalidea/src/main/antlr/smalideaParser.g
index 0da263f..f0eaf0e 100644
--- a/smalidea/src/main/antlr/smalideaParser.g
+++ b/smalidea/src/main/antlr/smalideaParser.g
@@ -400,6 +400,7 @@
   | INSTRUCTION_FORMAT31t
   | INSTRUCTION_FORMAT35c_METHOD
   | INSTRUCTION_FORMAT35c_METHOD_ODEX
+  | INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE
   | INSTRUCTION_FORMAT35c_TYPE
   | INSTRUCTION_FORMAT35mi_METHOD
   | INSTRUCTION_FORMAT35ms_METHOD
@@ -1253,7 +1254,7 @@
 
 insn_format35c_method
   : //e.g. invoke-virtual {v0,v1} java/io/PrintStream/print(Ljava/lang/Stream;)V
-    INSTRUCTION_FORMAT35c_METHOD register_list comma fully_qualified_method;
+    (INSTRUCTION_FORMAT35c_METHOD | INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE) register_list comma fully_qualified_method;
 
 insn_format35c_type
   : //e.g. filled-new-array {v0,v1}, I
diff --git a/smalidea/src/main/java/org/jf/smalidea/SmaliLexer.java b/smalidea/src/main/java/org/jf/smalidea/SmaliLexer.java
index 67e5945..515749f 100644
--- a/smalidea/src/main/java/org/jf/smalidea/SmaliLexer.java
+++ b/smalidea/src/main/java/org/jf/smalidea/SmaliLexer.java
@@ -38,7 +38,7 @@
 import org.jetbrains.annotations.NotNull;
 import org.jf.smali.smaliFlexLexer;
 import org.jf.smali.smaliParser;
-import org.jf.util.BlankReader;
+import org.jf.smali.util.BlankReader;
 
 public class SmaliLexer extends LexerBase {
     private final smaliFlexLexer lexer = new smaliFlexLexer(BlankReader.INSTANCE);
diff --git a/smalidea/src/main/java/org/jf/smalidea/SmaliTokens.java b/smalidea/src/main/java/org/jf/smalidea/SmaliTokens.java
index 8332764..248c5bd 100644
--- a/smalidea/src/main/java/org/jf/smalidea/SmaliTokens.java
+++ b/smalidea/src/main/java/org/jf/smalidea/SmaliTokens.java
@@ -120,6 +120,7 @@
     @SuppressWarnings({"UnusedDeclaration"}) public static IElementType INSTRUCTION_FORMAT32x;
     @SuppressWarnings({"UnusedDeclaration"}) public static IElementType INSTRUCTION_FORMAT35c_METHOD;
     @SuppressWarnings({"UnusedDeclaration"}) public static IElementType INSTRUCTION_FORMAT35c_METHOD_ODEX;
+    @SuppressWarnings({"UnusedDeclaration"}) public static IElementType INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE;
     @SuppressWarnings({"UnusedDeclaration"}) public static IElementType INSTRUCTION_FORMAT35c_TYPE;
     @SuppressWarnings({"UnusedDeclaration"}) public static IElementType INSTRUCTION_FORMAT35mi_METHOD;
     @SuppressWarnings({"UnusedDeclaration"}) public static IElementType INSTRUCTION_FORMAT35ms_METHOD;
@@ -238,6 +239,7 @@
         tokenColors.put("INSTRUCTION_FORMAT32x", SmaliHighlightingColors.INSTRUCTION);
         tokenColors.put("INSTRUCTION_FORMAT35c_METHOD", SmaliHighlightingColors.INSTRUCTION);
         tokenColors.put("INSTRUCTION_FORMAT35c_METHOD_ODEX", SmaliHighlightingColors.INSTRUCTION);
+        tokenColors.put("INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE", SmaliHighlightingColors.INSTRUCTION);
         tokenColors.put("INSTRUCTION_FORMAT35c_TYPE", SmaliHighlightingColors.INSTRUCTION);
         tokenColors.put("INSTRUCTION_FORMAT35mi_METHOD", SmaliHighlightingColors.INSTRUCTION);
         tokenColors.put("INSTRUCTION_FORMAT35ms_METHOD", SmaliHighlightingColors.INSTRUCTION);
@@ -343,6 +345,7 @@
                 INSTRUCTION_FORMAT32x,
                 INSTRUCTION_FORMAT35c_METHOD,
                 INSTRUCTION_FORMAT35c_METHOD_ODEX,
+                INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE,
                 INSTRUCTION_FORMAT35c_TYPE,
                 INSTRUCTION_FORMAT35mi_METHOD,
                 INSTRUCTION_FORMAT35ms_METHOD,
diff --git a/smalidea/src/test/java/org/jf/smalidea/dexlib/SmalideaMethodTest.java b/smalidea/src/test/java/org/jf/smalidea/dexlib/SmalideaMethodTest.java
index 515c9bb..e9aa35f 100644
--- a/smalidea/src/test/java/org/jf/smalidea/dexlib/SmalideaMethodTest.java
+++ b/smalidea/src/test/java/org/jf/smalidea/dexlib/SmalideaMethodTest.java
@@ -428,10 +428,10 @@
         List<? extends SwitchElement> switchElements = packedSwitchPayload.getSwitchElements();
         Assert.assertEquals(4, switchElements.size());
 
-        checkSwitchElement(switchElements.get(0), 10, 6);
-        checkSwitchElement(switchElements.get(1), 11, 14);
-        checkSwitchElement(switchElements.get(2), 12, 22);
-        checkSwitchElement(switchElements.get(3), 13, 24);
+        checkSwitchElement(switchElements.get(0), 10, 3);
+        checkSwitchElement(switchElements.get(1), 11, 7);
+        checkSwitchElement(switchElements.get(2), 12, 11);
+        checkSwitchElement(switchElements.get(3), 13, 12);
     }
 
     public void testSparseSwitch() {
@@ -494,11 +494,11 @@
         List<? extends SwitchElement> switchElements = sparseSwitchPayload.getSwitchElements();
         Assert.assertEquals(5, switchElements.size());
 
-        checkSwitchElement(switchElements.get(0), 10, 6);
-        checkSwitchElement(switchElements.get(1), 13, 30);
-        checkSwitchElement(switchElements.get(2), 15, 22);
-        checkSwitchElement(switchElements.get(3), 20, 14);
-        checkSwitchElement(switchElements.get(4), 99, 32);
+        checkSwitchElement(switchElements.get(0), 10, 3);
+        checkSwitchElement(switchElements.get(1), 13, 15);
+        checkSwitchElement(switchElements.get(2), 15, 11);
+        checkSwitchElement(switchElements.get(3), 20, 7);
+        checkSwitchElement(switchElements.get(4), 99, 16);
     }
 
     public void testArrayData() {
diff --git a/smalidea/src/test/java/org/jf/smalidea/findUsages/FieldUsageTypeTest.java b/smalidea/src/test/java/org/jf/smalidea/findUsages/FieldUsageTypeTest.java
index 128c97b..ffc2f20 100644
--- a/smalidea/src/test/java/org/jf/smalidea/findUsages/FieldUsageTypeTest.java
+++ b/smalidea/src/test/java/org/jf/smalidea/findUsages/FieldUsageTypeTest.java
@@ -58,7 +58,9 @@
                         "    sput-byte v0, Lblah;->bl<ref:35>ah:Lblah;\n" +
                         "    sput-char v0, Lblah;->bl<ref:36>ah:Lblah;\n" +
                         "    sput-object v0, Lblah;->bl<ref:37>ah:Lblah;\n" +
-                        "    sput-object-volatile v0, Lblah;->bl<ref:38>ah:Lblah;\n" +
+                        // TODO: sput object volatile is no longer supported at default api level,
+                        // thus disable his usage until Smalidea supports to define an api level
+                        // "    sput-object-volatile v0, Lblah;->bl<ref:38>ah:Lblah;\n" +
                         "    sput-short v0, Lblah;->bl<ref:39>ah:Lblah;\n" +
                         "    sput-volatile v0, Lblah;->bl<ref:40>ah:Lblah;\n" +
                         "    sput-wide v0, Lblah;->bl<ref:41>ah:Lblah;\n" +
@@ -105,7 +107,9 @@
                 35, UsageType.WRITE,
                 36, UsageType.WRITE,
                 37, UsageType.WRITE,
-                38, UsageType.WRITE,
+                // TODO: sput object volatile is no longer supported at default api level,
+                // thus disable his usage until Smalidea supports to define an api level
+                //38, UsageType.WRITE,
                 39, UsageType.WRITE,
                 40, UsageType.WRITE,
                 41, UsageType.WRITE,
diff --git a/util/Android.bp b/util/Android.bp
index dc945c2..55f89eb 100644
--- a/util/Android.bp
+++ b/util/Android.bp
@@ -16,6 +16,7 @@
     name: "smali-util",
     srcs: ["src/main/java/**/*.java"],
     libs: [
+        "dexlib2",
         "guava",
         "jcommander",
         "jsr305",
diff --git a/util/build.gradle b/util/build.gradle
index 23d6a3a..296e861 100644
--- a/util/build.gradle
+++ b/util/build.gradle
@@ -30,6 +30,7 @@
  */
 
 dependencies {
+    compile project(':dexlib2')
     compile depends.findbugs
     compile depends.guava
     compile depends.jcommander
diff --git a/util/src/main/java/org/jf/util/AlignmentUtils.java b/util/src/main/java/org/jf/util/AlignmentUtils.java
deleted file mode 100644
index 4582361..0000000
--- a/util/src/main/java/org/jf/util/AlignmentUtils.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * [The "BSD licence"]
- * Copyright (c) 2010 Ben Gruver (JesusFreke)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package org.jf.util;
-
-public abstract class AlignmentUtils {
-    public static int alignOffset(int offset, int alignment) {
-        int mask = alignment - 1;
-        assert (alignment >= 0) && ((mask & alignment) == 0);
-        return (offset + mask) & ~mask;
-    }
-
-    public static boolean isAligned(int offset, int alignment) {
-        return (offset % alignment) == 0;
-    }
-}
diff --git a/util/src/main/java/org/jf/util/OldWrappedIndentingWriter.java b/util/src/main/java/org/jf/util/OldWrappedIndentingWriter.java
deleted file mode 100644
index f457717..0000000
--- a/util/src/main/java/org/jf/util/OldWrappedIndentingWriter.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Copyright 2013, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package org.jf.util;
-
-import java.io.FilterWriter;
-import java.io.IOException;
-import java.io.Writer;
-
-/**
- * Writer that wraps another writer and passes width-limited and
- * optionally-prefixed output to its subordinate. When lines are
- * wrapped they are automatically indented based on the start of the
- * line.
- */
-public final class OldWrappedIndentingWriter extends FilterWriter {
-    /** null-ok; optional prefix for every line */
-    private final String prefix;
-
-    /** &gt; 0; the maximum output width */
-    private final int width;
-
-    /** &gt; 0; the maximum indent */
-    private final int maxIndent;
-
-    /** &gt;= 0; current output column (zero-based) */
-    private int column;
-
-    /** whether indent spaces are currently being collected */
-    private boolean collectingIndent;
-
-    /** &gt;= 0; current indent amount */
-    private int indent;
-
-    /**
-     * Constructs an instance.
-     *
-     * @param out non-null; writer to send final output to
-     * @param width &gt;= 0; the maximum output width (not including
-     * <code>prefix</code>), or <code>0</code> for no maximum
-     * @param prefix non-null; the prefix for each line
-     */
-    public OldWrappedIndentingWriter(Writer out, int width, String prefix) {
-        super(out);
-
-        if (out == null) {
-            throw new NullPointerException("out == 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;
-
-        bol();
-    }
-
-    /**
-     * Constructs a no-prefix instance.
-     *
-     * @param out non-null; writer to send final output to
-     * @param width &gt;= 0; the maximum output width (not including
-     * <code>prefix</code>), or <code>0</code> for no maximum
-     */
-    public OldWrappedIndentingWriter(Writer out, int width) {
-        this(out, width, "");
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void write(int c) throws IOException {
-        synchronized (lock) {
-            if (collectingIndent) {
-                if (c == ' ') {
-                    indent++;
-                    if (indent >= maxIndent) {
-                        indent = maxIndent;
-                        collectingIndent = false;
-                    }
-                } else {
-                    collectingIndent = false;
-                }
-            }
-
-            if ((column == width) && (c != '\n')) {
-                out.write('\n');
-                column = 0;
-                /*
-                 * Note: No else, so this should fall through to the next
-                 * if statement.
-                 */
-            }
-
-            if (column == 0) {
-                if (prefix != null) {
-                    out.write(prefix);
-                }
-
-                if (!collectingIndent) {
-                    for (int i = 0; i < indent; i++) {
-                        out.write(' ');
-                    }
-                    column = indent;
-                }
-            }
-
-            out.write(c);
-
-            if (c == '\n') {
-                bol();
-            } else {
-                column++;
-            }
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void write(char[] cbuf, int off, int len) throws IOException {
-        synchronized (lock) {
-            while (len > 0) {
-                write(cbuf[off]);
-                off++;
-                len--;
-            }
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override
-    public void write(String str, int off, int len) throws IOException {
-        synchronized (lock) {
-            while (len > 0) {
-                write(str.charAt(off));
-                off++;
-                len--;
-            }
-        }
-    }
-
-    /**
-     * Indicates that output is at the beginning of a line.
-     */
-    private void bol() {
-        column = 0;
-        collectingIndent = (maxIndent != 0);
-        indent = 0;
-    }
-}
diff --git a/util/src/main/java/org/jf/util/TextUtils.java b/util/src/main/java/org/jf/util/TextUtils.java
deleted file mode 100644
index 66a1082..0000000
--- a/util/src/main/java/org/jf/util/TextUtils.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2014, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package org.jf.util;
-
-import javax.annotation.Nonnull;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class TextUtils {
-    private static String newline = System.getProperty("line.separator");
-
-    @Nonnull
-    public static String normalizeNewlines(@Nonnull String source) {
-        return normalizeNewlines(source, newline);
-    }
-
-    @Nonnull
-    public static String normalizeNewlines(@Nonnull String source, String newlineValue) {
-        return source.replace("\r", "").replace("\n", newlineValue);
-    }
-
-    @Nonnull
-    public static String normalizeWhitespace(@Nonnull String source) {
-        // Go to native system new lines so that ^/$ work correctly
-        source = normalizeNewlines(source);
-
-        // Remove all suffix/prefix whitespace
-        Pattern pattern = Pattern.compile("((^[ \t]+)|([ \t]+$))", Pattern.MULTILINE);
-        Matcher matcher = pattern.matcher(source);
-        source = matcher.replaceAll("");
-
-        // Remove all empty lines
-        Pattern pattern2 = Pattern.compile("^\r?\n?", Pattern.MULTILINE);
-        Matcher matcher2 = pattern2.matcher(source);
-        source = matcher2.replaceAll("");
-
-        // Remove a trailing new line, if present
-        Pattern pattern3 = Pattern.compile("\r?\n?$");
-        Matcher matcher3 = pattern3.matcher(source);
-        source = matcher3.replaceAll("");
-
-        // Go back to unix-style \n newlines
-        source = normalizeNewlines(source, "\n");
-        return source;
-    }
-
-    @Nonnull
-    public static String stripComments(@Nonnull String source) {
-        Pattern pattern = Pattern.compile("#(.*)");
-        Matcher matcher = pattern.matcher(source);
-        return matcher.replaceAll("");
-    }
-}
diff --git a/util/src/main/java/org/jf/util/jcommander/HelpFormatter.java b/util/src/main/java/org/jf/util/jcommander/HelpFormatter.java
index e807d5f..662167e 100644
--- a/util/src/main/java/org/jf/util/jcommander/HelpFormatter.java
+++ b/util/src/main/java/org/jf/util/jcommander/HelpFormatter.java
@@ -34,9 +34,9 @@
 import com.beust.jcommander.JCommander;
 import com.beust.jcommander.ParameterDescription;
 import com.beust.jcommander.Parameters;
-import com.beust.jcommander.internal.Lists;
 import com.google.common.base.Joiner;
 import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
 import org.jf.util.WrappedIndentingWriter;
 
 import javax.annotation.Nonnull;
diff --git a/util/src/test/java/org/jf/util/TextUtilsTest.java b/util/src/test/java/org/jf/util/TextUtilsTest.java
deleted file mode 100644
index ef14e03..0000000
--- a/util/src/test/java/org/jf/util/TextUtilsTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2015, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package org.jf.util;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-public class TextUtilsTest {
-    @Test
-    public void testStripComments() {
-        Assert.assertEquals("", TextUtils.stripComments("#world"));
-        Assert.assertEquals("hello", TextUtils.stripComments("hello#world"));
-        Assert.assertEquals("multi\nline", TextUtils.stripComments("multi#hello world\nline#world"));
-    }
-
-    @Test
-    public void testNormalizeWhitespace() {
-        Assert.assertEquals("", TextUtils.normalizeWhitespace(" "));
-        Assert.assertEquals("hello", TextUtils.normalizeWhitespace("hello "));
-        Assert.assertEquals("hello", TextUtils.normalizeWhitespace(" hello"));
-        Assert.assertEquals("hello", TextUtils.normalizeWhitespace(" hello "));
-        Assert.assertEquals("hello\nworld", TextUtils.normalizeWhitespace("hello \n \n world"));
-    }
-}
\ No newline at end of file